Lecture Note
cs231n_2017_lecture4.pdf
Keyword
- Neural networks
- Computational graphs
- Backpropagation
- Activation functions
- Biological neurons
💡 한번은 Back Propagation에 대한 정리를 제대로 해야겠다싶어 강의와는 별개로 추가적으로 공부한 내용을 정리했습니다...! 혹시 누군가 본다면 도움이 될까 하여...
BackPropagation
- Last Lecture
- 신경망 학습 과정
- 입력값이 각 layer를 지나며 weight를 곱하고 예측하는 Output값을 도출
- 예측된 Output값과 실제 Output값 간의 오차를 계산
- 오차를 줄이기 위한 Layer의 weight 등을 업데이트를 위해 Back Propagtion
- Training Data를 이용해 저번 강의에서 배운 Loss Function을 최소화시키는 것이 신경망 학습의 목표 → Gradient Descent (경사하강법)의 등장
- Gradient Descent (경사하강법)
- 극점을 찾기 위해 Gradient의 반대 방향으로 이동하는 방법
- Loss 함수의 값을 최소화시키기 위해 파라미터 값을 찾는 방법
- Output에 영향을 주는 변수들이 loss에 미치는 영향을 나타내는 Gradient를 계산하고 반대로 더해준다.
- Simple Example
- f(x,y,z)=(x+y)z
- Input : x = -2, y = 5, z = -4
- 우리가 얻고자 하는 것: 변수 x,y,z가 결과값에 미치는 영향 ⇒df/dx,df/dy,df/dz
- 근데? 이걸 바로 구할 수 없으니 Chain Rule을 이용해서 끝에서 거슬러 올라가는 식으로 구한다!
- 각 변수가 예측값에 미치는 영향인 미분값을 찾았다! 그래서?
- 예측값과 실제결과값 간의 차이를 줄이기 위해 변수를 업데이트하자.
- 변수가 1개인 경우 (Gradient Descent)
- x=x−r∗df/dx → r : Learning Rate
- 변수가 여러 개인 경우 (Gradient Descent)
- x=x−r∗df/dx
- y=y−r∗df/dy
- ...
- 순서
- Computational Graph로 나타내기
- 모든 출력으로 이어지는 모든 계산이 무엇인지 파악
- 역방향 계산 해야할때 Computational Graph에서 정의한 변수에 대한 Gradient를 가져옴
- Chain Rule을 이용해 연결
Neural Network
Before ) f=Wx 처럼 다양한 선형 Score 함수에 대해 배웠다.
Now) f=W2max(0,W1x) 와 같은 2-layer Neural Network를 다루어볼 것이다.
💡 **신경망(Neural Network)** : 함수들의 집합 → Nonlinear한 복잡한 함수를 만들기 위해 간단한 함수들을 계층적으로 여러개 쌓아올렸다고 생각하면 됨.
- 2-layer Neural Network
-
W1 : 같은 템플릿을 찾는 것
-
h : W1 에서 가지고 있는 템플릿에 대한 Score값(함수) → W1의 각 템플릿이 얼마나 많은지를 나타냄
-
W2 : h 모두에 가중치를 부여하고 중간 점수를 더해 최종점수를 도출
→ 3-layer Neural Network는 f=W3max(0,W2max(0,W1x))의 형태를 가짐
- 왜 이걸 Neural Network라고 부르는가!
→ 여러 자극을 받아 반응하기까지 뉴런에서 발생하는 일련의 과정이 비슷한 구조를 가짐. (뉴런이 훠얼~씬 복잡)
→ 실제로 이를 연구하는 신경과학자들에 따르면 실제 방식과 가장 유사한 비선형성의 종류는 ReLU(모든 음수 임력값에 대해선 0, 양수 입력에 대해서는 선형 함수)라고 했다고 함.
- Activation Function
- Sigmoid : σ(x)=1/(1+e−x)
- ReLU : max(0,x)
- Leaky ReLU : max(0.1x,x)
- Maxout : max(w1Tx+b1,w2Tx+b2)
- tanh : tanh(x)