딥러닝 이론: 3. MLP

milkbuttercheese·2023년 2월 1일
0

Dive_into_Deeplearning

목록 보기
3/7
post-custom-banner

선형모델의 한계

  • 선형성linearity는 단조성monotonicity를 내포하고 있다. 독립변수 x=[x1,x2,,xn]\boldsymbol{x}=\begin{bmatrix} x _{1}, x _{2}, \cdots, x _{n} \end{bmatrix}, 종속변수 yy가 있을 때 특정 독립변수 xjx _{j} 가 증가하면, 종속변수 yy 는 증가하거나 감소하는 방향 둘중 하나만 갖는다는 것이다.
  • 예를 들어
    - 건강한 정도를 신체온도의 함수로 표현한다고 하자
    - 사람의 몸 온도가 37도를 넘어가면 위험할 것이지만, 반대로 신체 온도가 평균보다 낮아도 또 위험한 상태이다
  • 예를 들어 2
    - 고양이와 강아지의 이미지를 분류한다고 하자
    - 특정 위치의 픽셀 세기intensity와 강아지로 분류될 가능성이 비례한다는 추론은 합리적인가?
    - 이런 접근방식으로 이미지를 분류하는 시도는 실패할 수 밖에 없다

은닉층의 도입

  • 입력층 레이어와 출력층 레이어 사이에 또다른 레이어를 추가하는 방식을 MLP: Multilayer Perceptron이라 부른다
    - 이떄 레이어와 레이어 사이는 모든 유닛들끼리 빠짐없이 이어진 상태 fully-connected-layer, 즉 ll번째 레이어의 임의의 유닛에 대하여 l1l-1 레이어 유닛들이 모두 연결된 상태여야 한다
    - layer의 갯수는 input을 제외하고 hidden layer+ output layer(1)개로 측정한다. 이는 네트워크의 계산에 필요한 연산 횟수와 같다. 아래의 그림의 레이어 수는 2다.
    -

선형성에서 비선형성으로

  • 만약 우리가 미니배치값을 XRn×d\boldsymbol{X}\in \mathbb{R} ^{n \times d} , dd 차원의 데이터포인트가 nn 개로 쌓여진 상태로 표현한다면, 은닉층의 차원은 HRn×h\boldsymbol{H} \in \mathbb{R} ^{n \times h} 로 표현할 수 있다. 이때 hh 는 은닉층의 출력값이다
  • 은닉층와 출력층가 fully-connected 되었기 때문에, 각각의 가중치와 편향에 대하여 은닉층는 W(1)Rd×h\boldsymbol{W}^{(1)} \in \mathbb{R} ^{d \times h} , b(1)R1×h\boldsymbol{b}^{(1)}\in \mathbb{R}^{1\times h} , 출력층는 W(2)×Rh×q\boldsymbol{W}^{(2)}\times \mathbb{R} ^{h \times q} , b(2)R1×q\boldsymbol{b}^{(2)} \in \mathbb{R} ^{1 \times q} 라고 하자.
  • 이 경우 아웃풋레이어 출력값 ORn×q\boldsymbol{O} \in \mathbb{R} ^{n \times q} 에 대하여 다음과 같이 계산될 수 있다
    - H=XW(1)+b(1)\boldsymbol{H}=\boldsymbol{X}\boldsymbol{W}^{(1)}+\boldsymbol{b}^{(1)}
    - O=HW(2)+b(2)\boldsymbol{O}=\boldsymbol{H}\boldsymbol{W}^{(2)}+\boldsymbol{b}^{(2)}
    - 이경우
    - O=(XW(1)+b(1))W(2)+b(2)\boldsymbol{O}=(\boldsymbol{X}\boldsymbol{W}^{(1)}+\boldsymbol{b}^{(1)})\boldsymbol{W}^{(2)}+\boldsymbol{b}^{(2)}O=XW+b\boldsymbol{O}=\boldsymbol{X}\boldsymbol{W}+\boldsymbol{b} 로 둔다면
    - W=W(1)W(2)\boldsymbol{W}=\boldsymbol{W}^{(1)}\boldsymbol{W}^{(2)} , b=b(1)W(2)+b(2)\boldsymbol{b}=\boldsymbol{b}^{(1)}\boldsymbol{W}^{(2)}+\boldsymbol{b}^{(2)} 로 한 행렬로 표현가능함을 알 수 있다
    - 즉 선형성이 지속된다면, 아무리 많은 은닉층를 쌓아도 결국 하나의 행렬로 표현될 수 있기 때문에 은닉층를 쌓는 의미가 존재하지 않는것이다
  • 그렇기 때문에 레이어의 출력값을 다른 레이어에게 전달해주기전 활성화함수란 element-wise의 비선형함수를 활용하여 비선형성을 추가한다. 그 결과
    - H=σ(XW(1)+b(1))\boldsymbol{H}=\sigma(\boldsymbol{X}\boldsymbol{W}^{(1)}+\boldsymbol{b}^{(1)})
    - O=HW(2)+b(2)\boldsymbol{O}=\boldsymbol{H}\boldsymbol{W}^{(2)}+\boldsymbol{b}^{(2)}
    - 가 된다

보편근사정리 Universal Approximation Theorem

  • 하나 이상의 은닉층를 갖고 있는 MLP 네트워크는 충분한 노드와 적절한 가중치가 주어진다면 임의의 함수에 대하여 근사할 수 있다

MLP 제작

MLPScratch 클래스

  • __init__
    - self.W1, self.b1, self.W2, self.b2로 각각 은닉층와 출력 레이어에 대한 가중치,편향값을 저장한다
  • relu
    - torch.zeros_like 입력 텐서와 동일한 크기이고, 성분은 1로 구성된 텐서를 반환하는 함수
    - torch.max 를 통하여 입력값Xtorch.zero_like(X) 를 element-wise로 비교하여 계산한다.
  • forward
    - 입력값과 가중치값,편향값을 활용하여 은닉층 결과값, 출력 레이어의 결과값을 계산한다

Forward& Backward Propagation

순방향 전파 Forwad propagation

입력층으로부터 출력층까지 중간변수를 신경망 과정마다 계산하고 저장하는 과정이다.

  • 처음 은닉층 의 변수 h\boldsymbol{h}는 다음과 같이 계산되고
    - z=W(1)x\boldsymbol{z}=\boldsymbol{W}^{(1)}\boldsymbol{x}
    - h=ϕ(z)\boldsymbol{h}=\phi(\boldsymbol{z})
  • 은닉층에서 출력층의 변수 o\boldsymbol{o} 는 다음과 같이 계산된다
    - o=W(2)h\boldsymbol{o}=\boldsymbol{W}^{(2)}\boldsymbol{h}
  • Loss function 에 l2l _{2}정규화 항까지 모두 고려하여 계산하자
    - s=λ2(W(1)F2+W(2)F2)s= \displaystyle\frac{\lambda}{2}(\| \boldsymbol{W}^{(1)} \| ^{2}_{F}+\| \boldsymbol{W}^{(2)} \| ^{2}_{F})
    - where WF2\| \boldsymbol{W} \| ^{2}_{F} is Frobenius norm of matrixx where WF2=trace(WW)\| \boldsymbol{W} \| ^{2}_{F}=trace(\boldsymbol{W}^{*}\boldsymbol{W})
  • 그러므로 model의 Loss function 함수는
    - J=L+sJ=L+s

역전파 Backpropagation

  • 역전파는 신경망의 그레디언트를 계산하여 파라미터를 갱신하는 과정이다
  • refref . 텐서 연쇄법칙
    - 함수 Y=f(X)\boldsymbol{Y}=f(\boldsymbol{X})Z=g(Y)\boldsymbol{Z}=g(\boldsymbol{Y}) 가 있다고 하자.
    - ZX=prod(ZY,YX)\cfrac{\partial {\boldsymbol{Z}}}{\partial {\boldsymbol{X}}}=prod(\cfrac{\partial {\boldsymbol{Z}}}{\partial {\boldsymbol{Y}}},\cfrac{\partial {\boldsymbol{Y}}}{\partial {\boldsymbol{X}}}) 가 된다
    - 증명.
    - yx[y1x1y1x2y1xny2x1y2x2y2xnymx1ymx2ymxn]\cfrac{\partial {\boldsymbol{y}}}{\partial {\boldsymbol{x}}}\equiv\begin{bmatrix} \cfrac{\partial {y _{1}}}{\partial {x _{1}}} & \cfrac{\partial {y _{1}}}{\partial {x _{2}}} & \cdots & \cfrac{\partial {y _{1}}}{\partial {x _{n}}} \\ \cfrac{\partial {y _{2}}}{\partial {x _{1}}} & \cfrac{\partial {y _{2}}}{\partial {x _{2}}} & \cdots & \cfrac{\partial {y _{2}}}{\partial {x _{n}}} \\ \cdots \\ \cfrac{\partial {y _{m}}}{\partial {x _{1}}} & \cfrac{\partial {y _{m}}}{\partial {x _{2}}} & \cdots & \cfrac{\partial {y _{m}}}{\partial {x _{n}}} \end{bmatrix}
    - [yx]ij=yixj[\cfrac{\partial {\boldsymbol{y}}}{\partial {\boldsymbol{x}}}]_{ij}=\cfrac{\partial {y} _{i}}{\partial {x _{j}}}
    - [ZX]ik=[ZY]ij[YX]jk=ziyjyjxk=zixk[\cfrac{\partial {\boldsymbol{Z}}}{\partial {\boldsymbol{X}}}]_{ik}=[\cfrac{\partial {\boldsymbol{Z}}}{\partial {\boldsymbol{Y}}}] _{ij}[\cfrac{\partial {\boldsymbol{Y}}}{\partial {\boldsymbol{X}}}] _{jk}=\cfrac{\partial {z _{i}}}{\partial {y _{j}}}\cfrac{\partial {y _{j}}}{\partial {x _{k}}}=\cfrac{\partial {z _{i}}}{\partial {x _{k}}}

이 케이스의 경우

은닉층

  • z=W(1)x\boldsymbol{z}=\boldsymbol{W}^{(1)}\boldsymbol{x} , where W(1)Rh×d\boldsymbol{W}^{(1)} \in \mathbb{R} ^{h \times d} : 은닉층의 가중치 행렬
    - h=ϕ(z)\boldsymbol{h}=\phi(\boldsymbol{z})

출력층

  • o=W(2)h\boldsymbol{o}=\boldsymbol{W}^{(2)}\boldsymbol{h}
    - JW(2)=JLLooW(2)+JssW(2)\cfrac{\partial {J}}{\partial {\boldsymbol{W}^{(2)}}}=\cfrac{\partial {J}}{\partial {L}}\cfrac{\partial {L}}{\partial {\boldsymbol{o}}} \cfrac{\partial {\boldsymbol{o}}}{\partial {\boldsymbol{W}^{(2)}}}+\cfrac{\partial {J}}{\partial {s}}\cfrac{\partial {s}}{\partial {\boldsymbol{W}^{(2)}}}
    - JL=1,Js=1\cfrac{\partial {J}}{\partial {L}}=1, \cfrac{\partial {J}}{\partial {s}}=1
    - oW(2)=(W(2)h)W(2)=hT\cfrac{\partial {\boldsymbol{o}}}{\partial {\boldsymbol{W}^{(2)}}}=\cfrac{\partial {(\boldsymbol{W}^{(2)}\boldsymbol{h})}}{\partial {\boldsymbol{W}^{(2)}}}=\boldsymbol{h}^{T}
  • W(2)(λ2)trace((W(2))W(2))\cfrac{\partial {\boldsymbol{}}}{\partial {\boldsymbol{W}^{(2)}}}(\displaystyle\frac{\lambda}{2})\cdot trace((\boldsymbol{W}^{(2)})^{*}\boldsymbol{W}^{(2)})
    - trace(WW)=(WW)ii=(W)ijWjitrace(\boldsymbol{W}^{*}\boldsymbol{W})=\displaystyle{(\boldsymbol{W}^{*}\boldsymbol{W})_{ii}}=(\boldsymbol{W}^{*})_{ij}\boldsymbol{W}_{ji}
    - Wkl((W)ijWji)=Wkl(WjiWji)\cfrac{\partial {}}{\partial {\boldsymbol{W}_{kl}}}((\boldsymbol{W}^{*})_{ij}\boldsymbol{W}_{ji})=\cfrac{\partial {}}{\partial {\boldsymbol{W}_{kl}}}(\overline{\boldsymbol{W}_{ji}\boldsymbol{}}\boldsymbol{W}_{ji})= 2Wkl,k,larefixed2\boldsymbol{W}_{kl}, k,l \,\,are \,\,fixed
  • 그러므로 JW(2)=JohT+λW(2)\cfrac{\partial {J}}{\partial {\boldsymbol{W}}^{(2)}}=\cfrac{\partial {J}}{\partial {\boldsymbol{o}}}\boldsymbol{h}^{T}+\lambda \cdot \boldsymbol{W}^{(2)}
  • JW(1)=JLLoohhzzW(1)+JssW(1)\cfrac{\partial {J}}{\partial {\boldsymbol{W}^{(1)}}}=\cfrac{\partial {J}}{\partial {L}}\cfrac{\partial {L}}{\partial {\boldsymbol{o}}}\cfrac{\partial {\boldsymbol{o}}}{\partial {\boldsymbol{h}}}\cfrac{\partial {\boldsymbol{h}}}{\partial {\boldsymbol{z}}}\cfrac{\partial {\boldsymbol{z}}}{\partial {\boldsymbol{W}^{(1)}}}+\cfrac{\partial {J}}{\partial {s}}\cfrac{\partial {s}}{\partial {\boldsymbol{W}^{(1)}}}
    - JL=1,Js=1\cfrac{\partial {J}}{\partial {L}}=1, \cfrac{\partial {J}}{\partial {s}}=1
    - oh=W(2)\cfrac{\partial {\boldsymbol{o}}}{\partial {\boldsymbol{h}}}=\boldsymbol{W}^{(2)}
    - hz=ϕ(z)z=ϕ(z)\cfrac{\partial {\boldsymbol{h}}}{\partial {\boldsymbol{z}}}=\cfrac{\partial {\phi(\boldsymbol{z})}}{\partial {\boldsymbol{z}}}=\phi'(\boldsymbol{z}) : ϕ\phi is elementwise
    - (W(2))TJoϕ(z)xT+λ(W(1))T(\boldsymbol{W}^{(2)})^{T}\cfrac{\partial {J}}{\partial {\boldsymbol{o}}} \odot \phi'(\boldsymbol{z}) \boldsymbol{x}^{T}+\lambda \boldsymbol({W}^{(1)})^{T}
profile
안녕하세요!
post-custom-banner

0개의 댓글