손계산을 안한지 오래되다보니 간단한 계산도 하기 어려워진다.
복기하는 겸 개념을 다시 정리해본다.
로지스틱 회귀
로지스틱 회귀란 실수값을 확률값으로 회귀하는 과정을 말한다.
이 과정은 어떤 실수값이든 확률값으로 변환할 수 있기 때문에 당연히 유용하다.
하지만 실수값이란 구간 (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*}
$$
이 때, 은 bias()를 위한 값으로 1로 고정된다.
그리고 이를 p에 대해 풀면 다음과 같은 시그모이드(sigmoid) 함수가 된다.
$$ p = \frac{1}{1 + e^{-WX}} $$
이 때, p는 확률이므로 구간 [0, 1]에서 정의되며, 주어진 입력값(WX)을 바탕으로 이 값이 threshold(0.5)보다 큰 지 작은 지를 비교함으로써 이진 분류문제를 정의할 수 있다.
이 때문에 로지스틱 회귀는 회귀라는 이름을 사용함에도 분류모델로서 사용된다.
하지만 로지스틱 함수가 실수값을 확률값으로 회귀시키기에 이는 타당한 이름으로 보인다.
시그모이드
시그모이드 함수는 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 $$
이 때, 는 길이가 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*}
$$
위 식에서 로 치환하면
$$ softmax(x) = \frac{1}{1+e^{-z}} $$
가 되어 시그모이드 함수가 된다.
이는 다중 클래스 분류문제에도 동일하게 적용되며, 그 결과 특정 번째의 결과에는 모든 입력값이 반영된다는 것을 알 수 있다.
시그모이드 함수에서 일반화되었기에 소프트맥스 함수에 왜 지수함수가 들어가는지에 대한 이유도 충분히 설명되었다고 생각한다. 이제 소프트맥스 함수가 가진 몇 가지의 추가적인 이득을 살펴보자.
첫째로 소프트맥스 함수에는 어떤 입력값이 들어와도 양수화된다는 점이다. 이는 실수값을 확률값으로 매핑하기에 당연한 결과이다.
둘째로 소프트맥스 함수는 함수의 특징으로 인해 큰 입력값에 대해 큰 결과를 도출한다. 작은 값에 대한 패널티를 주고 싶을 때 소프트맥스 함수가 특히 유효하다는 것을 알 수 있다.
셋째로 소프트맥수 함수는 시그모이드 함수이기 때문에 미분이 용이하다.
별 걱정 없이 특정 번째의 gradient를 시그모이드 함수의 미분으로 간주하여 계산하면 된다.