BackPropagation 정리
BackPropagation 정리
backpropagation
등장 배경
1960-80년대 초
단일 퍼셉트론과 같은 얕은 신경망에 초점이 맞춰져 있었음
다층 퍼셉트론과 같은 깊은 신경망의 학습은 역전파 알고리즘이 개발되기 전까지는 해결되기 어려운 문제
1986년
Geoffery Hinton, David Rumelhart, Ronald J. Williams 등이 역전파 알고리즘을 발표하여, 다층 퍼셉트론을 비롯한 깊은 신경망 학습이 가능해짐
필요성
MNIST 데이터셋을 이용하여 숫자를 인식하는 신경망 모델
- 입력층 뉴런 784개
- 은닉층 뉴런 100개
출력층 뉴런 10개
계산량
- 연결 가중치 개수
- 편향 개수
- 한 개의 이미지 손실 계산
- 한 개의 파라미터를 업데이트 하기 위한 연산 횟수:
- 모든 파라미터를 업데이트
- CPU 처리 속도가 초당 8억 5천만 번이라면
따라서 1 epoch에 약 123시간이 필요함
역전파 과정
예시 신경망
- 입력층 뉴런 2개
- 은닉층 뉴런 2개
- 출력층 뉴런 1개
- 활성화 함수: sigmoid
- 손실 함수: mse
- 모든 가중치와 학습률은 랜덤 배치
graph LR
%% Input Layer
x1((x₁))
x2((x₂))
%% Hidden Layer
h1((h₁))
h2((h₂))
%% Output Layer
o1((o₁))
%% Connections from input to hidden layer
x1 -- w₁ --> h1
x1 -- w₂ --> h2
x2 -- w₃ --> h1
x2 -- w₄ --> h2
%% Connections from hidden to output layer
h1 -- w₅ --> o1
h2 -- w₆ --> o1
%% Styling
classDef inputNode fill:#93c5fd,stroke:#1e40af,stroke-width:2px;
classDef hiddenNode fill:#a5b4fc,stroke:#3730a3,stroke-width:2px;
classDef outputNode fill:#c4b5fd,stroke:#5b21b6,stroke-width:2px;
class x1,x2 inputNode;
class h1,h2 hiddenNode;
class o1 outputNode;
%% Labels
subgraph Input
x1
x2
end
subgraph Hidden
h1
h2
end
subgraph Output
o1
end
1. 순전파 (Feedforward)
입력값
,입력값과 연결 가중치의 곱을 합하여 은닉층으로 전달
은닉층에서 활성화 함수 적용
출력층으로 전달
최종 출력값
2. 손실 계산
손실 함수 (Mean Squared Error)
3. 역전파 (Backpropagation)
가중치 업데이트 공식
에 대한 미분
chain rule 적용
구하기이를 예측 값
에 대해 미분 구하기시그모이드 함수
의 미분 에 대한 의 편미분따라서
최종적으로
에 대한 손실 기울기
유사한 방식으로
graph LR
%% Input Layer
x1((x₁))
x2((x₂))
%% Hidden Layer
h1((h₁))
h2((h₂))
%% Output Layer
o1((o₁))
%% Connections from input to hidden layer
x1 -- w₁ --> h1
x1 -- w₂ --> h2
x2 -- w₃ --> h1
x2 -- w₄ --> h2
%% Connections from hidden to output layer
h1 -- w₅' --> o1
h2 -- w₆' --> o1
%% Styling
classDef inputNode fill:#93c5fd,stroke:#1e40af,stroke-width:2px;
classDef hiddenNode fill:#a5b4fc,stroke:#3730a3,stroke-width:2px;
classDef outputNode fill:#c4b5fd,stroke:#5b21b6,stroke-width:2px;
class x1,x2 inputNode;
class h1,h2 hiddenNode;
class o1 outputNode;
%% Labels
subgraph Input
x1
x2
end
subgraph Hidden
h1
h2
end
subgraph Output
o1
end
다음 레이어 에 대한 미분 계산
손실 함수에 대한
의 편미분 이 에 영향을 미치므로, 다음과 같이 미분이미 구한
는따라서
에 대한 의 편미분 은 시그모이드 함수이므로 에 대한 의 편미분 은 입력값과 가중치 의 곱
최종적으로
위의 과정을 반복해서 각 가중치에 대한 손실 기울기를 계산하고, 가중치 업데이트
graph LR
%% Input Layer
x1((x₁))
x2((x₂))
%% Hidden Layer
h1((h₁))
h2((h₂))
%% Output Layer
o1((o₁))
%% Connections from input to hidden layer
x1 -- w₁' --> h1
x1 -- w₂' --> h2
x2 -- w₃' --> h1
x2 -- w₄' --> h2
%% Connections from hidden to output layer
h1 -- w₅' --> o1
h2 -- w₆' --> o1
%% Styling
classDef inputNode fill:#93c5fd,stroke:#1e40af,stroke-width:2px;
classDef hiddenNode fill:#a5b4fc,stroke:#3730a3,stroke-width:2px;
classDef outputNode fill:#c4b5fd,stroke:#5b21b6,stroke-width:2px;
class x1,x2 inputNode;
class h1,h2 hiddenNode;
class o1 outputNode;
%% Labels
subgraph Input
x1
x2
end
subgraph Hidden
h1
h2
end
subgraph Output
o1
end
References
This post is licensed under CC BY 4.0 by the author.