자연어처리는 (Natural Language Processing) 우리가 일상 생활에서 사용하는 언어의 의미를 분석하여 컴퓨터가 처리할 수 있도록 하는 일을 말한다. 음성인식, 내용요약, 번역, 사용자의 감성 분석, 텍스트 분류 작업, 챗봇 등 이미 우리 생활의 전반에 많이 사용되고 있는 기술이다.
BERT (Bidirectional Encoder Representations from Transformers) 모델에 대해 자세히 알아보기에 앞서, 자연어 처리에 있어서의 사전훈련의 변천사에 대해 자세히 다뤄보겠다.
1. 사전 훈련된 워드 임베딩
Word2Vec, FastText, GloVe등 다양한 워드 임베딩 방법론들의 문제점은, 하나의 단어가 하나의 벡터값으로 맵핑되므로 문맥을 고려하지 못한다는 점이었다. 따라서 동음이의어나 다의어에 대해서 전체적인 문맥에 따른 해석이 불가능하다는 것이다. 예를들어 '사과'라는 단어는 Apple을 의미할 수도 있고, Apology를 의미할 수도 있다. 하지만 임베딩 벡터는 한가지의 의미에 벡터값을 맵핑하므로, 한계가 발생했다. 이러한 한계는 사전 훈련된 언어 모델을 사용하므로서 극복할 수 있었는데, 이는 밑에 설명할 ELMo에서 자세히 다뤄보겠다.
2. 사전 훈련된 언어 모델
ELMo는 순방향 언어모델과 역방향 언어 모델을 각각 학습시킨 후에, 사전된 학습 모델로부터 임베딩 값을 얻는 개념이다. 한 단어에 여러가지 의미가 있더라도, 임베딩 벡터값이 달라지기 때문에 Word2Vec이나 GloVe 같은 워드 임베딩의 문제점을 해결 할 수 있었다.
Transformer의 등장 후로는, 언어 모델을 학습할 때 LSTM이 아닌 트랜스포머를 사용하기 시작했다.
트랜스포머 디코더는 기존의 LSTM 언어모델처럼 순차적으로 이전 단어들로부터 다음 단어를 예측한다. 이에 Open AI는 트랜스포머 디코더로 총 12개의 레이어를 쌓은 후, 더 많아진 텍스트 데이터로 언어모델 GPT - 1을 생성한다. Open AI는 GPT-1에 여러 다양한 태스크를 위해 추가 학습을 시켰을 때, 높은 성능을 얻을 수 있음을 보여준다.
이제 NLP의 트렌드는 사전 훈련된 언어 모델을 만들어, 이를 다른 태스크에 추가 학습하여 높은 성능을 얻는 것으로 넘어오게 되었다. 그리고 이를 더 잘하기 위해서 기존의 언어 모델의 구조를 바꿔보고자 하는 시도가 생겨나면서, 마스크드 언어 모델 (Masked Language Model)이 등장하게된다. 이는 다음 포스트에서 다뤄보겠다.
'Data Science > ML&AI' 카테고리의 다른 글
[NLP] Word Embedding with Lookup table - nn.Embedding() (0) | 2021.06.03 |
---|---|
[NLP] Embedding - fastText란? (0) | 2021.04.14 |
[NLP] BERT란? - 자연어 처리 모델 알아보기 (0) | 2021.03.20 |
[머신러닝] Undersampling과 Oversampling이란? (0) | 2020.09.20 |
[Classification] 오차행렬, 재현율, 정밀도와 F1 Score (0) | 2020.09.18 |