논문 리뷰

ELMO(2018.04): Deep contextualized word representations

cch8ii 2025. 1. 20. 23:47
논문 링크: https://arxiv.org/abs/1802.05365
 

Deep contextualized word representations

We introduce a new type of deep contextualized word representation that models both (1) complex characteristics of word use (e.g., syntax and semantics), and (2) how these uses vary across linguistic contexts (i.e., to model polysemy). Our word vectors are

arxiv.org

한 줄 정리

  • Deep contextualized word representation
    • ELMo는 단어의 문맥(문장에서의 위치와 사용 방식)에 따라 단어 벡터를 동적으로 생성함
    • So, 같은 단어라도 문맥에 따라 다른 의미를 표현할 수 있음
  • biLM(양방향 언어 모델) 활용
    • 순방향과 역방향으로 문장을 읽어 단어의 앞뒤 문맥 정보를 모두 반영함
    • So, 단어의 구문(문법)과 의미를 더 풍부하게 표현함
  • 레이어별 정보 조합
    • biLM의 각 레이어는 서로 다른 정보를 담고 있음
      • 하위 레이어: 구문 정보(품사, 문법 구조)
      • 상위 레이어: 문맥 정보와 의미
    • 모든 레이어의 정보를 가중치로 조합해 Downstream task에서 최적의 성능을 냄
  • 다양한 NLP task에서 성능 향상 & 사전 학습된 표현을 활용한 효율적 학습

Abstract

본 논문에서는 새로운 유형의 Deep contextualized word representation을 소개한다. 이 Representation은 ① 단어 사용의 복잡한 특성 (ex. 구문 및 의미) ② 이러한 단어의 사용이 언어적 맥락에 따라 어떻게 변화하는지 (polysemy 즉 다의성을 모델링) 모두 모델링한다. 단어 벡터는 대규모 텍스트 코퍼스에서 사전학습된 심층 양방향 언어 모델 (biLM: Deep bidirec tional language model) 의 내부 상태를 기반으로 학습된 함수를 사용한다. 이런 Representation이 기존 모델에 쉽게 추가될 수 있으며 Question answering, Textual entailment, Sentiment analysis 을 포함한 6가지 도전적인 NLP task에서 성능을 크게 향상시킨다. 또한 ELMo는 사전 학습된 양방향 언어 모델(biLM)의 내부 계층 여러 레이어를 활용하는데 이와 같이 단순히 최상위 레이어만 쓰는 대신 모든 레이어의 정보를 결합해 사용하면 더 풍부한 정보를 반영할 수 있게 된다. 

Introduction

Pre-trained word representation 은 많은 신경망 기반 Neural language understanding model 에서 중요한 구성 요소이다. 하지만 고품질 Representation을 학습하는 것은 쉽지 않다고 한다. 이상적으로 이런 Representation은 ① 단어 사용의 복잡한 특성 (ex. 구문 및 의미) ② 이러한 단어의 사용이 언어적 맥락에 따라 어떻게 변화하는지 (polysemy 즉 다의성을 모델링) 를 모두 반영해야 한다. 

본 논문에서는 이러한 두 가지 task를 직접적으로 해결하며 기존 모델에 쉽게 통합할 수 있는 방법을 소개한다. 또한 다양한 도전적인 Language understanding task에서 성능을 향상시키는 새로운 유형의 Deep contextualized word representation을 소개한다. 

기존 단어 임베딩 (ex. Word2Vec, GloVe)는 고정된 벡터를 사용했다. 예를 들어 단어 '눈'은 'eye'의 의미를 가진 눈과 'snow'의 의미를 사진 눈이 맥락과 상관없이 같은 벡터로 표현된 것이다. 하지만 본 논문에서는 대규모 텍스트 코퍼스에서 Language model 목표와 결합해 학습된 양방향 LSTM에서 파생된 벡터를 사용한다. 즉, ELMO는 양방향 LSTM인 biLM을 기반으로 해 문장의 왼쪽에서 오른쪽, 오른쪽에서 왼쪽으로 단어를 읽으면서 양쪽의 맥락을 모두 학습한다. ELMo (Embeddings from Language Models) 는 이러한 과정을 통해 단순한 고정된 단어 벡터가 아니라 문맥에 따라 달라지는 동적 단어 벡터를 생성하게 된다. 또한 ELMo는 biLM의 모든 내부 레이어의 출력을 결합해 더 풍부한 표현을 생성하게 된다. 왜냐하면 하위 레이어에서는 주로 구문 정보 (ex. 단어의 품사), 상위 레이어에서는 의미 정보 (ex. 단어의 의미나 맥락)를 학습하게 되기 때문이다. 단순히 LSTM의 최상위 레이어만 사용하는 것보다 성능을 크게 향상시킨다. 

또한 ELMo는 다양한 Language understanding task게 대해 기존 모델에 쉽게 추가될 수 있으며 단순히 ELMo representation을 추가하기만 해도 성능이 크게 향상되었고 오류가 감소된 것을 알 수 있다. 

2. Related work

Pre-trained word representation은 단어의 구문 및 의미 정보를 포착하는 능력 덕분에 최신 NLP 아키텍처에서 표준 구성 요소가 되었다. 하지만 기존의 접근 방식은 각 단어에 대해 맥락을 고려하지 않은 Representation만 만든다는 것이 한계였다. 위에서 언급한 바와 같이 다의성을 고려하지 못한 채 그냥 같은 텍스트라면 같은 Representation을 도출하는 것이다. 

때문에 이런 전통적인 단어 벡터의 한계를 다음과 같이 극복하려고 했다. 

① 서브워드 정보로 확장: 단어 벡터를 서브워드 정보로 풍부하게 만드는 방법

더보기

💡 서브워드 정보로 확장?

"play", "player", "playing"은 서로 관계가 있지만 단어 벡터에서는 이들을 각각 별도로 표현해 단어 간의 고나계를 제대로 반영하지 못할 수 있다. 때문에 단어를 철자 단위로 분해해 학습하는 방법을 사용했고 이를 단어를 구성하는 문자나 부분 문자열을 뜻하는 서브워드를 사용한다고 해 서브워드 정보로 확장하는 방법이라고 하는 것이다. 

만약 이렇게 학습할 경우, 단어가 철자적으로 유사하면 벡터도 유사하게 학습된다. 

② 단어 의미별 개별 벡터 학습: 각 단어의 의미마다 별도의 벡터를 학습하는 방법

더보기

💡의미별 개별 벡터 학습?

단어는 다의성을 가질 수 있기 때문에 단어의 의미에 따라 여거 개의 벡터를 생성하도록 학습시킨다. 이 방식은 단어가 문맥에 따라 다르게 사용되는 상황에서 더 정확한 표현을 제공한다. 

본 논문에서의 접근 방식은 다음과 같다. 

출처: https://www.youtube.com/watch?v=YilcZp3WuoI

문자 단위 컨볼루션 (Character convolution)을 사용해 서브워드 유닛의 장점을 활용하며 미리 정의된 의미 클래스를 예측하도록 명시적으로 훈련하지 않고도 다의적 정보를 자연스럽게 Downstream task에 통합할 수 있게 된다. 

본 논문이 나올 당시 연구들은 Context-dependent representations (문맥 의존적 표현) 학습에 초점을 맞추었다. 왜냐하면 앞에서 계속 언급했던 것처럼 단어들은 간은 단어라도 다른 의미를 가질 수 있기 때문에 문맥을 반영하는 것이 필요했기 때문이다. 2016년에 나온 Context2vec 모델은 중심 단어(pivot word)의 주변 문맥을 인코딩하기 위해 양방향 LSTM을 사용한다. 2017년에 나온 CoVe는 신경 기계 번역 (MT) 모델의 인코더를 활용해 컨텍스트 기반의 벡터를 생성한다. 이러한 기존 방법들은 라벨이 있는 데이터가 필요하는 등 제약이 존재하지만 ELMo는 이러한 제약을 극복한다. 

ELMo는 대규모 코퍼스에서 biLM을 훈련하며 이런 접근법을 Deep contextualized word representation으로 일반화해 다양한 NLP task에서 높은 성능을 보인다. 

또한 기존 연구들에서는 심층 biRNN이 다양한 정보를 인코딩한다는 것을 보여줬다. 하지만 기존 연구에서는 최상위 레이어만 사용해 단어 의미 표현을 학습한다는 것을 보여줬는데 ELMo에서는 전체 레이어를 다 사용하며 유용함을 보여준다. 

이러한 기존 연구들과의 차이점들로 인해 ELMo는 대규모 데이터와 문맥 정보를 활용해 다양한 작업에서 뛰어난 성능을 보여준다.  

3. ELMo: EmbeddingsfromLanguage Models

위에서 계속 언급한 것처럼 ELMo는 전체 입력 문장을 기반으로 단어 Representation을 생성한다. 해당 Representation은 Character convolution을 사용하는 biLM 에서 계산되며 내부 네트워크 상태의 선형 함수로 정의된다. 이러한 설계는 반지도 학습을 가능하게 하는데 biLM은 대규모로 사전학습되며 기존 신경망 NLP 아키텍처에 쉽게 통합될 수 있다는 장점을 가지고 있다. 

이렇게만 보면 이해가 잘 안 가는데 자세한 내용들은 풀어서 아래에서 설명하겠다. 

3.1 Bidirectional language models

가장 먼저 양방향 언어 모델인 biLM이다. 

biLM을 이해하기 전 순방향 언어모델을 먼저 이해해보자. 

순방향 언어 모델에서의 토큰 예측하는 식

순방향 언어 모델(Forward LM)은 문장을 왼쪽에서 오른쪽으로 처리하며, 각 단어의 이전 단어 정보를 바탕으로 현재 단어의 확률을 계산한다. 주어진 N개의 토큰 시퀀스 (t_1, t_2, ,..., t_N) 에서 Forward LM은 t_1부터 t_{k-1} 까지 이전 정보를 기반으로 토큰 t_k의 확률을 계산한다. 즉, 이전 단어들의 문맥을 바탕으로 확률을 계산하는 것이다. 

학습 방법은 다음과 같다. 먼저 토큰 임베딩 또는 문자 기반 CNN을 사용해 문맥에 비의존적인 토큰 표현인 x_k^{LM}을 계산하고 이를 L개의 순방향 LSTM 레이어에 통과시킨다. 각 위치 k에서  각 LSTM 레이어는 문맥에 의존적인 토큰 표현인 h_{k, j}^{LM} (j = 1, 2, ..., L) 을 출력하며 최상위 LSTM 레이어의 출력 h_{k, j}^{LM} 은 Softmax 레이어를 통해 다음 토큰 t_{k+1}을 예측하는 데 사용된다. 

역방향 언어 모델에서의 토큰 예측하는 식

역방향 언어 모델 (Backward LM) 은 Forward LM과 유사하지만 시퀀스를 역순으로 처리해 미래의 문맥을 바탕으로 이전 토큰을 예측한다. 역방향 LSTM 레이어 j는 t_k와 미래 문맥 (t_{k+1}, ..., t_N)를 기반으로 문맥 의존적 표현 h_{k, j}^{LM} 을 생성한다. 

출처: https://jalammar.github.io/illustrated-bert/
양방향 언어 모델

양방향 언어 모델 (biLM)은 Forward LM과 Backward LM을 결합하며 순방향과 역방향의 Log likelihood를 최대화한다. 이때 토큰 representation x와 Softmax 레이어의 s 파라미터는 순방향과 역방향에서 공유되지만 각 방향의 LSTM 파라미터는 별도로 유지된다. 즉, 양방향 언어모델은 순방향과 역방향 각각의 은닉 상태만을 다음 은닉틍으로 보내며 훈련시킨 후 ELMo 표현으로 사용하기 위해 은닉 상태를 연결시킨다.

출처: https://www.analyticsvidhya.com/blog/2019/03/learn-to-use-elmo-to-extract-features-from-text/

3.2 ELMo

출처: https://jalammar.github.io/illustrated-bert/

기존 방식들은 최상위 레이어의 정보만 사용하는 반면 ELMo는 biLM에서 여러 레이어의 Representation들을 결합해 단어 벡터를 생성한다. 또한 Task에 맞게 각 레이어 가중치 조합을 통해 중요도를 다르게 부여하기도 한다.

R_k는 biLM에서 나온 각 토큰 t_k의 2L + 1개의 Representation으로 각 토큰 t_k에 대해 L-layer biLM은 다음과 같은 2L + 1개의 Representation 집합 R_k를 계산한다. 

여기서 h_{k, 0}^{LM} 은 토큰 레이어를 나타내고 각 biLSTM 레이어의 h_{k, j}^{LM} 는 순방향 및 역방향 출력의 결합이다. 

이렇게 biLM의 출력은 R_k라는 여러 레이어의 정보 묶음으로 제공되지만 이를 단일 벡터 (ELMo 벡터) 로 변환해야 한다. 즉, 여러 계층의 정보들을 단일벡터로 압축해 예를 들어 하위 레이어가 가지고 있는 문법, 구분 정보와 상위 레이어에서 가지고 있는 문맥, 의미 정보를 모두 반영할 수 있게 되는 것이다. 이때 Task 별로 각 레이어의 가중치를 조정해 가장 적합한 정보 조합을 제공하게 된다. 

때문에 Downstream model에 입력시키기 위해 R_k의 모든 레이어를 단일 벡터로 압축한다. 

모든 레이어를 단일 벡터로 압축시킴

가장 간단한 경우 ELMo는 최상위 레이어만 선택한다. 

최상위 레이어만 선택하는 기존의 방식과 유사한 경우

또한 위에서 언급했던 것과 같이 task에 따라 가중치를 다르게 둘 수도 있다. 

레이어마다 가중치를 다르게 두는 방법

더보기

💡

출처:https://www.youtube.com/watch?v=YilcZp3WuoI

s_j^{task}는 각 task에 대해 Softmax로 정규화된 가중치로 이를 통해 biLM 레이어의 중요도를 조정한다.

γ^{task}는 스칼라 파라미터로 간단하게 최적화 과정에서 중요한 역할을 한다고만 이해했다. 

또한 biLM 레이어마다 활성화의 분포가 다르기 때문에 경우에 따라 각 biLM 레이어에 레이어 정규화를 적용해 가중치 적용 전 분포를 조정하는 것이 도움이 된다고 논문에서는 언급한다. 

결국 ELMo는 biLM의 모든 계층 정보를 작업별로 가중치 조합하여 최적의 단어 표현을 생성하는데 이때 단순히 최상위 계층을 사용하는 대신, 각 계층의 특성을 활용해 풍부하고 유연한 표현을 만들 수 있는 것이다. 

3.3 Using biLMs for supervised NLP tasks

다음은 biLM을 활용한 지도학습 NLP task에 관한 설명이다. 사전학습된 biLM과 특정 NLP task 를 위한 지도 학습 아키텍처가 주어졌을 때 biLM을 사용해 모델을 개선하는 과정은 간단하다. biLM을 실행해 각 단어에 대한 모든 레이어 Representation을 기록한 다음 이 Representation을 모델이 학습하도록 설정해야 한다는 것이다. 즉, 쉽게 이야기하자면 ELMo를 지도 학습 모델에 통합하는 방법은 biLM의 가중치를 고정하고 ELMo 벡터를 기존 입력 벡터와 연결해 모델에 전달하는 것이다. 

더보기

💡 ELMo를 왜 추가하지?

ELMo를 갑자기 지도 학습 모델에 추가? 이게 무슨 말이지? 싶을 수 있다. 

하지만 위에 언급했었던 말을 다시 돌이켜보면 알 수 있다. 본 논문에서는 기존에 고정된 벡터를 사용해 문맥 정보를 제대로 반영하지 못한다는 한계를 지적하며 문맥에 따라 각 잔어를 동적으로 벡터화하는 방법을 제공하는 ELMo를 제안했다. 

지도 학습 모델은 NLP task에서 토큰 (단어) 표현을 입력으로 받는데 이때의 Representation을 ELMo가 만든 벡터를 추가해 문맥 정보를 반영한 벡터를 넣어줘 성능을 향상시키는 것이다. 

이때 지도 학습 모델의 기본 구조를 고려해야 한다. 먼저 biLM이 없는 지도 학습 모델의 가장 하위 레이어를 고려한다. 대부분의 지도 학습 NLP 모델은 하위 레이어에서 공통된 아키텍처를 공유하기 때문에 ELMo를 일관되고 통합된 방식으로 추가할 수 있다. 왜냐하면 지도 학습 NLP 모델의 경우 주어진 토큰 시퀀스 (t_1, t_2, ,..., t_N) 에서 일반적으로 사전 학습된 단어 임베딩과 선택적으로 문자 기반 표현을 사용하여 각 토큰 위치에서 문맥에 비의존적인 토큰 Representation x_k를 생성한다. 이후 양방향 RNN, CNN 또는 Feedforward network를 사용해 문맥 의존적 Representation h_k를 생성한다. 

이런 지도 학습 모델에 ELMo를 추가하기 위해선 다음과 같은 단계들이 필요하다. 

① biLM의 가중치를 고정 (Freeze) 한다. 

biLM (ELMo가 기반으로 하는 언어 모델)은 이미 사전 학습된 상태이다. 이를 수정하지 않고 해당 모델이 생성한 벡터 (= ELMo 벡터) 만 활용한다. 

② ELMo_k^{task} 를 x_k와 Concatenate해 ELMo로 확장된 Representation [x_k ; ELMo_k^{task}] 를 생성한다. 

③ 이렇게 확장된 Representation을 모델의 RNN에 전달한다. 

이렇게 되면 ELMo를 출력 레이어에서 다시 한 번 결합해 성능을 높이게 된다. 즉, RNN의 최종 출력 h_k 에 ELMo 벡터를 연결하게 되는 것이다. 때문에 새 출력은 [h_k ; ELMo_k^{task}] 가 된다. 

이렇게 기본 지도 학습 모델의 나머지 구조는 변경할 필요가 없다. 그저 ELMo 벡터를 단순히 기존 벡터와 Concatenate하거나 출력 단계에 추가만 하면 되는 것이다.

여기서 모델이 과적합되지 않도록 ELMo 벡터에 적당한 드롭 아웃을 적용한다. 또한 ELMo 벡터가 biLM 의 모든 레이어 정보 (하위 ~ 상위) 평균값에 가까워지도록, 즉 ELMo 벡터 가중치가 안정적으로 학습되도록 L2 정규화를 적용해준다. 

더보기

💡 ELMo 벡터에 드롭아웃을 적용..? 

벡터에 드롭아웃을 적용을 어떻게 하는걸까? 궁금증이 생겨서 더 찾아보았다. 

하지만 ELMo 벡터 자체에 뭔가 따로 드롭아웃을 적용하는 느낌이 아니라 그냥 기존 드롭아웃 적용하는 것처럼 하는 방식이었다. 즉, ELMo 벡터는 biLM의 여러 레이어에서 나온 정보를 조합해 생성되는 것이며 최종적으로 Task에 사용되는 단어 벡터라고 할 수 있다. 이러한 벡터를 그대로 사용하면 모델이 특정 레이어의 정보에 지나치게 의존할 가능성이 있기 때문에 드롭아웃을 적용하는 것이다. 예를 들어 ELMo 벡터가 [0.3, 0.5, 0.8, 0.1] 이라면 모든 값이 그대로 모델에 입력되는 경우가 드롭아웃이 없는 경우이고 드롭아웃 비율을 0.5로 적용하는 경우가 [0.3, 0, 0.8, 0] 벡터를 입력값을 사용하는 것이다. 

드롭아웃은 ELMo 벡터의 일부 값을 무작위로 제외해 학습 중 과적합을 방지하는 효과를 가진다. 

3.4 Pre-trained bidirectional language model architecture

본 논문에서 제안하는 사전학습된 biLM은 양방향이 서로 영향을 주며 학습하게끔 했으며 LSTM 레이어 간 Residual connection을 만들어 하위 레이어의 출력을 상위 레이어로 바로 연결해 학습 과정에서 Gradient vanishing 문제를 해결했다. 

더보기

💡 양방향 모델의 공동 학습을 지원한다?

양방향이 서로 영향을 주며 학습하게끔 했다는 이야기를 논문에서는 '공동 학습이 가능하게 했다.' 라고 표현한다. 

기존의 biLSTM 모델은 순방향 LSTM과 역방향 LSTM의 결과를 독립적으로 계산한 후 합(concatenate 또는 합산)해 최종 결과를 만든다. 이렇게 순방향과 역방향이 독립적으로 학습되므로 두 방향 간에 정보 교환이 이루어지지 않아 이로 인해 모델이 두 방향의 학습된 정보를 충분히 활용하지 못할 수 있다. 

하지만 ELMo 는 양방향 모델을 동시에 학습하도록 설계되어있다. 

즉, 순방향과 역방향 모델이 동일한 Softmax 레이어과 토큰 임베딩을 공유해 위에서 언급했던 순방향과 역방향의 Log likelihood를 동시에 최대화하는 것이다. 가중치를 공유한다는 것은 순방향과 역방향이 같은 토큰 표현(embedding)과 Softmax 가중치를 공유하므로 두 모델이 같은 기준을 기반으로 학습된다는 것을 의미한다. 두 방향의 학습 목표가 연결되어 있어 더 정교하고 풍부한 단어 표현을 생성할 수 있게 된다. 

언어 모델의 Perplexity (혼란도)와 모델 크기 및 Downstream task의 계산 요구사항 간의 균형을 맞추면서도 단어를 기준으로 학습하는 것이 아닌 문자 기반 입력을 사용해 학습하는 방식을 유지하기 위해 CNN-BIG-LSTM 모델에서 모든 임베딩 및 히든 차원을 절반으로 줄여 ELMo를 구현했다. 최종 모델은 4096 유닛과 512차원 프로젝션을 갖는 2개의 biLSTM 레이어를 사용하며 첫 번째와 두 번째 레이어 간에 Residual connection 이 포함된다.

입력된 단어를 문자 단위로 분해한 후 048개의 문자 기반 n-gram 컨볼루션 필터를 적용한다. 그후 하이웨이 레이어과 선형 프로젝션을 통해 512차원 Representation으로 축소한다. 

이러한 문자 기반 입력 덕분에 학습 데이터에 없는 새로운 단어(예: 고유명사, 드문 단어)도 표현을 생성할 수 있다는 장점이 존재한다. 

또한 biLM은 각 입력 단어에 대해 3개의 표현 레이어를 제공한다. 즉, ELMo가 단어를 표현하기 위해 biLM(양방향 언어 모델)에서 3개의 서로 다른 정보를 생성한다는 의미이다. 기존의 전통적인 단어 임베딩이 제공하는 단일 레이어 Representation보다 훨씬 풍부하다는 장점을 가진다. 

더보기

💡 3개의 표현 레이어? 

입력된 문장을 처리할 때 여러 레이어의 출력을 조합해서 단어를 표현한다는 뜻으로 이해했다. 

처음에 언급했던 것과 같이 각 레이어는 다른 종류의 정보를 포함하게 된다. 단어의 품사와 구문 구조를 표현하는 레이어, 문맥 정보를 표현하는 레이어, 높은 수준의 의미 정보 (다의성)를 표현하는 레이어 등 이러한 레이어들의 출력을 조합해서 단어를 표현하기 때문에 단어의 의미를 더 풍부하게 표현할 수 있다는 것이다. 

참고로 초기 레이어 (하위 레이어) 는 주로 구문적 정보를 포착하고 상위 레이어는 더 의미 중심적인 정보를 담는다고 한다. 

ELMo는 1B Word Benchmark 데이터셋에서 학습되었으며 평균 perplexity(모델의 예측 성능 지표)는 39.7로 기존 모델보다 약간 높은 수치이지만 범용적으로 사용할 수 있는 Representation을 제공할 수 있다. 또한 사전 학습된 biLM은 다양한 NLP 작업에 적용할 수 있으며 특정 도메인 데이터에 Fine-tuning을 진행하면 성능이 더 향상된다. 

4. Evaluation

ELMo는 6가지 주요 NLP task에서 뛰어난 성능 향상을 보여주며 모든 Task에서 최신(state-of-the-art) 결과를 달성했다고 한다. 모델에 ELMo를 추가하면 상대적 오류가 6~20% 감소하며 다양한 모델 아키텍처와 Task에서도 일관된 결과로 나타났다. 

Question answering

10만 개 이상의 질문-답변 쌍이 포함되어 있는 Stanford Question Answering Dataset (SQuAD) 데이터셋을 사용했고 BiDAF 모델을 기반으로 GRU 및 self-attention을 추가한 개선된 모델을 기본 모델로 사용했다. 결과적으로 ELMo 추가 후 F1 score가 81.1%에서 85.8%로 4.7% 증가했으며 오류는 24.9% 감소했다. CoVe 사용 시 개선 폭(1.8%)보다 ELMo의 개선 효과가 훨씬 크고 앙상블 모델에서는 87.4%로 제출 당시 최고 성능을 기록했다. 

Textual entailment

다음은 텍스트 함의로 주어진 문장이 다른 문장의 가설을 뒷받침하는지 확인하는 Task이다. 55만 개 문장 쌍이 들어있는 Stanford Natural Language Inference(SNLI) 데이터셋을 사용했으며 기본 모델로는 ESIM을 사용했다. 그 결과, ELMo 추가 후 정확도가 평균적으로 0.7% 향상된 것을 확인할 수 있었고 5개의 모델을 결합한 앙상블 정확도는 89.3%로 이전 최고(88.9%)를 초과했다. 

Semantic role labeling

해당 Task는 문장에서 "누가, 무엇을, 누구에게"와 같은 구문 구조를 모델링하는 Task로 OntoNotes 데이터셋을 사용했으며 기본 모델로는 8층 biLSTM 기반 모델을 사용했다. ELMo 추가 후 F1 score가 81.4%에서 84.6%로 3.2% 증가했고 단일 모델이 이전 앙상블 결과(83.4%)를 초과했다. 

Coreference resolution

다음으로 텍스트에서 같은 실체를 지칭하는 표현(지칭어)을 묶는 Task에서는 CoNLL 2012 공유 작업의 OntoNotes 주석 데이터셋을 활용했으며 기본 모델로는 Span 기반 뉴럴 네트워크를 사용했다. 그 결과, ELMo 추가 후 F1 score가 67.2%에서 70.4%로 3.2% 증가했다. 이는 이전 최고 앙상블 결과보다 1.6% 향상된 결과이다. 

Named entity extraction

또한 텍스트에서 인물, 장소, 기관 등 특정 유형의 엔터티를 식별하는 개체명 인식 Task에서도  ELMo 추가 후 평균 F1 score가 92.22%였으며 biLM의 모든 계층 정보를 활용해 더 나은 결과를 제공했다. 

여기서 사용한 데이터셋은 CoNLL 2003 NER Task이며 biLSTM-CRF 기반 모델을 기본 모델로 사용했다. 

Sentiment analysis

마지막으로 감정 분석이다. 영화 리뷰에서 문장의 감정을 5단계(매우 부정적~매우 긍정적)로 분류하는 Task인데 Stanford Sentiment Treebank(SST-5) 데이터셋을 활용했으며 Bi-attentive Classification Network (BCN)를 기본 모델로 사용했다. 결과, ELMo 추가 후 정확도가 1.0% 상승하며 이전 최고 성능을 갱신했다. 

5. Analysis

해당 부분에서는 ELMo Representation의 주요 주장을 검증하고 흥미로운 측명을 분석한다. 

5.1 에서는 Downstream task에서 Deep contextualized word representation을 사용하는 것이 이전 연구에서 단순히 최상위 계층만 사용하는 방식보다 성능이 향상되며 ELMo Representation 이 전반적으로 가장 우수한 성능을 제공함을 보여준다. 

5.3 에서는 biLM이 포착한 다양한 종류의 컨텍스트 정보를 탐구한다. 위에서 계속 이야기했던 구문 정보는 하위 레이어에서 더 잘 표현되고, 의미 정보는 상위 레이어에서 포착된다는 주장을 뒷받침하는 것이다. 

5.2 에서는 ELMo가 작업 모델에 포함되는 위치, 5.4 에서는 학습 데이터 크기, 5.5 에서는 Task 별 ELMo 가중치 시각화를 분석한다. 

5.1 Alternate layer weighting schemes

모든 레이어를 사용하는 Deep contextualized word representation을 사용하면 최상위 레이어만 사용하는 것보다 성능이 향상된다. 표 2를 보면 SQuAD에서는 최상위레이어만 사용할 때 F1 score가 3.9% 상승하고 모든 레이어를 평균하면 추가로 0.3% 상승하는 것을 알 수 있다. 또한 레이어별 가중치를 학습했을 때, 즉 각 레이어에 대해 적절한 가중치를 자동으로 학습해 특정 Task에서 중요한 정보를 강조했을 때 추가적으로 0.2% F1 score가 증가하는 것을 볼 수 있다. ( λ = 0.001) 

5.2 Where to include ELMo?

ELMo를 어디에 포함하면 성능이 더 좋은지 살펴보았을 때 SNLI와 SQuAD에서는 입력 레이어와 출력 레이어 모두에 ELMo를 포함하면 더 나은 성능을 보였고, SRL과 Coreference resolution task에서는 입력 레이어에만 ELMo를 포함할 때 성능이 가장 높았다. 

이는 SNLI와 SQuAD 아키텍처가 biRNN 뒤에 attention 계층을 사용하기 때문에, 출력 계층에서 biLM의 표현을 더 잘 활용할 수 있었고 반면 SRL은 Task 별 문맥 정보가 biLM 표현보다 더 중요한 역할을 하는 것 같다고 언급했다. 

5.3 What information is captured by the biLM’s representations?

biLM representation이 담고 있는 정보는 무엇일까? 

Word sense disambiguation

가장 먼저 단어 의미 해석(WSD)이다. 앞서 언급한 것처럼 biLM은 문맥을 활용해 다의어의 의미를 구분할 수 있다. 상위 레이어의 F1 score(69.0)가 하위 레이어보다 높으며, 이는 WSD 전용 지도 학습 모델과 비슷한 수준이고 CoVe보다 높은 WSD 성능을 보였다. 

POS tagging

다음으로 품사태깅이다. biLM은 구문 정보(품사)를 하위 레이어에서 더 잘 학습하는 것을 알 수 있었던 이유는 하위 레이어의 정확도가 상위 레이어보다 높았다는 결과 때문이다. 이는 다층 biLSTM에서 구문 정보가 하위 레이어에서 포착된다는 이전 연구와 일치하며 CoVe와 비교해 biLM은 더 높은 정확도를 기록했다. 

Implications for supervised tasks

결국 biLM의 각 레이어는 서로 다른 정보를 Capture 한다. 따라서 모든 레이어의 정보를 포함하면 Downstream task 성능이 크게 향상하는 것이다. biLM representation은 CoVe보다 더 일반화된 정보를 제공하여 다양한 Task에서 더 나은 성능을 보인다. 

5.4 Sample efficiency

ELMo는 학습 속도를 크게 향상시킨다. 그림 1을 보면 SRL 모델에서 ELMo 없이 486 에포크가 필요한 성능을 ELMo 추가 시 10 에포크 만에 초과한 것을 볼 수 있다. 이는 98%의 파라미터 업데이트 감소 때문이다. 

더보기

💡 파라미터 업데이트 감소? 

파라미터 업데이트 감소는 ELMo를 추가했을 때 모델 학습에 필요한 시간이 훨씬 줄어든다는 의미이다. 학습 속도가 빨라지는 이유는 ELMo가 사전 학습된 정보를 제공하기 때문이라고 할 수 있다. 

기존 일반적인 NLP 모델은 학습 데이터를 기반으로 단어와 문맥의 의미를 새로 학습해야 한다. 이 과정에서 많은 파라미터가 업데이트되며 수많은 학습 반복이 필요하다. 

하지만 ELMo를 사용하면 ELMo는 이미 사전 학습된 biLM에서 생성된 풍부한 문맥 정보를 제공하기 때문에 학습 모델이 처음부터 모든 것을 새로 학습할 필요가 없게 되는 것이다. 

또한 ELMo를 추가한 모델은 작은 학습 데이터에서도 높은 성능을 보이는데 그림 1의 오른쪽 그림을 보면 SRL에서 ELMo를 사용한 모델은 전체 데이터의 1%로도 ELMo 없는 모델이 10% 데이터로 달성한 성능과 비슷하게 나온 것을 볼 수 있다. 

5.5 Visualization of learned weights

학습된 가중치를 시각화해보았을 때 모델의 입력 레이어에서는 주로 biLSTM의 첫 번째 레이어(구문 정보)를 선호하며 Coreference resolution과 SQuAD에서는 이 레이어에 강한 가중치를 둔 것을 알 수 있다. 출력 레이어에서는 가중치가 상대적으로 균형 있게 분포하지만 하위 레이어에 약간 더 높은 가중치를 둔 것을 그림을 통해 알 수 있다. 

이를 통해 Task에 따라 입력 레이어(하위 정보)나 출력 레이어(전체 정보)를 선호하는 것을 알 수 있다. 

6. Conclusion

본 논문은 biLMs를 활용하여 고품질의 Deep contextualized word representation 을 학습하는 일반적인 접근 방식을 제안한다. ELMo를 다양한 NLP task에 적용했을 때 큰 성능 향상을 보였다. 

또한 biLM 레이어가 단어의 문맥 내 구문 및 의미 정보를 효율적으로 인코딩하며 모든 레이어를 활용했을 때 전체 task 성능이 향상됨을 확인했다. 


참고한 사이트