Link

신경망과 MLE

앞서 우리는 MLE를 통해 수집한 데이터로부터 분포의 형태를 추정하는 방법을 이야기하였습니다. 또한 가능도란 데이터 샘플들을 주어진 분포의 파라미터로 얼마나 잘 설명하는지 수치화한 것이라고 이야기하였습니다.

\[\begin{gathered} \text{LogLikelihood}(\theta)=\sum_{i=1}^N{ \log{P_\theta(y_i|x_i)} } \end{gathered}\]

이 수식에서 $\log{P_\theta(y_i|x_i)}$ 는 $\theta$ 라는 파라미터를 갖는 분포에 $x_i$ 가 주어졌을 때, $y_i$ 의 확률을 의미하고, 하나의 샘플 쌍에 대한 가능도가 됩니다. 그리고 분포의 파라미터 표현과 관련해서 다음의 수식들은 모두 같은 표현입니다.

\[\begin{gathered} P_\theta(x_i)=P(x_i;\theta)=P(x_i,\theta) \\ P_\theta(y_i|x_i)=P(y_i|x_i;\theta)=P(y_i|x_i,\theta) \end{gathered}\]

3가지 표현은 분포의 파라미터를 어떤 관점에서 바라보느냐에 따라 위치가 바뀌었지만, 근본적으로는 같은 값을 의미합니다.

잠깐 복습

앞서 우리는 처음에 딥러닝을 배울 때, 다음과 같이 이야기하였습니다. 인공지능 모델은 하나의 함수이고, 우리의 머릿속에 존재하는 가상의 함수를 근사approximate하고자 하며, 이를 위해 데이터를 수집하여 손실을 최소화 하는 방향으로 경사하강법을 통해 신경망의 가중치 파라미터를 업데이트합니다. 이것을 수식으로 나타내면 다음과 같습니다.

\[\begin{gathered} \mathcal{D}=\{(x_i,y_i)\}_{i=1}^N \\ \\ \mathcal{L}(\theta)=\sum_{i=1}^N{ \|y_i-\hat{y}_i\| }, \\ \text{where }\hat{y}_i=f_\theta(x_i). \\ \\ \hat{\theta}=\underset{\theta\in\Theta}{\argmin}{ \mathcal{L}(\theta) } \\ \\ \theta\leftarrow\theta-\eta\cdot\frac{\partial{\mathcal{L}(\theta)}}{\partial{\theta}} \end{gathered}\]

만약 회귀regression 문제가 아닌 분류classification 문제일 경우, 손실 함수 $\mathcal{L}$ 은 다음과 같이 바뀔 수 있습니다.

\[\begin{gathered} \mathcal{L}(\theta)=-\sum_{i=1}^N{ y_i^\intercal\cdot\log{\hat{y}_i}, } \\ \text{where }\hat{y}_i=f_\theta(x_i). \end{gathered}\]

이때, 분류 모델의 출력 벡터 $\hat{y}_i$ 는 소프트맥스softmax의 결과 값입니다.

신경망의 출력과 확률 분포

그럼 신경망과 MLE는 어떤 관계에 있는 것일까요? MLE를 통해 분포의 파라미터를 업데이트하는 과정이 딥러닝과 어떻게 연결되는 것일까요? 사실은 심층신경망 모델 또한 확률 분포 함수라고 가정하면 이 물음들에 대답할 수 있게 됩니다. 즉, 심층신경망의 가중치 파라미터weight parameter가 분포를 나타내는 파라미터이며, 신경망의 출력이 가중치 파라미터의 변화에 따른 확률 분포라고 생각할 수 있습니다.

다음과 같은 심층신경망이 주어졌을 때, 3개 계층의 각 가중치 파라미터들은 신경망의 동작을 정의하게 되고, 결과적으로 분포의 파라미터로 취급받을 수 있는 것입니다.

\[\begin{gathered} \theta=\{W_1,b_1,W_2,b_2,\cdots,W_\ell,b_\ell\} \end{gathered}\]

그럼 앞서 이야기했던 MLE 방식과 마찬가지로 최대가능도maximum likelihood를 만드는 방향으로 가중치 파라미터 $\theta$ 를 경사상승법gradient ascent을 통해 업데이트 할 수 있게 됩니다. 하지만 사실 파이토치를 포함한 대부분의 현존 딥러닝 프레임워크들은 경사하강법gradient descent만 지원하고 있습니다. 따라서 우리는 NLLnegative log-likelihood를 도입하여 최대화 문제에서 최소화 문제로 바꾸고, 경사하강법을 통해 MLE를 구현할 수 있습니다.

\[\begin{gathered} \mathcal{D}=\{(x_i,y_i)\}_{i=1}^N \\ \\ \text{NLL}(\theta)=-\sum_{i=1}^N{ \log{P(y_i|x_i;\theta)} } \\ \\ \hat{\theta}=\underset{\theta\in\Theta}{\argmin}{ \mathcal{L}(\theta) } \\ \\ \theta\leftarrow\theta-\eta\cdot\frac{\partial{\mathcal{L}(\theta)}}{\partial{\theta}} \end{gathered}\]

이전의 방식에서는 $\hat{y}i=f\theta(x_i)$ 라고 하고 손실 함수를 정의하였는데, MLE 방식을 활용한 NLL 목적함수에서는 신경망이 어떻게 활용되는 것일까요?