댓글 쓰기 권한이 없습니다. 로그인 하시겠습니까?
사이트 로그인
오차역전파와 매개변수갱신법, 배치정규화에 대해 배워보도록 하겠습니다.목차입니다.
시작하기전 개괄적인 설명을 먼저하도록 하겠습니다.
많이들 알고있는 다층신경망의 학습구조입니다.
인풋이 들어가서 weight와 곱해진 다음 활성화함수로 계산되면서 output이 나오게됩니다.
output과 실제값의 차이인 Loss를 줄이는 것이 우리가 해야하는 것인데
인풋값은 이미 정해져있기 때문에 input에 곱해지는 weight값에 변화를 주는 것이 우리가 할 수 있는 것입니다.
weight값을 갱신시키는 방법 중 세가지를 설명해드릴 것 입니다.
weight가 향하는 방향을 알기 위해서 손실함수의 미분이 필요합니다.
미분값은 체인룰을 통해서 알 수 있습니다.
미분값을 구하고 최적화 방법들을 이용해 적절한 weight로 갱신시켜나가는 전반적인 과정이
오차역전파가 됩니다.
아까 앞서서 미분값을 알기위해 체인룰이 필요하다고 말씀드렸는데요
위 슬라이드에서 볼 수 있듯이 가장 마지막 미분값은 1이라는 것에서부터 시작하여 계산할 수 있습니다.
늘 마지막 값은 1이기 때문에 뒤에서부터 체인룰을 이용할 수 있게 되는 것입니다.체인룰의 과정을 자세히 봅시다
좌측 상단의 ∂L/∂x 을 구하기 위해 이미 뒤에서 부터 구해져서 알고 있는 ∂L/∂z 과 ∂z/∂x를 곱해줍니다.
∂L/∂z 은 체인룰을 통해서 알고 있는 값이고, z식은 x로 이루어져있기 때문에 쉽게 ∂z/∂x를 구할 수 있습니다.
https://www.youtube.com/watch?v=fhrORKjjU7w 이 유튜브영상을 참고한 풀이입니다.활성화함수와 cost함수를 위와같이 두고 한 개의 은닉층이 있는 신경망이 있다고 설정하고
직접 체인룰을 계산해보겠습니다.
이렇게 weight2와 weight1에 대한 기울기를 구해보면 마지막에 식이 중복되는 모습을 볼 수 있습니다.
그 식을 델타로 두면 델타*input 이 우리가 구하고자 하는 기울기 값이 됩니다.
따라서 미분값을 구하려면 델타를 구하는게 우선이 됩니다.
이 풀이에서 볼 수 있듯이 델타도 뒤에서부터 구해나갈 수 있습니다.
δ^(3)을 알면 δ^(2)값을 알 수 있습니다. 그 델타값에 input을 곱하면 우리가 처음 구하고자 하였던 미분값이 됩니다.
이렇게 뒤쪽에서 부터 우리가 알고있는 값들을 곱해가며 미분값을 알아가는 것이 오차역전파 과정 중 일부에 해당됩니다.
알아낸 미분값을 이용해 weight값을 조절해야합니다. 이제 어떤 방법으로 weight를 갱신해가는지 알아보겠습니다.
모멘텀은 흔히 사용하는 SGD방법에 말그대로 관성을 넣어주는 방법입니다.
따라서 SGD보다 양옆으로 삐져나가는 경향이 줄어들게 되고 우측의 그림처럼 가려는 방향(중심)으로는 더 빠르게
위아래로는 좌측SGD보다는 덜한 정도로 움직이게 됩니다.
AdaGrad는 학습률에 영향을 주는 방법입니다. 학습률은 작아도 커도 문제이기 때문에 적절하게 조절해야할 필요가있습니다.
작을 경우는 더 섬세할 수 있겠지만 local minimum에 빠질 위험도 있고 시간도 오래걸립니다. 큰 경우는 발산해 버릴 수 있습니다.
AdaGrad방법은 처음에는 학습률을 크게 그리고 점점 작게 하는 방법입니다.
기울기를 곱한 값으로 계속 학습률을 나눠주기 때문에 점점 작아집니다.Adam은 AdaGrad와 모멘텀을 합친 방법입니다.
https://arxiv.org/abs/1412.6980
이 곳에서 관련 논문을 볼 수 있습니다.
배치정규화는 미니배치를 이용하는 경우의 문제점을 해결하기 위해 나온 방법입니다.
하나의 data에서 나눠친 배치이지만 각각의 분산이 같을 수는 없기 때문에 문제가 발생합니다.
따라서 정규화를 통해 분산을 같게 해줍니다.
이렇게 활성화함수 전에 정규화를 시켜줍니다.
활성화함수 뒤 쪽에도 해줄 수 있지만 보통은 전에 정규화를 해준다고 합니다. 배치 정규화를 했을 때와 하지 않았을 때의 속도차이입니다.
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
7 |
3주차 딥러닝 - 소프트맥스, 손실함수(MSE, 교차엔트로피), SGD, 오버피팅 방지
![]() |
토토실 | 2017.05.15 | 38345 |
6 |
2주차 딥러닝 - 다층신경망, 활성화 함수, 손실 함수 그리고 텐서보드
![]() |
록 | 2017.05.16 | 33630 |
5 |
1주차 딥러닝 - 퍼셉트론&텐서플로선형회귀
1 ![]() |
히둥 | 2017.04.26 | 28118 |
» |
4주차 딥러닝 - 오차역전파, 매개변수 갱신(모멘텀, Adagrad, Adam), 배치정규화
![]() |
수빈 | 2017.05.21 | 24481 |
3 |
GAN 스터디 공유자료
![]() |
DataMarket | 2017.08.29 | 20645 |
2 |
5주차 딥러닝 - CNN
![]() |
구혜인 | 2017.06.21 | 20236 |
1 |
Tensorflow-gpu 설치전 필요한 프로그램들을 정리했습니다.
1 ![]() |
토스트먹어 | 2017.09.12 | 19636 |
Designed by sketchbooks.co.kr / sketchbook5 board skin
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5