[Stanford Univ: CS231n] Lecture 4. Backpropagation and Neural Networks
본 포스팅은 Stanford University School of Engineering의 CS231n: Convolutional Neural Networks for Visual Recognition을 수강하고 공부한 내용을 정리하기 위한 포스팅입니다.
https://youtu.be/d14TUNcbn1k?si=iAuq0gjcq4gG5LIi
https://github.com/cs231n/cs231n.github.io
GitHub - cs231n/cs231n.github.io: Public facing notes page
Public facing notes page. Contribute to cs231n/cs231n.github.io development by creating an account on GitHub.
github.com
CS231n Lecture 4는 신경망의 학습 방법, 특히 역전파 알고리즘(Backpropagation)을 중심으로 다룬다. 이번 강의는 딥러닝에서 가장 핵심적인 개념 중 하나인 Gradient-based Learning을 수학적으로, 직관적으로 풀어낸다.
1. 신경망의 구조와 비선형성의 중요성
- 신경망은 입력층, 은닉층, 출력층으로 구성되며, 각 층은 뉴런으로 이루어져 있다.
- 비선형 활성화 함수(예: ReLU)를 사용하지 않으면, 여러 층을 쌓아도 전체 모델은 선형 함수에 불과하게 된다.
- 비선형성을 도입함으로써 신경망은 복잡한 함수도 근사할 수 있는 표현력을 갖게 된다.
2. 역전파 알고리즘 (Backpropagation)
- 역전파는 손실 함수의 값을 줄이기 위해 각 가중치에 대한 gradient 를 계산하는 알고리즘이다.
- 계산 그래프를 기반으로, 체인 룰을 활용하여 출력에서부터 입력까지 gradient 를 전파한다.
- 각 연산 노드에서의 local gradient와 upstream gradient를 곱하여 전체 gradient를 계산한다.
ReLU Activation Function은 element-wise 함수이기 때문에 각 출력 f_i는 오직 입력 x_i 하나에만 작동된다. 따라서 ReLU의 Jacobian 구조는 대각행렬이 된다.
따라서 실제로 ReLU의 전체 Jacobian 행렬을 작성하고 공식화 할 필요는 없다. 출력에 대한 x의 영향에 대해서 그리고 이 값을 사용하는 것에 대해서만 알면 된다. 그리고 계산한 gradient의 값을 채워 넣기만 하면 다.