인턴하는 회사에서 진행하는 세미나 6주차의 과제로 사이토 고키의 밑바닥부터 시작하는 딥러닝의 5 - 오차역전파법 부분을 정리해 보고자합니다.
이전 장에서는 신경망의 가중치 매개변수에 대한 손실 함수의 기울기를 구하기 위해 수치미분을 이용했습니다. 다만 이것은 연산시간이 많이 걸립니다. 따라서 오차역전파법(back propagation)이 등장합니다.
계산그래프를 이용한 역전파의 예를 살펴본다면 다음 그림과 같을 것입니다.
이처럼 신호 E에 국소적 미분값을 곱한후 다음 노드로 전달하는 것입니다. 이것이 역전파의 계산방식인데, 이러한 방식으로 어떻게 미분값을 효율적으로 구하는지 알려면 연쇄법칙을 알아야합니다.
연쇄법칙
만약 z=(x+y)^2라는 합성함수가 있다고 한다면 z=t^2 그리고 t=x+y라는 두 식으로 나타낼 수 있습니다. 그리고 합성함수의 미분은 합성함수를 구성하는 각 함수의 미분의 곱으로 나타낼 수 있습니다.
이것이 연쇄법칙의 원리입니다. 즉, x에 대한 z의 미분값은, t에 대한 z의 미분값과 x에 대한 t의 미분값의 곱으로 나타낼 수 있는것입니다.
연쇄법칙을 계산그래프로 나타낸다면 다음과 같습니다.
위의 그림과 같이 역전파가 진행이 되는데 그림의 맨 왼쪽의 수식을 본다면 (dz/dz)(dz/dt)(dt/dx)로 나타내져 있습니다. 이것은 결국 분모 분자를 상쇄시킨다면 dz/dx 인데, 즉 x에 대한 z의 미분값을 나타냅니다.
덧셈 노드의 역전파
덧셈 노드의 역전파는 1을 곱하기만 할 뿐이므로 입력된 값을 그대로 다음 노드로 보내게 됩니다.
곱셈 노드의 역전파
곱셈 노드의 역전파는 상류의 값에 순전파 때의 입력 신호들을 서로 바꾼 값을 곱해서 하류로 보냅니다.
활성화 함수 계층 구현하기
이제 계산 그래프에서 보였던 오차역전파법을 신경망(활성화함수)에 적용해보겠습니다.
ReLU 계층
ReLU의 수식은 다음과 같습니다.
ReLU 수식을 x에 대해서 미분한다면 다음과 같을 것입니다.
위의 미분식에서 알 수 있듯, ReLU의 순전파 방향 입력값 x가 0보다 크다면 역전파는 상류의 값을 그대로 하류로 보냅니다. x가 0보다 작다면 하류로 신호를 보내지 않습니다.
Sigmoid 계층
또 다른 활성화함수인 Sigmoid 함수의 수식은 다음과 같습니다.
그리고 Sigmoid 함수의 역전파를 계산그래프로 나타내면 다음 그림과 같을 것입니다.
위의 계산그래프에서 확인할 수 있듯 역전파의 최종값이 하류로 전달 됩니다.
Affine/Softmax 계층
신경망의 순전파 때 수행하는 행렬 곱은 어파인 변환(Affine transformation)이라고도 합니다. 따라서 이 책에서는 Affine 계층이라는 이름을 붙였습니다.
Affine 계층을 계산그래프로 그리면 다음과 같을 것입니다. 그리고 이것을 배치처리된 입력으로 변환하여 나타낸다면 다음과 같을 것입니다.
Softmax-with-Loss 계층
모델의 출력층에서 많이 사용하는 소프트맥스 함수와 손실 함수인 교차 엔트로피 오차를 포함하여 책에서는 Softmax-with-Loss 계층이라는 이름으로 구현하고 있습니다.
위의 그림처럼 Softmax 계층은 a1, a2, a3를 입력받고 그것을 확률값이라고 생각할 수 있는 y1, y2, y3로 출력합니다. Cross Entropy Error 계층에서는 Softmax계층의 출력값인 y1, y2, y3과 정답레이블에 해당하는 t1,t2,t3를 입력받고 손실함수 결과값인 L을 출력합니다. 위의 계산 그래프에서 확인할 수 있듯이 Softmax계층은 역전파의 결과값으로 y1-t1, y2-t2, y3-t3 즉, Softmax계층의 출력과 정답 레이블의 차분을 출력합니다.
'DL' 카테고리의 다른 글
[DL 기초] 밑바닥부터 시작하는 딥러닝: 합성곱 신경망(CNN) (0) | 2023.05.20 |
---|---|
[DL 기초] 밑바닥부터 시작하는 딥러닝: 학습 관련 기술들(1) (0) | 2023.05.01 |
[DL 기초] 밑바닥부터 시작하는 딥러닝: 미분과 경사하강법 (0) | 2023.04.15 |
[Paper Review] U-Net 논문 정리와 구현 (0) | 2023.04.10 |
[DL 기초] 밑바닥부터 시작하는 딥러닝: 신경망 학습 (0) | 2023.04.08 |