본문 바로가기
ML | DL/딥러닝 이론|실습

[Activation Function] Sigmoid 이란?

by Leeys 2022. 3. 28.
반응형

시그모이드(sigmoid)가 주로 사용되는곳은 마지막 출력 layer에서 class 0과 1을 예측할 때 이다.
예전에는 은닉 layer에서 자주 사용되었지만 gradient vanishing 이슈로 인해 최근에는 거의 사용되지 않는다.

1. Odds

오즈는 간단하게 말하면 확률을 계산하는 식이다.
특징으로는 0에서 ∞(무한대) 까지 발산한다.

출처 - https://stats.oarc.ucla.edu/other/mult-pkg/faq/general/faq-how-do-i-interpret-odds-ratios-in-logistic-regression/


우리에게 동전이 하나 있다.
해당 동전을 던져서 앞면이 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))
반응형

댓글