상세 컨텐츠

본문 제목

텍스트 데이터 다루기

Developer/IT 도서

by cepiloth 2025. 11. 28. 15:31

본문

728x90
반응형

단어 임베딩 이해하기


  • 단어 임베딩(Word Embedding)은 LLM(대규모 언어 모델) 성공의 기초가 된 아이디어로, 단어나 텍스트를 벡터로 표현하려는 시도에서 시작되었습니다.
  • 임의의 데이터를 벡터로 표현하는 것을 광범위하게 임베딩(Embedding)이라고 부르며, 단어 벡터, 은닉 벡터, 잠재 벡터 등과 혼용되기도 합니다.
  • 토큰이나 단어를 벡터로 바꾼 것을 단어 임베딩이라고 부릅니다.
  • 텍스트 인베딩은 하나의 토큰, 문장, 단락 또는 문서 전체를 벡터로 바꿀 수 있지만, 이 책에서는 주로 토큰을 벡터로 바꾸는 데 중점을 둡니다.

  • 단어 임베딩을 만드는 전문 알고리즘(예: Word2Vec)이 있지만, 대부분의 LLM은 모델 훈련 과정에서 단어 임베딩을 자체적으로 학습합니다.
  • 임베딩 벡터는 보통 100차원, 200차원이지만, 대규모 언어 모델은 더 큰 차원(예: GPT-3는 768차원에서 12,288차원까지)을 가지며, 이는 미묘하고 복잡한 뉘앙스를 학습하는 데 도움이 됩니다.
  • 2차원이나 3차원으로 축소하여 시각화했을 때, 유사한 단어들의 벡터는 가까이 모여 있는 특징을 관찰할 수 있습니다.

 

텍스트 토큰화하기


 

  • LLM 훈련을 위해 텍스트를 그대로 사용할 수 없으며, 단어 혹은 단어보다 작은 단위인 토큰으로 분할(토큰화)해야 트랜스포머 디코더 모델에 입력할 수 있습니다.
  • 가장 간단한 토큰화 방법은 공백이나 구두점, 특수 문자를 기준으로 텍스트를 분할하는 것입니다.
  • 책에서는 파이썬의 정규식을 사용해 공백을 기준으로 분할하는 방법을 사용합니다.

 

토큰을 토큰 ID로 변환하기


 

  • 텍스트를 토큰으로 분할한 후, 어휘 사전(Vocabulary)을 구축해야 합니다.
  • 어휘 사전은 훈련 데이터셋에 등장한 모든 고유한 토큰을 모아 나열하고(보통 알파벳 순서대로 정렬), 각각에 0부터 시작하는 일련번호(정수)인 토큰 ID를 할당합니다.
  • 토큰과 토큰 ID를 매핑한 사전을 어휘 사전이라고 부르며, 파이썬에서는 딕셔너리를 사용해 표현할 수 있습니다.
  • 실제 텍스트는 이 어휘 사전을 사용해 토큰 ID의 리스트로 변환되어 LLM에 입력됩니다.
  • 이러한 토큰화 작업을 수행하는 것을 토크나이저(Tokenizer)라고 부르는데, 이는 LLM 모델과 함께 사용되지만, LLM 모델 자체는 아닙니다.
  • 토크나이저는 LLM처럼 가중치(파라미터)를 조정하는 훈련 과정이 없으며, 사전에 정의된 규칙을 바탕으로 어휘 사전을 만들고 토큰 ID 리스트를 생성합니다.
  • 모델 출력 결과물도 토큰 ID 리스트이므로, 이를 다시 텍스트로 바꾸기 위해 역 어휘 사전(토큰 ID와 단어의 매핑)도 준비해 놓아야 합니다.

특수 문맥 토큰 추가하기


  • 훈련 데이터셋의 토큰 외에 특수한 목적으로 사용되는 특수 토큰(Special Tokens)이 있습니다.
  • 언노운 토큰 (Unknown Token): 어휘 사전에 없는 새로운 단어(토큰)가 입력되었을 때 이를 대체하기 위해 임의의 번호를 할당하여 사용합니다.
  • End of Text (EOT): 텍스트의 끝을 모델이 알 수 있도록 나타내는 토큰입니다.
  • Padding Token: 길이가 서로 다른 샘플들을 배치(Batch)로 묶을 때, 길이가 짧은 시퀀스의 뒤에 붙여 모두 동일한 길이로 맞추기 위해 사용됩니다.
  • 모델마다 특수 토큰의 종류와 사용 방식은 다를 수 있습니다 (예: 문장의 시작을 알리는 BOS, 끝을 알리는 EOS 등).
  • GPT-3 모델은 EOT만 사용하며, 나중에 배울 바이트 페어 인코딩(BPE) 기법 덕분에 알지 못하는 토큰이 생성되지 않으므로 언노운 토큰을 사용하지 않습니다.
  • EOT는 여러 텍스트 데이터를 하나로 길게 붙여 훈련할 때, 각각의 텍스트가 서로 다른 소스임을 표현하는 데 사용됩니다.
  • 이러한 특수 토큰은 마스킹(Masking) 작업을 통해 LLM이 실제 연산을 할 때 계산에서 제외될 수 있도록 안내됩니다.

바이트 페어 인코딩 (BPE)


 

  • BPE는 GPT 계열에서 사용하는 토큰화 방법이며, 오픈AI는 이를 위한 틱토큰(tiktoken) 라이브러리를 공개했습니다.
  • BPE가 어휘 사전을 구축하는 방식은 다음과 같습니다:
  1. 훈련 데이터셋에 있는 모든 개별 문자를 어휘 사전에 등록합니다.
  2. 이후 개별 문자가 합쳐졌을 때, 자주 등장하는 문자 조합을 부분 단어(토큰)로 어휘 사전에 등록합니다 (GPT에서는 최소 빈도 기준 2회 이상).
  3. 이 과정을 반복하여 부분 단어의 크기가 점점 커지면서 어휘 사전에 등록됩니다.
  • 개별 문자가 기본적으로 등록되기 때문에, 아무리 이상하거나 알지 못하는 단어가 나오더라도 결국 개별 문자까지 쪼개서 토큰 ID로 변환할 수 있습니다.
  • 이러한 특성 덕분에 GPT-3 모델은 알지 못하는 토큰이 발생하지 않으므로 언노운 토큰이 필요 없습니다.

 

슬라이딩 윈도우로 데이터 샘플링하기


  • LLM 훈련은 현재 입력 토큰을 바탕으로 다음 토큰(타깃/정답)을 예측하도록 구성됩니다. 따라서 모델은 입력 토큰 이후의 단어는 참조하지 못하도록 마스킹 처리되어야 합니다.
  • 긴 텍스트를 효율적으로 훈련하기 위해 슬라이딩 윈도우(Sliding Window) 방식을 사용해 데이터를 샘플링합니다.
  • 훈련 데이터에서 첫 번째 토큰을 제외한 모든 토큰은 한 번 이상 타깃으로 사용되며, 마지막 토큰을 제외한 모든 토큰은 입력으로 사용됩니다.
  • 슬라이딩 윈도우의 크기는 모델이 입력받을 수 있는 최대 텍스트 길이 또는 문맥 길이라고 표현됩니다.
  • 슬라이딩 윈도우로 샘플링하여 입력 데이터(X)를 만들면, 타깃 데이터(Y)는 X에서 정확히 한 토큰씩 옆으로 이동한 값이 됩니다. 즉, 별도로 레이블(타깃)을 수집하지 않아도 입력 데이터에서 자연스럽게 타깃을 준비할 수 있습니다.
  • 실제로는 텍스트가 아닌 토큰 ID로 변환된 데이터를 슬라이딩 윈도우로 샘플링하여 훈련 데이터셋을 만듭니다.

 

토큰 임베딩 만들기


 

  • 토큰 ID(정수)는 순서나 크기의 개념을 내포하고 있어 단어를 표현하는 데 적합하지 않으므로, 고정 크기의 실수 벡터인 임베딩 벡터로 변환해야 합니다.
  • 이 변환 작업은 LLM 모델 내의 임베딩 층(Embedding layer)이 수행하며, 이 층은 신경망의 첫 번째 층에 배치됩니다.
  • 임베딩 층의 가중치 행렬은 처음에는 랜덤한 값으로 초기화되지만, 모델 훈련 과정에서 다음 단어 예측에 잘 맞도록 최적의 벡터를 학습합니다.
  • 임베딩 층은 내부적으로 어휘 사전 크기(행)와 임베딩 벡터 크기(열)를 가진 큰 행렬을 만들어 놓고, 토큰 ID가 입력되면 해당 토큰 ID를 인덱스로 하는 행(벡터)을 뽑아 다음 층으로 전달하는 단순한 역할을 합니다.
  • 이러한 임베딩 층을 사용하는 방법은 거의 모든 LLM이 단어 임베딩을 만드는 대표적인 방법입니다.

 

단어 위치 인코딩하기


  • 트랜스포머 모델은 입력 데이터를 동시에 처리하기 때문에, 같은 단어라도 텍스트 내 위치에 따라 의미가 달라지는 미묘한 뉘앙스(문법적 역할, 주변 단어와의 관계 등)를 파악하기 어려울 수 있습니다.
  • 이러한 문제를 해결하기 위해 위치 인코딩(Position Encoding) 또는 위치 임베딩(Position Embedding) 개념이 도입되었습니다.
  • 위치 인코딩은 토큰 임베딩 벡터에 위치 정보를 담은 벡터를 더함으로써 최종 입력을 만듭니다.
  • 절대 위치 인코딩/임베딩
    • 초기 트랜스포머 모델은 삼각 함수를 조합하여 각 위치에 고정된 값(절대 위치 인코딩)을 생성하여 더했습니다.
    • 최근에는 토큰 임베딩과 마찬가지로 NN 임베딩층을 사용하여 위치 임베딩을 학습시키는 방식을 사용하기도 합니다. 이 방법 역시 각 위치마다 고정된 임베딩을 사용하기 때문에 절대 위치 임베딩의 하나입니다.
    • 토큰 임베딩과 위치 임베딩을 학습하는 층은 각각 별도의 신경망 층으로 존재합니다.
  • 상대 위치 인베딩: 각 토큰 사이의 거리나 차이 정보를 벡터에 주입하는 방식으로, 최신 모델에서 사용되기도 하지만, GPT-3는 절대 위치 인베딩을 사용합니다.
  • 최종 입력 생성 과정: 토큰 인베딩과 위치 임베딩을 더하여 생성된 최종 입력은 트랜스포머 모델의 핵심 모듈인 디코더 블록으로 전달되어 연산을 수행하게 됩니다.
728x90
반응형

관련글 더보기

댓글 영역