HyperCLOVA의 한국어 모델(2)

HyperCLOVA의 한국어 모델(2)

저번 글에 이이서 이번 글에서는 기계가 사람처럼 글을 이해하기 위해 필요한것이 무엇이며, 그것을 실제로 어떻게 적용시켰는지에 대해서 서술한다.

CLOVA가 한국어를 읽는 방법

기계가 글을 이해하려면?

clova_3_1

언어 모델이 문장을 이해하기 위한 능력 중 하나는 문장을 어떠한 단위(Token)로 끊어 읽는 능력이다.

우리는 이미 가지고 있는 언어 지식으로 처음보는 문장이라도 손쉽게 끊어 읽을 수 있지만, 기계는 그렇지 않다.

따라서 끊어 읽는 방식을 정해주어야하며 이렇게 기계가 문장을 끊어 읽는것을 토큰화(Tokenization) 라고 한다.

Tokenization에는 다양한 방법이 존재하는데, 각 방법마다 장단점을 가진다.

clova_3_2

예를들어 어절 단위로 끊어 읽을 경우, 문장을 적은 토큰 개수로 처리할 수 있지만 어휘 집합아 크게 형성되지 않아 처리할 수 없는 문장이 발생할 수 있다.

반대로 문자 단위로 끊어읽을 경우, 더 많은 토큰개수를 요구하지만 그만큼 처리할 수 없는 문장이 줄어든다.

그렇다면 각각의 장단점을 보완할 수 있는 방법은 없을까?

-> 어떤 단어의 부분인 "서브워드(Subword)"라는 단위를 사용하면 된다. 이를 통해 어휘집합의 크기를 어절과 문자 단위의 중간 수준으로 가져갈 수 있다.

clova_3_3

네이버는 이 서브워드를 학습하는 방법으로 Byte-pair encoding(BPE) 방식을 사용하고 있다.

BPE는 자주 등장하는 문자열을 하나의 문자열로 병합해 가면서 어휘집합을 구성한다.

BPE에서는 병합 대상의 문자열 단위를 처리하는 방식에 따라 다양한 종류의 어휘집합을 가지도록 서브워드 토크나이저를 학습할 수 있다.

HyperCLOVA에 적용할 후보로는

  • Character-level BPE (고빈도 어휘(chars) 병합)
  • Byte-level BPE (고빈도 어휘(Byte) 병합)
  • Morpheme-Aware Byte-level BPE (고빈도 형태소(Byte)를 병합)

를 선정하고 실험하였다.

대용량 말뭉치로 서브워드 토크나이저 학습하기

HyperCLOVA팀은 언어모델 학습에 사용할 말뭉치가 약 2TB정도 있었지만, BPE가 연산량을 많이 필요로 하기 때문에 어느정도를 사용하느냐에 대한 결정을 해야했다.

일반적으로 말뭉치의양,토크나이저의 품질,학습 소요시간은 비례관계에 있으므로 적절한 양과 샘플링이 학습에 있어 중요한 결정 요소다.

clova_3_4

자연어 말뭉치에 존재하는 단어를 빈도순으로 나열했을 경우 Zipf's Law를 따른다는 점을 고려하면, 학습 말뭉치 양에 차이가 있어도 어휘집합간에 중복되는 토큰이 많을 것이라고 판단하였다.

따라서 전체 말뭉치의 1%를 Random Sampling하여 실험 말뭉치로 구성, 그리고 이 실험말뭉치로부터 다시 임의추출을 반복하는 방식으로 실험을 진행하였다.

실험 말뭉치의 전부를 사용해 학습했을 때의 서브워드 토크나이저 어휘집합과 실험 말뭉치로부터 다시 임의추출하여 학습한 서브워드 토크나이저 어휘집합을 비교하며 진행한 결과, 최종적으로 전체말뭉치의 1%를 사용하여 학습을 하는것으로 결정했다.

언어모델을 위한 서브워드 토크나이저

clova_3_5

그 결과, Character-level을 사용하면 미등록 단어가 발생하는 문제가 생겼고, 결국 Byte-level 방식중 하나를 사용하기로 결정했다.

두개의 Byte-level 방식을 비교하기 위한 지표가 필요하였는데, 이를 위해 기계가 쓴 문장을 구별해내는 판별모델을 도입하여 성능 측정을 했다. (자세한 내용은 다음 글인 'HyperCLOVA 한국어 능력 평가 지표' 에서 확인할 수 있다.)

HyperCLOVA가 글을 읽는 방법

위의 방법으로 실험과 학습을 거친 결과, HyperCLOVA가 글을 읽는 방법은

학습용 말뭉치의 1%로 학습된 Morpheme-Aware Byte-level BPE Tokenizer로 문장을 처리

라는 방식을 사용하게 되었다.

연관글

새로운 AI의 시작, HyperCLOVA

HyperCLOVA 한국어 모델(1)

HyperCLOVA 한국어 모델(2)

HyperCLOVA 한국어 모델(3)

HyperClOVA의 활용-데이터 증강