본문 바로가기

논문 리뷰/Language Model

Fishing for Magikarp: Automatically Detecting Under-trained Tokens in Large Language Models

Abstract

Tokenizer vocabulary에서 훈련되지 않은 토큰을 감지하는 방법 개발

 

[Github]

[arXiv](2024/05/08 version v1)

 

검색해 보니까 Magikarp는 포켓몬스터의 잉어킹이었다. 해본 사람은 알겠지만 잉어킹은 가장 쓸모없는 포켓몬으로 유명하다.

논문 제목은 '잉어킹 낚시'로 상당히 센스가 있다.

https://bulbapedia.bulbagarden.net/wiki/Magikarp_(Pok%C3%A9mon)

 

Magikarp (Pokémon) - Bulbapedia, the community-driven Pokémon encyclopedia

Generation I Red Blue Routes 6, 10, 11, 12, 13, 17, 18, 19, 20, 21, 22, 23, 24, 25, Pallet Town, Viridian City, Cerulean City, Vermilion City, Celadon City, Fuchsia City, Safari Zone, Seafoam Islands, Cinnabar Island, Indigo Plateau, Cerulean Cave (Old Rod

bulbapedia.bulbagarden.net

 

 

Methods

Tokenizer analysis

토큰 분류

  • Partial UTF-8 sequences: 이들은 독립적인 문자열로 변환될 수 없다.
  • Unreachable: 일반적인 인코딩, 디코딩으로 생성될 수 없는 토큰. 디코딩 후 다시 인코딩한 뒤 원래 토큰과 일치하지 않는 토큰을 말한다.
  • Special tokens: e.g. <s>와 같은 제어 토큰
  • 일반적인 토큰

Indicators for detecting under-trained tokens

토큰 예측과 훈련 손실에 직접적인 영향을 미치는, 최종 레이어의 출력을 logits으로 변환시키는 unembedding matrix U에서 사용되지 않는 토큰을 찾을 것을 제안한다.

 

1. 알려진 unused embedding index set toov를 정의한다.

2. 주성분 분석을 통해 첫 번째 주성분 c1을 계산하고 U에서 뺀다. 이는 c1이 모든 토큰이 갖고 있는 '상수 성분'으로써 작용하기 때문에 이를 뺌으로써 분리를 최대화한다고 한다. (이해가 어려울 수도 있다. 나도 처음에 주성분에서 unused token을 찾아야 되는 거 아닌가? 했는데 생각해 보면 주성분은 used, unused token 모두 갖고 있을 확률이 높으니 공통점을 없애는 것이다.)

 

3. Unused token의 평균을 구한다.

4. u'와의 유사도를 통해 다른 일반 토큰들의 훈련 정도를 측정한다.


Verification of candidate tokens

측정값이 낮은 일반 토큰들을 대상으로 출력을 유도하는 특정 반복 프롬프트를 통해 실제 출력 확률을 확인한다.

 

 

 

Results

Unused token은 tokenizer, model에 따라 각각 다르지만 공통적으로 추출되는 토큰들이 있었다.

  • Single-byte token
  • Byte-pair encoding tokenization algorithm에서 병합된 토큰의 조각
  • 특수 토큰 e.g. <pad>, <unk>, <|unused_123|> 등