Sigmoid
시그모이드 함수는 아래와 같다.
위 함수를 아래와 같은 계산 그래프로 나타낼 수 있다.
1단계
'/'노드 y = 1/x를 미분하면 아래와 같다.
상류의 예측값에 -y^2을 곱해서 하류로 전달.
2단계
+노드는 그대로 흘려보낸다.
3단계
'exp' 노드의 미분은 아래와 같다.
계산 그래프에서는 상류의 값에 순전파 때의 출력을 곱해 하류로 전달
4단계
'X' 노드는 순전파 때의 값을 '서로 바꿔 곱한다'
이 예에서는 -1을 곱한다.
순전파의 입력 x와 y만으로 역전파를 계산을 할 수 있다.
위 sigmoid에 의해 역전파되는 값을 아래와 같이 정리할 수 있다.
위 처럼 sigmoid 계층의 역전파는 순전파의 출력(y)만으로도 계산할 수 있다.
코드로 sigmoid backpropagation 구현
# 참고 https://github.com/oreilly-japan/deep-learning-from-scratch/blob/master/common/layers.py
class Sigmoid:
def __init__(self):
self.y = None
def forward(self, x):
y = sigmoid(x)
self.y = y
return y
def backward(self, dout):
dx = dout * (1.0 - self.y) * self.y
return dx
내용 참고
'딥러닝관련 > 기초 이론' 카테고리의 다른 글
Squeeze-and-Excitation Networks(SENET) (0) | 2021.10.19 |
---|---|
신경망 정리 (학습 관련 기술들 - optimizer) (0) | 2021.08.16 |
신경망 정리 10-1 (오차 역전파 활성화 함수 계층 구현, ReLU) (0) | 2021.06.13 |
특이값 분해 (singular decomposition) (0) | 2021.06.04 |
신경망 정리 9 (연쇄 법칙 chain rule) (0) | 2021.05.30 |