딥러닝 101_Chapter 8
딥러닝 과정에서 실제로 일어나는 수학적 메커니즘은 기본적으로 Forward propagation(정방향 전파), Back propagation(역방향 전파) 이렇게 두 가지로 나뉜다. 용어가 꽤 어렵고 고차원적으로 들리겠지만 그 의미는 의외로 굉장히 단순하다.
우선 순서대로 Forward propagation(정방향 전파)이 무엇을 의미하는지부터 살펴보자.
여기 J라는 함수가 있고, 이에 대한 변수가 a, b, c 이렇게 3가지가 있다고 하자. 그러면 J(a, b, c)라고 표현이 되며, 이 함수는 3(a+bc)을 계산하는 함수라고 하자.
여기서 순차적으로 수식의 안쪽에서부터 u=bc, v=a+u, 그리고 J=3v라고 치환을 한다. 그리고 이를 a, b, c가 들어가서 u, v, J를 순차적으로 계산하는 일련의 과정을 위에 그림과 같이 나타내도록 한다.
이때 a=5, b=3, c=2라는 인풋이 들어가면 최종적인 아웃풋 J의 값은? 물론 초등학생도 풀 수 있는 수학 문제이다. J = 3(a+bc)이므로 당연히 답은 33이다. 너무나 쉬운 산수 문제다. 여기서 한번 어떻게 계산을 해 나갔는지 한번 되짚어 보자.
여러분은 아마 bc = 6이라고 먼저 계산을 했을 것이다. 그리고 a=5이므로 괄호 안의 수치를 먼저 계산해서 5+6=11이라고 계산을 했을 것이고, 마지막에 3을 곱해서 33이라는 답을 내었을 것이다. 이렇게 사람도 일련의 순차적인 과정을 거쳐서 계산을 한다.
컴퓨터도 마찬가지다. 아니, 더 정확히 말하면 딥러닝에 있어서 이와 같은 순차적 계산은 필수다. 아래 그림을 다시 한번 보자.
컴퓨터가 인풋 a=5, b=3, c=2를 받았다. 최종적인 아웃풋 J를 계산하기 위해서 이렇게 3단계로 순차적으로 계산을 해 나간다. 이것이 결국 딥러닝에서 말하는 Forward Propagation이다. (대단한 건 줄 알았는데 너무 허무한가?) 물론 실제 수십수백 개의 레이어를 가진 구조에서 Forward Propagation 은 이렇게 단순하게 나타낼 수는 없겠지만, 여하튼 그 기본적인 개념은 왼쪽에서 오른쪽으로 수식의 작은 단위부터 순차적으로 계산을 해나가며 아웃풋을 산출한다는 개념이다. 여기서 J는 물론 Logistic Regression에서의 cost 함수이다.
그리고 Back propagation은 뒤에서 다시 설명하겠지만 그 반대로 가는 과정이다. J를 v에 대해서 미분하고, v를 a와 에 대해서 미분하고, u를 b와 c에 대해서 미분을 해서 최종적으로 J를 a, b, c에 대해서 미분한 값을 찾아가는 과정이다. 위 그림에서는 이와 같은 순차적 과정이 오른쪽에서 왼쪽으로 이어지는 빨간색 화살표로 표시가 되어있다. Back propagation은 딥러닝을 잘 이해하기 위해서 반드시 공부해야 하는 부분이며, 이를 통해 딥러닝이 최적 값을 찾아가는 알고리즘인 Gradient Descent가 작동하게 되는 것이다. 다만 Forward propagation에 비해서 직관적으로 이해하기에는 어려운 측면이 있기는 한데, 이는 어쩔 수 없다. 반복적인 공부를 통해서 만이 어렴풋이 감을 잡을 수 있을 것이다. 솔직히 나도 Back propagation과 Gradient descent를 제대로 이해하는데 6개월 걸린 것 같다. 노력하는 수밖에!
참조 : 강의 원본 출처 (앤드류 응 교수 딥러닝 강의)
Computation Graph (C1 W2 L07)
https://www.youtube.com/watch?v=hCP1vGoCdYU&list=PLkDaE6sCZn6Ec-XTbcX1uRg2_u4xOEky0&index=13