‹ Lecture 2 11 / 23

Glitch Tokens

출석부에 이름이 있어도 수업에 나오지 않은 학생은 내용을 배우지 못한다. Vocabulary의 token도 마찬가지로, ID가 등록되어 있다는 사실과 LM이 그 token의 쓰임을 충분히 배웠다는 사실은 다르다. Glitch token은 이 차이를 드러내는 사례다. 어휘 coverage만 확인하고 학습된 representation의 품질까지 보장되었다고 생각하면 안 된다.

  1. Tokenizer corpus의 반복
  2. 한 token 생성
  3. LM corpus에서 제거/희소
  4. under-trained row
  5. 이상 출력

Corpus Mismatch

SolidGoldMagikarp는 r/counting username의 반복으로 token이 됐지만 LM training corpus에서 필터링되어 비정상 응답을 보였다는 특정 GPT3 버전의 사례다. 슬라이드 대화는 당시 보고를 재구성했으며 현재 API 재현 결과가 아니다.

Tokenizer를 만들 때 r/counting의 username이 매우 자주 등장하면 BPE는 여러 번 merge하여 그 이름에 전용 ID를 줄 수 있다. 이후 LM training corpus를 더 정밀하게 cleaning하면서 그 게시물을 제거하면, 이름은 Vocabulary에 남지만 이를 문맥 속에서 학습할 직접 사례는 사라진다. Tokenizer corpus와 model-training corpus의 mismatch가 만드는 under-training이다. 두 단계의 전처리를 따로 잘했다는 사실만으로 서로 일관된 입력 분포가 되는 것은 아니다.

그렇다고 해당 row가 완전히 untouched인 random vector라고 단정해서도 안 된다. 입력 lookup만 생각하면 등장한 rows만 선택되지만, 출력 LM head는 전체 Vocabulary의 logits를 계산한다. Weight tying으로 input과 output weights를 공유한다면 다른 정답 token을 학습하는 중에도 Softmax를 통해 이 row에 간접 gradient가 올 수 있다. 업데이트가 있었다는 것과 그 token의 의미를 배웠다는 것은 다르다. 충분한 직접 신호 없이 간접 갱신만 받은 representation이 비정상 응답을 보일 수 있다는 설명이다.

Fishing for Magikarp의 999후보 중 확인 수는 GPT2Medium49, GPT2XL67, GPTJ6B200, Phi2 103이며 detection setting에 한정된다. Corpus mismatch로 비정상 token이 생길 수 있다. 다른 token의 학습에 따른 간접 갱신이 있으므로 해당 row를 단순한 random row로 볼 수 없다.

Tokenizer Auditing

긴 BPE token은 여러 merge가 일어났다는 뜻이라 Tokenizer corpus에 많이 반복된 문자열의 흔적이 될 수 있다. o200k의 longest Chinese100 tokens 중 90+ spam이라는 수치는 외부 분석을 강의에서 소개한 것이며 OpenAI 공식 통계가 아니다. Longest/odd tokens와 언어별 token 수를 확인하는 audit 관점이 핵심이다.

Tokenizer를 audit할 때는 longest tokens부터 보는 것이 실용적인 단서가 된다. 긴 BPE token은 많은 merge가 누적된 결과이므로, corpus에서 무엇이 반복되었는지 보여 줄 수 있다. Spam phrases, boilerplate, URLs와 usernames가 이 층에 몰려 있다면 corpus cleaning을 점검할 이유가 있다. Mid-length tokens에서는 일반적인 단어와 pieces를, shortest tokens에서는 characters와 256-byte 기반 기호를 볼 수 있다.

다만 긴 token이라는 이유만으로 유해하거나 glitch라고 판정할 수는 없다. Vocabulary 관찰은 공개되지 않은 corpus의 흔적을 찾는 audit 방법이지 실제 학습 전체를 복원하는 방법이 아니다. Odd tokens와 언어별 token 수까지 함께 확인하고, weight-based detection 같은 별도 검증과 구분한다.

Never updated 도식은 직접 노출 부족의 개략도이고, predicted/read의 gradient 조건은 더 구체적이다. 두 표현을 하나의 무조건적 명제로 합치지 않는다.

Vocabulary 존재 ≠ 충분한 직접 학습 신호. Under-trained ≠ untouched.

Check

Vocabulary에 있다는 사실만으로 해당 token의 의미가 충분히 학습되었다고 할 수 없는 이유는?

Answer

Tokenizer와 LM training corpus가 달라 token이 거의 안 등장할 수 있기 때문이다. row의 존재와 직접 학습 신호의 풍부함은 다르다.

학습 corpus에 안 나온 token row는 반드시 초기 random 값 그대로인가?

Answer

그렇게 단정할 수 없다. Tied output head의 Softmax 경로는 다른 target에서도 간접 gradient를 줄 수 있다. under-trained와 untouched를 구분한다.

Tokenizer corpus에는 빈번하지만 LM training corpus에는 희소해 비정상 출력을 보일 수 있는 token 현상은?

Answer

Glitch Token. Vocabulary 존재와 충분한 직접 학습 신호는 다르다.

Tokenizer corpus의 반복부터 이상 output까지의 mismatch 경로를 설명하라.

Answer

빈번한 문자열 → token 생성 → LM corpus에서 필터/희소 → 직접 학습 신호 부족 → under-trained representation → anomalous output. Tied Softmax의 간접 gradient와 구분한다.

Contents