ELMO

fig


Definition

elmo는 Embeddings from Language Model라는 뜻이다!

사전 훈련된 언어 모델(Pre-trained language model)을 사용하기 때문에, eLMo라고 불린다.

bi-LM

fig

ELMo는 일반적인 RNN과 같은 순방향 RNN 뿐만 아니라, 반대 방향으로 문장을 스캔하는 역방향 RNN 또한 활용한다.

양쪽 방향의 언어 모델을 둘 다 활용한다고하여 biLM(Bidirectional Language Model)이라고 한다.

(즉 hidden layer 이 최소 2개 이상)

fig

EMLO는 양방향 RNN과는 다른데,

양방향 RNN은 순방향 RNN의 hidden state 와 역방향의 RNN의 hidden state 를 다음 층의 입력으로 보내기 전에 연결(concatenate)하는 것과

biLM에서의 순방향 언어모델과 역방향 언어모델은 각각의 hidden state 만을 다음 은닉층으로 보내며 훈련시킨 후 hidden state를 연결(concatenate)시키는 것은 다르다.


model workflow

ELMo가 임베딩 벡터(ELMo representation)를 얻는 과정은 아래와 같다.

  1. 각 층의 출력값을 연결(concatenate)한다.
  • 이때 각 층의 출력값이란 첫번째는 임베딩 층을 말하며, 나머지 층은 각 층의 은닉 상태를 말한다.
  1. 각 층의 출력 값 별로 가중치(s1, .. si)를 준다.

  2. 각 층의 출력값을 모두 더한다.

  3. 벡터의 크기를 결정하는 스칼라 매개변수(γ)를 곱한다.

ELMo representation 표현은 그 자체만으로 사용할 수 있지만, 기존의 임베딩 벡터와 함께도 사용할 수 있다.

예를 들어 text classification을 위해서 GloVe와 같은 기존의 방법론을 사용한 임베딩 벡터를 준비했다고 하면,

GloVe를 사용한 임베딩 벡터만 텍스트 분류 작업에 사용하는 것이 아니라

이렇게 준비된 ELMo representation을 GloVe 임베딩 벡터와 연결(concatenate)해서 입력으로 사용할 수 있다.

이 때, ELMo representation을 만드는데 사용되는 사전 훈련된 언어 모델의 가중치는 고정시키고, 위에서 사용한 s₁, s₂, s₃와 γ는 훈련 과정에서 학습된다.


아래 링크에서 구현된 ELMO를 확인할 수 있다.


Reference

  • https://wikidocs.net/33930

  • https://omicro03.medium.com/%EC%9E%90%EC%97%B0%EC%96%B4%EC%B2%98%EB%A6%AC-nlp-16%EC%9D%BC%EC%B0%A8-elmo-a22ca5c287c2