← 문제 목록/Last-Token Pool (GPT 스타일)
문제 해설

Last-Token Pool (GPT 스타일)

NLP · easy

preview

Last-Token Pool

99번 Masked Max Pool 은 모든 유효 토큰을 보고 집계. GPT 같은 causal 모델에서는 마지막 토큰이 전체 문맥을 요약하고 있으므로, 단순히 마지막 유효 위치의 벡터 만 가져오는 pooling 도 자주 씀:

pool(x,lengths)b=xb,lengthsb1,:\text{pool}(x, \text{lengths})_b = x_{b, \, \text{lengths}_b - 1, :}

어디에 쓰이나

  • GPT sentence embedding: 프롬프트 마지막 토큰의 hidden state.
  • Classification head: GPT-fine-tune 에서 [EOS] 위치 벡터로 분류.
  • Text embedding 모델: E5, BGE, OpenAI text-embeddings 등 디코더 기반 embedder.

왜 마지막 토큰?

  • Causal self-attention: position L1L-1 이 모든 이전 토큰을 볼 수 있는 유일한 위치 → 정보 집약.
  • Pad 가 뒤에 붙으면 lengths-1 이 진짜 마지막 토큰.

과제

함수 last_token_pool(x, lengths) 를 완성하세요.

  • x shape (B, L, d), lengths shape (B,) 정수 (각 시퀀스의 실제 길이).
  • 반환: (B, d) — 각 배치의 x[b, lengths[b]-1, :].
  • 힌트: x[np.arange(B), lengths - 1, :].

테스트 케이스

#이름검증
1shape (B, d)
2모든 길이 = L → x[:, -1, :]전체가 유효
3다양한 길이각 배치 올바른 위치
4pad 값 바뀌어도 결과 불변마지막 유효 위치만 봄
5손계산명시적 인덱싱
코드 작성
Loading...
실행 결과

코드를 작성하고 Run 을 눌러보세요.