‹ Lecture 2 08 / 23

Numbers & Code

Tokenizer가 숫자를 짧게 표현하는 것과 계산하기 좋은 표현을 만드는 것은 다르다. 문자열에는 10의 자리나 carry 방향이 별도로 표시되지 않는다. 모델은 잘린 pieces로부터 그 관계를 알아내야 하므로, 분절 경계가 바뀔 때 같은 자리의 숫자가 어디로 이동하는지가 중요한 문제가 된다. Code에서도 화면의 빈 공간은 없어도 되는 여백이 아니라 문법과 token 비용의 일부다.

  1. 숫자/코드
  2. Pre-tokenization·BPE chunks
  3. 자리수/공백 표현
  4. 오류·token 비용

Numbers & Alignment

1234 예시: GPT-2는 frequency 기반 12/34, Llama1/2·PaLM은 1/2/3/4, cl100k는 123/4다. 덧셈 carry는 right-to-left지만 기본 digit chunk는 left-to-right여서 tens digit이 숫자 길이에 따라 다른 token 안으로 이동한다. 이것은 arithmetic 오류의 구조적 원인 중 하나이며 유일한 원인은 아니다.

1234567을 123/456/7 대신 1/,/234/,/567처럼 comma로 right-aligned grouping하면 token은 3→5로 늘지만 자리수 정렬은 일정해진다. GPT3.5/4 연구 및 Broken Tokens의 right-aligned re-tokenization 최대+33%, character split+14%는 해당 평가 결과다. Instruct model의 random split에서도 93% 성능 유지 예시는 robustness가 개선된 경우다.

9.9와 9.11은 버전이나 절 번호 문맥에서는 다르게 비교될 수 있다. Tokenization 하나로 모든 오류를 설명해서는 안 된다.

Code Whitespace

Python의 4+8 indentation spaces를 하나씩 표현하면 최대 12 tokens를 쓸 수 있다. space run·newline·regex 설계가 encoded length와 code 성능에 영향을 준다. 같은 snippet의 슬라이드 수치는 GPT2=52, Llama=57, GPT4=40, Identity100k=25 tokens다.

Following the Tens Digit

1234를 123 / 4로 자르면 10의 자리 3은 첫 chunk 안에 있다. 그러나 12345를 123 / 45로 자르면 10의 자리 4는 둘째 chunk 안으로 이동한다. 덧셈은 오른쪽 끝의 낮은 자리에서 carry를 전달하는데, 기본 chunk 경계는 왼쪽부터 정해지므로 숫자 길이가 바뀔 때마다 자리와 token 경계의 관계도 바뀐다. Digit 하나씩 자르면 이 관계는 일관되지만 sequence가 길어진다는 대가가 있다.

Comma를 넣은 1 / , / 234 / , / 567은 token 수를 3에서 5로 늘려도 오른쪽 기준 3-digit block을 유지한다. 연구에서 같은 weights와 prompt를 두고 분절만 바꾸어 성능이 달라진 것은 representation 자체가 오류에 기여할 수 있음을 보여 준다. Random split에서도 성능의 93%를 유지한 instruct model 결과는 robustness가 개선될 수 있다는 관찰이며, 어떤 학습 요소가 전부 해결했다고 단정하는 근거는 아니다.

Reading Whitespace

Python의 예시는 4 spaces로 for를 들여쓰고 다시 8 spaces로 print를 들여쓴다. 한 space씩 token을 쓰면 코드 내용을 읽기 전부터 12 tokens를 소비한다. 이를 space run으로 묶으면 같은 indentation을 보존하면서 sequence를 줄일 수 있다. 줄바꿈과 regex 경계까지 포함한 설계가 encoded length와 HumanEval 결과에 영향을 주는 이유다.

if ready:
    for item in items:
        print(item)

이 차이는 단순히 공백을 제거하자는 뜻이 아니다. Python에서는 indentation이 block 구조를 나타내므로, 필요한 구조를 보존하면서 경제적으로 표현해야 한다.

GPT-2의 12/34는 강의 예시이고 모든 숫자 길이에 고정된 2-digit rule이 아니다.

Llama encoded length는 57로 제시되어 있지만 수업 설명에서는 75처럼 읽힌 부분도 있다. 이 수치는 서로 다르게 제시되어 하나로 확정하지 않는다.

Check

Comma를 넣어 tokens가 늘었는데 arithmetic이 좋아질 수 있는 이유는?

Answer

수의 3자리 group을 오른쪽에 정렬해 같은 place value가 일관된 위치에 나타나도록 돕기 때문이다. token 최소화와 task에 좋은 표현은 동일한 목표가 아니다.

9.9와 9.11에서 Tokenization 외에 교수님이 지적한 조건은?

Answer

소수 비교인지 버전 번호·절 번호인지 문맥에 따라 비교 기준이 달라진다. 분절만으로 모든 오답을 설명하지 않는다.

Contents