menu

프레임워크 없이 딥러닝 구현해보기 3일차

밑바닥부터 시작하는 딥러닝(사이토 고키)라는 책을 읽으면서 딥러닝을 다시 공부해보고 있습니다.

오늘의 배운 것

학습을 하기 위해 기울기를 구하기 위해 그 전까지는 수치 미분법을 사용했지만, 너무 느렸다. 그 대신 더 효율적으로 계산할 수 있게 하는 오차역전파법을 사용한다.

먼저 순전파를 시킨 후, 끝 레이어부터 처음 레이어까지 거꾸로 역전파 시키면서 어떤 요소가 최종 값에 얼마나 많은 영향을 미치는 지, 즉 기울기를 계산할 수 있다. 최종 값에 많은 영향을 미치는 요소일 수록 가중치를 더 많이 갱신한다.

오차역전파법은 수치 미분법에 비해 훨씬 빠르지만, 구현하기는 다소 어렵다. 학습할 때 필요한 행렬곱, Sigmoid, Relu 등의 활성화 함수, 그리고 출력층의 Softmax 함수까지 역전파 결과가 어떻게 되는 지 미분을 통해 알아내야 구현할 수 있다.


느낀 점

상당히 수학적인 개념이 많이 들어가있어 놀랐지만, 컴퓨터가 수치 미분법이 아니라 역전파법을 통해서도 기울기를 구할 수 있다는 것이 신기했다.

나중에 시간이 된다면 역전파법을 설명하는데 사용되는 계산그래프를 시뮬레이션하는 웹을 만들어보고 싶다는 생각이 들었다.


실습한 코드는 https://github.com/woduq1414/deep-learning-without-tensorflow 에 있습니다.