[ICLR2018] DEEP CONTEXTUALIZED WORD REPRESENTATIONS (Paper)
,ELMO(Embedding from Language Model)
1. 서론
자연어 관련 각종 문제에 있어서, Word 를 Embedding 하는 방법은 가장 근본적인 Task 로 모든 종류의 자연어 문제에 있어서 공통적으로 적용되는 문제이다. 해당 논문은 Word Embedding 을 BiLM 이라는 댜량의 Corpus 기반으로 사전에 훈련된 모델을 활용하는데, 이러한 방법을 적용하여 기존의 NLP 의 주요 문제인 question answering, textual entailment and sentiment analysis 등에서 매우 큰 성능 향상을 보여 주었다고 한다.
2. Idea
기존의 Word Embedding 기법으로는 Word2Vec, FastText, Glove 등 다양한 방법들이 있었는데, 이러한 방법들은 공통적으로 문맥과 상관없이 특정 단어는 특정 Vector 로 맵핑되는 한계점이 존재한다. ELMO(Embedding from language Model) 은 말 그대로 기존에 훈련된 Bilstm 신경망을 통해서 Word Embedding 을 수행하는 형태로 동작하기 때문에 동일한 단어는 항상 동일한 Vector 가 되는 것이 아니고, 문맥에 따라서 다른 Vector 로 표현될 수가 있다는 것이다.
전체 아키택쳐는 위와 같으며, 중요한 설명포인트는 아래와 같다.
(1) Pretrained BiLM 모델
다량의 말뭉치로 사전에 훈련된 모델을 사용하여 EMbedding 을 합니다.
BiLM 이라고 논문에서 이야기 하고 있는 구조는 우리가 흔히아는 BiLstm 과 유사한 구조로, RNN 기반의 구조를 갖기 때문에 단어 단위로 문맥에 따라서 달라지는 Embedding을 구현할 수 있습니다.
(2) Deep BiLM 구조와 각 Layer Output을 Sum 하는 개념
RNN을 깊게 쌓는 구조를 가지고 있으며, ElMo Vecotor 를 생성하기 위해서 각 Hidden Layer 의 결과를 가중치를 적용하여 Sum 하여 사용하고 있습니다.
(4) ELMO 를 다른 모델에 적용하는 방법
Pretrained 된 BiLM 을 Weight 값을 고정하여 기존 아키택쳐의 Embedding 부분에 붙이는 방법으로, 여러 종류의 NLP 문제에 적용할 수 있습니다.
3. BiLM
이름 부터 BiLM 이니까 양방향으로 동작하는 RNN 구조인데, ResiNet 의 ShortCut 개념을 활용하여, Vanishing Problem 을 해결하면서도 Deep 한 RNN 구조를 갖는다. 우선 Forward 방향부터 설명을 해보면 t1~tk-1 을 가지고 tk 의 확률을 예측하는 신경망 구조로, 요즘 유행하는 것처럼 Input 은 각각의 Sequence에 맞춰서 Char 단위로 입력된다. 마지막 tk 의 Top Layer Output 결과를 가지고 softMax 를 하여 tk+1 을 예측하는 형태로 설계가 된다. 그걸 아래와 같이 식으로 표현할 수 있다.
Back Ward 는 동일하게 역순으로 이해하면 된다. Tk+1 ~ Tn 까지를 가지고 tk 의 확률을 구하는 식으로 표현하면 되겠다.
Forward 와 Backward 의 Log Likelihood 를 Combine 하여 다음 Layer 의 Input 으로 사용
BiLM 은 이런식으로 생겨먹었고, 대량의 데이터를 활용하여 해당 모델을 사전에 학습시킨다.
4. ELMO
BiLM 모델을 훈련시켜 놓았으니, 이제 활용을 해야 하는데 활용은 다음과 같은 과정으로 이루어 진다고 보면된다.
(1) Pretrained 된 BiLM 에 Embedding 하고자 하는 ‘문장을’ Input 으로 넣어서 Inference 실행
(2) BiLM 각 Layer 의 Vector 의 합을 각 Layer 별 가중치를 적용하여 구한다.
(3) RNN Sequence Length 수 만큼의 Vector 가 생성이 된다.
※ A B C D 를 넣었다고 하면, A B C D 각각에 대한 Single Vector 가 생성이 되는 것이다
S 는 SoftMax 로 각 Layer 에 적용할 가중치인데, 아주 간단하게는 가장 Top Layer 의 Vetor 를 사용하는 것도 ElMo 의 한 형태가 될 수 있지만, 위와 같이 Layer 별로 가중치를 주었을 때 최고의 성능을 보여 주었다고 한다.(weighting all biLM layers with softmax-normalized learned
scalar weights s = Sof tmax(w):) r 은 상수 값으로 전체적인 Vector 의 크기를 결정하는 용도로 사용된다.
5. 결과
아래와 같이 기존의 모든 종류의 NLP 문제에 있어서, ElMo 를 embedding 에 적용시 적게는 5.8%에서 크게는 22.2%까지 성능이 향상되는 모습을 볼 수 있다. 최초의 Embedding 은 WordNet 과 같이 사람이 논리를 정하여 강제하는 방향에서 부터 Word2Vec 가 같이 발생 빈도를 기반으로 의미적인 유사성을 표현할 수 있도록 하는 방법부터, 이제 문맥에 따라 다른 의미로 사용되는 단어를 Embedding 에 반영할 수 있도록 하는 방향까지 발전되어 왔다.
Elmo Simple Implementation
Google Colaboratory
Source: colab.research.google.com/drive/1P1QnbDnrd5CeT-OTLAC0Ibx18UwLaidt