본문 바로가기

인공지능/Deep Learning

Output units - Sigmoid Unit & Softmax Unit

Multilayer perceptron의 구조

 

※ Ian Goodfellow의 Deep Learning, Chapter 6의 일부를 정리한 내용입니다.

※ Logistic 함수는 sigmoid 함수의 한 종류이지만 이하의 서술에서 혼용되어 사용될 수 있습니다.

1. Output Units

output units이란 다층 신경망에서 output layer를 구성하는 unit을 말한다.

2. Bernoulli 분포에 대한 Sigmoid Units

$0$ 또는 $1$을 갖는 이진 변수 $y$가 있다고 하자. 다층 신경망 구조에서 $\boldsymbol {x}$가 입력으로 주어졌을 때, 이를 구분하여 $y={0, 1}$을 출력하도록 모델을 설계하는 것은 Bernoulli 분포 하에서 전형적인 classification 문제이다. 본 절은 이때 사용되는 output unit인 sigmoid unit에 대해서 설명하는 절이다.

 

우선 Bernoulli 분포란 무엇일까?

 

다른 말로는 이항 분포라고 한다. 즉, 결과가 오로지 두 개의 케이스로 분류되는 확률 분포를 의미한다. 동전이 앞면이거나 뒷면일 확률, 어떤 사건이 일어나거나 일어나지 않을 확률 등등 모두 Bernouill 분포로 나타낼 수 있다. 이때, 두 가지 사건을 의미하는 확률 변수를 $y$라고 하자. 그리고 두 가지 사건을 ${0, 1}$이라고 추상화 해보자. $y = 1$일 때의 확률을 $p$라고 하면, 자연스럽게 $y = 0$일 확률은 $1 - p$가 된다. 이처럼 발생할 수 있는 두 가지 결과에 대한 확률의 분포를 Bernouill 분포라고 한다.

 

$y$ $1$ $0$
$p(y)$ $p$ $1-p$

 

즉 Bernouill 분포는 오로지 확률 $p$에 의해 결정된다. 그런데 현실에서 확률 $p$는 하나로 결정된 값이 아니라, 입력값 $\boldsymbol{x}$에 따라 달라질 수 있는 함수이다. 확률 $p$는 일반적으로 조건부 확률이라는 것이다. 예컨데, 오늘의 주가지수가 어제보다 오를 것이냐, 아닐 것이냐를 나타내는 확률 $p$라도, 우리에게 주어진 정보 $\boldsymbol {x}$에 따라서 얼마든지 변할 수 있는 조건부 확률이다. 입력값 $\boldsymbol {x}$에 따라 결정되는 $y=1$일 확률을 수식으로 나타내면 $P(y=1\ |\ \boldsymbol{x})$라고 표현할 수 있다.

 

이제 $\boldsymbol{x}$와 $P(y=1\ |\ \boldsymbol {x})$가 어떤 관련이 있는지 대략적으로 살펴보자.

 

MLP에서 우리에게 가장 처음 주어진 값은 $\boldsymbol{x}$이다. 이것이 입력으로 input layer에 투입된다. 그리고 여러 개의 hidden layer를 거쳐서 output layer 직전 마지막 hidden layer에서 튀어나온 바로 그 상태를 $\boldsymbol {h}$라 하자. 즉, $\boldsymbol {h}$에는 $\boldsymbol {x}$의 정보가 녹아 있다고 할 수 있다. 이 $\boldsymbol {h}$에 가중치 $\boldsymbol {w}$를 곱하고 편향 $b$를 더하면 마지막 output layer에 입력될 $z=\boldsymbol {w}^{\top}\boldsymbol {h}+b$이 된다. 이 $z$를 output unit을 통해 가공하여 $P(y=1\ |\ \boldsymbol {x})$로 나타내는 것이 바로 우리의 목적이다. 그런데 $P(y=1\ |\ \boldsymbol {x})$는 확률이므로 당연히도 $[0, 1]$ 사이의 값을 가져야 하는데, $z$의 경우 그러하리란 보장이 없다. 그래서 이러한 $z$를 $[0, 1]$ 사이에 나타내기 위해 사용하는 일종의 '분류기'가 바로 sigmoid 함수이다. 그리고 이 sigmoid 함수가 activation 함수의 역할을 하는 output unit이 바로 sigmoid output unit이다.(sigmoid는 S자 모양이란 의미라고 한다. sigmoid 함수의 중요한 장점으로 미분 가능하다는 성질이 있다.)

 

sigmoid 함수: $f(z)=\cfrac{1}{1+{e}^{-z}}=\sigma (z)$

 

sigmoid 함수에 의해, $z$는 $0$과 $1$ 사이의 값으로 반환된다.

 

그렇다면 어디 한번 sigmoid 함수를 유도해보자.

 

sigmoid 함수의 본질적 목적은 Bernoulli classification에서 선형 결합이 갖는 한계를 극복하는 것이다. 선형 결합이 갖는 한계가 무엇인지 간략히 언급하면, 첫째, 선형 결합을 통해 얻어지는 값 $z$는 $(-\infty, \infty)$ 사이의 값이라, 우리가 원하는 $y=\{0, 1\}$의 classification 문제에 적합하지 않다는 것이다.  둘째로, 선형 결합으로 계산된 linear regression 함수의 경우, 데이터에 이상치(outlier)에 상당히 큰 영향을 받는다는 것이다. 셋째로, 각 노드에서 선형 결합된 값을 그대로 입력할 경우, 다중 레이어로 인한 MLP의 장점이 무의미해 진다는 것이다. ($\ \because \  \boldsymbol {W}^{\top}_{N} \  \cdots \  \boldsymbol {W}^{\top}_{2} \boldsymbol {W}^{\top}_{1} \boldsymbol {x} = \boldsymbol {Wx} \ $) sigmoid 함수를 유도한다는 것은 위와 같은 한계를 극복한 함수를 고안한다는 것과 같다.

 

※ 이하의 내용은 교과서의 서술을 자의적으로 해석한 서술입니다.

 

이제 sigmoid 함수의 한 종류인 logistic 함수를 유도할 것이다. 우선 앞서 언급하였듯이 Bernoulli distribution의 경우, 일어날 확률 $p$를 구한다면, 일어나지 않을 확률은 $1-p$로 자연스럽게 결정된다. 따라서 일어날 확률 $p$에 집중하여 살펴 보도록 하자. 우리에게 주어진 값은 선형 결합을 통해 입력된 값인 $z$이다. 그리고 $z$는 선형 결합된 값이므로, $(-\infty, \infty)$ 사이의 값이다. 따라서 $z$를 로그의 형태를 빌려 다음과 같이 표현할 수 있을 것이다. 

 

$\begin{align} \ln \widetilde{P}(y=1) &=z \\ \widetilde{P}(y=1) &= \exp(z) \end{align}$

 

이는 로그 함수 역시 $(-\infty, \infty)$ 사이의 값을 갖는다는 아이디어로부터 비롯된 것으로 보인다. 이때 $\widetilde{P}(y)$는 $[0, 1]$ 사이에 존재하도록 정규화되지 않은 확률값을 의미한다. 즉, $\widetilde{P}(y)$는 $z$에 따라 결정되는 $[0, \infty)$ 사이의 함수이다. 왜냐하면 $z$는 확률의 정규화와는 무관하게 선형 결합으로 도출된 값이므로, 우리가 사용할 확률 역시 정규화되지 않은 상태로 출발하는 것이 자연스럽다고 할 수 있다. 이제 이 $\widetilde{P}(y)$를 $[0, 1]$ 사이에 존재하도록 정규화하여 정리하면 아래와 같은 흐름의 식을 도출할 수 있다. 참고로, $\widetilde{P}(y=0)=\exp(k)$라고 가정한 것이다.

 

$P(y=1)=\cfrac {\widetilde{P}(y=1)}{\widetilde{P}(y=1) + \widetilde{P}(y=0)} = \cfrac {\exp(z)}{\exp(z)+\exp(k)}=\cfrac{1}{1+{e}^{-(z-k)}}$

 

위 수식은 $(k, 0.5)$에 대하여 대칭이다. 이때, 입력된 $z$값이 $0$보다 큰지 작은지를 바탕으로 클래스를 구별하고 싶다면, $k=0$으로 설정하면 된다. 이렇게 도출되는 함수가 바로 logistic sigmoid 함수이다.

 

Logistic Curve

3. Odds와 logit 

Odds의 관점으로 logistic sigmoid 함수를 관찰할 수 있다. odds란 무엇일까? Bernoulli 분포 하에서 사건의 결과가 $y=\{0, 1\}$일 때, $p=P(y=1)$이라고 하자. 그렇다면 odds는 다음과 같이 정의되는 값을 의미한다.

 

odds: $t = \cfrac {p}{1-p}$

 

즉, odds는 실패 확률($1-p$)과 성공 확률($p$)의 비율로 볼 수 있으며, 어떤 사건의 확률 분포를 가늠할 수 있도록 해주는 하나의 척도로 볼 수 있다. 정의를 통해 odds는 $[0, \infty)$ 사이의 값을 갖는다는 것을 확인할 수 있다.

 

여기서 또 새로운 개념이 등장하는데, 바로 logit이다. odds에 자연로그를 씌운 값을 logit (log + probit)이라고 한다.

 

logit: $z = \ln {\cfrac {p}{1-p}}$

 

이 logit을 다음과 같이 적절히 변형하면 우리가 구하려고 하는 sigmoid 함수가 유도된다.

 

$\begin{align} {e}^{z}&=\cfrac {p}{1-p} \\ {e}^{-z}&=\cfrac {1-p}{p} \\ &=\cfrac {1}{p} - 1 \\ \therefore \ p &= \cfrac {1}{1+{e}^{-z}} \end{align}$

 

즉, sigmoid 함수는 logit을 독립변수로 갖는 함수라고 할 수 있다.

 

4. Multinoulli 분포를 위한 Softmax Units

Sigmoid 유닛을 잘 이해했다면 softmax 유닛은 거저먹기이다. sigmoid 함수를 일반화한 것이 바로 softmax 함수이기 때문이다. 구체적으로 sigmoid 함수가 2개의 클래스를 분류하는 함수라고 할 때, softmax 함수는 N개의 클래스를 분류하는 함수이다. 아래의 표에 sigmoid 함수와 softmax 함수의 차이를 정리해 두었다. softmax 함수는 sigmoid 함수를 일반화한 것이기 때문에, sigmoid 함수의 변수 및 패러미터에 대한 차원이 증가한 것을 확인할 수 있다.

 

Sigmoid vs. Softmax

 

Sigmoid Softmax
$\hat {y} = \sigma (\boldsymbol{w}^{\top} \boldsymbol{h} + b)$ $\hat {\boldsymbol{y}} \text{, with } \hat{y} = P(y=1\ |\ \boldsymbol{x})$
$z =\boldsymbol{w}^{\top} \boldsymbol{h} + b$ $\boldsymbol{z} =\boldsymbol{W}^{\top} \boldsymbol{h} + \boldsymbol{b}$
$\sigma(z) = \cfrac {\exp(z)}{1+\exp(z)}$ $\text {Softmax} (\boldsymbol{z})_i = \cfrac {\exp(z_i)}{\sum _j \exp(z_j)}$

 

Softmax 함수 구현 시의 주의점

 

Softmax 함수 역시 여러 가지 특징과 개념이 존재하겠지만 내 능력이 상당히 미진한 관계로 한 가지만 언급하도록 하겠다. 바로 overflow의 문제이다. softmax 함수의 경우 지수 형태로 표현되기 때문에 입력값으로 매우 큰 값이 주어진다면 컴퓨터는 이를 계산하지 못하게 된다. 예를 들어 $z=100$ 일 때, ${e}^{100}$의 경우를 생각해 보라. 이러한 문제를 피하기 위해 다음과 같은 식변환을 거쳐 개선된 형태의 softmax 함수를 사용할 수 있다.

 

$\begin{align} \text {Softmax} (\boldsymbol{z})_i &= \cfrac {\exp(z_i)}{\sum _j \exp(z_j)} \\ &= \cfrac {\exp(C)\exp(z_i)}{\exp(C)\sum _j \exp(z_j)} \\ &= \cfrac {\exp(z_i + C)}{\sum _j \exp(z_j + C)} \\ &= \cfrac {\exp(z_i - \max z)}{\sum _j \exp(z_j - \max z)} \\ \\ \therefore \ \text {Softmax} (\boldsymbol{z})_i &= \text {Softmax} (\boldsymbol{z} - \max z)_i \end{align}$

 

즉, 가장 큰 값을 갖는 $z$를 입력값에서 빼서 투입하더라도, softmax 함수의 결과는 변하지 않는다. 이와 같은 방법을 통해 overflow 문제를 해결할 수 있다.

'인공지능 > Deep Learning' 카테고리의 다른 글

Graph Neural Networks  (2) 2024.07.23
Feature Pyramid Networks for Object Detection  (2) 2024.02.09
CIDEr-D와 METEOR  (0) 2023.10.05
MLP 모델의 Weight Initialization에 대한 이해  (0) 2022.07.05