brunch

You can make anything
by writing

C.S.Lewis

by 박성준 Apr 12. 2019

전이 학습 기반 NLP (2): ULMFiT

Classifiers from Language Models 

ELMo에 이어서, 이번 포스팅에서 다룰 내용은 언어 모델이 학습한 지식을 전이하여 문서 분류기를 학습하는 것입니다. Universal Language Model Fine-tuning for Text Classification (ACL 2018) [1] 에 소개된 이 방법은 언어 모델을 분류기로 전환하는 방법에 대한 내용입니다. ELMo가 언어 모델을 이용해 어휘 임베딩을 생성하고 이를 다른 자연어처리 과제에 적용하는 방법이었다면, ULMFiT은 언어 모델을 이용해 곧바로 문서 분류기를 생성하고자 하는 시도입니다.



문서 분류(Document Classification)


일반적으로 주어진 텍스트를 임의의 클래스로 분류하는 과제를 줄여서 `문서 분류' 라고 합니다. 문서 분류 과제(Document classification task)는 자연어처리 분야에서 중요한 위치를 차지하고 있습니다. 대표적인 예로, 감성 분석(sentiment analysis), 스팸 메일 분류(spam detection), 봇 판별(bot detection), 감정 판별(emotion detection), 혹은 긴급한 응답이 필요로 하는 메세지 추출(emergency response detection) 등이 그것입니다. 문서 분류는 필요에 따라 현실에서 다양한 곳에 적용될 수 있습니다.


그리고 이러한 문서 분류를 사람이 아닌 기계의 힘을 빌어 자동화 하기 위해서, 기계학습 알고리즘을 이용해 분류기(classifier)를 학습하여 사용할 수 있습니다. 이것이 가능하려면, 분류하고자 하는 대량의 문서가 있고 그에 대응되는 분류 정보가 레이블(label)로써 함께 붙어 있어야 합니다. 기계학습 알고리즘은 이를 토대로 학습하여 문서 분류기(classifier)를 만들어낼 수 있습니다.


기계학습 기반 문서 분류 알고리즘은 이미 수많은 연구자들에 의해 제안된 바 있습니다. 최근에는 주로 인공신경망 모형을 사용하는데, 문서 분류 알고리즘의 성능은 일반적으로 감성 분석(sentiment analysis) 과제를 얼마나 잘 수행하는지를 바탕으로 평가됩니다. 감성 분석은 영화, 책, 음식점, 호텔 등의 리뷰 텍스트에 담긴 긍정적/부정적 뉘앙스를 분류하는 과제인데, 이러한 텍스트 및 감성 레이블은 웹(아마존, IMDB, Yelp 등)상에서 대량으로 쉽게 모을 수 있기 때문입니다. 보통 감성 분석 과제를 위해 학습에 사용되는 텍스트와 레이블의 수는 10만~100만 단위입니다.



ULMFiT : 언어 모델(Language Model)기반 문서 분류기


지금까지 제안된 많은 인공신경망 기반 문서 분류기들은, 거의 모든 파라미터를 처음부터 레이블링 된 데이터셋에 전적으로 의존해서 학습했습니다(trained from scratch). 물론, 2012년 이후 Word2Vec을 비롯한 어휘 임베딩이 널리 사용되기 시작하면서, 별도의 대량의 코퍼스에서 학습된 어휘 임베딩을 문서 분류기의 임베딩 레이어(embedding layer)로 활용하기는 했지만, 보통 인공신경망 기반 문서 분류기의 중간 레이어들은 여전히 무선적(randomly)으로 초기화(initialize)되었습니다. 즉, 어휘 임베딩을 적용하는 것도 전이 학습을 시도한 사례라고 볼 수 있지만, 이는 기존에 학습된 지식(pre-trained knowledge)을 문서 분류기에 부분적으로 적용하였을 뿐이며, 문서 분류기의 중간 레이어에도 기학습된 지식을 전이하려면 어떻게 해야하는지 연구된 바는 거의 없었습니다. 


만약 이것이 가능하다면, 문서 분류기의 성능이 향상될 것이라고 기대할 수 있습니다. 문서 분류기를 학습할 때 어휘 임베딩을 사용하면 성능이 향상된다는 것은 이미 널리 알려진 사실이므로, 이에 더해 또 다른 지식을 전이할 수 있다면 성능 향상에 도움이 될 것입니다. 더 나아가, 이러한 지식을 언어 모델에서 가져올 수 있다면 더욱 효과적일 것입니다. ELMo의 사례에서 볼 수 있듯이, 언어 모델 기반 전이 학습을 활용하면 이전보다 더 적은 양의 데이터만으로도 기존 알고리즘과 거의 동일한 성능을 낼 수 있는 가능성이 있는데, 만약 이러한 경향성이 재현된다면 성능 상의 이익 뿐만 아니라, 문서 분류기 학습에 요구되는 학습 데이터의 양 또한 획기적으로 줄어들게 될 것입니다.


직관적으로 사람의 학습 방식을 생각해보면 이는 자연스러운 접근법입니다. 사람은 어떤 메일이 스팸인지 아닌지, SNS 텍스트에 담긴 감정이 긍정적인지 부정적인지, 혹은 지금 대화하는 상대가 인간인지 봇인지 등을 구별하는 "분류 과제"를 수행하기 위해서, 매번 언어 그 자체를 처음부터 다시 학습할 필요가 없습니다. 사람은 지금 하고자 하는 과제와 관련된 어떤 특징을 주어진 텍스트에서 찾는 것만으로 문서 분류를 잘 수행하기 충분한 것이죠. 이러한 접근법을 인공신경망 모형에 적용해보고자 하는 것이 ULMFiT의 핵심입니다.




(알고리즘 스케치) ULMFiT은 Universal Language Model Fine-Tuning의 약자입니다. 즉, 일반 언어 모델(Universal Language Model)을 튜닝(Fine-tuning)해서 문서 분류기로 만들자는 것입니다. 구체적으로 아래 그림과 같이, 총 3단계로 구성되어 있습니다.

   


(a) 일반 언어 모델 학습(General-domain Language Model Pre-training)

(b) 과제 맞춤형 언어 모델 튜닝(Target task Language Model fine-tuning)

(c) 과제 분류기 튜닝(Target task Classifier fine-tuning)


큰 틀에서 설명하면, 우선 대량의 코퍼스를 토대로 일반 언어 모델(general-domain language model)을 학습한 뒤, 기학습된 언어 모델을 내가 풀고자 하는 문서 분류 과제에서 등장하는 텍스트에 맞추어 조금 더 추가적으로 학습(fine-tuning)한 다음, 마지막으로 분류 레이어(softmax)를 새로 추가하여 학습하는 것입니다. 각 단계별로 구체적으로 설명하면 아래와 같습니다.


1. 일반 언어 모델 학습  먼저, 일반 언어 모델은 AWD-LSTM을 사용합니다. 이는 ICLR 2018에 발표된 LSTM기반 언어 모델로, LSTM 언어 모델에 다양한 정규화(regularization)방법을 적용한 것입니다. 이 모델은 위키피디아 영어 버전 전체에 대해서 학습되었으며, 이는 일반적인 언어(여기서는 영어를 의미합니다)의 특성을 학습합니다.


2. 과제 맞춤형 언어 모델 튜닝 일반 언어 모델을 내가 풀고자 하는 과제에 맞추어 조금 더 학습합니다. 만약, 내가 원하는 분류 과제를 위해서 100개의 텍스트와 그에 대응되는 100개의 레이블이 있다면, 이 단계에서는 먼저 100개의 텍스트를 이용해 언어 모델을 튜닝하는 것입니다. 즉, 100개의 텍스트를 이용해 다음 단어를 예측하는 언어 모델링 과제를 수행하며 일반 언어 모델의 파라미터를 조정합니다. 이 단계에서는 100개의 레이블은 활용하지 않습니다. 그리고 튜닝 시 사용하는 두 가지 테크닉은 아래와 같습니다.

Discriminative Fine-tuning : 언어 모델을 튜닝할 때, 각 레이어 별 학습율(learning rate)을 서로 다르게 조정하는 것입니다. 깊은 레이어에 대해서는, 그보다 상위 레이어에 비해 더 작은 학습율을 줍니다.

Slanted triangular learning rates : 튜닝 횟수(epoch)에 따라서, 초반에는 작은 학습율을 주었다가 점차 이를 증가시킵니다. 약 200번의 학습(epoch) 후, 다시 점차 학습율을 점진적으로 감소시킵니다.


3. 과제 분류기 튜닝 마지막으로, 분류기를 학습하기 위해 언어 모델 과제에서 사용된, 다음 단어 예측을 위한 레이어(softmax)를 제거하고, 주어진 텍스트가 어떤 클래스에 속할 지 확률을 계산하는 새로운 분류 레이어(softmax)를 추가합니다. 즉, 기존 언어 모델에서 마지막 레이어만 제거하고 나머지는 그대로 두고, 새로운 분류 레이어 하나만을 추가하여 학습합니다. 이 단계에서 사용되는 테크닉은 아래와 같습니다.

Concat Pooling : 마지막 분류 레이어(softamx)의 입력으로 사용될 벡터를 구성할 때, 언어 모델의 마지막 잠재 상태(final hidden state)뿐만 아니라, 입력으로 주어진 모든 어휘에 대응되는 잠재 상태 벡터의 max-pooling, mean-pooling 벡터를 함께 붙여서(concat) 사용합니다.

Gradual Unfreezing : 분류 레이어 학습을 위해 전체 모델의 모든 파라미터를 처음부터 업데이트하지 않고, 분류 레이어와 가장 가까운 상위 레이어부터 차례로 업데이트합니다. 이를 통해 기학습된 지식을 잊어버리지 않도록 합니다(prevents catastrophic forgetting).




(결과) 문서 분류기로써의 ULMFiT의 성능을 비교 모델의 그것과 함께 평가하면 아래와 같습니다. 다양한 문서 분류 과제에 대해서 ULMFiT은 비교 모델에 비해 우수한 성능을 보입니다.

감성 분석(sentiment analysis) : IMDb 영화 리뷰 데이터셋을 기반으로 분류 정확도를 측정합니다. 비교 모델의 오류율(5.9%)에 비해, 그보다 낮은 4.6% 오류율을 달성합니다.

질의 분류 : TREC-6 데이터셋을 기반으로 분류 정확도를 측정합니다. 비교 모델의 오류율(3.9%)에 비해, 그보다 낮은 3.6%의 오류율을 달성합니다.

주제 분류, 감성 분석 과제(추가) : 주제 분류(AG, DBpedia) 및 감성 분석(Yelp-bi, Yelp-full) 데이터셋에서, 비교 모델인 DPCNN보다 모든 조건에서 낮은 오류율을 달성합니다.


또한, 특기할 만한 결과는 아래 그림에서도 볼 수 있듯이, 언어 모델을 활용하여 기학습된 지식을 기반으로 분류기를 학습하면 그렇지 않았을 때보다 훨씬 적은 양의 데이터에서도 잘 작동함을 보이고 있습니다. 100개의 레이블된 문장들만으로 학습했을 때, ULMFiT은 감성 분석, 주제 분류 과제에서 30~50% 낮은 오류율을 보여줍니다.

이전 포스팅에서 다룬 ELMo와 마찬가지로, 언어 모델 기반 전이 학습을 활용하면 더 적은 양의 데이터만으로도 다양한 자연어 처리 과제를 효과적으로 수행할 수 있음을 보여줍니다. 그리고 이러한 경향성은 Google AI Laguage 팀에서 발표한 BERT에서 다시 한 번 증명됩니다.



[1] https://arxiv.org/pdf/1801.06146.pdf

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari