본문 바로가기

Activities/메타코드 서포터즈 4기

[Backpropagation] 메타코드 강의 후기_챕터2: Pytorch Fundamentals - Loss 최적화 - Gradient Descent

이번 시간에는 저번 시간에 이어 뉴럴 네트워크 학습에 대해 공부해봅시다. 

저번시간에 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기 서포터즈 활동의 일환으로 작성한 게시글입니다. 

메타코드M (mcode.co.kr)