로지스틱 회귀와 시그모이드, 소프트맥스에 대한 이해

손계산을 안한지 오래되다보니 간단한 계산도 하기 어려워진다.
복기하는 겸 개념을 다시 정리해본다.

로지스틱 회귀

로지스틱 회귀란 실수값을 확률값으로 회귀하는 과정을 말한다.
이 과정은 어떤 실수값이든 확률값으로 변환할 수 있기 때문에 당연히 유용하다.
하지만 실수값이란 구간 (inf , -inf)에서 정의되며 확률값은 구간 [0, 1]에서 정의되기에 어떤 함수를 사용하여 두 도메인 간 값을 변환할 수 있을 지에 대한 생각이 필요하다.

로지스틱은 이러한 함수로 log-odds를 이용한다.
logit이라 불리는 이 로그 오즈는 로그로 표현된 승/패 비율을 의미한다.
승/패 비율은 p/(1-p)이기 때문에 본질적으로 [0, \inf)의 구간에서 정의되며, 이에 로그를 취하면 구간 (\inf , -\inf)에서 정의된다.

$$ logit(p) = log{\frac{p}{1-p}} $$

이것이 의미하는 것은 실수값(logit)을 확률값(p)으로 변환할 수 있다는 것을 말하며 이는 곧 다음과 같은 활용으로 이어진다.

$$
\begin{align*}
WX &= \sum^N_{i=0}{w_i x_i} \\
&= log{\frac{p}{1-p}}
\end{align*}
$$

이 때, x_0은 bias(w_0)를 위한 값으로 1로 고정된다.
그리고 이를 p에 대해 풀면 다음과 같은 시그모이드(sigmoid) 함수가 된다.

$$ p = \frac{1}{1 + e^{-WX}} $$

이 때, p는 확률이므로 구간 [0, 1]에서 정의되며, 주어진 입력값(WX)을 바탕으로 이 값이 threshold(0.5)보다 큰 지 작은 지를 비교함으로써 이진 분류문제를 정의할 수 있다.
이 때문에 로지스틱 회귀는 회귀라는 이름을 사용함에도 분류모델로서 사용된다.
하지만 로지스틱 함수가 실수값을 확률값으로 회귀시키기에 이는 타당한 이름으로 보인다.

로지스틱 함수의 그래프
Figure from Wikipedia

시그모이드

시그모이드 함수는 S자 형태를 그리는 함수를 말하며 로지스틱 함수가 그 중 대표적인 예시이다.
수많은 함수들이 시그모이드 함수가 될 수 있으며 이 때문에 시그모이드 함수에 대한 수학적 성질이 쉽게 정리되지 않는다.
일반적으로 시그모이드 함수는 매끄러운(smooth) 함수이며 미분 시 bell-curved 형태를 가진다.

많은 문헌에서는 로지스틱 함수를 시그모이드로 표현하여 사용한다.
하지만 시그모이드 함수가 로지스틱 함수인 것은 아니니 항상 notation을 주의하여야 한다.

로지스틱 함수를 $$\sigma(x) = \frac{1}{1 + e^{-x}}$$로 정의할 때 다음의 유용한 성질들을 도출할 수 있다.

$$
\begin{align*}
\sigma(x) &= 1 – \sigma(-x) \\
\frac{d}{dx} \sigma(x) &= \sigma(x)(1 – \sigma(x)) \\
\int \sigma(x) dx &= ln(1 + e^x)
\end{align*}
$$

소프트맥스

소프트맥스는 시그모이드를 다변량으로 확장한 것이다.
이를 보이기 전에 먼저 소프트맥스의 형태를 확인하자.

$$ softmax(x_i) = \frac{e^{x_i}}{\sum^k_{j=0}{e^{x_j}}} $$

이는 $$ X_e = \begin{pmatrix} e^{x_1} & \cdots & e^{x_k} \end{pmatrix}^T $$로 정의할 때 다음과 같이 vector form으로 표시할 수 있다.

$$ softmax(x) = (\mathbb{1}^T_k X_e)^{-1} X_e $$

이 때, 1_k는 길이가 k이고 모든 원소가 1인 1벡터이다.
이는 시그모이드와 마찬가지로 실수값을 구간 [0, 1]에 정의된 확률값으로 매핑한다.

이제 이진 분류문제에 대해 소프트맥스 함수를 확인해보자.

$$
\begin{align*}
softmax(x) &= \frac{e^{x_1}}{e^{x_1}+e^{x_2}} \\
&= \frac{1}{1+e^{x_2-x_1}} \\
&= \frac{1}{1+e^{-(x_1-x_2)}} \\
\end{align*}
$$

위 식에서 z=(x_1-x_2)로 치환하면

$$ softmax(x) = \frac{1}{1+e^{-z}} $$

가 되어 시그모이드 함수가 된다.
이는 다중 클래스 분류문제에도 동일하게 적용되며, 그 결과 특정 번째의 결과에는 모든 입력값이 반영된다는 것을 알 수 있다.

시그모이드 함수에서 일반화되었기에 소프트맥스 함수에 왜 지수함수가 들어가는지에 대한 이유도 충분히 설명되었다고 생각한다. 이제 소프트맥스 함수가 가진 몇 가지의 추가적인 이득을 살펴보자.

첫째로 소프트맥스 함수에는 어떤 입력값이 들어와도 양수화된다는 점이다. 이는 실수값을 확률값으로 매핑하기에 당연한 결과이다.

둘째로 소프트맥스 함수는 y=e^x 함수의 특징으로 인해 큰 입력값에 대해 큰 결과를 도출한다. 작은 값에 대한 패널티를 주고 싶을 때 소프트맥스 함수가 특히 유효하다는 것을 알 수 있다.

셋째로 소프트맥수 함수는 시그모이드 함수이기 때문에 미분이 용이하다.
별 걱정 없이 특정 번째의 gradient를 시그모이드 함수의 미분으로 간주하여 계산하면 된다.

댓글 남기기