AI 공부 저장소

선형 회귀 (Linear Regression)에서의 역전파 (Back propagation) & 자동 미분(Autograd) 개념, 원리와 코드 구현 본문

Artificial Intelligence/ML&DL

선형 회귀 (Linear Regression)에서의 역전파 (Back propagation) & 자동 미분(Autograd) 개념, 원리와 코드 구현

aiclaudev 2022. 2. 5. 17:02

 

본 글은 Sung Kim 교수님의 PyTorchZeroToAll 강의를 토대로 저의 지식을 아주 조금 덧붙여 작성하였습니다.
글 작성에 대한 허락을 받아, 개인 공부용으로 작성합니다.
문제가 발생할 시 비공개로 전환함을 알립니다.
https://www.youtube.com/channel/UCML9R2ol-l0Ab9OXoNnr7Lw

 

 

 

 

① 개요

앞에서 다룬 Linear Regression의 Gradient와 같은 경우, 왼쪽 처럼 간단히 구할 수 있었습니다. 하지만, 우측 그림과 같이 Complicated network에 대해선 어떻게 Gradient를 구할 수 있을까요? 

 

바로, Chain Rule을 사용합니다. 대학에서 공학수학 또는 미적분학을 배운 분들에겐 너무 익숙하실겁니다. 만약 Chain Rule을 모르신다면, 이에 대해 먼저 학습하실 것을 매우 권장드립니다.

 

 

 

② Back Propagation

위와 같은 Network에 대해 Back Propagation을 적용해봅시다. 단계는 아래와 같습니다.

 

 

① Local Gradient를 구한다
② ∂L/∂z 이 주어진다
③ Chain Rule을 이용하여 ∂L/∂x, ∂L/∂y를 구한다.

 

 

예제)

Multiply Gate를 포함한 Network에 대해서 Back Propagation을 적용해봅시다.

 

 

Step 1)

 

 

Step 2) Backward Propagation : Local Gradient 구하고, 주어진 ∂L/∂z와 Chain Rule을 이용하여 ∂L/∂x, ∂L/∂y 구하기

 

 

 

 

③ Back Propagation을 이용하여 Linear Regression의 ∂Loss/∂w 구하기

위 그림은 선형회귀 모델의 기본 꼴에서 Loss를 구하기까지의 과정을 그린 것입니다. 지금까지 배웠던 Step를 따라봅시다.

 

Step 1)

 

Step 2) Backward Propagation : Local Gradient 구하고, 주어진 ∂L/∂z와 Chain Rule을 이용하여 ∂L/∂x, ∂L/∂y 구하기

앞선 글에서 구한 결과와 같음

 

Exercise 1)

 

 

Answer)

 

 

Exercise 2)

 

Answer)

 

 

 

 

④ 코드 구현

 

 

 

직접 그래디언트를 계산하였을 때의 결과(https://aiclaudev.tistory.com/22)와, 위 코드처럼 역전파를 이용하여 계산한 결과가 같은 것을 알 수 있습니다.

 

 

 

 

⑤ 구현한 코드와 Back Propagation 과정 대응시키기

 

 

 

 

 

 

 

 

 

⑥ Exercise

 

 

 

 

 

본 글은 Sung Kim 교수님의 PyTorchZeroToAll 강의를 토대로 저의 지식을 아주 조금 덧붙여 작성하였습니다.
글 작성에 대한 허락을 받아, 개인 공부용으로 작성합니다.
문제가 발생할 시 비공개로 전환함을 알립니다.
https://www.youtube.com/channel/UCML9R2ol-l0Ab9OXoNnr7Lw