이번 시간에는 저번 시간에 이어 뉴럴 네트워크 학습에 대해 공부해봅시다.
저번시간에 Loss 의 정의와 Loss Function들을 배웠는데, 이번 시간에는 그 Loss를 어떻게 줄여나가야 하는지, 그 방식으로 Gradient Descent 와 Backpropagation에 대해 배워봅시다.
Loss를 줄이는 것이 목표라면... 어떻게 최적화해야할까요?
ex ) 산 정상에서 빨리 내려오려면 모든 곳에 발을 뻗어서 기울기가 가파른 방향으로 가야할 것이다. 이 행동을 매번 반복해서 더 이상 뻗을 곳이 없을 때가 minimum 에 도달해서 도착한 것이다.
< Gradient Descent >
- Gradient : 기울기
- Descent : 하강
- 주어진 Loss Function의 최소값을 찾아가는 알고리즘이다
- 결국 weight ( model parameter ) 를 조금씩 update 해서 Loss Function 의 최소값으로 도달하는 것이 목표다.
- Learning rate로 weight update 속도를 조절하면 된다.
- Gradient Descent 를 효율적으로 정의하기 위한 방법들은 매우 많다.
ex) GD -> SGD -> Adagrad -> Momentum , Adagrad -> NAG, RMSProp, AdaDelta -> Adam, Nadam
- 그 중에서 주로 뱡향과 스텝사이즈를 고려한 Adam이 많이 사용된다.
< Backpropagation >
- 앞서 Gradient를 편미분하였는데, 이를 계산하기 위한 방법
1. Feed Forward를 통해 output 예측값을 얻고,
2. 이걸 실제 y와 MSE, CE 방식으로 비교하여 Loss 를 계산한 후,
3. Loss 를 weith로 편미분하여 (= Gradient를 구하여 ),
4. 그와 반대방향으로 업데이트 하는 것
< Chain Rule 을 통한 Loss 최적화 Backpropagation 방식 >
Chain Rule 방식을 응용해서,
Backpropagation 하는 방법을 배워보자.
- Loss를 각 layer의 파라미터로 편미분을 하고, 그 과정을 쪼개서 각 행렬연산으로 차근차근 계산 (backpropagation)
Tip !
딥러닝 입문과정이기도 하고, 실제로 적용해보는 실습이 더 중요하기에
너무 딥하게 이해할 필요없이, 이러한 방법이 있구나 수준으로 알고 넘어가자.
메타코드 4기 서포터즈 활동의 일환으로 작성한 게시글입니다.