핸즈온 LLM 2장 정리

토큰이란?

LLM이 처리하기 쉽게 텍스트를 나눈 기본 단위이다.

"나는 인공지능을 공부한다"
        ↓ 토큰화
["나", "는", " 인공", "지능", "을", " 공부", "한다"]
[토큰 ID들] // 여기서 토크나이저 사용
[임베딩 벡터들]  ← 실제로 모델이 계산하는 형태

토크나이저

텍스트를 토큰으로 나누고, 각 토큰을 토큰 ID로 변환하는 도구

토크나이저가 텍스트를 분할하는 방법

토크나이저가 토큰화하는 방법들 중엔 단어, 문자, 서브워드 이렇게 크게 총 3가지로 나뉜다.

대표적인 알고리즘으로는 BPE(GPT가 사용 중), WorldPiece 가 있고, 토큰화 방법은 단어 토큰, 부분단어 토큰, 문자 토큰, 바이트 토큰이 있음

토큰화 방법 비교

바이트 토큰은 어떤 언어, 기호, 오타도 표현 가능하지만 토큰수가 많아져서 효율이 떨어짐.

GPT 같은 경우 바이트 단위로 모든 입력을 받을 수 있게 하고, BPE로 자주 사용되는 조각들을 합쳐서 토큰을 만들어냄.

임베딩이란?

임베딩이란 토큰의 의미와 사용 관계를 여러 숫자로 표현한 벡터(숫자좌표)다. 예를 들어서 고양이라는 단어를 토크나이저를 통해 토큰화 한다고 했을때 토큰 ID가 5281이 나왔다고 가정해보자.

이를 임베딩 테이블을 조회하면 [0.21, -0.73, 0.48, …] 라는 값이 나온다.

"고양이"
   ↓ 토크나이저
토큰 ID: 5821       ← 사전에서 토큰을 찾는 번호
   ↓ 임베딩 테이블 조회
[0.21, -0.73, 0.48, …]  ← 모델이 실제로 계산하는 임베딩

위 임베딩값은 사실상 저 고양이라는 단어가 존재하는 좌표이다. 이는 수백차원, 수천차원으로 표현될 수 있다.

임베딩 공간 예시

예를 들어서 노래 추천 시스템을 만들어본다고 해보자.

  1. 음원의 특성, 메타데이터, 청취 패턴들을 학습한다. 노래A => [0.82, 0.71 ...] 노래B => [0.79, 0.28 ...]

  2. 사용자의 취향도를 좌표로 표현한다.

  3. 가장 유사도가 높은 미청취 곡을 검색해서 추천해준다.