본문 바로가기
  • 머킹이의 머신로그
AI

[용어정리] 토큰화, 어휘, BEP

by 머킹 2024. 1. 31.
728x90

[자연어 용어정리] 토큰화, 어휘, BEP 

 

토큰화(Tokenization)

토큰화란 문장을 토큰 시퀀스로 나누는 과정입니다.

수행 대상에 따라 문자, 단어, 서브워드 등 세 가지 방법이 있습니다.

 

토큰화를 수행하는 프로그램을 토크나이저라고 합니다.

대표적인 한국어 토크나이저는 kkma, mecab 등이 있습니다.

 

토큰화뿐만 아니라 품사부착 까지 수행하므로

토큰화 개념을 넓은 의미로 해석할 때는 토큰 나누기에 품사 부착까지 일컫는 경우도 있습니다.

 

 

단어 단위 토큰화

토큰화 방식에는 여러 가지가 있습니다.

우선 단어(어절) 단위로 토큰화를 수행할 수 있습니다.

가장 쉬운 방법으로는 공백으로 분리할 수 있습니다.

 

공백으로 분리하면 별도의 토크나이저가 사용되지 않는다는 장점이 있지만,

어휘 집합의 크기가 매우 커질 수 있습니다.

 

보통 언어 하나로 모델을 구축할 때 어휘 집합 크기는 10만 개를 훌쩍 넘는 경우가 다반사입니다.

 

 

문장 단위 토큰화

문장 단위로 토큰화를 한다면 해당 언어의 모든 문자를 어휘 집합에 포함하므로

미등록 토큰 문제로부터 자유롭습니다.

 

하지만 각 문자 토큰은 의미있는 단어가 되기 어렵습니다.

단어 단위와 비교할 때 분석 결과인 토큰 시퀀스의 길이가 상대적으로 길어져서

해당 문장을 학습하기 어려워지고 결과적으로 성능이 떨어지게 됩니다.

 

 

서브워드 토큰화

단어와 문자 단위 토큰화 중간에 있는 형태입니다.

어휘 집합 크기가 지나치게 커지지 않으면서도 미등록 토큰 문제를 피하고,

분석된 토큰 시퀀스가 너무 길어지지 않게 합니다.

 


바이트 페어 인코딩(Byte Pair Encoding; BPE)

대표적인 서브워드 단위 토큰화 기법입니다.

 

정보를 압축하는 알고리즘으로 제안되었는데 최근에는 자연어 처리 모델에 널리 쓰이는 토큰화 기법입니다.

GPT 모델은 BPE 기법으로 토큰화를 수행하며,

BERT 모델은 BPE와 유사한 워드피스(wordpiece)를 토크나이저로 사용합니다.

 

바이트 페어 인코딩은 사전 크기 증가를 억제하면서도 정보를 효율적으로 압축할 수 있는 알고리즘입니다.

BPE를 활용한 토큰화 절차는

1. 어휘 집합 구축

2. 토큰화 로 이루어집니다.

 

어휘 집합을 구축하기 위해서 말뭉치를 준비해야 합니다.

말뭉치의 모든 문장을 공백으로 나누어 줍니다.(프리토크나이즈)

 

BPE 어휘 집합은 고빈도 바이그램 쌍을 병합하는 방식으로 구축합니다.

 

BPE 토큰화

어휘 집합과 병합 우선순위가 있으면 토큰화를 수행할 수 있습니다.

 

워드피스(wordpiece)

말뭉치에서 자주 등장한 문자열을 토큰으로 인식한다는 점에서 BPE와 본질적으로 유사합니다.

다만 어휘 집합을 구축할 때 문자열을 병합하븐 기준이 다릅니다.

워드피스는 BPE처럼 단순히 빈도를 기준으로 병합하는 것이 아니라,

병합했을 때 말뭉치의 우도(likelihood)를 가장 높이는 쌍을 병합합니다.

 

  1. WordPiece와 BPE의 차이점:
    • WordPiece: 초기에는 기계 번역에서 사용되던 토큰화 기법으로, 주어진 언어의 단어를 하위 단어(subword)로 분할합니다. 이는 언어의 특성에 따라 단어의 일부를 나누어 처리할 수 있게 합니다.
    • BPE: Byte Pair Encoding은 텍스트 내에서 연속적으로 나타나는 가장 빈번한 바이트 쌍을 찾아 결합하여 새로운 토큰으로 대체하는 방식입니다. 이는 텍스트의 빈도에 기반하여 점진적으로 토큰을 생성하는 것이 특징입니다.
  2. 토큰화 방법:
    • WordPiece:
      • 텍스트를 하위 단어(subword)로 분할합니다.
      • 주로 빈도 기반으로 단어를 쪼개기 때문에 높은 빈도의 어휘에 더 많은 주목을 기울입니다.
      • 기존 단어를 하위 단어로 나누거나, 새로운 하위 단어를 생성할 수 있습니다.
    • BPE:
      • 주어진 텍스트에서 가장 많이 나타나는 바이트 쌍을 찾아 결합하여 새로운 토큰을 생성합니다.
      • 반복적으로 가장 빈도가 높은 바이트 쌍을 찾아 결합하면서 텍스트를 토큰화합니다.
      • 처음에는 문자 단위로 시작하여 결합된 토큰이 나올 때까지 바이트 단위로 확장해 나갑니다.

GPT 토크나이저 구축

문자 단위가 아니라 유니코드 바이트 수준으로 어휘 집합을 구축하고 토큰화를 수행합니다.

전 세계 대부분의 글자는 유니코드로 표현할 수 있으므로 유니코드 바이트 기준 BPE를 사용하면

미등록 토큰 문제에서 비교적 자유롭습니다.

 

 

인덱싱(indexing)

어휘 집합을 확인 해보면 각 어휘 순서대로 나열된 것을 확인할 수 있는데

이 순서가 바로 인덱스이다.

이처럼 각 토큰을 인덱스로 변환하는 과정을 인덱싱이라고 합니다.