148강이 채점 기준을 세웠습니다. 그런데 채점할 추정량을 어떻게 만드는지는 말하지 않았습니다.
에서 와 가 나온 것은 그때그때의 착상이었습니다. 모형이 조금만 복잡해지면 무엇을 시도해야 할지조차 알 수 없습니다.
필요한 것은 착상이 아니라 규칙입니다.
**"이 자료가 나올 확률이 가장 큰 모수를 고른다"**는 하나의 문장이며, 밀도를 쓸 수 있는 모든 모형에 기계적으로 적용됩니다.
그리고 이 순간 통계가 최적화 문제가 됩니다.
| 통계의 언어 | 최적화의 언어 | 관련 강의 |
|---|---|---|
| 로그 우도를 최대화 | 목적함수를 최대화 | 107~112강 |
| 점수함수가 | 기울기가 | 108강 |
| 피셔 정보 | 헤세 행렬 | 109강 |
| 볼록한 우도 | 유일한 해 | 108강 |
| 경사상승 | 경사하강의 부호 반대 | 110강 |
S5의 도구가 전부 돌아옵니다. 그리고 이 규칙은 통계에만 머물지 않습니다. 교차엔트로피 손실의 최소화가 정확히 이 계산이며, 249강까지 그대로 이어집니다.
문제. 다섯 모형에서 로그 우도를 격자로 훑습니다.
(1) 베르누이, 정규, 지수의 최대점을 공식과 견주세요.
(2) 균등분포의 최대점을 구하세요.
(3) 마지막 하나가 다른 이유를 쓰세요.
생각의 실마리. 우도는 모수의 함수입니다. 자료는 고정되어 있고 가 변수이며, 그 함수를 최대로 만드는 점을 찾습니다.
풀이. (1)(2) 검산 결과입니다. 입니다.
| 모형 | 격자 최대 | 공식 | 차이 |
|---|---|---|---|
| 베르누이 | |||
| 정규 평균 | 3.94\times10^ | ||
| 정규 분산 | 4.70\times10^ | ||
| 지수 비율 | 2.35\times10^ | ||
| 균등 상한 | 4.60\times10^ |
차이가 모두 격자 간격 수준입니다.
(3) 앞의 넷은 미분해서 으로 놓으면 나옵니다. 베르누이를 예로 들면 다음과 같습니다.
균등분포는 다릅니다. 우도가 이고 에서만 정의되므로 감소함수입니다. 미분이 이 되는 점이 없고 정의역의 왼쪽 끝에서 최대가 됩니다.
이 문제에서 배우는 것: 최대우도추정의 정의와 계산.
최대우도추정량. 우도 또는 로그 우도 를 최대로 만드는 입니다.
| 모형 | MLE | 성격 |
|---|---|---|
| 베르누이 | \bar | 불편입니다 |
| 정규 평균 | \bar | 불편입니다 |
| 정규 분산 | \frac1n\sum(X_{i}-\bar{X})^ | 편향 |
| 지수 | 1/\bar | 편향이 있습니다 |
| 균등 | \max X_ | 편향 |
셋째 줄이 144강과 충돌합니다. 144강에서 로 나눠야 불편이라 했는데 MLE는 으로 나눕니다. 최대우도추정은 불편성을 목표로 삼지 않기 때문이며, 148강 문제 2에서 본 대로 그것이 결함은 아닙니다.
모든 MLE가 충분통계량의 함수입니다. 인수분해 정리에서 가 를 통해서만 들어가므로, 우도를 최대로 만드는 일도 만 보면 됩니다.
경계해에 주의합니다. 미분해서 으로 놓는 것은 내부점에서만 유효하며, 정의역의 끝에서 최대가 될 수 있습니다.
바로 확인 1.
확인 1-1. 최대우도추정량의 정의를 쓰세요.
답. 우도를 최대로 만드는 모수입니다.
확인 1-2. 정규분포의 두 MLE를 쓰세요.
답. 와 입니다.
확인 1-3. 균등분포에서 미분이 통하지 않는 이유를 쓰세요.
답. 우도가 감소함수라 경계에서 최대가 되기 때문입니다.
문제. 표준정규 표본의 우도를 두 방식으로 계산합니다.
(1) 밀도를 그대로 곱해 보세요.
(2) 로그를 취해 더해 보세요.
(3) 언제부터 곱이 쓸 수 없게 되는지 판정하세요.
생각의 실마리. 정규 밀도의 값이 대부분 언저리입니다. 를 번 곱하면 어떻게 되겠습니까.
풀이. (1)(2)(3) 검산 결과입니다.
| 곱으로 계산 | 로그합으로 계산 | 곱의 로그 | |
|---|---|---|---|
| 1.020564\times10^ | |||
| 3.607014\times10^ | |||
**부터 곱이 정확히 **이 됩니다. 배정밀도 부동소수점의 최소값이 약 이며 그보다 작아지면 아래넘침으로 이 됩니다.
로그합은 까지 문제없이 계산됩니다. 그리고 까지는 두 방법이 소수점 여섯 자리까지 일치합니다.
이 문제에서 배우는 것: 로그가 하는 두 가지 일.
첫째, 수치적으로 안전합니다. 곱은 아래넘침으로 정보를 전부 잃지만 합은 잃지 않습니다.
92강의 수치 안정성이 여기서 실무 문제가 됩니다. 이 큰 것이 통계에서는 좋은 일인데 곱으로 계산하면 클수록 계산이 불가능해집니다.
둘째, 미분이 항별로 쪼개집니다.
곱의 미분은 항이 개짜리 합이 되어 다루기 어렵지만, 로그를 취하면 각 관측이 독립적으로 기여합니다. 148강의 점수함수가 이 합이며, 정보가 더해지는 이유도 여기 있습니다.
| 로그를 쓰는 이점 | 내용 |
|---|---|
| 아래넘침 회피 | 곱이 이 되지 않습니다 |
| 미분의 분리 | 관측별 기여가 합으로 쌓입니다 |
| 최적화 | 지수족에서 볼록해집니다 |
| 정보의 가법성 | 이 자연스럽습니다 |
| 손실함수 | 음의 로그 우도가 곧 손실입니다 |
단조증가 변환이므로 최대점이 바뀌지 않습니다. 로그를 취하는 것이 공짜인 이유입니다.
다섯째 줄이 기계학습의 언어입니다. 음의 로그 우도를 최소화하는 것이 최대우도추정이며, 분류에서 그것이 교차엔트로피 손실입니다. 204강에서 이 등식을 다시 세웁니다.
바로 확인 2.
확인 2-1. 로그를 쓰는 두 이유를 쓰세요.
답. 아래넘침을 피하고 미분이 항별 합으로 쪼개지기 때문입니다.
확인 2-2. 곱이 이 되기 시작하는 을 검산에서 쓰세요.
답. 입니다.
확인 2-3. 로그를 취해도 최대점이 같은 이유를 쓰세요.
답. 로그가 단조증가 변환이기 때문입니다.
문제. 148강의 네 기준으로 채점합니다.
(1) 정규 분산 MLE의 편향을 에 따라 재세요.
(2) 분산이 크라메르-라오 하한에 가는지 보세요.
(3) 의 MLE가 MLE의 제곱근인지 확인하세요.
생각의 실마리. MLE는 불편성을 요구하지 않고 만들어졌습니다. 그러면 무엇을 보장합니까.
풀이. (1)(2) 검산 결과입니다. 참 분산이 입니다.
| 분산 MLE의 평균 | 편향 | 이론 | 분산 | 2\sigma^ | |
|---|---|---|---|---|---|
**편향이 정확히 **이며 이 커지면 사라집니다. 그리고 분산이 로 다가가는데, 이것이 크라메르-라오 하한 을 달성한다는 뜻입니다.
(3) 불변성을 확인합니다.
| 표본 | 격자 최대 | 차이 | |
|---|---|---|---|
| 2.68\times10^ | |||
| 4.81\times10^ | |||
| 1.46\times10^ |
를 직접 최대화한 결과가 MLE의 제곱근과 같습니다.
이 문제에서 배우는 것: 최대우도추정량의 성적표.
| 기준 | 성적 |
|---|---|
| 불편성 | 대체로 없습니다 |
| 일치성 | 있습니다 |
| 효율 | 점근적으로 하한을 달성합니다 |
| 충분성 | 충분통계량의 함수입니다 |
| 불변성 | 있습니다 |
점근 정규성. 정규 조건 아래에서
이 한 줄이 최대우도추정을 표준으로 만들었습니다. 어떤 모형이든 이 크면 추정량이 정규분포를 따르고 그 분산이 하한과 같습니다. 신뢰구간과 검정을 자동으로 만들 수 있습니다.
불변성. 가 어떤 함수든 입니다.
불편성에는 없는 성질입니다. 이 의 불편추정량이어도 는 의 불편추정량이 아닌데, MLE는 그런 문제가 없습니다.
실무에서 이것이 매우 편합니다. 오즈비, 로그 위험비, 상관계수, 생존확률처럼 변환된 양을 추정할 때 다시 유도할 필요 없이 그냥 변환하면 됩니다.
편향은 대개 문제가 되지 않습니다. 편향이 이고 표준오차가 이므로, 이 커지면 편향이 표준오차보다 훨씬 빨리 작아집니다.
바로 확인 3.
확인 3-1. 최대우도추정량의 점근 분포를 쓰세요.
답. 입니다.
확인 3-2. 불변성을 쓰세요.
답. 의 MLE는 입니다.
확인 3-3. 편향이 대개 문제가 되지 않는 이유를 쓰세요.
답. 편향이 이라 인 표준오차보다 빨리 작아지기 때문입니다.
문제. 최대점이 유일하지 않거나 없는 경우를 찾습니다.
(1) 코시 위치모수의 로그 우도에 국소 최대점이 몇 개인지 세세요.
(2) 무작위 표본에서 그런 일이 얼마나 자주 일어나는지 재세요.
(3) 정규 혼합에서 우도가 어떻게 되는지 보세요.
생각의 실마리. 108강에서 볼록함수는 국소 최소가 곧 전역 최소였습니다. 로그 우도가 오목하지 않으면 그 보장이 사라집니다.
풀이. (1) 두 무리로 갈라진 표본을 씁니다.
| 항목 | 값 |
|---|---|
| 표본 의 국소 최대점 | 개 |
| 위치 의 로그 우도 | |
| 위치 의 로그 우도 | |
| 가운데 에서의 로그 우도 |
두 봉우리가 완전히 대칭이며 가운데가 골짜기입니다. 코시는 꼬리가 두꺼워 멀리 있는 점을 무시하는 성질이 있고, 그래서 한쪽 무리에 붙는 것이 양쪽 가운데에 서는 것보다 낫습니다.
(2) 무작위 표본 개, 입니다.
**국소 최대점이 둘 이상인 경우가 회로 **입니다. 드문 일이 아닙니다.
(3) 정규 혼합에서 한 성분을 첫 관측에 붙이고 폭을 줄입니다.
| \sigma_ | 로그 우도 |
|---|---|
| 10^ | |
| 10^ | |
| 10^ | |
| 10^ | |
| 10^ | |
| 10^ | |
| 10^ | |
| 10^ |
처음에는 내려가다가 에서 돌아서서 계속 올라갑니다. 그리고 멈추지 않습니다.
이 문제에서 배우는 것: 최대우도추정의 한계.
로그 우도가 오목하지 않으면 전역 최대의 보장이 없습니다.
| 문제 | 예 | 대처 |
|---|---|---|
| 다봉 | 코시 위치모수, 혼합모형 | 여러 초기값에서 시작합니다 |
| 발산 | 성분 분산이 으로 가는 혼합 | 벌점을 주거나 하한을 겁니다 |
| 경계해 | 균등분포의 | 미분 대신 정의역을 봅니다 |
| 유일하지 않음 | 라벨 바꾸기 대칭 | 순서를 고정합니다 |
| 존재하지 않음 | 완전 분리된 로지스틱 회귀 | 정규화를 넣습니다 |
둘째 줄의 발산이 구조적입니다. 성분 하나를 관측 한 점에 붙이고 폭을 으로 보내면 그 점의 밀도가 무한대로 가므로 우도에 상한이 없습니다. 전역 최대를 찾으면 안 되는 상황이며, 223강 가우시안 혼합과 EM 알고리즘이 이 문제를 다룹니다.
다섯째 줄이 실무에서 자주 만납니다. 두 집단이 완벽하게 나뉘면 로지스틱 회귀의 계수가 무한대로 발산합니다. 211강의 정규화가 해를 존재하게 만드는 역할을 합니다.
초기값이 결과를 정합니다. 다봉인 우도에서 경사법은 시작한 봉우리에 갇힙니다.
가 결코 작지 않습니다. 실무에서는 여러 초기값에서 돌려 가장 높은 로그 우도를 고르며, 그래도 전역 최대라는 보장은 없습니다.
바로 확인 4.
확인 4-1. 로그 우도가 오목하지 않을 때 생기는 문제를 쓰세요.
답. 국소 최대에 갇혀 전역 최대의 보장이 사라집니다.
확인 4-2. 정규 혼합에서 우도가 발산하는 방식을 쓰세요.
답. 성분 하나를 한 점에 붙이고 폭을 으로 보내면 무한대가 됩니다.
확인 4-3. 다봉 우도에서의 실무적 대처를 쓰세요.
답. 여러 초기값에서 시작해 가장 높은 값을 고릅니다.
문제. 참 분포가 인데 하나의 정규로 적합합니다.
(1) MLE가 어디로 수렴하는지 보세요.
(2) 그 지점이 무엇을 최소화하는지 확인하세요.
(3) 표준오차가 맞는지 판정하세요.
생각의 실마리. 실무에서 모형이 정확히 맞는 일은 거의 없습니다. 틀린 모형으로 최대우도추정을 하면 무엇이 나옵니까.
풀이. (1) 참 분산이 이고 차 적률이 입니다.
| 항목 | 값 |
|---|---|
| MLE 평균 | (참 ) |
| MLE 분산 | (참 ) |
(2) 정규족 중에서 교차엔트로피를 최소로 하는 분산을 격자로 찾습니다.
| 항목 | 값 |
|---|---|
| 교차엔트로피 최소 분산 | |
| 표본 분산 | |
| 차이 | 2.45\times10^ |
같은 곳입니다. MLE는 헛돌지 않고 참 분포에 가장 가까운 모형으로 갑니다.
(3) 에서 분산 MLE의 오차를 잽니다.
| 항목 | 값 | 실제 대비 |
|---|---|---|
| 분산 MLE의 실제 분산 | ||
| 정규 모형이 말하는 값 | ||
| 샌드위치 이론값 |
정규 모형을 믿으면 오차를 실제의 로 봅니다. 신뢰구간이 실제 필요한 폭의 절반밖에 안 되며, 명목 가 전혀 가 아닙니다.
이 문제에서 배우는 것: 유사최대우도.
모형이 틀려도 MLE는 수렴합니다. 다만 참 모수가 아니라 KL 발산을 최소로 하는 모수로 갑니다.
증명이 큰 수의 법칙 한 줄입니다. 이고, 이것을 최대화하는 것이 KL을 최소화하는 것과 같습니다. 가 와 무관하기 때문입니다.
정규 모형에서는 그것이 적률 맞추기입니다. 평균과 분산만 맞추고 나머지 모양은 포기합니다.
| 상황 | 추정값 | 표준오차 |
|---|---|---|
| 모형이 맞음 | 참값으로 갑니다 | 모형 기반이 맞습니다 |
| 모형이 틀림 | KL 최소점으로 갑니다 | 모형 기반이 틀립니다 |
둘째 줄이 이 문제의 요점입니다. 추정값은 살아남아도 오차 막대는 살아남지 못합니다.
샌드위치 분산. 모형이 틀렸을 때의 올바른 공분산은 다음과 같습니다.
모형이 맞으면 라 로 줄어듭니다. 148강에서 피셔 정보의 두 표현이 같다고 한 것이 바로 이 등식이며, 모형이 틀리면 두 표현이 달라집니다.
이 진단이 값쌉니다. 헤세 기반 추정과 기울기 제곱 기반 추정을 각각 계산해 크게 다르면 모형이 틀렸다는 신호입니다.
바로 확인 5.
확인 5-1. 모형이 틀렸을 때 MLE가 수렴하는 곳을 쓰세요.
답. KL 발산을 최소로 하는 모수입니다.
확인 5-2. 정규 모형에서 그것이 무엇을 뜻하는지 쓰세요.
답. 평균과 분산을 맞추는 적률 맞추기입니다.
확인 5-3. 샌드위치 분산이 필요한 이유를 쓰세요.
답. 모형이 틀리면 피셔 정보의 두 표현이 달라지기 때문입니다.
| 개념 | 식 |
|---|---|
| 우도 | |
| 로그 우도 | |
| 점수 방정식 | |
| 점근 분포 | |
| 불변성 | |
| 모형이 틀릴 때 | |
| 샌드위치 분산 | \mathbf{A}^{-1}\mathbf{B}\mathbf{A}^ |
| 모형 | MLE | 편향 |
|---|---|---|
| 베르누이 | \bar | |
| 정규 평균 | \bar | |
| 정규 분산 | \frac1n\sum(X_{i}-\bar{X})^ | |
| 포아송 | \bar | |
| 지수 | 1/\bar | 있습니다 |
| 균등 | \max X_ |
| 148강의 기준 | MLE의 성적 |
|---|---|
| 불편성 | 대체로 없습니다 |
| 일치성 | 있습니다 |
| 효율 | 점근적으로 달성합니다 |
| 충분성 | 충분통계량의 함수입니다 |
| 불변성 | 있습니다 |
| 자주 하는 실수 | 바로잡기 |
|---|---|
| 언제나 미분해서 으로 놓습니다 | 경계해가 있을 수 있습니다 |
| 우도를 곱으로 계산합니다 | 에서 이 됩니다 |
| MLE가 불편이라고 봅니다 | 정규 분산이 반례입니다 |
| 국소 최대를 전역이라 봅니다 | 코시에서 가 다봉입니다 |
| 혼합에서 전역 최대를 찾습니다 | 우도가 발산합니다 |
| 모형 기반 표준오차를 그대로 씁니다 | 모형이 틀리면 크게 과소평가합니다 |
문제 6. 최대우도추정량의 정의를 쓰세요.
답. 우도 또는 로그 우도를 최대로 만드는 모수입니다.
문제 7. 정규분포의 두 MLE를 쓰고 편향을 쓰세요.
답. 와 이며 뒤쪽의 편향이 입니다.
문제 8. 균등분포의 MLE와 미분이 통하지 않는 이유를 쓰세요.
답. 이며 우도가 감소함수라 경계에서 최대이기 때문입니다.
문제 9. 로그를 쓰는 두 이유를 쓰세요.
답. 아래넘침을 피하고 미분이 항별 합으로 쪼개지기 때문입니다.
문제 10. 곱으로 계산할 때 이 되기 시작하는 을 쓰세요.
답. 검산에서 입니다.
문제 11. 최대우도추정량의 점근 분포를 쓰세요.
답. 입니다.
문제 12. 불변성을 쓰고 불편성과 비교하세요.
답. 의 MLE가 이며 불편성에는 없는 성질입니다.
문제 13. 148강의 네 기준으로 MLE를 채점하세요.
답. 불편성은 대개 없고 일치성과 충분성은 있으며 효율은 점근적으로 달성합니다.
문제 14. 편향이 대개 문제가 되지 않는 이유를 쓰세요.
답. 편향이 이라 인 표준오차보다 빨리 작아지기 때문입니다.
문제 15. 코시 위치모수에서 다봉이 나타나는 비율을 쓰세요.
답. 에서 회 중 회로 입니다.
문제 16. 정규 혼합에서 우도가 발산하는 방식을 쓰세요.
답. 성분 하나를 한 점에 붙이고 폭을 으로 보내면 무한대가 됩니다.
문제 17. 모형이 틀렸을 때 MLE가 수렴하는 곳을 쓰세요.
답. KL 발산을 최소로 하는 모수입니다.
문제 18. 샌드위치 분산이 필요한 이유와 그 형태를 쓰세요.
답. 모형이 틀리면 정보의 두 표현이 달라지기 때문이며 입니다.
심화 1. 최대우도추정량을 실제로 어떻게 계산하는지 정리하세요.
닫힌 해가 있는 경우가 오히려 드뭅니다.
| 방법 | 쓰는 정보 | 특징 |
|---|---|---|
| 해석적 해 | 점수 방정식을 풀 수 있음 | 지수족에서 흔합니다 |
| 뉴턴-랩슨 | 헤세 행렬 | 빠르지만 비쌉니다 |
| 점수법 | 피셔 정보 | 헤세 대신 기댓값을 씁니다 |
| 반복 가중 최소제곱 | 일반화선형모형 구조 | 로지스틱 회귀의 표준입니다 |
| EM | 잠재변수 구조 | 우도가 단조 증가합니다 |
| 확률경사하강 | 미니배치 기울기 | 자료가 클 때 씁니다 |
셋째 줄이 실무의 요령입니다. 헤세 행렬은 자료에 따라 흔들리는데 피셔 정보는 기댓값이라 안정적이며, 양정부호가 보장되어 수치적으로 안전합니다.
다섯째 줄이 중요한 성질을 갖습니다. EM은 각 단계에서 우도가 결코 줄지 않음을 보장하며, 젠센 부등식으로 만든 하한을 번갈아 올리는 구조입니다. 262강 변분추론의 ELBO가 같은 하한입니다.
여섯째 줄이 딥러닝입니다. 신경망 학습은 음의 로그 우도를 확률경사하강으로 최소화하는 것이며, 최대우도추정을 대규모로 하는 일입니다.
심화 2. 최대우도추정과 손실함수의 대응을 정리하세요.
음의 로그 우도가 곧 손실입니다.
| 확률모형 | 음의 로그 우도 | 손실함수의 이름 |
|---|---|---|
| 정규, 등분산 | \frac{1}{2\sigma^{2}}\sum(y_{i}-\hat{y}_{i})^ | 제곱오차 |
| 베르누이 | 이진 교차엔트로피 | |
| 범주형 | 교차엔트로피 | |
| 포아송 | 포아송 손실 | |
| 라플라스 | 절대오차 | |
| 분포 | 꼴 | 로버스트 손실 |
첫째 줄이 82강의 최소제곱입니다. "왜 제곱오차인가"라는 질문의 답이 **"잡음을 정규로 가정했기 때문"**입니다.
다섯째 줄이 132강 문제 4와 이어집니다. 절대오차의 최소점이 중앙값이었고, 그것이 라플라스 우도의 최대점입니다. 손실을 고르는 것은 잡음 분포를 고르는 것과 같습니다.
여섯째 줄이 145강 심화 6과 만납니다. 꼬리가 두꺼운 우도를 쓰면 이상치의 영향이 자동으로 줄어들며, 손실함수를 손으로 깎는 대신 잡음 모형을 바꾸는 접근입니다.
심화 3. 최대우도추정의 정규 조건을 정리하세요.
점근 정규성과 효율은 공짜가 아닙니다.
| 조건 | 깨지면 |
|---|---|
| 참 모수가 내부점 | 경계이면 극한이 정규가 아닙니다 |
| 지지구간이 와 무관 | 균등분포에서 수렴 속도가 |
| 식별가능성 | 서로 다른 가 같은 분포를 주면 수렴 안 함 |
| 정보량이 유한하고 양수 | 하한이 무의미해집니다 |
| 모수 개수가 고정 | 늘어나면 일치성이 깨질 수 있습니다 |
둘째 줄이 148강 문제 4와 같습니다. 에서 이 지수분포로 수렴하며 정규가 아닙니다.
셋째 줄이 혼합모형과 신경망에서 나옵니다. 성분의 순서를 바꿔도 같은 분포이므로 모수가 식별되지 않으며, 라벨 바꾸기 대칭이라 부릅니다.
다섯째 줄이 유명한 반례를 갖습니다. 관측마다 새 모수가 생기는 상황에서는 표본을 늘려도 MLE가 참값으로 가지 않습니다. 깊은 신경망의 모수가 자료보다 많은 상황이 이 영역이며, 고전 이론이 그대로 적용되지 않는 이유입니다.
심화 4. 최대우도와 다른 추정 원리를 비교하세요.
| 원리 | 방법 | 특징 |
|---|---|---|
| 최대우도 | 우도 최대화 | 점근 효율, 모형 의존 |
| 적률법 | 표본적률과 이론적률을 맞춤 | 계산이 쉽고 덜 효율적 |
| 최소제곱 | 잔차 제곱합 최소화 | 정규 잡음이면 MLE와 같음 |
| 최대사후 | 사전분포를 곱해 최대화 | 150강의 주제입니다 |
| 추정방정식 | 우도가 없어도 조건만 | 일반화적률법, 준우도 |
| 최소거리 | 분포 사이 거리 최소화 | 로버스트하게 만들 수 있습니다 |
둘째 줄이 역사적으로 먼저였습니다. 피어슨의 적률법이 계산은 쉬운데 정보를 다 쓰지 않아 효율이 떨어지며, 피셔가 최대우도로 그것을 대체했습니다.
여섯째 줄이 최근에 다시 주목받습니다. KL 대신 다른 거리를 쓰면 성질이 달라지며, 생성적 적대 신경망이 젠슨-섀넌 발산을, 와서스타인 GAN이 최적수송 거리를 최소화합니다. 259강에서 다룹니다.
넷째 줄이 다음 강의입니다. 사전분포를 곱하는 것이 정규화 항을 더하는 것과 같으며, 116강의 정규화가 베이즈로 읽힙니다.
심화 5. 실무에서 최대우도추정이 실패하는 자리를 정리하세요.
| 자리 | 증상 | 대처 |
|---|---|---|
| 완전 분리 | 로지스틱 계수가 발산 | 정규화, 벌점 우도 |
| 혼합모형 | 우도가 무한대 | 분산에 하한, 벌점 |
| 표본이 모수보다 적음 | 공분산이 특이 | 축소, 정규화 |
| 다봉 우도 | 초기값에 따라 답이 다름 | 여러 초기값 |
| 모형 오설정 | 표준오차가 틀림 | 샌드위치, 부트스트랩 |
| 절단이나 중도절단 | 우도 형태가 달라짐 | 올바른 우도를 씁니다 |
| 아래넘침 | 우도가 | 로그 공간에서 계산 |
셋째 줄이 고차원 통계의 출발점입니다. 이면 표본공분산이 역행렬을 갖지 않아 다변량 정규의 MLE가 존재하지 않으며, 145강 심화 4에서 호텔링 을 쓸 수 없던 것과 같은 이유입니다.
여섯째 줄이 조용히 틀립니다. 관측이 어떤 값 이상은 모두 잘려 기록된 자료에 보통 우도를 쓰면 편향된 답이 나오며, 생존분석에서 중도절단을 무시하는 것이 대표적 실수입니다.
다섯째 줄이 문제 5의 결론입니다. 모형 진단 없이 표준오차를 보고하면 신뢰구간이 실제보다 훨씬 좁습니다.
심화 6. 기계학습에서 최대우도추정이 쓰이는 자리를 정리하세요.
| 자리 | 무엇의 우도인가 | 관련 강의 |
|---|---|---|
| 로지스틱 회귀 | 베르누이 | 205강 |
| 소프트맥스 분류 | 범주형 | 249강 |
| 선형회귀 | 정규 잡음 | 153강 |
| 언어모형 | 다음 토큰의 범주형 | 298강 |
| 가우시안 혼합 | 혼합 우도, EM | 223강 |
| 변분자동부호기 | ELBO로 하한 | 262강 |
| 확산모형 | 잡음 예측의 정규 우도 | 261강 |
| 정규화흐름 | 야코비를 포함한 정확한 우도 | 262강 |
| 대조학습 | 잡음 대조 추정 | 258강 |
넷째 줄이 오늘날 가장 큰 규모의 최대우도추정입니다. 언어모형의 학습 목표가 이며, 141강의 곱셈법칙과 이 강의의 최대우도가 만난 자리입니다.
여덟째 줄이 139강과 이어집니다. 정규화흐름은 야코비 행렬식 덕분에 우도를 정확히 계산할 수 있으며, 하한이 아니라 진짜 우도를 최대화하는 몇 안 되는 생성모형입니다.
여섯째 줄이 심화 1의 EM과 같은 구조입니다. 계산할 수 없는 로그 우도 대신 하한을 올리며, 그 하한이 젠센 부등식에서 나옵니다.
정답.
| 기호 | 읽는 법 | 뜻 |
|---|---|---|
| 우도 | 자료가 나올 확률입니다 | |
| 로그 우도 | 우도의 로그입니다 | |
| MLE | maximum likelihood estimate | 최대우도추정량입니다 |
| 점수 방정식 | score equation | 입니다 |
| 불변성 | invariance | 변환한 모수의 MLE입니다 |
| 점근 정규성 | asymptotic normality | 큰 에서 정규로 갑니다 |
| 점근 효율 | asymptotic efficiency | 극한에서 하한을 달성합니다 |
| 아래넘침 | underflow | 너무 작은 수가 이 됩니다 |
| 경계해 | boundary solution | 정의역 끝에서의 최대입니다 |
| 라벨 바꾸기 | label switching | 혼합모형의 식별 문제입니다 |
| 유사최대우도 | quasi-maximum likelihood | 틀린 모형의 최대우도입니다 |
| 샌드위치 분산 | sandwich variance | 입니다 |
| EM 알고리즘 | expectation-maximization | 잠재변수 모형의 반복법입니다 |
| 완전 분리 | complete separation | 로지스틱 계수가 발산합니다 |
다음은 150강 사전분포와 최대사후추정입니다. 이 강의는 자료만 보고 모수를 골랐습니다.
125강의 베이즈 정리를 쓰면 사전 지식을 넣을 수 있습니다. 그리고 그 순간 로그 사전분포가 정규화 항이 됩니다. 정규 사전분포가 릿지가 되고 라플라스 사전분포가 라소가 되며, 116강에서 손으로 붙인 벌점의 정체가 밝혀집니다.
문제 4에서 본 발산과 문제 5에서 본 오설정도 150강에서 다시 다룹니다. 사전분포가 우도를 눌러 해가 존재하게 만들고, 사후분포가 점추정 하나가 아니라 불확실성 전체를 줍니다.
import numpy as np
rng = np.random.default_rng(20260817)
# --- 문제 1: 자료가 나올 확률이 가장 큰 모수 ----------------------------
print(" 네 모형에서 로그 우도를 격자로 훑어 최대점을 찾습니다")
n1 = 200
b = (rng.random(n1) < 0.35).astype(float)
gp = (np.arange(1, 10000) / 10000.0)
lb = b.sum() * np.log(gp) + (n1 - b.sum()) * np.log(1 - gp)
print(" 베르누이 격자 최대 %.6f 공식 t/n = %.6f 차이 %.2e"
% (gp[np.argmax(lb)], b.mean(), abs(gp[np.argmax(lb)] - b.mean())))
xg = rng.normal(2.0, 1.5, n1)
gm = -3.0 + np.arange(1, 100000) * 1e-4
lm = -((xg[:, None] - gm) ** 2).sum(0) / (2 * 1.5 ** 2)
print(" 정규 평균 격자 최대 %.6f 공식 Xbar = %.6f 차이 %.2e"
% (gm[np.argmax(lm)], xg.mean(), abs(gm[np.argmax(lm)] - xg.mean())))
gv = np.arange(1, 100000) * 1e-4
lv = -n1 / 2 * np.log(gv) - ((xg - xg.mean()) ** 2).sum() / (2 * gv)
mle_v = float(((xg - xg.mean()) ** 2).mean())
print(" 정규 분산 격자 최대 %.6f 공식 (1/n)합 = %.6f 차이 %.2e"
% (gv[np.argmax(lv)], mle_v, abs(gv[np.argmax(lv)] - mle_v)))
xe = rng.exponential(1 / 1.5, n1)
gl = np.arange(1, 100000) * 1e-4
le = n1 * np.log(gl) - gl * xe.sum()
print(" 지수 비율 격자 최대 %.6f 공식 1/Xbar = %.6f 차이 %.2e"
% (gl[np.argmax(le)], 1 / xe.mean(), abs(gl[np.argmax(le)] - 1 / xe.mean())))
xu = rng.uniform(0, 3.0, n1)
gt = np.arange(1, 60000) * 1e-4
lu = np.where(gt >= xu.max(), -n1 * np.log(gt), -np.inf)
print(" 균등 상한 격자 최대 %.6f 최댓값 = %.6f 차이 %.2e"
% (gt[np.argmax(lu)], xu.max(), abs(gt[np.argmax(lu)] - xu.max())))
print(" 앞의 네 개는 미분해서 0 으로 놓으면 나옵니다")
print(" 마지막 하나는 미분으로 나오지 않습니다. 경계에서 최대가 됩니다")
# --- 문제 2: 왜 곱이 아니라 로그인가 ------------------------------------
print(" 우도를 곱으로 계산하면 어떻게 되는지 봅니다")
print(" n 곱으로 계산 로그합으로 계산 곱의 로그")
for n in [200, 400, 700, 1000, 5000]:
z = rng.normal(0, 1, n)
d = np.exp(-z * z / 2) / np.sqrt(2 * np.pi)
pr = float(np.prod(d))
ls = float(np.sum(np.log(d)))
pl = np.log(pr) if pr > 0 else float("-inf")
print(" %9d %16.6e %16.6f %16.6f" % (n, pr, ls, pl))
print(" n 이 700 을 넘으면 곱이 0 이 되어 로그를 취할 수 없습니다")
print(" 로그는 곱을 합으로 바꾸어 아래넘침을 피하고 미분도 항별로 쪼갭니다")
# --- 문제 3: 최대우도추정량은 좋은 추정량인가 ---------------------------
print(" 148강의 네 기준으로 최대우도추정량을 채점합니다")
M = 200000
print(" n 정규 분산 MLE 평균 편향 이론 -sigma^2/n n * 분산 2 sigma^4")
sg2 = 4.0
for n in [5, 20, 100, 1000]:
X = rng.normal(1.0, np.sqrt(sg2), size=(M if n <= 100 else 40000, n))
v = ((X - X.mean(1, keepdims=True)) ** 2).mean(1)
print(" %9d %16.6f %10.6f %16.6f %12.6f %12.6f"
% (n, float(v.mean()), float(v.mean()) - sg2, -sg2 / n,
n * float(v.var()), 2 * sg2 * sg2))
print(" 편향이 있습니다. 그런데 n 이 커지면 사라지고 분산은 하한에 붙습니다")
print(" 불변성을 확인합니다. sigma 의 MLE 가 sigma^2 MLE 의 제곱근인지 봅니다")
X = rng.normal(1.0, np.sqrt(sg2), size=(5, 50))
v5 = ((X - X.mean(1, keepdims=True)) ** 2).mean(1)
gs = np.arange(1, 60000) * 1e-4
for i in range(3):
ll = -50 * np.log(gs) - ((X[i] - X[i].mean()) ** 2).sum() / (2 * gs * gs)
print(" 표본 %d sigma 격자 최대 %.6f sqrt(분산 MLE) %.6f 차이 %.2e"
% (i + 1, gs[np.argmax(ll)], np.sqrt(v5[i]), abs(gs[np.argmax(ll)] - np.sqrt(v5[i]))))
print(" 변환한 모수의 MLE 는 MLE 를 변환한 것입니다. 불편성에는 없는 성질입니다")
# --- 문제 4: 답이 언제나 하나인가 ---------------------------------------
print(" 코시 위치모수의 로그 우도를 격자로 그려 봅니다. 먼저 갈라진 표본입니다")
gt2 = -30.0 + np.arange(1, 600000) * 1e-4
xs = np.array([-4.0, -3.6, -3.2, 3.2, 3.6, 4.0])
ll = -np.log(1 + (xs[:, None] - gt2) ** 2).sum(0)
pk = np.where((ll[1:-1] > ll[:-2]) & (ll[1:-1] > ll[2:]))[0] + 1
print(" 표본 -4, -3.6, -3.2, 3.2, 3.6, 4 에서 국소 최대점 %d 개" % len(pk))
for j in pk:
print(" 위치 %10.6f 로그 우도 %12.6f" % (gt2[j], ll[j]))
print(" 가운데 0 에서의 로그 우도 %12.6f" % ll[int(np.argmin(np.abs(gt2)))])
print(" 무작위 표본에서도 얼마나 자주 여러 개가 나오는지 셉니다. n = 6 입니다")
multi = 0
for trial in range(200):
xr = rng.standard_cauchy(6)
lr = -np.log(1 + (xr[:, None] - gt2) ** 2).sum(0)
if int(np.sum((lr[1:-1] > lr[:-2]) & (lr[1:-1] > lr[2:]))) > 1:
multi += 1
print(" 200 회 중 국소 최대점이 둘 이상인 경우 %d 회 (%.1f%%)" % (multi, multi / 2.0))
print(" 경사법이 어디에서 멈출지 초기값이 정합니다. 여러 곳에서 시작해야 합니다")
print(" 혼합 정규에서는 우도가 아예 발산합니다. 한 성분을 한 점에 붙여 봅니다")
xs2 = rng.normal(0, 1, 30)
print(" sigma1 로그 우도")
for s1 in [1.0, 1e-1, 1e-2, 1e-4, 1e-6, 1e-9, 1e-12, 1e-15]:
d = 0.5 * np.exp(-(xs2 - xs2[0]) ** 2 / (2 * s1 * s1)) / (np.sqrt(2 * np.pi) * s1) \
+ 0.5 * np.exp(-xs2 * xs2 / 2) / np.sqrt(2 * np.pi)
print(" %15.0e %14.6f" % (s1, float(np.sum(np.log(d)))))
print(" 처음에는 내려가다가 돌아서서 무한대로 올라갑니다. 최댓값이 없습니다")
print(" 그래서 혼합모형에서는 벌점을 주거나 좋은 국소 최대점을 찾습니다")
# --- 문제 5: 모형이 틀렸으면 어디로 가는가 ------------------------------
print(" 참 분포는 정규 혼합인데 하나의 정규로 적합합니다")
print(" 참 분포: 0.9 * N(0, 1) + 0.1 * N(0, 9), 분산 1.8, 4차 적률 27")
n5 = 2000000
def draw_mix(size):
sc = np.where(rng.random(size) < 0.9, 1.0, 3.0)
return rng.normal(0, 1, size) * sc
xt = draw_mix(n5)
print(" MLE 평균 %.6f (참 0), MLE 분산 %.6f (참 1.800000)"
% (float(xt.mean()), float(xt.var())))
print(" 정규족 중에서 KL 발산을 최소로 하는 정규를 격자로 찾습니다")
gg = 1.0 + np.arange(1, 2000) * 1e-3
ce = np.array([float(np.mean(np.log(g) / 2 + xt * xt / (2 * g))) for g in gg])
print(" 교차엔트로피 최소 분산 %.6f, 표본 분산 %.6f, 차이 %.2e"
% (gg[np.argmin(ce)], float(xt.var()), abs(gg[np.argmin(ce)] - float(xt.var()))))
print(" 모형이 틀려도 MLE 는 KL 발산이 가장 작은 모수로 갑니다. 헛돌지 않습니다")
print(" 그런데 표준오차를 모형 기반으로 계산하면 틀립니다. n = 40 입니다")
nn = 40
Y = draw_mix((200000, nn))
vhat = ((Y - Y.mean(1, keepdims=True)) ** 2).mean(1)
emp = float(vhat.var())
model = 2 * 1.8 ** 2 / nn
sand = (27.0 - 1.8 ** 2) / nn
print(" 분산 MLE 의 실제 분산 %.8f" % emp)
print(" 정규 모형이 말하는 값 %.8f (실제의 %.4f 배)" % (model, model / emp))
print(" 샌드위치 이론값 %.8f (실제의 %.4f 배)" % (sand, sand / emp))
print(" 모형 기반은 실제의 3 분의 1 도 안 됩니다. 샌드위치가 제대로 맞춥니다")
print(" 모형이 틀리면 추정값은 살아남아도 오차 막대는 살아남지 못합니다")
# 네 모형에서 로그 우도를 격자로 훑어 최대점을 찾습니다
# 베르누이 격자 최대 0.435000 공식 t/n = 0.435000 차이 0.00e+00
# 정규 평균 격자 최대 1.987300 공식 Xbar = 1.987261 차이 3.94e-05
# 정규 분산 격자 최대 1.814300 공식 (1/n)합 = 1.814347 차이 4.70e-05
# 지수 비율 격자 최대 1.423900 공식 1/Xbar = 1.423877 차이 2.35e-05
# 균등 상한 격자 최대 2.994400 최댓값 = 2.994354 차이 4.60e-05
# 앞의 네 개는 미분해서 0 으로 놓으면 나옵니다
# 마지막 하나는 미분으로 나오지 않습니다. 경계에서 최대가 됩니다
# 우도를 곱으로 계산하면 어떻게 되는지 봅니다
# n 곱으로 계산 로그합으로 계산 곱의 로그
# 200 1.020564e-125 -287.802781 -287.802781
# 400 3.607014e-240 -551.337542 -551.337542
# 700 0.000000e+00 -985.290293 -inf
# 1000 0.000000e+00 -1375.472909 -inf
# 5000 0.000000e+00 -7099.071032 -inf
# n 이 700 을 넘으면 곱이 0 이 되어 로그를 취할 수 없습니다
# 로그는 곱을 합으로 바꾸어 아래넘침을 피하고 미분도 항별로 쪼갭니다
# 148강의 네 기준으로 최대우도추정량을 채점합니다
# n 정규 분산 MLE 평균 편향 이론 -sigma^2/n n * 분산 2 sigma^4
# 5 3.197353 -0.802647 -0.800000 25.606733 32.000000
# 20 3.800917 -0.199083 -0.200000 30.442195 32.000000
# 100 3.961745 -0.038255 -0.040000 31.632446 32.000000
# 1000 3.996740 -0.003260 -0.004000 31.983481 32.000000
# 편향이 있습니다. 그런데 n 이 커지면 사라지고 분산은 하한에 붙습니다
# 불변성을 확인합니다. sigma 의 MLE 가 sigma^2 MLE 의 제곱근인지 봅니다
# 표본 1 sigma 격자 최대 1.907400 sqrt(분산 MLE) 1.907373 차이 2.68e-05
# 표본 2 sigma 격자 최대 1.747000 sqrt(분산 MLE) 1.746952 차이 4.81e-05
# 표본 3 sigma 격자 최대 1.897900 sqrt(분산 MLE) 1.897885 차이 1.46e-05
# 변환한 모수의 MLE 는 MLE 를 변환한 것입니다. 불편성에는 없는 성질입니다
# 코시 위치모수의 로그 우도를 격자로 그려 봅니다. 먼저 갈라진 표본입니다
# 표본 -4, -3.6, -3.2, 3.2, 3.6, 4 에서 국소 최대점 2 개
# 위치 -3.409800 로그 우도 -12.115642
# 위치 3.409800 로그 우도 -12.115642
# 가운데 0 에서의 로그 우도 -15.777777
# 무작위 표본에서도 얼마나 자주 여러 개가 나오는지 셉니다. n = 6 입니다
# 200 회 중 국소 최대점이 둘 이상인 경우 55 회 (27.5%)
# 경사법이 어디에서 멈출지 초기값이 정합니다. 여러 곳에서 시작해야 합니다
# 혼합 정규에서는 우도가 아예 발산합니다. 한 성분을 한 점에 붙여 봅니다
# sigma1 로그 우도
# 1e+00 -52.259669
# 1e-01 -62.350807
# 1e-02 -63.330157
# 1e-04 -59.032509
# 1e-06 -54.427367
# 1e-09 -47.519612
# 1e-12 -40.611857
# 1e-15 -33.704102
# 처음에는 내려가다가 돌아서서 무한대로 올라갑니다. 최댓값이 없습니다
# 그래서 혼합모형에서는 벌점을 주거나 좋은 국소 최대점을 찾습니다
# 참 분포는 정규 혼합인데 하나의 정규로 적합합니다
# 참 분포: 0.9 * N(0, 1) + 0.1 * N(0, 9), 분산 1.8, 4차 적률 27
# MLE 평균 -0.000226 (참 0), MLE 분산 1.799755 (참 1.800000)
# 정규족 중에서 KL 발산을 최소로 하는 정규를 격자로 찾습니다
# 교차엔트로피 최소 분산 1.800000, 표본 분산 1.799755, 차이 2.45e-04
# 모형이 틀려도 MLE 는 KL 발산이 가장 작은 모수로 갑니다. 헛돌지 않습니다
# 그런데 표준오차를 모형 기반으로 계산하면 틀립니다. n = 40 입니다
# 분산 MLE 의 실제 분산 0.57209368
# 정규 모형이 말하는 값 0.16200000 (실제의 0.2832 배)
# 샌드위치 이론값 0.59400000 (실제의 1.0383 배)
# 모형 기반은 실제의 3 분의 1 도 안 됩니다. 샌드위치가 제대로 맞춥니다
# 모형이 틀리면 추정값은 살아남아도 오차 막대는 살아남지 못합니다