Hello Computer Vision

비전공생의 Backpropagation(역전파) 직접 손으로 해보기 본문

딥러닝

비전공생의 Backpropagation(역전파) 직접 손으로 해보기

지웅쓰 2022. 11. 9. 23:15

딥러닝에 빠지고 공부한지 반년 정도의 시간이 흘렀는데요,

Backpropagation이라는 개념을 어렴풋이 알고 있었고 모델을 훈련시킬 때

잘 되겠지 하고, 생각을 했지만 앞으로 계속 모델을 만질텐데 이러한 black box부분을 정확히는 모르더라도

어떻게 돌아가는지는 알아야 겠다고 생각해 한번 손으로 써보고 정리해보려고합니다.

 

일단 backpropagation을 왜 사용할까?

이 이유에 대해서는 gradient descent 를 왜 사용하는지부터 알면 좋을 거 같은데요,

왜냐하면 backpropagation은 gradient descent를 최대한으로 활용하기 위한 알고리즘이기 때문입니다.

gradient descent에 대해서는 간략하게 정리해놓은 글이 있는데 봐주시면 도움이 될 거 같습니다.

 

비전공생의 Gradient Descent(경사 하강법)살펴보기

딥러닝 모델을 만지면서 당연히 해왔던 것들인데 기초는 닦아도 닦아도 끝이 없기 때문에 한번 정리하고 넘어가려고 합니다. 사실 이 내용만해도 한 학기 수업을 할 수 있을 정도로 방대하지만

keepgoingrunner.tistory.com

 

해당 글을 봤다면 수많은 가중치들을 업데이트 하기 위해서는 시간이 오래 걸릴 거 같습니다.

28x28의 흑백이미지를 구분하는데 걸리는 1회 훈련 파라미터 개수가 8,000개가 육박하니 

이 모든 가중치들을 일일이 우리가 아는 미분으로 하면은 한세월 걸릴 거 같은데요,

이것을  빨리 해줄 수 있는 것이 backpropagation입니다(using chainrule)

이에 대해 왜 빨리 할 수 있는지에 대해서는  여기 참고하시면 될 거 같습니다.

 

그렇다면 이것이 어떻게 이루어지는지 한번 직접 손으로 써보았는데요,

해당 식은 3brown 1blue 영상에 나온 식을 참고하여서 작성하였습니다.

다른 영상들의 식도 봤지만 가장 깔끔하고 이해 쉽게 작성할 수 있었습니다.

 

한번 이렇게 쓰면서 느끼는 점은 왜 한번씩 써보라고 하는지 이유를 알 수 있었습니다.

단순히 gradient를 구하는구나~ 라고 생각하기 보다는 어떤 방식으로 구해지는지 간단한 구조를 통해 알 수 있었다는 것이

큰 배움 같습니다. 

 

혹시라도 쓰기 귀찮으신분 있더라도 10분짜리 영상이니 가볍게 한번 써보시길 추천드립니다.

 

틀린 점 있다면 언제든 지적 바랍니다.