혼동하기 쉬운 점과 요약
혼동하기 쉬운 점
| 혼동하기 쉬운 생각 | 나온 문제 | 바로잡는 법 |
|---|---|---|
| 글의 확률은 글자 확률을 그냥 곱하면 된다고 봄 | 1 | 글자는 앞 글자에 따라 확률이 달라진다. 앞 글을 안다고 놓은 조건부 확률을 곱한다 |
| 긴 글의 확률을 그대로 곱해서 다룬다 | 2 | 300글자만 되어도 float32 에서 0으로 뭉개진다. 로그 확률을 더한다 |
| 표에서 확률이 1이면 늘 그렇다고 봄 | 3 | 두 번 보고 낸 1과 27,342번 보고 낸 1은 다르다. 0인 칸도 「아직 못 봤다」일 수 있다 |
| 바이그램으로 곱한 확률이 실제 비율이라고 봄 | 4 | 표는 바로 앞 글자 하나만 기억한다. 「th」까지 온 것을 잊고 「h」 행의 확률을 쓴다 |
| 돌림판의 순서가 결과를 바꾼다고 봄 | 5 | 난수 하나의 답은 바뀌어도 글자마다 차지하는 폭은 같다. 많이 뽑으면 비율은 같다 |
| 행마다 가장 흔한 글자를 고르면 가장 그럴듯한 글이 된다고 봄 | 6 | 그리디 선택은 같은 고리(「the the the」)에 갇힌다. 분포대로 뽑아야 덜 흔한 이어짐도 나온다 |
요약
언어 모델은 앞 글을 받아 다음 글자의 분포 p(xt ∣ x<t)를 내놓는 함수다. 다음에 올 수 있는 글이 여럿이라 답 하나 대신 분포를 내놓고, 위치마다의 분포를 곱하면 글 전체의 확률이 된다. 긴 글은 곱하면 0으로 뭉개지므로 로그 확률을 더해 다룬다.
앞 글 전부를 보고 세는 일은 같은 앞 글이 다시 나오지 않아 불가능하므로, 가장 간단한 언어 모델은 바로 앞 글자 하나만 보는 바이그램이다. 타이니스토리즈 100MB 에서 바이트 쌍을 세면 칸 65,536개 가운데 2,195개가 차고, 「q」 다음 「u」 1.000, 「t」 다음 「h」 0.312처럼 철자 규칙이 행마다 담긴다.
표에서 글을 쓰려면 행의 확률대로 다음 글자를 뽑는다(샘플링). 글자 바이그램의 샘플은 낱말 길이마다 공백을 넣고 짧은 낱말을 우연히 맞히는 옹알이였고, 낱말 바이그램의 샘플은 이웃한 두 낱말씩만 말이 되는 「Once upon a plan」이었다. 행마다 가장 흔한 글자만 고르면 어디서 출발해도 「the the the」에 갇힌다.
루나 설정서 점검
서연은 공책의 설정서를 펴서 첫째 줄 「말이 된다」 옆에 연필로 작게 「옹알이」라고 적었다. 민준이 그 옆에 「Lu」라고 덧붙이자, 서연은 지우개를 들었다가 그냥 두었다.
| 설정서의 줄 | 이번 장 | 아직 빈 것 |
|---|---|---|
| 1. 말이 된다 | 이웃한 두 글자의 규칙은 지킨다(공백, 마침표, 짧은 낱말) | 낱말과 문장. 그리고 「얼마나 말이 되는지」를 재는 잣대 |
| 2. 앞에서 한 말을 기억한다 | 바로 앞 글자 하나만 기억한다 | 「th」까지 온 것도 잊는다 |
막힌 곳
민준은 낱말 바이그램이 글자 바이그램보다 「훨씬」 말 같다고 했지만, 그 말은 샘플 몇 개를 눈으로 읽고 한 판단이다. 샘플은 뽑을 때마다 달라지고 사람마다 말 같다고 느끼는 기준도 다르니, 두 모델이 같은 동화를 얼마나 잘 맞히는지를 숫자 하나로 비교할 수는 없을까? 그런 숫자가 있다면, 앞 글자를 둘, 셋으로 늘린 표가 얼마나 나아지는지, 그리고 어디서 더 나아지지 않는지도 잴 수 있을 것이다.