일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 최린컴퓨터구조
- dcgan
- CycleGAN
- shrinkmatch paper
- GAN
- remixmatch paper
- Entropy Minimization
- dann paper
- 백준 알고리즘
- Pix2Pix
- CGAN
- UnderstandingDeepLearning
- tent paper
- cifar100-c
- shrinkmatch
- SSL
- WGAN
- 컴퓨터구조
- mocov3
- Pseudo Label
- ConMatch
- mme paper
- semi supervised learnin 가정
- adamatch paper
- conjugate pseudo label paper
- Meta Pseudo Labels
- simclrv2
- CoMatch
- 딥러닝손실함수
- BYOL
- Today
- Total
Hello Computer Vision
비전공생의 Backpropagation(역전파) 직접 손으로 해보기 본문
딥러닝에 빠지고 공부한지 반년 정도의 시간이 흘렀는데요,
Backpropagation이라는 개념을 어렴풋이 알고 있었고 모델을 훈련시킬 때
잘 되겠지 하고, 생각을 했지만 앞으로 계속 모델을 만질텐데 이러한 black box부분을 정확히는 모르더라도
어떻게 돌아가는지는 알아야 겠다고 생각해 한번 손으로 써보고 정리해보려고합니다.
일단 backpropagation을 왜 사용할까?
이 이유에 대해서는 gradient descent 를 왜 사용하는지부터 알면 좋을 거 같은데요,
왜냐하면 backpropagation은 gradient descent를 최대한으로 활용하기 위한 알고리즘이기 때문입니다.
gradient descent에 대해서는 간략하게 정리해놓은 글이 있는데 봐주시면 도움이 될 거 같습니다.
해당 글을 봤다면 수많은 가중치들을 업데이트 하기 위해서는 시간이 오래 걸릴 거 같습니다.
28x28의 흑백이미지를 구분하는데 걸리는 1회 훈련 파라미터 개수가 8,000개가 육박하니
이 모든 가중치들을 일일이 우리가 아는 미분으로 하면은 한세월 걸릴 거 같은데요,
이것을 빨리 해줄 수 있는 것이 backpropagation입니다(using chainrule)
이에 대해 왜 빨리 할 수 있는지에 대해서는 여기 참고하시면 될 거 같습니다.
그렇다면 이것이 어떻게 이루어지는지 한번 직접 손으로 써보았는데요,
해당 식은 3brown 1blue 영상에 나온 식을 참고하여서 작성하였습니다.
다른 영상들의 식도 봤지만 가장 깔끔하고 이해 쉽게 작성할 수 있었습니다.
한번 이렇게 쓰면서 느끼는 점은 왜 한번씩 써보라고 하는지 이유를 알 수 있었습니다.
단순히 gradient를 구하는구나~ 라고 생각하기 보다는 어떤 방식으로 구해지는지 간단한 구조를 통해 알 수 있었다는 것이
큰 배움 같습니다.
혹시라도 쓰기 귀찮으신분 있더라도 10분짜리 영상이니 가볍게 한번 써보시길 추천드립니다.
틀린 점 있다면 언제든 지적 바랍니다.
'딥러닝' 카테고리의 다른 글
*args와 **kwargs 쓰임 (0) | 2022.12.30 |
---|---|
딥러닝 Momentum(관성)에 대한 이해 (0) | 2022.11.25 |
비전공생의 Gradient Descent(경사 하강법)살펴보기 (0) | 2022.11.09 |
ResNet(2015) 구조 리뷰 (0) | 2022.10.25 |
GoogleNet(2014) 구조 리뷰 (0) | 2022.10.23 |