내가 이해한 우도와 확률
들어가면서
최근 취업준비로 인해 매우매우 바빴다.. 글을 계속 못쓰다가 이제 조금 여유가 생겨서 하고 싶던 공부인 딥러닝과 데이터분석을 다시 진행하고 있다. 오늘의 주제는 AI를 처음 접했을 때 계속 헷갈렸던 개념인데, 적어두었던 메모에 살을 붙여 글로 정리해보았다. 이전에는 항상 책이나 논문을 정리요약하는 정도로 그쳤는데, 역시 내 언어로 다시 글을 쓰니 훨씬 머리에 잘 남는다. 앞으로는 이런식으로 꾸준히 글을 올리려고 한다.
손실함수를 구할 때 log를 사용하는 이유는 무엇일까?
생성 모델의 목적은 p(x)를 최대화하는 분포를 만드는 것이다. 즉 주어진 데이터 x가 모델이 학습한 분포에서 나올 가능성, 확률 밀도 p(x)를 최대화 하는 것임.
여기서 우도와 확률의 차이를 명확히 짚고 넘어가야 한다.
확률은 주어진 분포에서 특정 데이터 포인트가 발생할 가능성이다. 즉 p(x) ⇒ 분포에서 x가 나올 가능성이다.
우도는 주어진 데이터가 관측되었을 때, 그 데이터를 설명할 수 있는 확률 분포의 가능성을 평가하는 데 사용된다. 즉, 우도 함수는 보통 데이터 x가 주어졌을 때, 어떤 파라미터 $\theta$를 가진 모델(확률 분포)이 그 데이터를 가장 잘 설명할 수 있는지를 나타낸다.
우도는 주어진 데이터를 기준으로 모델의 파라미터를 조정하는 데 사용되며, $L(\theta|x)$는 파라미터 $\theta$를 가진 분포가 데이터 x를 설명할 가능성을 나타낸다.
즉 확률은 고정된 확률 분포에서 해당 데이터 포인트가 나올 가능성이며, 우도는 고정된 데이터 포인트를 기준으로 그 데이터를 가장 잘 설명할 수 있는 확률 분포를 찾는 데 사용된다.
확률은 고정된 분포를 보고 데이터를 평가하며, 우도는 고정된 데이터를 보고 분포의 파라미터를 평가한다.
즉, 동전을 던져 앞면이 나올 확률이 p = 0.5인 분포가 있다면 앞면이 나올 확률은 0.5이다. 그러나 여러번 동전을 던져서 나온 확률을 가지고 이 결과를 가장 잘 설명할 수 있는 p값을 찾는다면 그것은 우도를 최대화하는 문제이다.
자 근데 왜 로그 우도를 쓸까? 일단 로그의 그래프는 아래와 같다.
보면 x가 1 미만일 경우 음수를 나타낸다. 그리고 기울기가 완만한 만큼, 입력값의 범위에 비해 출력값의 범위가 작아 계산 결과의 범위가 좁아져 수치적으로 다루기 쉽다. 또한 입력값이 증가하면 출력값도 증가하는 단조 함수이다.
우리는 아까 생성모델의 목표가 p(x)를 최대화 하는 분포를 찾는 것이라고 말했다. 그런데 여기서 p(x)는 식이 복잡해지면 계속해서 곱해지게 되고, 만일 계속해서 작은 값이 곱해진다면 표현의 한계상 계속해서 0에 가까워지게 되고 비교가 힘들어진다. 그러나 여기에 log를 씌운다면 매우 작은 확률값은 음수가 되며, 곱셈은 덧셈으로 표현될 수 있기 때문에 계산이 매우 용이해진다. 즉, 작은 p(x)를 가질수록 로그값은 점점 큰 음수값이 되는 것이다. 이는 모델이 형편없는 분포를 학습하고 있다면 곱셈의 결과로 매우 작은 확률 밀도 값이 나올 수 있고, 이는 그저 0에 가까워지는 것이 아니라 값이 로그 스케일에서는 더 큰 음수값으로 변환되며 손실함수에서 크게 작용하게 되고 올바르게 학습되지 않았음을 나타낼 수 있다. 따라서 로그를 씌워 로그 스케일로 변환해 사용한다.
그리고 모델의 학습 목표는 손실 함수를 최소화 하는 것이다. 따라서 로그 우도에 -를 붙인다. 이로써 손실 함수는 양수 값으로 표현되고 손실 함수는 최소화, 로그 우도는 결국 최대화 시키는 것과 동일해진다.
아 근데 -logp(x)에서 아까는 p(x)가 확률(확률밀도)라고 했으면서 왜 로그 우도라고 부르냐?라고 하는 분들이 있을까봐 추가하자면, 아까 말했듯 우도란 주어진 데이터 x가 있을 때 이를 가장 잘 설명할 수 있는 모델의 파라미터 $\theta$를 찾는 과정에서 사용된다.
그리고 여기서 로그를 씌운 것이 로그 우도이다. 즉 주어진 데이터에 대해 모델의 파라미터를 평가할 때 우도를 사용하며, 특정 분포에서 x가 발생할 가능성이 확률 밀도값이다. 즉, 로그 우도라는 말을 사용하는 것은 일반적으로 모델의 파라미터를 조정한다는 과정에서의 맥락을 반영한 것이다. 모델 학습 맥락에서는 이 확률 밀도를 최대화 하도록 학습하기 때문에 로그 우도로 불린다.