Casual LM을 사용하는 이유

최근 LLM이 대부분 Decoder-Only 구조라는 게 처음엔 의아했다. 그런데 학습 효율 관점에서 보면 납득이 됐다. 문장 하나가 주어지면 매 토큰 위치마다 다음 토큰이라는 학습 신호가 생기므로, 사실상 문장 하나로 거의 모든 토큰에서 학습이 일어난다. 이 점을 정리하면서 두 구조의 사전학습 태스크를 같이 비교해봤다.

두 가지 구조#

LLM은 Transformer를 변형한 구조를 쓰는데, 크게 두 갈래다.

  • Encoder-Decoder: 입력 이해와 문장 생성을 분리한다. 입력 이해는 encoder가, 문장 생성은 decoder가 담당한다.
  • Decoder-Only: 단일 모델이 이해와 생성을 모두 한다.

구조가 다르면 사전학습 태스크도 달라진다.

Encoder-Decoder - Span Corruption#

T5에서 제안된 사전학습 태스크다. 입력 문장의 일부를 가린 뒤 그 부분을 복원하도록 학습한다.

  1. 입력 문장 중 임의의 span을 마스킹한다.
  2. 마스킹한 자리에 masking id를 부여한다.
  3. span이 가려진 문장을 encoder에 입력한다.
  4. masking id와 함께 복원 문장을 decoder에 입력한다.
  5. decoder가 가려진 부분의 원래 내용을 생성한다.

예를 들어 열심히 배우면 좋은 개발자가 될거에요 라는 문장에서 좋은 개발자를 가리면, encoder에는 열심히 배우면 <X> 될거에요가 들어가고 decoder는 <X>에 해당하는 좋은 개발자를 복원한다. 입력 문장을 이해하는 능력과 문장을 생성하는 능력을 함께 학습하게 된다.

Decoder-Only - Language Modeling#

GPT-1에서 제안된 사전학습 태스크다. 입력된 토큰들을 바탕으로 다음 토큰을 예측한다.

  1. 문장을 토큰 단위로 입력한다.
  2. 매 토큰마다 다음 토큰을 예측하도록 학습한다.

"열심히 배우면 좋은 개발자가 될거에요"를 학습할 때, "열심히" 다음엔 "배우면", "배우면" 다음엔 "좋은" 을 맞추는 식으로 문장 끝까지 이어진다. 이전 입력을 바탕으로 다음 토큰을 생성하는 능력을 학습한다.

왜 최근 LLM은 Decoder-Only인가#

GPT, Gemini, Claude, Qwen, Kimi, Mistral 등 우리가 잘 알고 있는 대부분의 LLM은 Causal Decoder, 즉 Decoder-Only 구조를 쓴다. 내부 구조는 Transformer의 Decoder와 대동소이하고, 사전학습은 대부분 next token prediction으로 한다. 이유는 구현과 연산이 효율적이기 때문이다.

여기서 효율이 의미하는 바가 핵심이다. Span Corruption은 가린 일부 span만 복원 신호로 쓰지만, next token prediction은 문장의 각 위치마다 다음 토큰이라는 정답이 자동으로 따라온다. 같은 문장 하나로 거의 모든 토큰 위치에서 학습이 일어나니, 동일한 데이터에서 뽑아내는 학습 신호의 밀도가 높다.

Success

Encoder-Decoder는 Span Corruption으로 가린 span을 복원하며 학습하고, Decoder-Only는 Language Modeling으로 다음 토큰을 예측하며 학습한다. 최근 LLM이 Decoder-Only로 수렴한 건, 문장 하나로 모든 토큰 위치에서 학습 신호를 얻는 next token prediction의 효율 때문이다.

다음 토큰 예측을 문자 단위로 직접 돌려본 기록은 문자열 단위 Language Model에, 구조의 핵심인 attention은 Self-Attention 이해하기에 정리해뒀다.

댓글