논문 : arxiv.org/abs/1802.05365

논문 제목 : Deep contextualized word representations


1. Introduction

ELMo가 세상에 나오기 전에 Word2Vec과 Glove가 대표적인 단어 임베딩 방법이었습니다. 여기서 단어 임베딩이란 단어의 의미를 숫자로 표현한 것인데, 선행학습된 임베딩이 NLP의 성능 발전에 큰 영향을 주었습니다. 자연어처리 분야는 데이터가 굉장히 많이 들어가는데, 이 단어 임베딩을 함으로써 더 많은 단어들을 이해하기 때문에 단어 임베딩은 매우 중요합니다. 이 이유는 단어 임베딩을 선행 레이어부터 시작하면, 학습의 속도도 적어지고 단어 임베딩을 하지 않고 학습한다면 학습 도중에 단어 임베딩을 해야하기 때문에 시간이 굉장히 많이 필요합니다.

하지만 기존의 단어임베딩은 두 가지 단점이 있습니다. 먼저 각 단어가 단 한개의 벡터로만 표현된다는 것이고, 두 번째 단점은 단어가 많은 의미를 갖는다는 것입니다. present라는 단어는 선물이라는 뜻과, 현재라는 뜻이 있는데 이 단어는 하나의 벡터로 표현되기 때문에 어느 의미를 내포하는지 알지 못합니다. 이 단점을 바로 ELMo가 해결했는데 이 ELMo는 문장에 따라 같은 단어도 다른 임베딩으로 출력이 가능하게 해줍니다. (EX - Here is your birthday present라면 선물, Live in present not past라면 현재) 이 뿐만 아니라 read과 같이 발음에 따라 달라지는 단어도 ELMo는 해결해줬습니다.

 

ELMo는 문맥에 따라 임베딩을 제공하는 함수입니다. 예를 들면

Here is your birthday present라는 문장과

Live in present not past라는 문장이 있을 때

첫 번째 present는 [10, 7]의 벡터, 두 번째 present는 [5, 4]의 벡터를 나타냅니다. 이것이 가능한 이유는 ELMo의 biLM의 구조와 이 구조의 모든 레이어 정보를 활용하는 데에 있습니다.

출처 : YOUTUBE 허민석

biLM이란 순방향 LM과 역방향 LM을 합친 LM을 말하는데, LM을 자연어처리에서 쓰는 가장 큰 장점은 모델 학습에 따로 레이블링 할 필요가 없다는 것입니다. 단순히 이전 단계의 단어들이 다음 단어를 예측하도록 학습됩니다.

ELMo는 이전의 모델 들에서 최상위 레이어만 사용하는 것과 다르게, 모든 레이어의 출력값을 활용해 임베딩을 만듭니다. 논문에서는 상위 레이어일수록 문맥에 의한 벡터를 출력하고, 하위 레이어일수록 문법에 가까운 벡터를 출력합니다.


2. Related Work

 


3. ELMO: Embeddings from Language Models

순방향 LM이 학습되는 과정을 알아보겠습니다.

출처 : 유튜브 허민석

위와 같은 I read a book yesterday라는 문장이 주어졌을 때, 첫 단계로 단어는 character embedding으로 전환됩니다. 그 후 character 임베딩은 첫 lstm 셀로 입력됩니다. 여기서 character embedding을 사용하는 이유는, 최초 임베딩은 문맥의 영향을 받지 말아야 하고, 이후 레이어들을 문맥에 영향을 받도록 설계되었기 때문입니다. 추가적으로 첫 lstm 출력은 char 임베딩과 residual connection을 가지고 있습니다. residual connection은 두 가지 장점을 가지고 있는데, 첫 째는 상위 레이어들이 하위 레이어의 특징을 잃지 않게 도와주고, 두 번째로는 학습 시 역전파를 통한 gradient vanishing현상을 극복하도록 도와줍니다.

출처 : 유튜브 허민석

순방향 LM은 항상 다음 단어를 예측하도록 학습됩니다. 여기서 한 가지 알고 넘어가야 할 점은 I라는 단어 밖에 없을 때, read가 과거형이라는 정보가 없기 때문에 read를 현재형의 임베딩으로 출력할 가능성이 높습니다. 이런 점을 극복하고자, ELMo는 역방향 LM도 사용하게 됩니다.

출처 : 유튜브 허민석

역방향 LM은 순방향 LM과 반대 방향일뿐 기본 작동 원리는 같습니다. 다음 단어를 바탕으로 전 단어를 예측하는 원리이기 때문에 yesterday를 통해 read를 과거형으로 구분하기 쉽습니다. 이런 식으로 끝방향부터 첫방향까지 학습을 진행합니다.

biLM을 요약하자면 첫째, 최초 임베딩 레이어는 char임베딩을 사용하고 lstm 레이어 사이에는 residual connection이 존재합니다. 순방향 LM은 다음 단어를 예측하고, 역방향 LM은 이전 단어를 예측합니다.

위 논문 내용을 바탕으로 read 단어의 학습 과정을 살펴보겠습니다.

출처 : 유튜브 허민석

read에 대한 biLM의 각 레이어별 출력값이 있을 때, 두 개의 LM의 출력값을 한 번에 사용하기 위해 각 레이어의 출력값을 붙여줍니다. 그리고 각 벡터에 정규화된 가중치를 곱해주고, 각 레이어의 벡터를 더해줘서 하나의 임베딩을 만듭니다. 문맥 정보를 많이 간직한 위쪽 벡터와, 문법 정보를 간직한 아래쪽 벡터를 합치므로 효율적인 임베딩이 될 수 있습니다. 최종적으로 또다른 가중치인 감마 값을 곱해줍니다.


4. Evaluation

ELMo의 임베딩은 최상위 레이어만 사용한 다른 모델들보다 더 좋은 성능을 보여주고 있습니다.

 

728x90
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기