본문 바로가기
자연어처리(NLP)/LM(Language Model)

[NLP][기초개념] 사전 훈련(Pre-training) 언어 모델

by Hyen4110 2021. 5. 29.

아래 사이트의 글들을 참고하여 이해한 개념을 정리하였으며, wikidocs의 내용을 주로 참고하고, 언어모델과 관련된 개념들은 wikidocs의 글을 요약 정리한점을 미리 말씀드립니다.

 

https://wikidocs.net/108730

https://www.analyticsvidhya.com/blog/2017/06/transfer-learning-the-art-of-fine-tuning-a-pre-trained-model/

http://jalammar.github.io/illustrated-bert/

 

 

1. 사전훈련이란? 

- NLP 분야에서 많이 등장하는, '사전 훈련(Pre-trianing)' 개념에 대해서 이해하기 쉽게 설명해보고자 합니다.

- 사전 훈련이라는 개념은 NLP분야에만 한정된 것이 아니라 이미지 처리 분야 등 다양한 분야에서 쓰이고 있는 단어입니다. 사전 훈련과 함께 등장하는 개념은 '전이학습(Transfer Learning)'으로, 전이학습이란 '하나의 문제를 푸는 동안 지식을 저장하는데 초점을 두고, 다르지만 연관된 문제를 푸는데 그 지식을 활용하는 것' 입니다. 

 

- 쉬운 이야기로 비유하자면, 어떤 모델이 차를 인식하는 것을 학습했다면, 그것을 가지고 트럭을 인식하는것에 적용할 수 있습니다. 즉, 차를 인식하는 문제를 푸는 모델을 사전에 훈련(pre-train) 시키고, 훈련된 모델을 가지고 다르지만 비슷한 문제인 '트럭을 인식하는 문제'를 푸는데 사용하는 것입니다. 

 

 [이미지 출처: https://www.analyticsvidhya.com/blog/2017/06/transfer-learning-the-art-of-fine-tuning-a-pre-trained-model/]

 

- 이 비유를 신경망으로 가져가서 생각해봅시다. 신경망은 데이터를 가지고 학습이 됩니다. 신경망이 데이터를 통해 학습을 한 지식은 네트워크의 '가중치(weights)' 로 정리됩니다. 이 가중치들은 따로 추출하여 다른 신경망에 전송(transfer)될 수 있습니다. 즉 다른 신경망을 처음부터 학습하는 대신에, 학습된 특성들을 전송(transfer)하는 것입니다.

[이미지 출처] https://www.youtube.com/watch?v=J53A4pCvCkc

- 모델은 데이터를 통해서 학습이 되기 때문에, 사전훈련 모델을 만들기 위해서는 방대한 데이터가 필요합니다. 예를 들어, 컴퓨터 비전 분야에서는 방대한 양의 이미지가 필요하겠죠. 그것도 레이블 값을 포함한 데이터로 말입니다. 

 

2. 컴퓨터 비전분야에서의 사전 훈련

- 컴퓨터 비전 분야에서도 연구, 산업, 해커톤 분야에서 쓰이는 유명한 데이터셋들이 있습니다(ImageNet, CIFAR, MNIST). 하나만 예를들어 ImageNet 데이터의 경우에는 1400만 개 이상의 이미지에 범주(2만개 이상)가 레이블링이 되어있으며, 최소 100만개 이상의 이미지에는 경계상자까지 표시되어있습니다. 문제와 답이 모두 갖추어져 있는 이미지가 1400만 개가 되는 것입니다.

- 이러한 방대한 양의 이미지를 학습하여 이미지 분류 문제에서  높은 성과를 낸 모델로는 VGG, ResNet, Inceptionv, EfficientNet 등이 있습니다.

https://devopedia.org/imagenet

 

3. NLP 분야에서의 사전 훈련

- NLP 분야에서의 사전 훈련은 '사전훈련된 워드임베딩'과 '사전훈련된 언어모델' 2가지로 구분해서 볼 수 있습니다. 

 

3.1 사전훈련된 워드 임베딩

- 워드 임베딩(Word Embedding)은 단어를 밀집 벡터(dense vector)로 표현하는 방법으로, 워드 임베딩을 통해서 하나의 단어를 숫자로 이루어진 벡터로 표현하여 신경망에 입력값으로 넣는것이 가능해졌습니다. 방법론으로는 LSA, Word2Vec, FastText, Glove 등이 있습니다.

- 워드 임베딩을 통해서 뜻과 관련된 관계성(단어의 유사, 반의어 관계라던지 "한국"과 "서울"이 "일본"과 "도쿄"와 같은 관계가 있다는 관계성)을 표현할 수 있게 되었습니다. 

- 이를 발견함과 동시에, NLP분야에서는 task 마다 주어지는 적은 데이터로 임베딩을 학습하기보다는, 방대한 양의 데이터로 한번 임베딩을 학습하는 사전훈련된 워드임베딩에 집중하였습니다. 

[이미지 출처] https://wikidocs.net/33793

- '사전 훈련된 워드 임베딩'이란, 처음부터 데이터를 가지고 학습을 하는 것이 아니라 방대한 학습 데이터를 가지고 임베딩 알고리즘으로 이미 학습되어있는 임베딩 벡터들을 가져와서 사용하는 방법입니다. 마치 엑셀에서 vlookup함수를 써서 매핑을 해오듯이, 룩업테이블에서  기존에 학습한 단어의 임베딩 벡터를 가져오기만 하면 됩니다. , (단, 이것이 가능하려면 룩업테이블에 없는 단어가 있으면 곤란하겠죠. 정말 방대한 양의 데이터를 가지고 학습한 '사전 훈련된 워드임베딩'이어야할 것입니다.)

 

- 그러나 사전훈련이든 아니든 상관없이 '워드임베딩'에는 한가지 취약점이 있는데, 하나의 단어에 대한 벡터값은 단 하나만 존재한다는 것입니다. 'green'이 문맥에 따라 색깔로 쓰였는지, 사람이름으로 쓰였는지와 상관없이 그저 하나의 벡터값만을 매핑해서 문맥을 고려하지 못한다는 취약점이 있습니다. 즉, 다의어와 동음이의어를 구분하지 못한다는 것이죠. 이러한 한계점을 극복하는것은 '사전 훈련된 언어모델'을 사용하는 것으로 가능해졌습니다. 

 

3.2 사전 훈련된 언어모델

1) 언어모델(Language Model)이란?

[아래 내용은 딥러닝을 통한 자연어 처리 입문의 내용을 요약한 글로 출처를 명시합니다]

- 언어 모델(Language Model, LM)은 언어라는 현상을 모델링하고자 단어 시퀀스(또는 문장)에 확률을 할당(assign)하는 모델입니다. 이를 조금 풀어서 쓰면, 언어 모델은 가장 자연스러운 단어 시퀀스를 찾아내는 모델입니다. 단어 시퀀스에 확률을 할당하게 하기 위해서 가장 보편적으로 사용되는 방법은 언어 모델이 이전 단어들이 주어졌을 때 다음 단어를 예측하도록 하는 것입니다.

- 다른 유형의 언어 모델로는 주어진 양쪽의 단어들로부터 가운데 비어있는 단어를 예측하는 언어 모델이 있습니다. 이 유형의 언어 모델은 맨 마지막 BERT 챕터에서 다루게 될 예정이고, 그때까지는 이전 단어들로부터 다음 단어를 예측하는 방식에만 집중합니다.

- 언어 모델에 -ing를 붙인 언어 모델링(Language Modeling)은 주어진 단어들로부터 아직 모르는 단어를 예측하는 작업을 말합니다. 즉, 언어 모델이 이전 단어들로부터 다음 단어를 예측하는 일은 언어 모델링입니다.

 

2) RNN 계열의 언어모델

[아래 내용은 딥러닝을 통한 자연어 처리 입문의 내용을 요약한 글로 출처를 명시합니다]

- n-gram 언어 모델과 NNLM은 고정된 개수의 단어만을 입력으로 받아야한다는 단점이 있었습니다. 하지만 시점(time step)이라는 개념이 도입된 RNN으로 언어 모델을 만들면 입력의 길이를 고정하지 않을 수 있습니다. 이처럼 RNN으로 만든 언어 모델을 RNNLM(Recurrent Neural Network Language Model)이라고 합니다.

 

3) 사전훈련된 언어모델

[아래 내용은 딥러닝을 통한 자연어 처리 입문의 내용을 요약한 글로 출처를 명시합니다]

- 2015년 구글은 'Semi-supervised Sequence Learning'라는 논문에서 LSTM 언어 모델을 학습하고나서 이렇게 학습한 LSTM을 텍스트 분류에 추가 학습하는 방법을 제안했습니다. 이 방법은 우선 LSTM 언어 모델을 학습합니다. 언어 모델은 주어진 텍스트로부터 이전 단어들로부터 다음 단어를 예측하도록 학습하므로 기본적으로 별도의 레이블이 부착되지 않은 텍스트 데이터로도 학습 가능합니다. 그리고 이렇게 레이블이 없는 데이터로 학습된 LSTM과 가중치가 랜덤으로 초기화 된 LSTM 두 가지를 두고, IMDB 리뷰 데이터를 학습하여 정확도를 테스트 한다면 전자의 LSTM이 좀 더 좋은 성능을 얻는다는 것입니다.

 

- 사전훈련 임베딩의 한계와 이를 극복한 언어모델(ElMo)를 재밌게 그린 만화입니다. 이전의 Word2Vec과 같은 사전임베딩으로는 "stick" 단어에 대한 임베딩 값을 바로 알려주었겠지만, ElMo는 "가능한 임베딩 값들이 많다(There are multiple possible embeddings)! 문장을 예시로 들어(Use it in a sentence)."라고 대답하고 있습니다. 

- 정해진 임베딩 값을 사용하는 대신에, ELMo는 전체 문장을 보고 나서 각 단어의 임베딩을 결정합니다. ELMo는 bi-directional LSTM을 특정 task에 대하여 훈련함으로써 그러한 임베딩을 만들어 냅니다. 

http://jalammar.github.io/illustrated-bert[url]/ Contextualized word-embeddings can give words different embeddings based on the meaning they carry in the context of the sentence. Also,  RIP Robin Williams

 

<그 외>

- 사전학습 관련하여 최근 언어모델 연구동향과 트렌드를 쉽게 설명한 카카오브레인 포스팅

https://www.kakaobrain.com/blog/118#ref_list_3

 

2018-2020 NLU 연구 동향을 소개합니다 - 카카오브레인

지난 2018년을 기점으로 폭발적으로 성장한 사전학습된 언어 모델과 최신 자연어이해(NLU) 과제의 한계, 올해의 NLU 연구 트렌드에 대한 내용을 다뤄보고자 합니다. 카카오브레인에서 자연어처리

www.kakaobrain.com

 

댓글