딥러닝의 학습 방법

TrainToGPB·2023년 6월 4일
0

AI Math

목록 보기
3/4

수식으로 분해하는 선형 모델

  • 신경망을 수식으로 분해하기 위해서는, 우선 선형 모델을 먼저 이해해야 함
    • 데이터 집합 (xi,yi)i=1n(\bold{x}_i,\,y_i)^n_{i=1}을 통해,
    • minβEyy^2\underset{\beta}{\textrm{min}}\,\mathbb{E}\parallel\bold{y}-\hat{\bold{y}}\parallel_2를 만족하는,
    • 선형식 Xβ  (=y^)\bold{X\beta}\;(=\hat{\bold{y}})을 세우기

수식으로 분해하는 비선형 모델(신경망)

  • 비선형 모델인 신경망에서는, 각 행벡터 oi\bold{o}_i가 데이터 xi\bold{x}_i와 가중치 행렬 W\bold{W} 사이의 행렬곱과 절편 b\bold{b} 벡터의 합으로 표현된다고 가정
    • 데이터가 바뀌면 결과값고 바뀌기 때문에, 출력 벡터의 차원이 dd에서 pp로 바뀌게 됨 → dd개의 변수로 pp개의 선형 모델을 만들어 pp 개의 잠재변수를 설명하는 모델로 생각할 수 있음

소프트맥스 연산

  • 소프트맥스(softmax) 함수는 모델의 출력을 확률로 해석할 수 있게 변환
  • 만약 출력 벡터 o\bold{o}에 소프트맥스 함수를 적용하면 확률벡터가 되므로, 특정 클래스 kk에 속할 확률로 해석할 수 있음 → 분류 모델로 사용 가능
    softmax(o)=(exp(o1)k=1pexp(ok),,exp(op)k=1pexp(ok))=softmax(Wx+b)\textrm{softmax}(\bold{o})=\displaystyle(\frac{\textrm{exp}(o_1)}{\sum^p_{k=1}\textrm{exp}(o_k)}, \dots, \frac{\textrm{exp}(o_p)}{\sum^p_{k=1}\textrm{exp}(o_k)}) =\textrm{softmax}(\bold{Wx}+\bold{b})
    def softmax(vec):
    	denumerator = np.exp(vec - np.max(vec, axis=-1, deepdims=True)
    	numerator = np.sum(denumerator, axis=-1, keepdims=True)
    	val = denumerator / numerator
    	return val

활성화 함수

  • 신경망은 선형 모델과 활성화 함수(activation function)을 합성한 함수

    • 다시 말해, 활성화 함수가 없는 딥러닝은 선형 모델과 차이가 없음
  • 활성화 함수 σ\sigmaR\mathbb{R} 위에 정의된 비선형 함수로 잠재벡터 z=(z1,,zq)\bold{z}=(z_1,\dots,z_q)의 각 노드에 개별적으로 적용하여, 새로운 잠재벡터 H=(σ(z1),,σ(zn))\bold{H}=(\sigma(\bold{z}_1),\dots,\sigma(\bold{z}_n))를 만듬

    H=(σ(z1),,σ(zn)),σ(z)=σ(Wx+b)\bold{H}=(\sigma(\bold{z}_1),\dots,\sigma(\bold{z}_n)),\quad\sigma(\bold{z})=\sigma(\bold{Wx}+\bold{b})
    • 시그모이드(sigmoid) 함수나 tanh가 전통적으로 많이 쓰이던 활성화 함수이지만, 딥러닝에서는 ReLU(Rectified Linear Unit) 함수를 많이 사용함

      Sigmoid

      Sigmoid

      11+ex\displaystyle\frac{1}{1+e^{-x}}

      tanh

      tanh

      exexex+ex\displaystyle\frac{e^x-e^{-x}}{e^x+e^{-x}}

      ReLU

      ReLU

      max{0,x}\textrm{max}\{0,\,x\}
  • 잠재벡터 H\bold{H}에서 가중치 행렬 W(2)\bold{W}^{(2)}b(2)\bold{b}^{(2)}를 통해 다시 한 번 선형변환해서 출력하게 되면, (W(2),W(1))(\bold{W}^{(2)}, \bold{W}^{(1)})을 매개변수로 가진 2층(2-layer) 신경망이 됨

    • 다층 퍼셉트론(multi-layer perceptron, MLP)은 신경망이 여러층 합성된 함수
      • MLP의 매개변수는 LL 개의 가중치 행렬 [W(L),,W(1)][\bold{W}^{(L)},\dots,\bold{W}^{(1)}]로 구성됨
      • l=1,,Ll=1,\dots,L까지 순차적인 신경망 계산을 순전파(forward propagation)라고 함

왜 ‘다층’인가?

  • 이론적으로는 2층 신경망만으로도 임의의 연속함수를 근사할 수 있음
  • 하지만 층이 깊을수록 목적함수를 근사하는데 필요한 노드의 숫자가 훨씬 빨리 감소하기 때문에, 더 효율적인 학습이 가능

역전파

  • 딥러닝은 역전파(backpropagation) 알고리즘을 통해 각 층의 매개변수 {Wl,b(l)}l=1L\{\bold{W}^{l},\,\bold{b}^{(l)}\}^L_{l=1}를 학습
  • 각 층 매개변수의 gradient 벡터 \nabla는 윗층부터 역순으로 계산하게 됨
  • 역전파는 합성함수 미분법인 연쇄법칙(chain-rule) 기반 자동미분(auto-differentiation)을 사용
    e.g.,z=(x+y)2=w2ifz=w2zw=2w,wx=wy=1zx=zwwx=2w1=2(x+y)e.g., z=(x+y)^2=w^2\quad\textrm{if}\quad z=w^2 \\ \to\displaystyle\frac{\partial z}{\partial w}=2w,\quad\frac{\partial w}{\partial x}=\frac{\partial w}{\partial y}=1 \\ \to\frac{\partial z}{\partial x}=\frac{\partial z}{\partial w}\frac{\partial w}{\partial x}=2w\cdot1=2(x+y)

예제: 2층 신경망

  • o=W(2)h+b(2)\bold{o}=\bold{W}^{(2)}\bold{h}+\bold{b}^{(2)}
  • h=σ(z)\bold{h}=\sigma(\bold{z})
  • z=W(1)x+b(1)\bold{z}=\bold{W}^{(1)}\bold{x}+\bold{b}^{(1)}

문제 상황: LW(1)=?\displaystyle\frac{\partial L}{\partial\bold{W}^{(1)}}=?

  • W(1)\bold{W}^{(1)}은 행렬이므로, 각 성분에 대한 편미분을 구해야 함
    W(1)L=(W(1)z)(zh)(ho)(oL)\nabla_{\bold{W}^{(1)}}L=(\nabla_{\bold{W}^{(1)}}\bold{z})(\nabla_{\bold{z}}\bold{h})(\nabla_{\bold{h}}\bold{o})(\nabla_{\bold{o}}L)
    LWij(1)=l,r,kLololhrhrzkzkWij(1)\leftrightarrow\displaystyle\frac{\partial L}{\partial W^{(1)}_{ij}}=\sum_{l,r,k}\frac{\partial L}{\partial o_l}\frac{\partial o_l}{\partial h_r}\frac{\partial h_r}{\partial z_k}\frac{\partial z_k}{\partial W^{(1)}_{ij}}
    olhr=Wrl(2)hrzk=σ(zk)δrkzkWij(1)=Wij(1)ixi,Wik(1)=xiδjk\rightarrow\displaystyle\frac{\partial o_l}{\partial h_r}=W^{(2)}_{rl} \\ \rightarrow\displaystyle\frac{\partial h_r}{\partial z_k}=\sigma'(z_k)\delta_{rk} \\ \rightarrow\displaystyle\frac{\partial z_k}{\partial W^{(1)}_{ij}}=\frac{\partial}{\partial W^{(1)}_{ij}}\sum_{i'}x_i,\,W^{(1)}_{ik}=x_i\delta_{jk}
    LWij(1)=lLolWjl(2)σ(zj)xi(r=k=j,δrkδjk)\displaystyle\therefore\frac{\partial L}{\partial W^{(1)}_{ij}}=\sum_l\frac{\partial L}{\partial o_l}W^{(2)}_{jl}\sigma'(z_j)x_i \quad (r=k=j,\quad\because\delta_{rk}\delta_{jk})
profile
J의 틀에 몸을 녹여 맞추는 P

0개의 댓글