다층 퍼셉트론이란?
MLP는 단층 퍼셉트론에 은닉층(hidden layer)이 추가된 것
은닉층이 2개 이상이 되면 심층 신경망(Deep Neural Network, DNN)이라고 함
위의 그림은 AND, NAND, OR 게이트를 조합하여 XOR 게이트를 구현한 다층 퍼셉트론의 예
- 입력층의 두 뉴런이 입력 신호를 받아 은닉층의 뉴런으로 신호를 보낸다.
- 은닉층의 뉴런은 출력층의 뉴런으로 신호를 보내고, 출력층은 y를 출력한다.
이전 글에서 활성화 함수를 통해 각 노드의 활성 여부를 판단한다고 언급함
변수 z는 이전층의 모든 입력이 각각의 가중치와 곱해진 값들이 모두 더해진 가중합을 의미
즉, 아직 활성화 함수를 거치지 않은 값
$z$ 우측의 |를 지나서 존재하는 변수 h 또는 o는 z가 시그모이드 함수를 지난 후의 값으로 각 뉴런의 출력값을 의미
순전파(Forward Propagation)
위 그림의 계산 식은 다음과 같이 계산됨( 해당 인공 신경망은 편향 b는 고려하지 않음 )
$$ z_1 = w_1x_1+ w_2x_2 $$
$$ h_1 = \sigma(z_1)$$
$$ z_2 = w_3x_1+ w_4x_2 $$
$$ h_2 = \sigma(z_2)$$
$$ z_3 = w_5h_1+ w_6h_2 $$
$$ o_1 = \sigma(z_3)$$
$$ z_4 = w_7h_1+ w_8h_2 $$
$$ o_2 = \sigma(z_4)$$
역전파(BackPropagation)
역전파 1단계
순전파가 입력층에서 출력층으로 향한다면 역전파는 반대로 출력층에서 입력층 방향으로 계산하면서 가중치를 업데이트
만약, 다음과 같이 주어져 있다면,
$W_5$, $W_6$, $W_7$, $W_8$ 순대로 업데이트해보겟음
경사하강법을 사용해 업데이트
- $\frac{∂E_{total}}{∂W_{5}}$ 계산
연쇄 법칙을 사용해 계산
$ \frac{∂E_{total}}{∂W_{5}} = \frac{∂E_{total}}{∂o_{1}} \text{×} \frac{∂o_{1}}{∂z_{3}} \text{×} \frac{∂z_{3}}{∂W_{5}} $
$E_{total}$은 앞서 순전파를 진행하고 계산한 오차값
$E_{total}=\frac{1}{2}(target_{o1}-output_{o1})^{2} + \frac{1}{2}(target_{o2}-output_{o2})^{2}$
$\frac{∂E_{total}}{∂o_{1}}$는
$\frac{∂E_{total}}{∂o_{1}}=2 \text{×} \frac{1}{2}(target_{o1}-output_{o1})^{2-1} \text{×} (-1) + 0$
$\frac{∂E_{total}}{∂o_{1}}=-(target_{o1}-output_{o1})=-(0.4-0.60944600)=0.20944600$
$o_{1}$는 시그모이드 함수의 출력값
시그모이드 함수의 미분 : $f(x) \text{×} (1-f(x))$
$\frac{∂o_{1}}{∂z_{3}}=o_{1}\text{×}(1-o_{1})=0.60944600(1-0.60944600)=0.23802157$
$\frac{∂z_{3}}{∂W_{5}}=h_{1}=0.51998934$
$\frac{∂E_{total}}{∂W_{5}} = 0.20944600 \text{×} 0.23802157 \text{×} 0.51998934 = 0.02592286$ - 가중치 업데이트
$W_{5}^{+}=W_{5}-α\frac{∂E_{total}}{∂W_{5}}=0.45- 0.5 \text{×} 0.02592286=0.43703857$ - $W_{6}^{+},\ W_{7}^{+},\ W_{8}^{+}$도 업데이트
역전파 2단계
1단계를 완료하였다면 이제 입력층 방향으로 이동하며 다시 계산
$W_{1}, W_{2}, W_{3}, W_{4}$를 업데이트
- $\frac{∂E_{total}}{∂W_{1}}$ 계산
$ \frac{∂E_{total}}{∂W_{1}} = \frac{∂E_{total}}{∂h_{1}} \text{×} \frac{∂h_{1}}{∂z_{1}} \text{×} \frac{∂z_{1}}{∂W_{1}} $
$\frac{∂E_{total}}{∂h_{1}} = \frac{∂E_{o1}}{∂h_{1}} + \frac{∂E_{o2}}{∂h_{1}} $
$\frac{∂E_{o1}}{∂h_{1}} = \frac{∂E_{o1}}{∂z_{3}} \text{×} \frac{{∂z_{3}}}{∂h_{1}} = \frac{∂E_{o1}}{∂o_{1}} \text{×} \frac{∂o_{1}}{∂z_{3}} \text{×} \frac{{∂z_{3}}}{∂h_{1}}$
$= -(target_{o1}-output_{o1}) \text{×} o_{1}\text{×}(1-o_{1}) \text{×} W_{5}$
$= 0.20944600 \text{×} 0.23802157 \text{×} 0.45 = 0.02243370$
$\frac{∂E_{o2}}{∂h_{1}} = \frac{∂E_{o2}}{∂z_{4}} \text{×} \frac{{∂z_{4}}}{∂h_{1}} = \frac{∂E_{o2}}{∂o_{2}} \text{×} \frac{∂o_{2}}{∂z_{4}} \text{×} \frac{{∂z_{4}}}{∂h_{1}} = 0.00997311$
$\frac{∂E_{total}}{∂h_{1}} = 0.02243370 + 0.00997311 = 0.03240681$
$\frac{∂h_{1}}{∂z_{1}} = h_{1}\text{×}(1-h_{1}) = 0.51998934(1-0.51998934)=0.24960043$
$\frac{∂z_{1}}{∂W_{1}} = x_{1} = 0.1$
$\frac{∂E_{total}}{∂W_{1}} = 0.03240681 \text{×} 0.24960043 \text{×} 0.1 = 0.00080888$
$W_{1}^{+}=W_{1}-α\frac{∂E_{total}}{∂W_{1}}=0.1- 0.5 \text{×} 0.00080888=0.29959556$ - 나머지도 계산 후 업데이트
최종적으로 $E_{o1}+E_{o2}$를 하고, 다시 순전파를 진행하여 기존 전체 오차와 비교
지금까지 출력층의 활성함수를 '시그모이드'를 사용했음
신경망은 분류와 회귀 모두에 이용할 수 있는데,
둘 중 어떤 문제냐에 따라 출력층에서 사용하는 활성화함수가 달라짐
일반적으로 회귀는 항등 함수, 분류에는 소프트맥스(softmax)를 사용함
항등 함수(identity function)는 입력을 그대로 출력
소프트맥스(softmax) 함수는 0에서 1.0 사이의 실수를 출력하고, 각각의 결과값은 확률과 같게 됨
최종적으로 소프트맥스의 모든 출력의 총합은 1임
References
06-01 머신 러닝 기본 개념 정리하기
이번 챕터에서는 머신 러닝의 특징들에 대해서 배웁니다. 딥 러닝 또한 머신 러닝에 속하므로, 아래의 머신 러닝의 특징들은 모두 딥 러닝의 특징이기도 합니다. ## 1. 머신…
wikidocs.net
밑바닥부터 시작하는 딥러닝
'전공 > 딥러닝' 카테고리의 다른 글
[DL] 합성곱 신경망(CNN), 합성곱과 풀링 (0) | 2024.12.12 |
---|---|
[DL] LSTM(Long Short-Term Memory), GRU(Gated Recurrent Unit) 알아보기 (0) | 2024.12.12 |
[DL] 순환 신경망(Recurrent Neural Network, RNN) (0) | 2024.12.10 |
[DL] 활성화 함수(Activation Function), Sigmoid/ReLU/tanh/Leaky ReLU/GELU/ELU/SoftPlus/Swish (0) | 2024.12.05 |
[DL] 퍼셉트론(Perceptron)이란? (2) | 2024.12.02 |