자주 하는 실수와 요약
자주 하는 실수
| 실수 | 나온 문제 | 바로잡는 법 |
|---|---|---|
| 1비트로 받은 반쪽을 표준편차 하나만큼 떨어진 값으로 되살림 | 1 | 제곱 오차를 가장 작게 하는 값은 그 반쪽의 평균이다. 분산 1 이면 ±0.798 |
| 「크다 / 작다」 한마디로 레이트–디스토션 함수의 한계에 닿는다고 봄 | 1, 2 | 수 하나씩 적는 양자화기는 한계에 닿지 못한다. 여러 수를 묶어 적어야 다가간다 |
| 허용 왜곡이 분산보다 큰데 ½ log₂(σ²/D) 를 그대로 씀 | 2 | D ≥ σ² 이면 0비트. 평균으로만 답해도 분산만큼은 맞힌다 |
| 4비트 형식이면 4비트어치 정보를 담는다고 봄 | 3 | 단계가 쓰인 비율의 엔트로피를 본다. 고르게 쓰지 않는 단계는 비트를 낭비한다. 묶음마다 적는 척도도 비용이다 |
| 성분마다 비트를 똑같이 나눔 | 4, 6 | 물 붓기: 남은 왜곡을 같은 수위에 맞추고, 수위보다 분산이 작은 성분은 버린다 |
| 얽힌 수를 칸마다 따로 적음 | 5 | 공분산의 고유벡터(주성분) 축으로 먼저 돌린 뒤 물을 붓는다 |
| 몇 축을 남길지와 비트 나눔을 따로 정함 | 6 | 수위 하나가 둘을 함께 정한다 |
| 같은 비트를 쓰는 표현이면 같은 값어치라고 봄 | 9 | I(X;T) 는 길이만 말한다. 무엇을 남겼는지는 I(T;Y) 로 본다 |
| β 가 작아도 쓸모 있는 묶음은 쓰리라 봄 | 8 | β 는 맞바꿈 비율이다. 라벨 정보 1비트의 값이 β 보다 비싸면 아무것도 알리지 않는다 |
| 칸으로 나눠 잰 엔트로피가 작으면 표현이 비슷하다고 봄 | 10, 11 | 잣대(칸 크기, 부동소수점)가 서로 다른 값을 한 칸에 모은 것일 수 있다 |
| 압축과 일반화가 함께 나타나면 압축이 원인이라고 봄 | 12 | 압축만 다르고 나머지가 같은 비교로 따진다 |
| β = 1 이면 레이트–디스토션 곡선 위의 자리가 정해진다고 봄 | 14 | 자리는 β · σd² 가 정한다. 디코더 분산도 교환 비율의 일부다 |
| 잠재 칸이 비면 칸을 더 늘림 | 15 | 칸을 쓸지는 수위가 정한다. β 나 디코더 분산을 바꾼다 |
요약
이 장에서 한 일을 정리해 보자. 실수를 정확히 적으려면 비트가 끝없이 들지만, 평균 제곱 오차 D 만큼 틀려도 되면 수 하나에 드는 가장 적은 비트가 레이트–디스토션 함수 R(D) 로 정해진다. 분산 σ² 인 가우스 수에서는 R(D) = ½ log₂(σ²/D) 이고, 1비트로 낼 수 있는 가장 작은 왜곡은 분산의 4분의 1이다. 수 하나를 따로 1비트로 적으면 반쪽의 평균 ±0.798 로 되살려도 0.363 이 한계이고, 여러 수를 묶어 적을수록 0.25 에 다가간다. 큰 언어 모델의 4비트 가중치 형식 NF4 는 단계를 고르게 쓰도록 정규분포의 분위수에서 값을 뽑았다.
성분이 여럿이면 물 붓기가 답이다. 비트를 받은 성분의 왜곡을 모두 같은 수위에 맞추고, 수위보다 분산이 작은 성분은 버린다. 얽힌 수는 주성분 축으로 돌린 뒤 물을 부으니, 가우스 자료에서 비트를 가장 아끼며 버리는 법은 주성분 분석과 같은 순서로 성분을 버린다. 왜곡을 제곱 오차가 아니라 잃은 라벨 정보로 재면 정보 병목이 된다. 날씨 네 가지를 「맑음·구름 | 비·눈」으로 묶으면 0.881비트로 우산 정보의 76.4% 를 남기고, β 는 라벨 정보 1비트와 입력 정보 몇 비트를 바꿀지 정한다. 깊은 신경망의 층이 학습 뒷부분에 입력 정보를 버린다는 「압축 단계」는 tanh 와 칸 나누기에서 크게 보이고 ReLU 나 칸 없는 잣대에서는 작아지거나 사라졌다. β-VAE 는 레이트–디스토션 손실이고, 가우스 자료에서는 학습한 점이 레이트–디스토션 곡선 위에 놓이며 수위 β · σd² 로 물을 붓는다.
flowchart LR A["손실 압축<br/>왜곡 D 만큼 틀려도 된다"] --> B["레이트–디스토션 함수<br/>R(D) = ½ log₂(σ²/D)"] B --> C["성분 여럿<br/>물 붓기 = 주성분 순서로 버리기"] B --> D["왜곡 = 잃은 라벨 정보<br/>정보 병목 min I(X;T) − βI(T;Y)"] C --> E["β-VAE<br/>수위 θ = β × 디코더 분산"] D --> F["정보 평면<br/>압축 단계 주장과 반론"]
막힌 곳
레이트–디스토션 함수와 물 붓기는 분산을 아는 가우스 성분에서 깔끔한 답을 주었고, 정보 병목은 결합 분포를 손으로 적을 수 있는 날씨 네 칸에서 계산되었다. 그런데 실제 표현은 수백 차원의 점 수천 개이고, 그 분포를 표로 적을 수 없다. 정보 평면 실험에서 보았듯 그런 표현의 상호정보량을 재려면 잣대부터 골라야 하고, 결론이 잣대에 따라 흔들렸다. 점 구름 자체를 보고, 허용 오차 안에서 그 점들을 적는 데 드는 비트를 잣대에 덜 흔들리게 셀 수는 없을까? 그리고 라벨이 표현 점들을 여러 클러스터(같은 라벨끼리의 모임)로 나눈다면, 클러스터마다 따로 적을 때와 한꺼번에 적을 때의 비트 차이가 「라벨에 맞는 좋은 표현」을 재는 눈금이 될 수 있을까?