텍스트를 벡터로 변환하는 임베딩 모델의 과정

임베딩 모델은 텍스트를 수치화하여 고차원 공간의 벡터로 변환하는 과정을 통해 컴퓨터가 텍스트를 이해할 수 있도록 한다. 이러한 벡터화 과정은 자연어 처리(NLP)에서 핵심적인 역할을 하며, 검색, 분류, 추천 시스템 등 다양한 응용 분야에 활용된다. 이번 글에서는 예시 문장을 기반으로 임베딩 모델이 텍스트를 벡터로 변환하는 과정을 단계별로 설명한다.


 

1. 텍스트 전처리: 토크나이징(Tokenization)

텍스트 벡터화의 첫 번째 단계는 텍스트를 더 작은 단위인 토큰으로 나누는 작업이다. 문장을 단어 또는 서브워드 단위로 분리하며, 이는 임베딩 모델이 입력으로 받을 수 있는 형식으로 변환하기 위함이다.
예를 들어,
"나는 사과를 먹었고, 저녁에는 오렌지를 먹을 예정이다."
라는 문장은 다음과 같이 토큰화된다.

["나는", "사과를", "먹었고,", "저녁에는", "오렌지를", "먹을", "예정이다."]

BERT와 같은 모델은 서브워드 기반 토크나이저를 사용하여 토큰을 더 작은 단위로 나누기도 한다.
예를 들어, "사과를"은 다음과 같이 나뉠 수 있다.

["사", "##과", "##를"]

 

2. 정수로 변환: Word-to-ID Mapping

토크나이징이 완료된 텍스트는 단어 사전(Vocabulary)에 따라 정수 ID로 변환된다. 각 토큰은 미리 정의된 사전에서 고유한 정수를 부여받는다.
예를 들어,

["나는", "사과를", "먹었고,", "저녁에는", "오렌지를", "먹을", "예정이다."]

는 다음과 같이 정수로 변환될 수 있다.

[101, 2043, 7842, 2009, 4023, 1001, 102]

여기서 101102는 모델에서 시작과 종료를 나타내는 특수 토큰이다.


 

3. 임베딩 레이어 통과: Word Embedding

정수로 변환된 토큰은 임베딩 레이어(Embedding Layer)를 통해 고정된 크기의 실수 벡터로 변환된다.
예를 들어, 2043이라는 토큰 ID는 다음과 같은 768차원의 벡터로 변환된다.

[0.23, 0.56, -0.11, ...]

이 벡터는 텍스트의 의미를 수치적으로 표현하며, 문맥 정보는 아직 포함되지 않는다.


 

4. 문맥 반영: Contextual Embedding

임베딩된 벡터는 Transformer 구조를 통과하며 문맥 정보를 반영한다.
Transformer는 Attention 메커니즘을 통해 문장 내 단어들이 서로 어떤 관계를 가지는지 학습한다. 이를 통해 동일한 단어라도 문맥에 따라 다른 벡터로 표현된다.

예를 들어,

  • "사과를 먹었고"라는 문맥에서의 "먹다"는 "사과를 먹는 행위"로 이해된다.
  • "오렌지를 먹을 예정이다"라는 문맥에서는 "오렌지를 먹는 계획"으로 이해된다.

이러한 과정을 통해 각 단어는 문맥을 반영한 벡터로 변환된다.


 

5. 최종 벡터 생성

모델은 문장의 각 단어에 대해 문맥을 반영한 벡터를 생성하며, 문장 전체를 하나의 벡터로 요약할 수도 있다.
문장의 전체 정보를 표현하는 벡터는 다음과 같은 방법으로 생성된다.

  1. 특수 토큰 [CLS]의 출력값 사용: 문장의 전체 의미를 대표하는 벡터로 사용된다.
  2. 평균 풀링(Average Pooling): 문장의 모든 단어 벡터를 평균 내어 하나의 벡터로 표현한다.

최종적으로 문장은 고차원 벡터로 변환되어 다른 문장들과 비교하거나, 분류, 검색 등의 태스크에 활용된다.


 

"나는 사과를 먹었고, 저녁에는 오렌지를 먹을 예정이다."의 벡터화 과정 요약

  1. 토크나이징
    ["나는", "사과를", "먹었고,", "저녁에는", "오렌지를", "먹을", "예정이다."]

  2. 정수 매핑
    [101, 2043, 7842, 2009, 4023, 1001, 102]

  3. 임베딩 레이어 통과
    각 단어 ID가 고정 크기의 벡터로 변환된다.
    예: [0.23, 0.56, -0.11, ...]

  4. Transformer로 문맥 반영
    Attention 메커니즘을 통해 각 단어의 벡터에 문맥 정보가 포함된다.

  5. 최종 벡터 출력
    문장 전체를 대표하는 벡터가 생성되며, 이를 다양한 응용에 활용할 수 있다.


 

결론

임베딩 모델은 텍스트를 벡터로 변환하는 과정을 통해 문장의 의미를 수치화한다. 이러한 벡터화 과정은 자연어 처리의 기본 단계로, 문맥을 반영한 벡터를 통해 텍스트의 의미를 더 정확하게 이해할 수 있도록 한다. 이번 글에서 소개한 과정은 NLP의 핵심적인 기초 개념으로, 검색, 추천, 분류 등 다양한 실무 사례에서 활용된다.