왜 NN의 출력층에 sigmoid, softmax 함수를 사용할까요? 이는 출력층의 값을 '확률'로서 표현하기 위한 필연적 결과입니다. 본 글에서는 logit, sigmoid, softmax의 관계에 대해서 정리해보았습니다.
1. Basic
앞으로 내용을 전개할 때 중요하게 사용되는 bayes theorem(베이즈 정리) 및 law of total probability(전확률 법칙)에 대해 간단히 정리하고 넘어가겠습니다.
Bayes Theorem
불확실성 하에서 의사결정문제를 수학적으로 다룰 때 사용하는 것으로 두 확률 변수의 사전 확률과 사후 확률 사이의 관계를 나타내는 수식입니다. 공식은 아래와 같습니다.
P(Y∣X)P(X∣Y)P(Y∩X)∴P(Y∣X)=P(X)P(X∩Y)=P(Y)P(Y∩X)=P(X∩Y)=P(X∣Y)P(Y)=P(Y∣X)P(X)=P(X)P(X∣Y)P(Y)
- P(Y∣X): 사후확률(posterior probability)
- P(X∣Y): 가능도(likelihood)
- P(Y): 확률변수 Y의 사전확률(prior probability)
- P(X): 확률변수 X의 사전확률(prior probability)
Law of total probability
표본 공간 S를 n개의 영역으로 나누었을 때, 표본 공간 S의 사건 A의 확률은 다음과 같이 구할 수 있습니다.
P(A)=P(A∩B1)+P(A∩B2)+...+P(A∩Bn)
2. Logit & Sigmoid
logit은 log odds를 뜻합니다. 이를 이해하기 위해서는 odds에 대한 개념 학습이 선행되어야 하겠습니다. odds란 도박에서 얻을(pay off) 확률과 잃을 확률(stake)의 비율을 뜻합니다. 다시 말해 두 확률의 비를 뜻한다고 생각하면 되겠습니다. 도박이 아니라 NN task에서 흔히 다루는 이진 분류 문제에서 생각해봅시다.
- Classes:C1,C2
- Probabiliy of C1 given X:y=P(C1∣X)
- Probabiliy of C2 given X:1−y=P(C2∣X)
우리는 하고자 하는 것은 X가 어떤 클래스일지 맞추는 간단한 문제를 해결하는 것입니다. 이 경우 우리는 간단하게 P(C1∣X)=y 와 P(C2∣X)=1−y 중 큰 값을 X의 클래스로 예측하면 됩니다.
그런데, 앞서 언급한 두 가지 수식을 하나의 수식으로 합쳐서 이와 같은 결정 문제를 표현 할 수 없을까요? 확률의 비인 odds를 통해 해결할수 있습니다. 아래와 같이 말이죠.
oddsChoose=1−yy=1−P(C1∣X)P(C1∣X)=⎩⎪⎪⎪⎨⎪⎪⎪⎧C1C2if 1−yy>1if 1−yy<1
한편 NN의 출력층의 값의 범위를 살펴봅시다. 출력층의 값을 z라고 하고, 단순화 시켜서 표현한다면 아래와 같습니다.
z=θ0+θ1x1+...
이때 z 값의 범위는,
−∞<z<∞
NN 학습에서 주로 사용되는 손실함수는 크로스 엔트로피입니다. Pdata는 데이터의 분포이며, Pmodel은 모델의 예측 분포라고 할 때, 크로스 엔트로피는 다음과 같이 나타낼 수 있습니다.
H(P,Q)=−x∑Pdata(x)logPmodel(x)
여기서 중요한 점은 Pdata(x)와 Pmodel(x)가 확률이라는 것입니다. 그렇다면 z를 어떻게 확률로 개념으로 변환시킬 수 있을까요? 결론적으로 말하면, sigmoid 함수를 통해 −∞ ~ +∞의 값을 0~1 범위로 변환 할 수 있습니다. sigmoid 함수는 logit 함수에서 도출할 수 있습니다.
logits=log(odds)=log(1−yy)=log(1−P(C1∣X)P(C1∣X))
∴−∞<logits<+∞
logits과 z의 범위가 같으니, 두 값을 동치로 놓고, 식을 전개해봅시다.
z=log(1−yy), ez=(1−yy)
y=1+ezez=(1+ez)/ez(ez)/ez=1+e−z1
위 식을 볼때, logit
과 sigmoid
는 역함수 관계임을 알 수 있으며, 2가지 중요한 사실을 도출할 수 있습니다.
logits
은 0~1의 범위를 −∞ ~ +∞로 변환
sigmoid
는 −∞ ~ +∞를 0~1로 변환
두 함수가 다음과 같은 관계가 있을 때, 두 함수 f와 g를 역함수 관계라고 합니다.
f(x)=yg(y)=x
3. Softmax
softmax는 sigmoid 함수를 클래스가 3개 이상일 때로 일반화 하면 유도할 수 있습니다. simoid를 일반화하면 softmax이며, softmax의 특수한 경우가 simoid 함수입니다. 유도 과정에 간단한 산수적인 테크닉이 필요합니다.
이진 분류일 때, odds는 아래와 같이 정의됩니다.
P(C2∣X)P(C1∣X)=ez
클래스의 개수가 K일때로 일반화 하면 위 식은 아래의 형태로 새로 정의할 수 있습니다.
P(Ck∣X)P(Ci∣X)=ezi(1)
양변을 i=1 부터 K−1까지 더해보겠습니다.
i=1∑K−1P(Ck∣X)P(Ci∣X)=i=1∑K−1ezi
위 식의 좌항의 분모는 ∑ 연산과 관련이 없기 때문에, 아래처럼 도출됩니다.
P(Ck∣X)P(C1∣X)+P(C2∣X)+...+P(CK−1∣X)=i=1∑K−1ezi
확률의 합은 1이므로, 좌항의 분자를 변형하여 식을 아래와 같이 표현할 수 있습니다.
P(Ck∣X)1−P(CK∣X)=i=1∑K−1ezi
P(CK∣X)에 대해서 정리하면,
P(CK∣X)=1+∑i=1K−1ezi1(2)
(1) 식은 아래와 같이 쓸수 있습니다.
P(Ci∣X)=eziP(Ck∣X)(3)
(2)식을 (3)식에 대입 합니다.
P(Ci∣X)=1+∑i=1K−1eziezi
(1)에 i대신 k를 대입하면, ezk=1 이므로, 최종적으로 우리가 익히 아는 softmax 함수를 도출 할 수 있습니다.
P(Ci∣X)=ezi+∑i=1K−1eziezi=∑i=1Keziezi
참고자료