머신러닝을 수식 기반으로 뜯어보면 우도 개념이 빈번히 등장하는데, 우도 개념을 확실히 잡고 가보려한다.
우도는 분류 문제의 loss function 으로 Maximum log-likelihood (MLE)로 등장한다.
우도를 이해하기 위해선 확률의 개념과 비교하는게 용이하다.
1. 확률 : PDF의 면적
일반적으로 확률 이라고 하면, 이산형 확률 변수를 생각하기 쉽다.
동전을 뒤집었을 때 앞면이 나올 확률, 주사위를 던졌을 때 숫자 2가 나올 확률 등등
하지만 우리가 분석하고자 하는 확률이 연속형 확률이라면?
오늘의 낮 최고기온이 20이상 25 이하일 확률은? 고양이의 무게가 4kg 이상 5kg 이하일 확률은?
연속형 확률 변수를 나타낼때는 위와 같이 확률 밀도 함수(Probability Density Function, PDF)로 표현한다.
위는 무게를 나타내는 확률 밀도 함수라고 한다면
무게가 4kg 이상 5kg 이하일 확률은 위의 파란색 면적일 것이다.
즉 확률 밀도 함수를 통해 관측치가 일어날 가능성을 확인하는 것이다.
분포 평균이 4, 표준편차가 0.5라면
좌측의 그래프 : p(4<=X<=5 | N(4,0.5) = 0.477
우측의 그래프 : p(3.5<=X<=4 | N(4,0.5) = 0.34
여기선 입력 데이터는 변하지만 분포는 고정되어 있는 상황 "확률"
즉 p(data|distribution) = probability
2. 우도 (가능도, likelihood) : PDF의 y값
좌측의 그래프 : L(N(4,0.5) | 고양이 몸무게 = 5) = 0.108
우측의 그래프 : L(N(5,0.5) | 고양이 몸무게 = 5) = 0.7979
L(distribution|data) = likelihood
여기선 입력 데이터는 고정되어있지만 분포는 변하는 상황, 데이터가 주어졌을때 분포가 데이터를 얼마나 잘 설명하는가
이걸 해석하자면,
"좌측의 분포보다, 우측의 분포가 주어진 데이터들 더 잘 설명한다, 발생가능성이 더 높다" 라 설명할 수 있음
데이터가 주어졌을때 분포가 데이터를 얼마나 잘 설명하는가 --> 이게 사실 머신러닝의 미션!
수식으로 표현하면
가능도 함수는 모든 입력 데이터를 통해 산출된 가능도 값을 곱한 것
3. 머신러닝에서의 가능도
1) Mnist 이미지 데이터중 하나가 주어지고 이걸 중간 그림과 같이 텐서로 표현을 하게 된다.
정답 값은 1이다.
2) 우리는 3개의 모델을 구현했고, 모델의 마지막 softmax layer에서 확률 값을 뽑아보았다.
이 모델 중에서 어떤 모델이 가장 정답에 가까운 distribution 은 뭔가?
모델C가 데이터를 가장 잘 설명하는 distribution 이라고 말할 수 있다.
즉, likelihood 가 가장 높은 분포다.
데이터를 잘 설명해줄 수 있는 y의 distribution을 찾아나가는게 ML
따라서 우리는 이 likelihood 를 최대화 시키는게 ML의 목적이다. --> MLE (maximum log likelihood estimation)
동시에 A같은 모델을 C로 만들기 위해 학습을 (loss를 설정) 진행한다. --> Cross entropy
이제 ML의 핵심개념인 MLE, cross entropy를 하나씩 설명해보겠다...
4. entropy와 cross entropy
1) entropy
cross entropy를 이해하기전 먼저 entropy 부터 살펴보자.
entropy의 정의는 불확실성이다.
entropy가 높은 것은 정보가 많고, 확률이 낮다는 것을 의미한다.
예시로 적용을 해보자면,
위의 식은 동전 던지기 (앞뒤)고, 아래는 주사위 던지기(1,2,3,4,5,6)의 entropy를 각각 계산한 것이다.
두 값을 비교해보면 주사위의 entropy가 더 크다. 즉 주사위의 경우가 무엇이 나올지 예측이 더 어려운 것이라 해석할 수 있다.
입력되는 x값이 작을 수록 -log(x)값은 커지니까. 확률이 낮아질수록 엔트로피의 값은 커진다.
또다른 예시를 적용해보자면,
- 전체 공이 100개이다. 공 하나만 빨간색이고, 나머지는 모두 검은색이다.
- 전체 공이 100개이다. 공 50개는 빨간색이고, 나머지는 모두 검은색이다.
위의 경우 첫번째 사례에서 검은색 이 나올 확률이 높다. (1/99)
따라서 첫번째 사례에서의 entropy값은 두번째보다 현저히 적다.
2) cross entropy
크로스 엔트로피는 기존의 entropy에서 p(x)값이 q(x)값으로 바뀐거다.
그럼 q(x) 는 뭔가? q(x)는 실제 세상의 확률이고, p(x)는 모델을 통해 구한 확률인거다.
Cross entropy 공식을 통해서 위의 Mnist 예제를 다시 가져오자면,
좌측의 softmax를 통해 나온 확률 값이 p(x), 우측의 정답 label 값이 q(x)다.
아까 정답에 가까웠던 model C의 예측 결과와 예측결과가 엉망진창인 model A 의 예측결과를
정답인 data true label 과 각각 cross entropy 를 계산해보겠다.
각각의 값을 array 값으로 표현하면 위와 같다.
이제 model A와 true label 의 cross entropy , model C와 true label 의 cross entropy를
각각 python 으로 계산해보면
model A의 cross entropy 값이 모델 C보다 큰 것을 확인 할 수 있다.
따라서 modelA 에 더 큰 loss 값이 적용된다.
이 학습 과정을 반복하며 알고리즘은
model output과 true label의 cross entropy를 최소화하는 방향으로
동시에 likelihood를 최대화 하는 방향으로 학습을 진행한다.
Log likelihood |
cross entropy (binary case) |
이진 분류고 확률이 각각 y, (1-y) 면 아래와 같이 표기 가능 |
결국 cross entropy를 최소화 하는게 log likelihood를 최대화하겠다는 것과 같은 말이다.
참고 :
https://www.youtube.com/watch?v=XhlfVtGb19c
https://www.youtube.com/watch?v=mxCmB1WE3R8
댓글