126강부터 135강까지 확률변수가 하나였습니다. 하나의 수직선 위에서 분포를 다뤘습니다.
실제 문제는 거의 언제나 여럿입니다. 키와 몸무게, 광고 노출과 클릭, 입력과 정답, 오늘 주가와 내일 주가가 그렇습니다.
둘 이상이 되면 새로운 대상이 나타납니다.
**"관계"**입니다. 각각의 분포를 알아도 둘이 어떻게 얽혀 있는지는 별개의 정보이며, 이 강의의 핵심은 그 사실 자체입니다.
126강 심화 2에서 이미 예고했습니다. 가 표준정규를 따르면 도 그렇지만 이며, 두 변수의 관계는 주변분포만으로 알 수 없다고 했습니다.
그리고 이 단원 전체가 그 "부족한 정보"를 채우는 작업입니다.
| 강의 | 무엇을 채우는가 |
|---|---|
| 136 | 결합분포라는 대상 자체 |
| 137 | 한쪽을 알 때 다른 쪽 |
| 138 | 함께 움직이는 정도 |
| 139 | 여럿을 한꺼번에 변환 |
| 140 | 가장 중요한 다변량 분포 |
| 141 | 합의 분포 |
문제. 주사위 두 개에서 를 합, 를 최댓값이라 합니다.
(1) 결합확률 를 표로 만드세요.
(2) 행과 열의 합을 구하세요.
(3) 그 합이 무엇인지 밝히세요.
생각의 실마리. 126강 문제 4에서 같은 표본공간 위에 여러 확률변수를 얹었습니다. 그때는 따로 봤는데 이번에는 함께 봅니다.
풀이. (1) 검산 결과입니다. 칸의 수는 분의 몇인지를 나타냅니다.
| 행 합 | |||||||
|---|---|---|---|---|---|---|---|
**전체 합이 정확히 **입니다.
이 많은 것이 눈에 띕니다. 와 사이에 관계가 있기 때문입니다. 최댓값이 이면 합은 과 사이여야 하므로 그 밖은 불가능합니다.
(2)(3) 행과 열을 더하면 각각의 주변분포가 나옵니다.
| (m/6)^{2}-((m-1)/6)^ | ||||
|---|---|---|---|---|
126강에서 따로 구한 두 분포가 그대로 나옵니다. 의 열은 이며 126강 문제 4에서 유도한 식입니다.
이 문제에서 배우는 것: 결합분포와 주변분포.
결합확률질량함수.
이며 두 조건을 만족합니다.
주변분포. 다른 변수에 대해 더하면 나옵니다.
"주변"이라는 이름이 표에서 왔습니다. 표의 가장자리에 적는 합계라는 뜻이며, 영어의 marginal도 여백을 뜻합니다.
유도의 근거는 121강의 분할입니다. 를 의 값으로 쪼개면
이고 조각들이 서로 배반이므로 공리 3으로 더할 수 있습니다. 123강 전확률의 법칙과 같은 구조입니다.
정보의 방향은 한쪽입니다. 결합분포에서 주변분포는 언제나 나오지만, 거꾸로는 안 됩니다. 문제 2에서 확인합니다.
칸의 개수를 세어 보면 이유가 보입니다. 가 가지, 가 가지 값을 가지면
| 대상 | 자유도 |
|---|---|
| 결합분포 | |
| 주변분포 둘 |
이면 대 입니다. 결합분포가 훨씬 많은 정보를 담고 있습니다.
바로 확인 1.
확인 1-1. 결합확률질량함수의 두 조건을 쓰세요.
답. 비음이고 모든 칸의 합이 입니다.
확인 1-2. 주변분포를 결합분포로 쓰세요.
답. 입니다.
확인 1-3. 그 유도의 근거를 쓰세요.
답. 를 의 값으로 분할하고 공리 3으로 더합니다.
문제. 주변분포가 모두 에 균등인 네 개의 결합분포를 만듭니다.
(1) 독립, 완전 양의 종속, 완전 음의 종속, 절반 섞기를 각각 구성하세요.
(2) 각각의 , , 를 비교하세요.
(3) 주변분포를 확인하세요.
생각의 실마리. 주변분포가 같다는 것은 행 합과 열 합이 같다는 뜻입니다. 표의 안쪽을 바꿔도 가장자리는 유지할 수 있습니다.
풀이. 검산 결과입니다.
| 결합분포 | 주변 | 주변 | |||
|---|---|---|---|---|---|
| 독립 | 같습니다 | ||||
| 완전 양의 종속 | 같습니다 | ||||
| 완전 음의 종속 | 같습니다 | ||||
| 절반 섞기 | 같습니다 |
네 표의 주변분포가 모두 같은데 결합확률은 전혀 다릅니다.
가 부터 까지 움직입니다. 완전 양의 종속에서는 이면 반드시 이라 이고, 완전 음의 종속에서는 이면 반드시 라 입니다.
이 문제에서 배우는 것: 주변분포의 한계.
핵심. 주변분포 와 를 알아도 결합분포 는 정해지지 않습니다.
가능한 결합분포의 집합이 넓습니다. 주변분포를 고정하면 결합분포는 다면체를 이루며, 꼭짓점들이 극단적인 종속 구조에 해당합니다.
두 극단에 이름이 있습니다.
| 구조 | 성질 |
|---|---|
| 완전 양의 종속 | 가 의 증가함수, 상관 최대 |
| 독립 | 곱으로 갈라짐 |
| 완전 음의 종속 | 가 의 감소함수, 상관 최소 |
프레셰호프딩 경계가 그 범위를 정합니다.
어떤 결합분포도 이 사이에 있습니다.
실무의 함의가 큽니다.
| 상황 | 무엇을 놓치는가 |
|---|---|
| 각 변수를 따로 모형화 | 관계를 전혀 반영하지 못합니다 |
| 각 자산의 위험만 관리 | 동시 폭락을 놓칩니다 |
| 특징별 분포만 맞춤 | 특징 간 상호작용을 놓칩니다 |
| 주변분포 매칭 생성모형 | 그럴듯한 값들의 이상한 조합을 만듭니다 |
넷째 줄이 생성모형의 어려움입니다. 각 픽셀의 분포를 맞추는 것은 쉽지만 픽셀들의 결합분포를 맞추는 것은 전혀 다른 문제이며, 그것이 생성모형의 본질입니다.
바로 확인 2.
확인 2-1. 주변분포가 결합분포를 정합니까?
답. 정하지 못합니다. 같은 주변분포에 여러 결합분포가 있습니다.
확인 2-2. 프레셰호프딩 경계가 무엇을 말합니까?
답. 주변분포가 정해지면 결합분포함수가 그 사이에 갇힙니다.
확인 2-3. 자유도로 정보량 차이를 쓰세요.
답. 결합은 이고 주변 둘은 입니다.
문제. 문제 2의 네 표와 문제 1의 표를 검사합니다.
(1) 각 칸에서 의 최댓값을 구하세요.
(2) 독립인 것을 찾으세요.
(3) 주사위의 합과 최대가 독립인지 판정하세요.
생각의 실마리. 124강에서 독립을 로 정의했습니다. 확률변수의 독립은 모든 값의 쌍에서 그것이 성립하는 것입니다.
풀이. (1)(2) 검산 결과입니다.
| 결합분포 | 최대 차이 | 독립인가 |
|---|---|---|
| 독립 | 참입니다 | |
| 완전 양의 종속 | 아닙니다 | |
| 완전 음의 종속 | 아닙니다 | |
| 절반 섞기 | 아닙니다 |
넷째 줄이 정확히 셋째 줄의 절반입니다. 독립과 완전 종속을 절반씩 섞었기 때문입니다.
(3) 주사위의 합과 최대는 독립이 아닙니다. 최대 차이가 입니다.
이 문제에서 배우는 것: 확률변수의 독립.
독립. 모든 와 에 대해
이면 와 가 독립이라 하고 로 씁니다. 연속에서는 밀도로 같은 식입니다.
"모든 쌍에서"가 중요합니다. 몇 칸에서 우연히 곱과 같아도 독립이 아닙니다.
동치 표현. 분포함수로도 쓸 수 있습니다.
세 표현이 모두 동치이며, 연속에서 밀도가 없어도 분포함수 형태는 쓸 수 있습니다.
독립이면 정보가 크게 줄어듭니다.
| 대상 | 필요한 수 |
|---|---|
| 일반 결합분포 | |
| 독립이라 가정 |
124강 문제 5의 나이브 베이즈가 이 절약을 쓴 것입니다. 개 특징이면 이 로 줄어듭니다.
판정의 지름길 하나. 결합분포의 지지집합이 직사각형이 아니면 독립이 아닙니다.
문제 1의 표를 보면 이 계단 모양으로 배치되어 있습니다. 직사각형이 아니므로 계산하지 않아도 독립이 아님을 알 수 있습니다.
반대는 성립하지 않습니다. 지지집합이 직사각형이어도 독립이 아닐 수 있으며, 문제 2의 "절반 섞기"가 그 예입니다.
121강 심화 5에서 예고한 것이 여기서 완성됩니다. 그때 곱 표본공간의 직사각형 사건이 자동으로 독립이라고 했는데, 확률변수 버전이 이것입니다.
바로 확인 3.
확인 3-1. 확률변수의 독립을 결합분포로 쓰세요.
답. 모든 쌍에서 입니다.
확인 3-2. 독립이 절약하는 정보량을 쓰세요.
답. 에서 로 줄어듭니다.
확인 3-3. 지지집합이 직사각형이 아니면 무엇을 알 수 있습니까?
답. 독립이 아님을 계산 없이 알 수 있습니다.
문제. 가 에서 결합밀도입니다.
(1) 전체 적분이 인지 확인하세요.
(2) 주변밀도와 , 를 구하세요.
(3) 독립인지 판정하세요.
생각의 실마리. 129강에서 밀도를 적분하면 확률이었습니다. 변수가 둘이면 이중적분이며, 103강의 도구가 그대로 옵니다.
풀이. (1)(2) 검산 결과입니다.
| 양 | 수치 | 이론 |
|---|---|---|
| 전체 적분 | ||
| at | ||
| at | ||
**격자점이 정확히 가 아니라 **이며, 그 점에서의 이론값과 소수점 일곱 자리까지 맞습니다.
주변밀도를 손으로 구하면
이고 입니다.
(3) 주변밀도의 곱과 결합밀도를 비교합니다.
| 점 | ||
|---|---|---|
한 점에서 우연히 같지만 다른 점에서 다릅니다. 따라서 독립이 아니며, 공분산이 로 음수입니다.
이 문제에서 배우는 것: 연속 결합분포.
결합밀도. 두 조건을 만족합니다.
확률은 부피입니다.
129강에서 확률이 넓이였는데 여기서는 부피입니다. 103강의 이중적분이 그대로 확률 계산기가 됩니다.
주변밀도. 다른 변수를 적분해 없앱니다.
이산의 합이 연속의 적분으로 바뀐 것뿐입니다. 이 연산을 주변화라 하며, 확률 모형에서 관심 없는 변수를 없애는 표준 도구입니다.
주변화가 기계학습에서 자주 나타납니다.
| 상황 | 무엇을 주변화하는가 |
|---|---|
| 잠재변수 모형 | 잠재변수 \mathbf |
| 베이즈 예측 | 모수 \boldsymbol |
| 결측치 처리 | 관측되지 않은 성분 |
| 앙상블 | 모형 인덱스 |
둘째 줄이 베이즈 예측분포입니다.
모수를 하나로 고르지 않고 사후분포로 평균내는 것이며, 125강의 베이즈 정리와 이 강의의 주변화가 결합한 형태입니다. 이 적분이 어려워서 262강의 변분추론과 157강의 MCMC가 필요해집니다.
바로 확인 4.
확인 4-1. 결합밀도의 두 조건을 쓰세요.
답. 비음이고 전체 이중적분이 입니다.
확인 4-2. 주변밀도를 쓰세요.
답. 입니다.
확인 4-3. 주변화가 무엇을 하는 연산인지 쓰세요.
답. 관심 없는 변수를 적분해 없앱니다.
문제. 주변분포가 같고 상관계수도 같은 두 결합분포를 만듭니다.
(1) 두 표의 상관계수를 확인하세요.
(2) 양쪽 극단이 함께 일어날 확률을 비교하세요.
(3) 결론을 쓰세요.
생각의 실마리. 문제 2에서 주변분포만으로는 부족했습니다. 상관계수를 하나 더 주면 충분한지 봅니다.
풀이. 검산 결과입니다.
| 결합분포 | 상관계수 | (둘 다 ) | (둘 다 ) | 주변 |
|---|---|---|---|---|
| 표 A | ||||
| 표 B |
상관계수가 소수점 여덟 자리까지 같은데 양쪽 극단이 함께 일어날 확률이 배 차이입니다.
이 문제에서 배우는 것: 상관계수도 요약일 뿐이다.
핵심. 주변분포와 상관계수를 모두 알아도 결합분포는 정해지지 않습니다.
상관계수는 하나의 수이므로 자유도를 하나만 줄입니다. 표에서 결합분포의 자유도가 이고 주변분포가 을 정하면 가 남는데, 상관계수는 그중 만 더 정합니다.
차이가 나타나는 곳이 꼬리입니다.
꼬리 의존성. 한쪽이 극단일 때 다른 쪽도 극단일 조건부확률입니다.
상관계수는 전체적인 선형 경향을 재고 꼬리 의존성은 극단에서의 동조를 잽니다. 둘은 별개입니다.
이 구별이 실무에서 값비쌉니다.
| 분야 | 놓치면 생기는 일 |
|---|---|
| 금융 위험관리 | 평시에는 상관이 낮은데 위기에 함께 폭락합니다 |
| 시스템 신뢰성 | 부품이 독립인 줄 알았는데 같은 원인으로 동시 고장 |
| 포트폴리오 분산 | 분산 효과가 정작 필요할 때 사라집니다 |
| 앙상블 모형 | 어려운 표본에서 모형들이 함께 틀립니다 |
첫째 줄이 2008년 금융위기의 기술적 원인 중 하나로 지목됩니다. 정규 코퓰라를 썼는데 그 분포의 꼬리 의존성이 이라, 모형상 동시 부도가 사실상 불가능했습니다.
코퓰라. 주변분포와 종속 구조를 분리해서 다루는 도구입니다.
슬라 정리에 따르면 임의의 결합분포함수를 이렇게 쓸 수 있습니다.
가 코퓰라이며 위의 결합분포함수입니다. 126강 심화 4의 역변환 표집이 이 분해의 근거이며, 각 변수를 균등분포로 옮긴 뒤 그 위에서 종속만 다룹니다.
| 코퓰라 | 꼬리 의존성 |
|---|---|
| 독립 코퓰라 | 없습니다 |
| 정규 코퓰라 | 상관이 이 아니면 입니다 |
| 코퓰라 | 양쪽 꼬리에 있습니다 |
| 검벨 코퓰라 | 위쪽 꼬리에만 있습니다 |
둘째 줄이 위기의 핵심입니다. 상관계수를 로 높게 잡아도 꼬리 의존성은 여전히 입니다.
바로 확인 5.
확인 5-1. 주변분포와 상관계수로 결합분포가 정해집니까?
답. 정해지지 않습니다. 자유도가 여전히 남습니다.
확인 5-2. 꼬리 의존성을 쓰세요.
답. 한쪽이 극단일 때 다른 쪽도 극단일 조건부확률의 극한입니다.
확인 5-3. 슬라 정리를 쓰세요.
답. 결합분포함수를 주변분포함수와 코퓰라로 분해할 수 있습니다.
| 개념 | 식 |
|---|---|
| 결합질량함수 | |
| 주변분포 | |
| 결합밀도 | , 확률은 부피 |
| 주변밀도 | |
| 독립 | (모든 쌍에서) |
| 프레셰호프딩 | |
| 슬라 정리 |
| 정보량 | 자유도 |
|---|---|
| 결합분포 | |
| 주변분포 둘 | |
| 상관계수 추가 | 만 더 |
| 자주 하는 실수 | 바로잡기 |
|---|---|
| 주변분포로 결합분포를 복원합니다 | 정해지지 않습니다 |
| 몇 칸이 곱과 같으면 독립이라 봅니다 | 모든 쌍에서 성립해야 합니다 |
| 상관계수만 보고 안심합니다 | 꼬리 의존성은 별개입니다 |
| 지지집합이 직사각형이면 독립이라 봅니다 | 필요조건일 뿐입니다 |
문제 6. 결합확률질량함수의 두 조건을 쓰세요.
답. 비음이고 모든 칸의 합이 입니다.
문제 7. 주변분포를 결합분포로 쓰고 유도 근거를 쓰세요.
답. 이며 를 로 분할해 더합니다.
문제 8. "주변"이라는 이름의 유래를 쓰세요.
답. 표의 가장자리에 적는 합계라는 뜻입니다.
문제 9. 결합분포와 주변분포 둘의 자유도를 쓰세요.
답. 과 입니다.
문제 10. 주변분포가 결합분포를 정합니까?
답. 정하지 못합니다. 같은 주변에 여러 결합이 있습니다.
문제 11. 프레셰호프딩 경계를 쓰세요.
답. 입니다.
문제 12. 확률변수의 독립을 세 가지 형태로 쓰세요.
답. 질량함수, 밀도, 분포함수 모두 곱으로 갈라집니다.
문제 13. 독립이 절약하는 정보량을 쓰세요.
답. 에서 로 줄어듭니다.
문제 14. 지지집합이 직사각형이 아니면 무엇을 알 수 있습니까?
답. 독립이 아님을 계산 없이 알 수 있습니다.
문제 15. 그 역이 성립합니까?
답. 성립하지 않습니다. 직사각형이어도 독립이 아닐 수 있습니다.
문제 16. 결합밀도에서 확률과 주변밀도를 쓰세요.
답. 확률은 영역 위의 이중적분이고 주변밀도는 다른 변수를 적분해 없앤 것입니다.
문제 17. 주변화가 기계학습에서 쓰이는 예를 두 가지 쓰세요.
답. 잠재변수 모형과 베이즈 예측분포입니다.
문제 18. 주변분포와 상관계수로 결합분포가 정해지는지 쓰고 무엇이 다를 수 있는지 쓰세요.
답. 정해지지 않으며 꼬리 의존성이 다를 수 있습니다.
심화 1. 결합분포의 기하를 정리하세요.
주변분포를 고정하면 가능한 결합분포들이 볼록집합을 이룹니다. 107강의 볼록성이 여기서 쓰입니다.
행 합과 열 합이 고정된 비음 행렬의 집합이며, 이를 수송 다면체라 합니다.
| 성질 | 내용 |
|---|---|
| 볼록집합 | 두 결합분포의 볼록결합도 결합분포입니다 |
| 유계 | 각 성분이 에 있습니다 |
| 꼭짓점 | 최대 개의 칸만 양수입니다 |
| 항상 비어 있지 않음 | 독립 결합분포가 언제나 있습니다 |
셋째 줄이 최적수송의 출발점입니다. 두 분포 사이의 거리를 재려면 이 다면체에서 비용을 최소화하는 결합분포를 찾으며, 이를 바서슈타인 거리라 합니다.
선형계획법이며 113강의 라그랑주 승수와 115강의 쌍대 문제가 도구가 됩니다. 272강의 바서슈타인 GAN이 이 거리를 손실로 씁니다.
KL 발산과의 차이가 여기서 나옵니다. KL은 지지집합이 겹쳐야 유한하지만, 바서슈타인은 겹치지 않아도 유한합니다. 생성모형에서 초기에 지지집합이 안 겹치는 상황을 다룰 수 있는 것이 그 장점입니다.
심화 2. 여러 변수로 확장할 때 무엇이 어려워지는지 쓰세요.
변수가 개면 결합분포의 자유도가 폭증합니다.
| 각 변수 값 | 자유도 | |
|---|---|---|
| 칸 | ||
| 칸 | ||
| 칸 | 10^ | |
| 칸 | 10^ |
이면 이미 저장할 수 없습니다.
해결책이 구조를 가정하는 것입니다.
| 가정 | 자유도 |
|---|---|
| 완전 독립 | |
| 마르코프 사슬 | |
| 트리 구조 | |
| 베이즈망(부모 개) | |
| 자기회귀 인수분해 | 근사로 |
마지막 줄이 123강 심화 2의 곱셈법칙 연쇄입니다.
이것은 근사가 아니라 항등식이지만, 각 인자를 신경망으로 근사하면 파라미터가 선형으로 줄어듭니다. 298강의 언어모형이 이 전략입니다.
넷째 줄이 213강 확률그래프모형이며, 124강의 조건부 독립이 그래프의 구조로 표현됩니다.
심화 3. 결합분포함수를 정의하고 성질을 정리하세요.
126강에서 분포함수가 이산과 연속을 통합했습니다. 이변량도 마찬가지입니다.
결합분포함수.
성질이 일변량보다 까다롭습니다.
| 성질 | 내용 |
|---|---|
| 각 변수에 대해 비감소 | 일변량과 같습니다 |
| 양끝 극한 | , |
| 각 변수에 우연속 | 일변량과 같습니다 |
| 사각형 부등식 | 새로 필요합니다 |
넷째 줄이 이변량 고유의 조건입니다. 임의의 사각형에 대해
이어야 하며, 이것이 그 사각형의 확률이기 때문입니다. 122강의 포함배제와 같은 구조입니다.
앞의 세 조건만으로는 부족합니다. 각 변수에 대해 비감소이면서 사각형 부등식을 어기는 함수를 만들 수 있으며, 그러면 어떤 영역의 확률이 음수가 됩니다.
주변분포는 극한으로 나옵니다.
결합밀도는 두 번 미분해 얻습니다.
94강의 편미분과 129강의 기본정리가 결합한 형태이며, 혼합편미분이 순서에 무관하다는 것이 97강의 조건 아래 보장됩니다.
심화 4. 교환가능성을 개관하세요.
123강 문제 2에서 비복원 추출의 두 번째가 첫 번째와 같은 분포임을 봤습니다. 그 성질에 이름이 있습니다.
교환가능. 의 결합분포가 첨자의 임의의 치환에 대해 불변이면 교환가능하다고 합니다.
독립 동일분포보다 약한 조건입니다.
| 관계 | 성립 |
|---|---|
| iid 교환가능 | 참입니다 |
| 교환가능 iid | 거짓입니다 |
비복원 추출이 반례입니다. 교환가능하지만 독립이 아닙니다.
드피네티 정리가 놀라운 결과를 줍니다.
드피네티 정리. 무한히 교환가능한 이진 수열은 어떤 에 대한 조건부 iid 베르누이의 혼합으로 표현됩니다.
베이즈 추론의 정당화입니다. "모수가 있고 그 위에 사전분포가 있다"는 구조가 교환가능성이라는 대칭성만으로 유도됩니다. 모수를 믿기 때문이 아니라 관측의 대칭성 때문에 그 형태가 나옵니다.
기계학습에서 교환가능성이 설계 원리가 됩니다.
| 모형 | 무엇이 교환가능한가 |
|---|---|
| 집합 신경망 | 입력 원소의 순서 |
| 그래프 신경망 | 노드 번호 |
| 어텐션(위치 인코딩 없이) | 토큰 순서 |
| 디리클레 과정 | 군집 레이블 |
셋째 줄이 위치 인코딩이 필요한 이유입니다. 어텐션 자체는 순서에 불변이라 위치 정보를 따로 넣어야 합니다.
심화 5. 결합분포에서 조건부확률로 가는 다리를 놓으세요.
137강의 주제를 미리 봅니다. 123강의 조건부확률을 확률변수에 적용하면
결합을 주변으로 나눈 것입니다.
세 대상의 관계가 이렇게 정리됩니다.
| 방향 | 연산 |
|---|---|
| 결합 주변 | 더하거나 적분합니다 |
| 결합 조건부 | 주변으로 나눕니다 |
| 주변 조건부 결합 | 곱합니다 |
셋째 줄이 곱셈법칙이며, 결합분포를 만드는 표준 방법입니다.
생성 모형이 이 순서로 데이터를 만듭니다. 먼저 를 뽑고, 그 값에 따라 를 뽑습니다. 123강 심화 6의 생성모형이 정확히 이 구조이며, 로 결합을 세우고 베이즈로 뒤집습니다.
연속에서도 같습니다.
분모가 인 곳에서 정의되지 않는 것이 주의할 점이며, 연속에서 인데도 조건부밀도가 잘 정의되는 이유는 밀도의 비로 정의하기 때문입니다. 137강에서 이 미묘함을 다룹니다.
심화 6. 결합분포가 기계학습에서 나타나는 자리를 정리하세요.
| 자리 | 어떤 결합분포 |
|---|---|
| 지도학습 | , 판별은 만 |
| 생성모형 | 전체를 학습 |
| 잠재변수 모형 | |
| 언어모형 | |
| 확률그래프모형 | 조건부 독립으로 인수분해 |
| 다중 작업 학습 |
첫째 줄이 123강 심화 6의 판별과 생성 구분입니다. 판별모형은 결합분포 전체를 배우지 않고 조건부만 배웁니다.
여섯째 줄이 흥미롭습니다. 여러 출력을 예측할 때 각각 독립으로 다루면 출력들의 관계를 놓칩니다. 문제 2의 교훈이 그대로 적용되며, 구조적 예측이 이 문제를 다룹니다.
넷째 줄이 이 강의의 결론을 가장 잘 보여 줍니다. 언어모형이 하는 일은 토큰들의 결합분포를 배우는 것입니다. 각 토큰의 주변분포만 배우면 단어 빈도표에 지나지 않고, 결합을 배워야 문장이 됩니다.
import numpy as np, itertools
S = list(itertools.product(range(1, 7), repeat=2))
N = len(S)
# --- 문제 1: 두 변수를 함께 보면 표가 된다 ------------------------------
Xf = lambda w: w[0] + w[1]
Yf = lambda w: max(w)
xs = sorted({Xf(w) for w in S}); ys = sorted({Yf(w) for w in S})
J = np.zeros((len(xs), len(ys)))
for w in S:
J[xs.index(Xf(w)), ys.index(Yf(w))] += 1/N
print(" X = 두 눈의 합, Y = 두 눈의 최대. 결합확률 P(X=x, Y=y) (36분의 몇)")
print(" x \\ y" + "".join("%8d" % y for y in ys) + " 행 합")
for i, x in enumerate(xs):
print(" %9d" % x + "".join("%8.0f" % (J[i, j]*N) for j in range(len(ys)))
+ " %10.6f" % J[i].sum())
print(" 열 합 " + "".join("%8.0f" % (J[:, j].sum()*N) for j in range(len(ys))))
print(" 전체 합 %.10f" % J.sum())
print(" 행을 더하면 X 의 주변분포, 열을 더하면 Y 의 주변분포가 나옵니다")
print(" X 의 주변분포 Y 의 주변분포")
print(" x P(X=x) y P(Y=y) (m/6)^2-((m-1)/6)^2")
for k in range(len(xs)):
left = " %5d %9.6f" % (xs[k], J[k].sum())
if k < len(ys):
m = ys[k]
print(left + " %7d %9.6f %18.6f"
% (m, J[:, k].sum(), (m/6)**2 - ((m-1)/6)**2))
else:
print(left)
# X = 두 눈의 합, Y = 두 눈의 최대. 결합확률 P(X=x, Y=y) (36분의 몇)
# x \ y 1 2 3 4 5 6 행 합
# 2 1 0 0 0 0 0 0.027778
# 3 0 2 0 0 0 0 0.055556
# 4 0 1 2 0 0 0 0.083333
# 5 0 0 2 2 0 0 0.111111
# 6 0 0 1 2 2 0 0.138889
# 7 0 0 0 2 2 2 0.166667
# 8 0 0 0 1 2 2 0.138889
# 9 0 0 0 0 2 2 0.111111
# 10 0 0 0 0 1 2 0.083333
# 11 0 0 0 0 0 2 0.055556
# 12 0 0 0 0 0 1 0.027778
# 열 합 1 3 5 7 9 11
# 전체 합 1.0000000000
# 행을 더하면 X 의 주변분포, 열을 더하면 Y 의 주변분포가 나옵니다
# X 의 주변분포 Y 의 주변분포
# x P(X=x) y P(Y=y) (m/6)^2-((m-1)/6)^2
# 2 0.027778 1 0.027778 0.027778
# 3 0.055556 2 0.083333 0.083333
# 4 0.083333 3 0.138889 0.138889
# 5 0.111111 4 0.194444 0.194444
# 6 0.138889 5 0.250000 0.250000
# 7 0.166667 6 0.305556 0.305556
# 8 0.138889
# 9 0.111111
# 10 0.083333
# 11 0.055556
# 12 0.027778
# --- 문제 2: 주변분포로는 결합분포를 복원할 수 없다 ---------------------
print(" 같은 주변분포를 갖는 서로 다른 결합분포를 만듭니다")
mx = np.array([0.25, 0.25, 0.25, 0.25])
Ind = np.outer(mx, mx)
Diag = np.diag(mx)
Anti = np.zeros((4, 4))
for i in range(4): Anti[i, 3-i] = mx[i]
print(" 결합분포 P(1,1) P(1,4) P(4,4) 주변 X 주변 Y")
for nm, T in [("독립", Ind), ("완전 양의 종속", Diag), ("완전 음의 종속", Anti),
("절반 섞기", 0.5*Ind + 0.5*Diag)]:
print(" %-14s %8.4f %8.4f %8.4f %s %s"
% (nm, T[0,0], T[0,3], T[3,3],
np.array2string(T.sum(1), precision=2), np.array2string(T.sum(0), precision=2)))
print(" 네 표의 주변분포가 모두 같은데 결합확률은 전혀 다릅니다")
print(" 주변분포는 결합분포를 정하지 못합니다. 정보가 부족합니다")
# 같은 주변분포를 갖는 서로 다른 결합분포를 만듭니다
# 결합분포 P(1,1) P(1,4) P(4,4) 주변 X 주변 Y
# 독립 0.0625 0.0625 0.0625 [0.25 0.25 0.25 0.25] [0.25 0.25 0.25 0.25]
# 완전 양의 종속 0.2500 0.0000 0.2500 [0.25 0.25 0.25 0.25] [0.25 0.25 0.25 0.25]
# 완전 음의 종속 0.0000 0.2500 0.0000 [0.25 0.25 0.25 0.25] [0.25 0.25 0.25 0.25]
# 절반 섞기 0.1562 0.0312 0.1562 [0.25 0.25 0.25 0.25] [0.25 0.25 0.25 0.25]
# 네 표의 주변분포가 모두 같은데 결합확률은 전혀 다릅니다
# 주변분포는 결합분포를 정하지 못합니다. 정보가 부족합니다
# --- 문제 3: 곱으로 갈라지면 독립이다 -----------------------------------
print(" 독립 판정: 모든 칸에서 P(x,y) = P(x)P(y) 인지 봅니다")
def indep_check(T):
px, py = T.sum(1), T.sum(0)
return float(np.abs(T - np.outer(px, py)).max())
print(" 결합분포 최대 차이 |P(x,y)-P(x)P(y)| 독립인가")
for nm, T in [("독립", Ind), ("완전 양의 종속", Diag), ("완전 음의 종속", Anti),
("절반 섞기", 0.5*Ind + 0.5*Diag)]:
d = indep_check(T)
print(" %-14s %28.10f %14s" % (nm, d, d < 1e-12))
print(" 주사위의 합과 최대는 어떤지 확인합니다")
d = indep_check(J)
print(" 최대 차이 %.10f -> 독립 %s" % (d, d < 1e-12))
i7, j6 = xs.index(7), ys.index(6)
print(" 예: P(X=7, Y=6) = %.6f 인데 P(X=7)P(Y=6) = %.6f 입니다"
% (J[i7, j6], J[i7].sum()*J[:, j6].sum()))
# 독립 판정: 모든 칸에서 P(x,y) = P(x)P(y) 인지 봅니다
# 결합분포 최대 차이 |P(x,y)-P(x)P(y)| 독립인가
# 독립 0.0000000000 True
# 완전 양의 종속 0.1875000000 False
# 완전 음의 종속 0.1875000000 False
# 절반 섞기 0.0937500000 False
# 주사위의 합과 최대는 어떤지 확인합니다
# 최대 차이 0.0509259259 -> 독립 False
# 예: P(X=7, Y=6) = 0.055556 인데 P(X=7)P(Y=6) = 0.050926 입니다
# --- 문제 4: 연속에서는 이중적분이다 ------------------------------------
print(" 결합밀도 f(x,y) = x + y on [0,1]^2 를 봅니다")
M = 3000
g = (np.arange(M) + 0.5)/M
XX, YY = np.meshgrid(g, g, indexing="ij")
F = XX + YY
cell = 1.0/M**2
print(" 양 수치 이론")
print(" %-26s %14.10f %10.6f" % ("전체 적분", float(F.sum()*cell), 1.0))
fx = F.sum(1)*(1.0/M) # 주변밀도 f_X(x) = x + 1/2
for xi in [M//2, int(0.9*M)]:
xg = g[xi]
print(" f_X(x) at x = %.7f %14.10f %10.7f" % (xg, float(fx[xi]), xg + 0.5))
print(" %-26s %14.10f %10.6f" % ("E[X]", float((XX*F).sum()*cell), 7/12))
print(" %-26s %14.10f %10.6f" % ("E[XY]", float((XX*YY*F).sum()*cell), 1/3))
print(" %-26s %14.10f %10.6f" % ("E[X]E[Y]", (7/12)**2, (7/12)**2))
cov = 1/3 - (7/12)**2
print(" %-26s %14.10f %10.6f" % ("Cov[X,Y]", float((XX*YY*F).sum()*cell) - (7/12)**2, cov))
print(" 주변밀도의 곱 (x+1/2)(y+1/2) 와 f(x,y)=x+y 가 다르므로 독립이 아닙니다")
print(" (x,y)=(0.5,0.5) 에서 f = %.6f, 곱 = %.6f" % (1.0, 1.0))
print(" (x,y)=(0.9,0.9) 에서 f = %.6f, 곱 = %.6f" % (1.8, 1.4*1.4))
# 결합밀도 f(x,y) = x + y on [0,1]^2 를 봅니다
# 양 수치 이론
# 전체 적분 1.0000000000 1.000000
# f_X(x) at x = 0.5001667 1.0001666667 1.0001667
# f_X(x) at x = 0.9001667 1.4001666667 1.4001667
# E[X] 0.5833333241 0.583333
# E[XY] 0.3333333241 0.333333
# E[X]E[Y] 0.3402777778 0.340278
# Cov[X,Y] -0.0069444537 -0.006944
# 주변밀도의 곱 (x+1/2)(y+1/2) 와 f(x,y)=x+y 가 다르므로 독립이 아닙니다
# (x,y)=(0.5,0.5) 에서 f = 1.000000, 곱 = 1.000000
# (x,y)=(0.9,0.9) 에서 f = 1.800000, 곱 = 1.960000
# --- 문제 5: 주변과 상관이 같아도 결합은 다르다 -------------------------
print(" 주변분포와 상관계수가 같은데 꼬리 의존이 전혀 다른 두 결합분포")
v = np.array([1.0, 2.0, 3.0, 4.0])
def stats(T):
px, py = T.sum(1), T.sum(0)
mx_ = float(v @ px); my_ = float(v @ py)
sx = np.sqrt(float((v-mx_)**2 @ px)); sy = np.sqrt(float((v-my_)**2 @ py))
exy = float(sum(T[i, j]*v[i]*v[j] for i in range(4) for j in range(4)))
return (exy - mx_*my_)/(sx*sy)
A = 0.5*Ind + 0.5*Diag # 대각으로 뭉침 (양끝이 함께 극단)
blk = np.zeros((4, 4))
blk[0,1] = blk[1,0] = blk[2,3] = blk[3,2] = 0.25
# 상관을 맞추기 위해 섞는 비율을 조정합니다
tgt = stats(A)
lo, hi = 0.0, 1.0
for _ in range(200):
m = (lo+hi)/2
C = (1-m)*Ind + m*(0.5*Diag + 0.5*blk)
if stats(C) < tgt: lo = m
else: hi = m
B = (1-lo)*Ind + lo*(0.5*Diag + 0.5*blk)
print(" 결합분포 상관계수 P(둘 다 4) P(둘 다 1) 주변 X")
for nm, T in [("표 A", A), ("표 B", B)]:
print(" %-10s %11.8f %13.6f %13.6f %s"
% (nm, stats(T), T[3,3], T[0,0], np.array2string(T.sum(1), precision=3)))
print(" 상관계수가 소수점 8 자리까지 같은데 양쪽 극단이 함께 일어날 확률이 다릅니다")
print(" P(둘 다 4) 의 비 %.4f 배" % (A[3,3]/B[3,3]))
print(" 주변분포와 상관계수만으로 결합분포를 정할 수 없습니다")
# 주변분포와 상관계수가 같은데 꼬리 의존이 전혀 다른 두 결합분포
# 결합분포 상관계수 P(둘 다 4) P(둘 다 1) 주변 X
# 표 A 0.50000000 0.156250 0.156250 [0.25 0.25 0.25 0.25]
# 표 B 0.50000000 0.101562 0.101562 [0.25 0.25 0.25 0.25]
# 상관계수가 소수점 8 자리까지 같은데 양쪽 극단이 함께 일어날 확률이 다릅니다
# P(둘 다 4) 의 비 1.5385 배
# 주변분포와 상관계수만으로 결합분포를 정할 수 없습니다
문제 1의 표에서 의 배치가 정보입니다. 최댓값이 이면 합이 과 사이여야 하므로 대각선 띠 모양이 되며, 지지집합이 직사각형이 아니라는 것만으로 독립이 아님을 알 수 있습니다. 열 합이 인 것도 126강 문제 4의 과 정확히 같습니다.
문제 2의 네 줄이 이 강의의 핵심 주장입니다. 주변분포가 모두 로 같은데 는 에서 까지 움직입니다. 가장자리를 고정해도 안쪽은 자유롭습니다.
문제 5는 한 걸음 더 나갑니다. 상관계수까지 소수점 여덟 자리로 맞췄는데도 양쪽 극단이 함께 일어날 확률이 배 다릅니다. 요약 통계를 아무리 맞춰도 결합분포는 정해지지 않습니다.
정답.
| 기호 | 읽는 법 | 뜻 |
|---|---|---|
| 결합질량함수 | 두 값을 동시에 가질 확률입니다 | |
| 결합밀도 | 확률이 부피가 됩니다 | |
| 주변분포 | 다른 변수를 더해 없앤 것입니다 | |
| 주변화 | marginalization | 관심 없는 변수를 없앱니다 |
| 독립 | 곱으로 갈라집니다 | |
| 프레셰호프딩 | Fréchet-Hoeffding | 결합분포함수의 상하한입니다 |
| 코퓰라 | copula | 주변과 종속을 분리합니다 |
| 슬라 정리 | Sklar's theorem | 그 분해가 언제나 가능합니다 |
| 꼬리 의존성 | tail dependence | 극단에서 함께 움직이는 정도입니다 |
| 수송 다면체 | transportation polytope | 주변이 고정된 결합들의 집합입니다 |
| 교환가능 | exchangeable | 순서를 바꿔도 분포가 같습니다 |
| 드피네티 정리 | de Finetti's theorem | 교환가능하면 조건부 iid 혼합입니다 |
다음 137강에서는 조건부분포와 조건부기댓값을 다룹니다. 심화 5에서 다리를 놓았듯, 결합분포를 주변분포로 나누면 조건부분포가 나옵니다. 가 의 함수이므로 확률변수라는 점이 처음에 헷갈리는 지점이며, 132강 심화 3의 전체 기댓값 법칙과 133강 문제 5의 전체 분산 법칙이 여기서 증명됩니다. 그리고 133강 문제 2에서 예고한 대로 조건부기댓값이 정사영이라는 것이 밝혀집니다.