본문 바로가기
대학원 이야기/논문 리뷰

[논문 리뷰] Deep contextualized word representations (2018 NAACL)

by misconstructed 2020. 10. 3.
728x90

2018년에 발표된 해당 논문은 새로운 단어 임베딩 방법을 제안한다.

ELMo 는 Embeddings from Language Model의 약자로, pre-trained language model 을 사용한다.

해당 논문의 원본은 여기서 조회할 수 있다.


# Abstract 

해당 논문은 새로운 방식의 deep-contextualized 단어 임베딩을 제안한다. 해당 임베딩은 각 단어의 다양한 특징과 의미를 표현할 수 있게 한다. Deep bidirectional language model (biLM)의 중간 state 들을 사용해서 단어 임베딩을 생성하게 된다. 이러한 방식은 다른 다양한 모델에 쉽게 결합해서 사용할 수 있는 장점이 있다. 결과적으로 6개의 NLP task에서 state-of-the-art를 달성할 수 있었다.

# Introduction

Word2vec (word2vec의 논문 리뷰를 보려면 여기)과 GloVe (GloVe의 논문 리뷰를 보려면 여기)와 같은 Pre-trained word representations은 기존의 NLU model에 중요한 요소들이었다. 각 단어들은 다양한 특징과 의미를 보유하고 있기 때문에 높은 퀄리티의 단어 임베딩을 생성하는 것은 큰 도전이다. 이번 논문에서는 이러한 문제들 해결할 수 있는 새로운 deep contextualized 단어 임베딩 방식을 소개한다.  해당 방식은 입력으로 제공된 전체 문장에 대해서 문장을 구성하는 단어들의 임베딩을 제공한다는 점에서 기존 방식과는 다르다. LM을 objective로 학습된 bidirectional LSTM에서 생성된 벡터들을 사용하게 된다. 이렇게 생성된 벡터를 ELMo (Embeddings from Language Model) 라고 부른다.

ELMo는 biLM 의 모든 internal layer를 사용한다. 모든 layer의 linear combination으로 생성한 representation은 LSTM의 최상위 층만 사용했을 때보다 훨씬 좋은 성능을 제공하게 된다. 모든 층을 사용하는 방식은 다양한 word representation을 가능하게 한다. 높은 LSTM층(higher-level)은 문맥에서 단어의 의미를 학습하게 되고, 낮은 층(lowe-level)은 단어의 문법적인 측면(POS 등)을 학습하게 된다. 

또한, ELMo 기존에 존재하는 모델에 쉽게 추가될 수 있다는 장점이 있다. ELMo representation을 추가하는 것만으로도 성능을 향상시킬 수 있었고, 기존의 CoVe 보다도 좋은 성능을 제공한다. ELMo와 CoVe를 통해서, deep representation이 LSTM의 최상위 층만 사용하는 것보다 좋은 성능을 제공한다는 것을 보인다.

# Related Works

기존의 방식 (word2vec, GloVe 등) 은 한 단어에 하나의 independent representation 만 생성할 수 있다는 단점이 있다. 이러한 단점을 극복하기 위해서 한 단어를 subword information을 이용해서 다양한 뜻을 표현할 수 있도록 하거나, word sense 별로 서로 다른 representation을 생성하는 방법 등을 제안되었다. 이번 논문에서 제안하는 방식도 subword information을 character convolution을 통해 단어를 학습하게 된다. 

Context-dependent representation을 사용하는 방식도 존재한다. Context2vec 은 bidirectional LSTM을 사용해서 중심이 되는 특정한 단어 주변의 문맥을 임베딩하게 된다. 유사한 방식이지만, 문맥에 중심이 되는 단어까지 포함해서 문맥을 임베딩하는 방식도 존재한다. 

과거의 연구들도 deep biRNN의 서로 다른 층은 서로 다른 특성을 임베딩한다는 것을 발견했다. 높은 LSTM층(higher-level)은 문맥에서 단어의 의미를 학습하게 되고, 낮은 층(lowe-level)은 단어의 문법적인 측면(POS 등)을 학습하게 된다. ELMo도 유사한 방식으로 학습을 하고, 기존의 task에 함께 적용해서 사용하면 더 좋은 성능을 제공한다. 우선, label이 없는 데이터에 대해서 biLM을 학습하게 되고(pre-train), 해당 모델을 이용해서 task에 알맞게 weight 들을 조절하게 된다.

# ELMo : Embeddings from Language Models

ELMo는 전체 입력 문장에 대한 각 단어들의 representation을 생성한다. 해당 representation은 2 개의 biLM 층과 character convolution 입력을 이용해서 생성하게 된다. ELMo는 기존의 NLP 구조와 쉽게 합쳐져서 사용될 수 있다.

# Bidirectional language models

$ N $ 개의 순차적인 입력 token $ ( t_1, t_2, ..., t_N) $ 이 주어졌을 때, forward language model은 다음과 같은 확률을 계산하게 된다. $ t_1 ~ t_{k-1} $ 까지 주어졌을 때, $ t_k $가 나타날 확률을 모두 곱해서 전체 입력의 확률을 구한다.

[식-1]

문맥에 의존적이지 않은 k번째 단어의 representation을 $ x_k^{LM} $ 이라고 하면, 해당 입력을 $ L $ 개의 LSTM 층을 통과시키다. 입력의 위치를 $ k $, 현재 층의 높이는 $ j $ 라고 할 때, forward context-dependent representation은 $ \overrightarrow{h_{k,j}^{LM}} $ 와 같이 표현한다. 최상위 층(L 번째 층)은 다음 토큰인 $ t_{k+1} $ 을 예측하기 위해 사용된다.

반대로, backward language model 은 다음과 같은 식을 통해서 확률을 계산하게 된다. 미래에 나타나는 representation을 기반으로 현재 representation을 예측하게 된다.

[식-2]

Forward LM과 동일하게 backward LM에서도 backward context-dependent representation은 $ \overleftarrow{h_{k,j}^{LM}} $ 와 같이 표현한다.

최종적으로 biLM의 forward LM과 backward LM을 합친다. 그리고 두 방향(forward, backward)의 log likelihood를 최대화 시키는 방향으로 학습을 진행한다.

[식-3]

Token representation과 softmax layer에 대한 파라미터는 forward, backward LM 에서 동일하게 사용된다. 하지만 LSTM에 대해서는 서로 다른 파라미터를 사용하게 된다.

# ELMo

ELMo는 biLM의 중간 층들의 representation 들의 결합으로 나타낼 수 있다. 각 입력 $ t_k $ 에 대해서 $ L $ 개의 층이 있다면, 각 층에서 1개 씩 총 $ 2L $ 개, context independent representation 1개, 총 $ 2L + 1 $ 개의 representation을 사용하게 된다. biLM 의 각 LM에서 생성한 representation을 각각 $ \overleftarrow{h_{k,j}^{LM}} $ 과 $ \overrightarrow{h_{k,j}^{LM}} $ 라고 나타내면 두 표현을 결합한 representation은 $ h_{k,j}^{LM} $ 으로 나타내고, 다음과 같이 표현할 수 있다.

[식-4]

최종적으로, 모든 층에서 생성한 representation을 결합해서 하나의 벡터로 생성하게 된다. $ s^{task} $ 는 softamx-normalized weights로, task에 따라 가중치가 달라지고, 어떤 층에 집중할지 결정하게 된다. $ \gamma^{task} $ 는 최종 벡터의 크기를 결정하게 된다. 해당 파라미터는 optimization 과정에서 중요한 혁할을 수행하게 된다.

[식-5]

# Using biLMs for supervised NLP tasks

우리는 ELMo representation을 이용해서 기존의 NLP task의 성능을 끌어올릴 수 있다. 기존의 문맥을 고려하지 않는 단어 임베딩을 $ x_k $ 라고 했을 때, 해당 임베딩에 ELMo representation을 결합한 (문멕을 고려한 단어 임베딩) $ h_k $ 를 task model 의 입력으로 사용한다. ELMo representation을 기존의 task에 함께 사용하는 방법은 다음과 같다.

  1. biLM의 가중치를 고정(freeze) 한다.
  2. 문맥을 고려하지 않은 단어 임베딩 $ x_k $ 를 ELMo representation과 연결한다 : $ [x_k;ELMo_k^{task}] $
  3. 새로 생성한 문맥을 고려한 단어 임베딩을 task 모델의 입력으로 제공한다.

추가적으로, ELMo representation을 task 모델의 출력과 연결(concatenate) 해서 사용하면 특정 task에 대해서 성능을 향상시킬 수 있다. 더 복잡한 모델일수록 이러한 효과는 크게 나타난다.

# Pre-trained bidirectional language model architecture

이번 논문에서 다루는 최종 모델을 2개의 LSTM 층을 사용한다. ($ L = 2 $) 각 층은 4096 개의 unit과 512 차원의 출력을 제공한다. 또한, 첫 번째 층과 두 번째 층을 residual connection으로 연결한다. 문맥을 고려하지 않는 임베딩은 2048 character n-gram convolution filter를 사용했고, 2개의 highway layer를 추가적으로 사용했다. 최종적으로 512 차원의 출력을 제공한다. 이러한 구조를 기반으로 biLM은 입력에 대해서 총 3개의 representation을 생성하게 된다.

총 10 에포크 동안 1B Word Benchmark를 기반으로 학습힌 결과, backward perplexity 는 39.7를 제공했다. Forward perplexity와 backward perplexity 는 겅의 유사하게 측정되었지만, backward perplexity가 조금 더 낮게 측정되었다. 한 번 사전 학습되면, biLM은 어떠한 task에 대해서도 representation을 제공할 수 있다.

# Evalution

ELMo representation을 단순히 추가함으로서 총 6개의 NLP task에서 성능 향상을 이뤄낼 수 있었다.

[표-1]

  1. Question-Answering : SQuAD dataset 사용. 기존의 CoVe 를 추가해서 학습한 방식보다 성능이 더 좋아졌다.
  2. Text entailment : premise가 주어지면 hypothesis가 참인지 확인하는 task.
  3. Semantic role labeling : "WHO did WHAT to WHOM" 을 답하는 task. 기존의 방식에 ELMo representation을 추가해서 성능 향상.
  4. Coreference resolution : mention이 실제 세계의 동일한 대상을 참조하는지 확인하는 task.
  5. Named entity extraction : CoNLL 2003 NER task는 4개의 서로 다른 entity 종류(PER, LOC, ORG, MISC)로 구분되어 있다.
  6. Sentiment analysis : SST-5 를 사용. very negative 에서 very positive 로 구분된 5가지 Label 중 선택하는 task.

# Analysis

Deep contextual representation 을 사용함으로서 기존의 다양한 task의 성능을 향상시킬 수 있다는 것을 보였다. 이후에는 두 개의 Intrinsic evaluation을 이용해서 낮은 층(lower layers)가 문법적인 특징을 학습하고, 높은 층(higher layers)이 문맥을 학습한다는 것을 보인다. 기존의 CoVe 보다 더 효과적인 문맥 표현을 학습할 수 있다는 것을 알 수 있다. 마지막으로, ELMo representation이 추가되는 위치에 따라 서로 다른 효과를 낼 수 있다는 것을 보인다.

# Alternate layer weighting schemes

Regularization parameter인 $ \lambda $ 는 매우 중요한 역할을 수행하는데, 해당 값이 1과 같이 매우 큰 경우 전체 weight function이 단순히 평균을 내는 역할을 수행하게 되고, 값이 매우 작아지면, 각 층에 대한 weight 값이 다양하게 적용된다. 

[표-2]

[표-2]는 마지막 층의 결과만 사용했을 때와, 모든 층의 representation을 함께 사용한 경우 성능을 비교한다. 모든 층의 representation을 사용한 경우 성능이 더 좋다는 것을 알 수 있다. 또한, $ \lambda $ 값을 작게 해서 서로 다른 각 층의 weight을 학습하도록 하는 것이 더 좋은 성능을 제공하게 된다. 대부분의 경우 더 작은 $ \lambda $ 값을 사용하는 것이 효과적이다.  하지만, NER 과 같이 작은 크기의 학습 데이터를 사용하는 경우 $ \lambda $ 크기에 큰 영향을 받지 않는다. (표에는 결과가 나와있지 않다.)

# Where to include ELMo?

현재 논문에서 사용한 모든 구조에서는 가장 낮은 층(lowest layer)의 입력에만 ELMo representation을 적용했다. 하지만, 특정 task에 대해서는 output 에도 ELMo representation을 추가하는 것이 성능을 향상시킨 다는 것을 알 수 있었다. [표-3]에서 input과 output에 모두 ELMo representation을 추가한 경우 성능이 더 좋아진 SQuAD와 SNLI의 경우, biRNN 이후에 Attention을 사용하기 때문에 output에 ELMo representation을 추가하는 것이 성능을 향상시켰다. 

[표-3]

# What information is capture by the biLM's representations?

biLM의 문맥을 고려한 representation을 추가함으로서 성능이 좋아지는 것으로 보아, 다양한 NLP task에 유용한 정보를 표현한다는 것을 알 수 있다. 문맥을 고려한 representation은 특정한 단어가 사용되는 문맥에 따라서 서로 다른 표현을 제공해야 한다. [표-4]는 문맥을 고려하지 않는 단어 임베딩인 GloVe와 ELMo를 비교한다.

[표-4]

GloVe의 경우 play라는 단어에 고정된 의미를 부여해서 유사한 단어들도 한정적인 표현만 제공한다. 하지만, ELMo의 경우 "어떠한 역할을 수행한다." 는 의미의 play와 "희곡/연극" 의 의미의 play를 구분할 수 있다. 

# Conclusion

이번 논문에서는 biLM을 이용한 high quality deep context-dependent representation, ELMo를 제안한다. ELMo를 추가함으로서 다양한 NLP task에서 성능 향상을 이뤄낼 수 있었다. biLM의 각 층은 서로 다른 문법/문맥 등의 특징들을 학습하기 때문에, 모든 층을 사용해서 representation을 생성함으로서 task 성능을 향상시킬 수 있었다.


# 참고 논문

  1. Distributed representations of words and phrases and their compositionality. : word2vec 중 skip-gram 방식의 성능 향상
  2. Glove: Global vectors for word representation. : GloVe 에 해단 논문 (리뷰)
  3. Semi-supervised sequence tagging with bidirectional language models. : contextualized word vector의 한 종류 (TagLM, 리뷰)
  4. Learned in translation: Contextualized word vectors. : CoVe 에 대한 논문 (리뷰)
  5. Word representations: A simple and general method for semi-supervised learning. : pretrained word vector 의 한 종류
  6. context2vec: Learning generic context embedding with bidirectional lstm. : context2vec 에 대한 논문
  7. Exploring the limits of language modeling. : ELMo와 유사한 biLM 구조
  8. Bidirectional attention flow for machine comprehension. : BiDAF 에 대한 논문

# 참고 이미지

ELMo representation을 생성하는 방법에 대한 참고 이미지.

728x90

댓글