딥러닝의 학습 방법 (순전파, 손실함수, 최적화)
딥러닝의 학습
딥러닝 학습의 목표는 모델에 입력값을 넣었을 때의 출력값이 최대한 정답과 일치하게 하는 것입니다. 보통 최초 딥러닝 모델의 매개변수를 무작위로 부여한 후, 반도 학습을 통해 모델의 출력값을 최대한 정답과 일치하도록 매개변수를 조금씩 조정합니다. 딥러닝 모델의 학습을 이해하기 위해서는 아래 개념을 확실히 알아둬야 합니다.
순전파(forward propagation)
순전파란 딥러닝에 값을 입력해서 출력을 얻는 과정을 말합니다. 다음 그림처럼 왼쪽에서 오른쪽으로 데이터가 흘러가는 과정을 순전파라고 하며, 순전파에 의해 딥러닝의 출력값(y_hat)을 얻을 수 있습니다. 출력값은 보통 정답(y)과 구별하기 위해 y_hat으로 표현합니다.
순전파 과정을 거치면 출력값(y_hat)을 얻게 되고, 정답과 출력값의 차이를 구할 수 있게 됩니다. 출력값과 정답의 차이를 구하기 위한 함수를 손실 함수라고 합니다.
손실 함수
손실 함수는 출력값과 정답의 차이를 계산합니다. 출력값과 정답이 일치할수록 손실 함수의 값은 적고, 불일치할수록 손실 함수의 값은 큽니다. 보통 회귀에는 평균 제곱 오차를, 분류 문제에는 크로스 엔트로피를 손실 함수로 사용합니다. 매개변수(가중치, 편향값)를 조절해서 손실 수의 값을 최저로 만드는 과정을 최적화(optimization) 과정이라고 부르고, 최적화 과정은 옵티마이저(optimizer)를 통해 이뤄집니다. 옵티마이저는 역전파(back propagation) 과정을 수행해서 딥러닝 모델의 매개변수를 최적화합니다.
최적화
대표적인 최적화 방법은 경사 하강법입니다. 반복적으로 손실 함수에 대한 모델 매개변수의 미분값을 구한 후, 그 미분값의 반대 방향으로 매개변수를 조절해나가면 결국에는 최저 손실 함숫값에 도달한다는 이론입니다.
위 그림을 예로 들자면, 1번째 학습에서 미분값이 (+)이므로 매개변수를 (-) 방향으로 옮김니다. 그 후, 2번째 학습, 50번째 학습에서도 미분값이 (+)이므로 매개변수를 (-) 방향으로 옮깁니다. 최종적으로 미분값이 0인 위치, 즉 변곡점 지점에 도착했을 때 손실 함수의 최저가에 도달하게 되며, 이때의 매개변수가 모델의 최적의 매개변수가 됩니다. 이 변곡점 지점을 로컬 미니멈이라고 부르고, 여러 개의 로컬 미니멈이 있을 때 가장 낮은 로컬 미니멈을 글로벌 미니멈이라고 합니다.
전통적으로 모든 학습 데이터의 손실 함수를 계산한 후 경사 하강법으로 로컬 미니멈을 찾아나 가는 방법으로 모델 매개변수를 최적화했는데, 이 방법을 배치 경사 하강법(batch gradient descent)이라고 합니다.
그림에서는 경사 하강법을 좀 더 쉽게 이해하기 위해 단순히 x축에 매개변수 하나로 표현했지만 실제 딥러닝 모델에는 여러 개의 매개변수가 여러 레이어에 존재하며, 옵티마이저는 여러 레이어에 존재하는 매개변수를 조정하기 위해 역전파를 사용합니다.