Deep neural network 에서 가중치(weight)를 업데이트 하는 방식이 back propagation입니다.
Chain Rule을 이용해서 가중치를 뒤쪽에서부터 업데이트하죠? 이론적인 부분은 아마 이제 다들 잘 아실 거라고 생각합니다. scikit-learn등을 이용해서 구현할 수도 있는데, 간단하게 엑셀을 이용해서 위의 Neural Network구조에 back propagation을 적용해 보도록 하겠습니다. (첨부파일 업로드)
일단 초기 가중치 6개 (첫번째 layer에 4개, 두번째 layer에 2개)가 0.1 / 0.2 / -0.1 / 0.0 / 0.1 / 0.3 와 같이 세팅되어 있다고 해보겠습니다. 그럼 일단 이 상태에서 forward propagation 시켰을 때 output값 o1이 나오겠죠? 그리고 그값에 따라 실제 참값과의 오차(Loss)가 나올 것입니다. 그러면 우리가 항상 최적화문제에서 그렇듯이 이 오차를 줄일 수 있는 방향으로 진행합니다. (neural network에서는 gradient decsent 방법을 사용합니다. 더 구체적인 세부방법론을 어느것을 적용할 것인가는 다르겠지만 기본 컨셉은 동일하겠습니다)
https://darkpgmr.tistory.com/133
Gradient Descent 탐색 방법
기본적인 함수 최적화(optimization) 방법 중 하나인 gradient descent 방법에 관한 글입니다. Gradient descent 방법은 미분의 개념을 최적화 문제에 적용한 대표적 방법 중 하나로서 함수의 local minimum을 찾.
darkpgmr.tistory.com
오차에 대한 가중치들의 미분값을 계산해서 새로운 가중치를 업데이트 합니다.
이 작업을 엑셀에서 직접 진행해보시기 바랍니다. 제가 진행한 답은 아래와 같습니다.
Back propagation에 대한 상세 내용이 궁금하신 분은 아래 블로그를 참고하세요
그럼 이것으로 이번 포스팅을 마칩니다.
04-3) 역전파(BackPropagation) 이해하기
인공 신경망이 순전파 과정을 진행하여 예측값과 실제값의 오차를 계산하였을 때 어떻게 역전파 과정에서 경사 하강법을 사용하여 가중치를 업데이트하는지 직접 계산을 통해 이해해봅 ...
wikidocs.net
추가) LSTM 구조에서 역전파를 통한 업데이트
https://ratsgo.github.io/natural%20language%20processing/2017/03/09/rnnlstm/
RNN과 LSTM을 이해해보자! · ratsgo's blog
이번 포스팅에서는 Recurrent Neural Networks(RNN)과 RNN의 일종인 Long Short-Term Memory models(LSTM)에 대해 알아보도록 하겠습니다. 우선 두 알고리즘의 개요를 간략히 언급한 뒤 foward, backward compute pass를 천천
ratsgo.github.io
'Data & Research' 카테고리의 다른 글
[Anomaly Detection] Isolation Forest (0) | 2022.01.23 |
---|---|
[Statistics] Bayesian Linear Regression (2) | 2021.11.27 |
[Deep Learning] Convolutional Neural Network (CNN) (0) | 2021.11.16 |
[Machine Learning] 모델의 평가 (2) | 2021.11.14 |
[Statistics] 샘플링(Sampling)과 MCMC (0) | 2021.11.10 |