1 minute read

딥러닝의 기본 개념 2

Neural Networks by 3Blue1Brown

신경망이 정답을 배우는 과정

손실 함수

우리의 딥러닝 모델이 처음으로 시험을 봐서 정답을 제출했다고 해보자.
당연히 정답과 차이가 있을 것이다. 이 차이를 보고 우리의 모델은 어떤 정답이 얼마나 틀렸는지를 알게된다. 이것이 바로 손실 의 개념이다. 이 손실값을 계산하는 수식을 가진 함수를 손실 함수 라고 부른다. 우리의 모델은 이 손실함수 로 계산된 손실값 을 최소화하기 위해 노력한다. 계산하고 또 계산한다.
주로 사용되는 손실함수는 평균 제곱 오차(Mean Squared Error) 가 있다.

딥러닝의 정답지

실제 정답은 이분법적이지 않을 수 있다. 0 과 1이 아닐 수 있다. 하지만 딥러닝 모델에 정답지를 쥐어줄 때는, 확실히 정답은 1로, 정답이 아닌 것은 0으로 정해서 주어야 한다. 이러한 방법이 정답이 아닌 경우에는 확실히 손실값을 높이며, 정답에 가까운 경우에는 확실히 손실값을 줄인다.

역전파

위에서 우리의 모델은 최종 제출값과 실제 정답값을 비교해서 손실 을 계산한다고 했다. 이 손실을 그저 들고만 있으면 당연히 학습이 이루어지지 않는다. 여기서 배운것을 적용해서 또 정답 맞추기를 해봐야 할 것 이다. 이를 위해서 우리의 모델은 손실값을 다시 처음으로 처음으로, 거꾸로 거꾸로 전달한다. 이것을 역전파 라고 한다.
역전파된 정보를 받은 우리의 모델은 처음에 주어진 가중치들을 고치고 고쳐서 정답에 가까운 결과를 내도록 한다.

그런데, 고치는 것은 좋다. 정답과 가까운 결과가 계산되도록 고치는 것도 좋다.
다만 어떻게 해야 가능한 빠르게, 정확하게 정답과 가까운 결과를 내도록 계산할 것인가?? 이것은 기본적으로 우리가 머신러닝 에서 배운 것과 상통한다.

경사 하강법과 그래디언트

우리의 모델은 주어진 손실함수의 최솟값을 찾아간다. 하지만 찾아가는 방법은 여러가지가 있을 수 있다. 사람이 실제 목적지에 도달하기 위해서는, 가로질러 가기도하고, 빙 돌아가기도 한다. NN 모델도 사람처럼 배운다고 하지않았던가? 똑같다.

손실값의 최소 지점을 찾아가는 방법 중의 하나는 SGD(Stochastic Gradient Descent) 이다. 다차원 공간에서 한 지점과 그 주변의 여러 지점들 사이에는 그래디언트(경사도) 가 존재한다. 이 경사도를 하나하나 계산하는 것도 방법이지만, 효율적이지가 않다. 그래서 더욱 빠르게 목적지를 찾아가기위해, 우리는 통계적으로 주변의 지점들 중 경사도가 가장 큰 지점을 찾는다. 이것을 반복하여 전체 손실함수값 중 최소값을 갖는 지점을 찾는다.

딥러닝에 대한 짧은 글을 마치며

딥러닝은 굉장히 엄격하고 검증된 이론을 바탕으로 만들어진 기계학습 모델이며, 당연히 그 내용은 내가 정리한 단 두편 의 글보다 훨씬 많고 자세하다. 심지어 내가 정리한 글 중에 틀린 내용이 있을 수 있다. 하지만 이번 기회에 이렇게 딥러닝에 대하여 스스로 알아보는 시간을 가지면서, 얕게 나마 신경망이론의 일부를 이해하게 되어 다행으로 생각한다.