APPENDIX A. Softmax-with-Loss 계층의 계산 그래프

이번 부록에서는 소프트맥스 함수와 교차 엔트로피 오차의 계산 그래프를 그려보고, 그 역전파를 구해보겠습니다. 소프트맥스 함수는 ‘Softmax’ 계층, 교차 엔트로피 오차는 ‘Cross Entropy Error’ 계층, 이 둘을 조합한 계층을 ‘Softmax-with-Loss’ 계층이라 합니다. 결과를 먼저 보면 Softmax-with-Loss 계층은 [그림 A-1]의 계산 그래프로 그릴 수 있습니다.

그림 A-1 Softmax-with-Loss 계층의 계산 그래프

Softmax-with-Loss 계층의 계산 그래프 도로시와 지니가 칠판 앞에서 Softmax 계층과 Cross Entropy Error 계층이 연달아 흐르고, 최종 역전파 기울기 $y_k - t_k$가 도출되는 전체 흐름을 요약해 설명하고 있어요.

도로시와 지니의 Softmax-with-Loss 계산 그래프 개요

  • 도로시: “지니! 신경망의 출력을 확률로 변환해 주는 Softmax 계층과 오차를 계산하는 Cross Entropy Error 계층을 한꺼번에 묶은 Softmax-with-Loss 계층은 그 역전파의 최종 출력이 $y_k - t_k$로 놀랍도록 완벽하고 심플하게 유도된다는데, 정말이야?”
  • 지니: “맞단다, 도로시! 소프트맥스의 원소별 확률 분포 출력인 $y_k$와 정답 레이블 원소 $t_k$의 단순 차이만큼이 오차 역전파 기울기로 하류에 곧바로 전송돼서, 신경망은 그만큼 신속하고 직관적으로 학습할 수 있는 거란다.”

[그림 A-1]에서는 3클래스 분류를 수행하는 신경망을 가정하고 있습니다. 이전 계층으로부터

의 입력은 $(a_1, a_2, a_3)$이며 Softmax 계층은 $(y_1, y_2, y_3)$를 출력합니다. 또, 정답 레이블은 $(t_1, t_2, t_3)$이며 Cross Entropy Error 계층은 손실 $L$을 출력합니다.

이 부록에서는 Softmax-with-Loss 계층의 역전파 결과가 [그림 A-1]처럼 $(y_1 - t_1, y_2 - t_2, y_3 - t_3)$가 되겠습니다.

A.1 순전파

[그림 A-1]의 계산 그래프에서는 Softmax 계층과 Cross Entropy Error 계층의 내용은 생략했습니다. 이번 절에서는 이 두 계층의 내용을 생략하지 않고 그리는 것부터 시작하겠습니다.

우선 Softmax 계층으로, 소프트맥스 함수는 수식으로는 다음과 같습니다.

\[y_k = \frac{\exp(a_k)}{\sum_{i=1}^{n}\exp(a_i)} \tag{식 A.1}\]

그리고 [그림 A-2]는 이 Softmax 계층의 계산 그래프입니다.

그림 A-2 Softmax 계층의 계산 그래프(순전파만)

Softmax 순전파 계산 그래프 도로시가 소프트맥스 순전파 연산 단계에서 각 입력 $a_k$가 지수(exp) 노드를 거쳐 합 $S$와 역수 $1/S$ 바퀴를 거치면서 최종 확률 $y_k$로 배분되는 과정을 흥미롭게 관찰하고 있어요.

도로시의 Softmax 순전파 단계 이해

  • 도로시: “아! 입력 $a_k$들이 각각 지수 함수 exp 노드를 통과해서 분자 값을 만들고, 그 합 $S$를 구한 뒤에 역수 노드 /로 $1/S$을 곱해서 각각의 지수값에 곱해주니까 정확히 소프트맥스 공식이 완성되네!”
  • 지니: “정답이야! 덧셈 노드와 역수 노드, 그리고 마지막 곱셈 노드들로 정밀하게 쪼개서 그래프를 구성해 두면, 복잡한 소프트맥스 미분도 합성 함수의 미분법(체인 룰)으로 손쉽게 계산 그래프 상에서 풀어낼 수 있단다.”

[그림 A-2]는 지수의 합, 즉 [식 A.1]의 분모 항을 $S$로 표기했습니다. 또, 최종 출력은 $(y_1, y_2, y_3)$입니다.

이어서 Cross Entropy Error 계층을 봅시다. 교차 엔트로피 오차의 수식은 다음과 같습니다.

\[L = -\sum_{k} t_k \log y_k \tag{식 A.2}\]

[식 A.2]를 바탕으로, Cross Entropy Error 계층의 계산 그래프는 [그림 A-3]처럼 그릴 수 있습니다.

그림 A-3 Cross Entropy Error 계층의 계산 그래프(순전파만)

Cross Entropy Error 순전파 계산 그래프 토토가 로그(log) 블록과 정답 벡터 $t_k$가 결합하여 곱해진 후 더하기 노드에 합쳐지고, 마지막에 $-1$ 부호 반전기를 거쳐 최종 오차 $L$이 산출되는 모습을 관찰하고 있어요.

토토와 도로시의 교차 엔트로피 순전파 관찰

  • 도로시: “토토야, 이 교차 엔트로피 순전파 그래프를 봐! 신경망의 예측 확률 $y_k$에 log를 씌운 뒤 정답 레이블 $t_k$와 곱해서 전부 더하고, 마지막에 $-1$을 곱해주기만 하면 최종 손실 $L$이 나오게 돼!”
  • 지니: “정답 레이블 $t_k$가 원-핫 벡터라서 정답인 클래스의 $-\log y_k$ 값만 살아남고 나머지는 0이 되니까, 아주 영리하게 그 클래스의 오차 수준만 감지할 수 있지.”
  • 토토: “왈왈! (로그 나무 위에서) 수식이 심플하게 정렬됐다 멍!”

[그림 A-3]은 [식 A.2]를 그대로 계산 그래프로 그린 것입니다. 그래서 특별히 어려운 점은 없을 것입니다.

이어서 역전파를 살펴봅시다.

A.2 역전파

우선 Cross Entropy Error 계층의 역전파입니다. 이 계층의 역전파는 [그림 A-4]처럼 그릴 수 있습니다.

그림 A-4 Cross Entropy Error 계층의 역전파

Cross Entropy Error 역전파 계산 그래프 지니가 마법 지팡이로 역방향 분수 신호를 뿜어내며, 손실 $L=1$에서 시작해 로그 노드를 지나 최종적으로 역전파 결과인 $- rac{t_k}{y_k}$를 거꾸로 밀어 보내고 있어요.

지니의 교차 엔트로피 역전파 강의

  • 지니: “도로시, 역전파는 손실 $L$의 자기 자신에 대한 미분값인 $1$에서 거꾸로 흘러간단다. 곱셈 노드를 지나며 $-1$이 되고, 덧셈 노드를 그대로 지나간 뒤, 각 $t_k$와 교차 곱해져 $-t_k$가 되지.”
  • 도로시: “그리고 마지막에 log 노드의 역전파 미분 공식인 $\frac{1}{y_k}$가 곱해져서, 최종 하류에는 $-\frac{t_k}{y_k}$가 전파되는구나! 수식이 하나씩 조각조각 풀리니까 역전파 미분도 전혀 두렵지 않아!”

이 계산 그래프의 역전파를 구할 때는 다음을 조심해야 합니다.

  • 역전파의 초깃값, 즉 [그림 A-4]의 가장 오른쪽 역전파의 값은 $1$이다($\frac{\partial L}{\partial L} = 1$이므로).
  • ’$\times$’ 노드의 역전파는 순전파 시의 입력들의 값을 ‘서로 바꿔’* 상류의 미분에 곱하고 하류로 흘린다.
  • ’$+$’ 노드에서는 상류에서 전해지는 미분을 그대로 흘린다.
  • ‘log’ 노드의 역전파는 다음 식을 따른다. \(y = \log x\) \(\frac{\partial y}{\partial x} = \frac{1}{x}\)

이상의 규칙을 따르면 Cross Entropy Error 계층의 역전파는 쉽게 구할 수 있습니다. 결과는 $(-\frac{t_1}{y_1}, -\frac{t_2}{y_2}, -\frac{t_3}{y_3})$이며, 이 값이 Softmax 계층으로의 역전파 입력이 됩니다.

이어서 Softmax 계층의 역전파입니다. 이 계층의 역전파는 조금 복잡하니 하나씩 확인하면서 진행해보겠습니다.


* 옮긴이_ 가장 오른쪽 ‘$\times$’ 노드를 예로 보면, 순전파 때의 입력은 $t_1 \log y_1 + t_2 \log y_2 + t_3 \log y_3$와 $-1$입니다. 여기서 ‘서로 바꾼다’는 것은 이 두 입력을 바꾼다는 뜻입니다.

1단계

앞 계층(Cross Entropy Error 계층)의 역전파 값이 흘러옵니다.

2단계

’$\times$’ 노드에서는 순전파의 입력들을 ‘서로 바꿔’ 곱합니다. 여기에서는 다음 계산이 이뤄집니다.

\[-\frac{t_1}{y_1} \exp(a_1) = -t_1 \frac{S}{\exp(a_1)} \exp(a_1) = -t_1 S \tag{식 A.3}\]

3단계

순전파 때 여러 갈래로 나뉘어 흘렀다면 역전파 때는 그 반대로 흘러온 여러 값을 더합니다. 그래서 여기에서는 3개의 갈라진 역전파의 값($-t_1 S, -t_2 S, -t_3 S$)이 더해집니다. 이 더해진 값에 ‘/’의 역전파를 하므로 그 결과는 $\frac{1}{S}(t_1 + t_2 + t_3)$입니다. 그런데 여기에서 $(t_1, t_2, t_3)$은 ‘원-핫 벡터’로 표현된 정답 레이블입니다. 원-핫 벡터란 $(t_1, t_2, t_3)$ 중 단 하나만 1이고 나머지는 전부 0임을 뜻하죠. 따라서 $t_1 + t_2 + t_3 = 1$이 됩니다.

4단계

’+’ 노드는 입력을 여과 없이 내보낼 뿐입니다.

5단계

여러 번 나왔듯이 ‘$\times$’ 노드는 입력을 ‘서로 바꾼’ 곱셈입니다. 여기에서는 $y_1 = \frac{\exp(a_1)}{S}$를 이용해 식을 변형했습니다.

6단계

‘exp’ 노드에서는 다음 관계식이 성립됩니다.

\(y = \exp(x)\) \(\frac{\partial y}{\partial x} = \exp(x) \tag{식 A.4}\)

그리고 두 갈래의 입력의 합에 $\exp(a_1)$을 곱한 수치가 여기에서 구하는 역전파입니다. 식으로 쓰면 $(\frac{1}{S} - \frac{t_1}{\exp(a_1)}) \exp(a_1)$이 되고, 이를 변형하면 $y_1 - t_1$이 됩니다. 이상에서 순전파의 입력이 $a_1$인 첫 번째 노드에서는 역전파가 $y_1 - t_1$임이 유도되었습니다. 나머지 $a_2$와 $a_3$의 역전파도 같은 순서로 구할 수 있습니다. 결과는 각각 $y_2 - t_2$와 $y_3 - t_3$가 됩니다. 또, 여기에서 다룬 3클래스 분류 외에, 가령 n클래스 분류에서도 같은 결과가 유도되는 것은 쉽게 알아낼 수 있습니다.

A.3 정리

여기에서는 Softmax-with-Loss 계층의 계산 그래프를 생략 없이 그려가며 그 역전파를 구했습니다. Softmax-with-Loss 계층의 계산 그래프를 생략하지 않고 그리면 [그림 A-5]처럼 됩니다.

그림 A-5 Softmax-with-Loss 계층의 계산 그래프

Softmax-with-Loss 전체 상세 계산 그래프 지니, 도로시, 토토가 꼬리를 흔들며 파티 폭죽을 터트리고, 복잡해 보이던 전체 연산들이 거꾸로 흘러와 최종 미분값인 $y_k - t_k$라는 심플하고 예쁜 수식으로 완성된 것을 축하하고 있어요.

지니와 도로시의 최종 유도 축하

  • 지니: “도로시, 축하해! 이 복잡해 보이는 전체 계산 그래프를 타고 1단계부터 6단계까지 미분을 거꾸로 전파해 오니까, 지수 함수 미분과 정합하여 결국 $y_k - t_k$만 깔끔하게 남는 신기한 마법을 경험했단다.”
  • 도로시: “와! 복잡한 미분 수식을 직접 증명하려면 너무 머리 아픈데, 그래프의 마디마디 노드 규칙에 맞춰 값을 역전파하니까 정말 직관적이고 아름답게 유도가 끝나네! 딥러닝 공부가 훨씬 재밌어졌어!”
  • 토토: “왈왈! (폭죽 종이를 밟으며) 유도 성공, 딥러닝 완벽 완료다 멍!”

복잡해 보이는군요. 그러나 계산 그래프로 한 단계씩 확인하면서 진행하면 미분을 구하는 것(역전파의 순서)이 그렇게 힘든 작업은 아니잖아요? 여기에서 설명한 Softmax-with-Loss 계층 외에도, 배치 정규화 계층 등 복잡해 보이는 계층을 만나면 이번 절에서 한 것과 같은 과정을 꼭 한번 밟아보세요. 수식만 놓고 고민하는 것보다 분명 쉽게 이해할 수 있을 겁니다.

서브목차