시그모이드(sigmoid)가 주로 사용되는곳은 마지막 출력 layer에서 class 0과 1을 예측할 때 이다.
예전에는 은닉 layer에서 자주 사용되었지만 gradient vanishing 이슈로 인해 최근에는 거의 사용되지 않는다.
1. Odds
오즈는 간단하게 말하면 확률을 계산하는 식이다.
특징으로는 0에서 ∞(무한대) 까지 발산한다.
우리에게 동전이 하나 있다.
해당 동전을 던져서 앞면이 0.3 뒷면이 0.7이라고 하면
앞면과 뒷면의 Odds는 앞면에 비해 뒷면이 몇배는 클것이다.
우리가 예측을 할 때에는 확률의 차이가 대칭적이여야
class마다 공평한 확률을 만들 수 있다.
2. Logit
해당 이슈를 해결하기 위해서 간단한 아이디어가 하나 있는데
바로 Odds에 log를 씌워주는 것이다.
이것은 odds를 non-linear 하게 만들어주며,
확률이 0.5라고 할 때 log(P) - log(1-P) = 0 이 성립하는 것을 알 수 있다.
logit의 특징은 -∞ < logit < ∞ 음수에서 양수까지의 실수가 무한대로 발산할 수 있다.
이 때 logit을 P에 대해서 역함수로 정리하면 아래의 공식과 같은 관계가 성립된다.
3. Sigmoid
결론적으로 logit을 알면 sigmoid를 계산할 수 있다.
그럼 우리가 얻을 수 있는 logit은 무엇인가?
바로 y = XW * b 식의 y값이 logit이라고 볼 수 있다.
이 또한 -∞ < XW * b < ∞ 실수가 음수의 무한대에서 양수의 무한대까지 발산하기 때문이다.
이제 이 logit을 sigmoid에 대입하여 계산하면 0~1 사이의 확률이 나오게 된다.
간단하게 python으로 구현해보자.
import numpy
def sigmoid(x):
return 1 / (1 + np.exp(-x))
print(sigmoid(-1))
print(sigmoid(0))
print(sigmoid(1))
'ML | DL > 딥러닝 이론|실습' 카테고리의 다른 글
Deepfake faceswap 소프트웨어 설치, 사용법 (0) | 2021.04.06 |
---|---|
CNN(Convolutional Neural Networks) 이론 설명 (0) | 2020.10.30 |
[딥러닝] 딥러닝 기초 (0) | 2020.10.13 |
댓글