자주 하는 실수와 요약
자주 하는 실수
| 실수 | 나온 문제 | 바로잡는 법 |
|---|---|---|
| 규칙만 보내고 예외를 빼먹음 | 1 | 받는 사람이 자료를 그대로 되살려야 한다. 규칙(모델 비트)과 예외(자료 비트)를 함께 센다 |
| 계수는 정밀할수록 좋다고 봄 | 2 | 자료가 알려 주는 것보다 정밀하게 적으면 모델 비트만 는다. 알맞은 정밀도는 자료 수가 정한다(파라미터당 대략 ½ log₂ n비트) |
| 압축률에서 모델의 크기를 뺌 | 3 | 받는 사람이 모델을 가져야 하면 모델의 비트도 센다. 모델이 크면 적을 자료가 많아야 본전을 찾는다 |
| 짧게 적힌 규칙이 어디서나 맞는다고 봄 | 4, 5 | 처음 보는 자료가 학습 자료와 같은 원천일 때만 기대할 수 있다. 학습 자료가 덮지 않은 곳에는 보증이 없다 |
| 검증 점 몇 개의 작은 차이로 모델을 고름 | 6 | 검증 점이 적으면 고르는 일이 흔들리고, 떼어 낸 만큼 학습 점이 준다. 자료가 귀하면 모델 비트까지 넣은 길이로 학습 자료 전체에서 고른다 |
| 「~로 말할 수 없는 가장 작은 수」를 그냥 큰 수로 봄 | 7 | 자기를 가리키는 설명은 모순을 낳는다. 그래서 콜모고로프 복잡도는 계산할 수 없다 |
| 어떤 자료든 조금은 압축된다고 봄 | 8 | 짧은 설명의 수가 모자라 거의 모든 줄은 압축되지 않는다 |
| 압축기가 못 줄인 자료는 규칙이 없다고 봄 | 9 | 압축 결과는 복잡도의 위쪽 경계일 뿐이다. 압축기가 못 본 짧은 규칙이 있을 수 있다 |
| 본 자료와 맞는 다른 규칙을 틀렸다고 함 | 10 | 맞는 규칙은 늘 여럿이다. 짧은 규칙에 큰 무게를 줄 뿐 다른 규칙을 버리지는 않는다 |
| 무늬 길이를 빼고 무게를 2^(−m)으로 줌 | 11 | 끊어 읽을 수 있게 길이까지 적어야 무게의 합이 1을 넘지 않는다(크래프트 부등식) |
| 섞기가 못 배운 줄은 규칙이 없다고 봄 | 12 | 후보에 없는 규칙은 배울 수 없다. 후보를 고르는 일이 곧 귀납 편향이다 |
| 비율을 보내는 두 부분 코드가 늘 더 짧다고 봄 | 13 | 배우면서 적는 순차 코드는 모델을 보내지 않고, 처음의 서툰 예측으로 비용을 치른다 |
| 적은 점으로 맞춘 곡선을 확실하게 믿음 | 14 | 덜 정해진 계수의 퍼짐을 예측 분포의 폭에 넣는다 |
| 학습 기록의 손실과 코드 길이는 상관없다고 봄 | 15 | 한 번만 훑는 학습이면 스텝마다의 손실 합이 순차 코드의 길이다 |
요약
이 장에서 한 일을 정리해 보자. 예측기를 압축기로 쓸 때 예측기 자신을 적는 비트도 세야 공평하다. 모델을 먼저 적고 그 모델로 자료를 적는 두 부분 코드에서, 학습 점 20개에 0~9차 다항식을 맞추면 합이 2차에서 144.8비트로 가장 짧았다. 차수를 올리면 자료 비트는 줄지만 커진 계수를 적는 모델 비트가 더 빨리 늘었고, 계수의 정밀도도 같은 저울로 정해졌다. 이 합이 가장 짧은 모델을 고르는 원칙이 리사넨의 최소 기술 길이다.
학습 점을 짧게 적은 2차 다항식은 같은 원천의 시험 점 200개도 점당 5.43비트로 가장 짧게 적었다. 학습 자료를 모델 비트까지 넣어 짧게 적는 모델이 처음 보는 자료도 짧게 적는다는 것이 이 책의 일반화의 첫째 정의이고, 그 기대는 자료가 같은 원천에서 왔다는 조건 위에 선다. 학습 구간 밖에서는 학습에서 3~4비트 차이였던 곡선들이 크게 갈라졌다.
내가 고른 모델 꼴에 기대지 않는 가장 짧은 길이가 콜모고로프 복잡도, 줄을 찍는 가장 짧은 프로그램의 길이다. 원주율 10,000자리는 압축기로는 4,369바이트에 멈추지만 194바이트 프로그램이 찍는다. 콜모고로프 복잡도는 잘 정의되지만 계산할 수 없고 압축기는 위쪽 경계만 주는데, 솔로모노프는 같은 양에 예측에서 닿았다. 본 자료와 맞는 모든 프로그램에 2^(−길이)의 무게를 주어 다음 기호를 투표하게 하면, 적은 비트가 맞는 가장 짧은 프로그램의 길이를 넘지 않는다. 마지막으로, 앞의 자료로 배운 예측기로 다음 자료를 적는 순차 코드는 모델을 따로 보내지 않고도 모델의 비용을 셈에 넣는다. 다항식에서도 2차가 133.7비트로 가장 짧았고, 블리어와 올리비에는 깊은 신경망이 이 방법으로 자료를 잘 압축함을 보였다.
flowchart LR A["예측기의 비트<br/>Σ −log₂ q"] -- "모델도 적는다" --> B["두 부분 코드<br/>L(모델) + L(자료|모델)"] B -- "모델 꼴을 고르지 않으면" --> C["콜모고로프 복잡도 K(x)<br/>계산할 수 없다"] C -- "예측으로 바꾸면" --> D["솔로모노프 귀납<br/>무게 2^(−길이)"] B -- "배우면서 적으면" --> E["순차 코드<br/>모델을 보내지 않는다"] B -- "같은 원천이면" --> F["처음 보는 자료도 짧게<br/>일반화 (1)"]
막힌 곳
짧게 적는 모델이 처음 보는 자료도 짧게 적는다는 것을 장난감 다항식에서 확인했지만, 이 장의 모델은 점 스무 개에 계수 몇 개짜리였다. 파라미터가 수백만 개인 신경망은 학습 자료를 전부 외울 만큼 큰데, 그런 신경망이 학습 자료를 아주 짧게 적었을 때 그것이 규칙을 찾아서인지 외워서인지는 무엇으로 가를 수 있을까? 그리고 「같은 원천」의 그림, 점들이 놓인 공간에서 규칙이 어떤 모양을 하고 있는지는 아직 다항식 하나로만 보았다. 수천 차원의 자료에서 가장 짧은 설명은 어떤 모양일까?