[요약정리]딥 러닝을 이용한 자연어 처리 입문(Ch10. 엘모 ELMo)


워드 임베딩에서 문맥을 반영한 워드 임베딩이자, 사전 훈련된 언어 모델인 엘모에 대해 공부해보자


참고 사이트 : 딥 러닝을 이용한 자연어 처리 입문 에 대한 글을 요약하였다.

10. 워드 임베딩(Word Embedding)의 종류

7) 엘모(Embeddings from Language Model, ELMo)

: 가장 큰 특징은 사전 훈련된 언어 모델(Pre-trained language model)을 사용


1. ELMo(Embeddings from Language Model)

  • 예를들어, Bank라는 단어는 Bank Account(은행 계좌)와 River Bank(강둑)에서의 전혀 다른 의미를 가진다.
  • 문맥을 반영한 워드 임베딩(Contextualized Word Embedding)이 탄생

2. BiLM(Bidirectional Language Model)의 사전 훈련

  • 순방향(RNN 언어모델)만 일단 본다면 문장으로 부터 단어 단위로 입력을 받는데 RNN 내부의 은닉 상태 \(h_{t}\)는 시점(time-step)이 지날 수록 업데이트 됨
  • 이는 \(h_{t}\)의 값이 문장의 문맥 정보를 점차적으로 반영한다고 볼 수 있음
  • 순방향 뿐만아니라 반대 방향으로 문장을 스캔하는 역방향 RNN 또한 활용
  • 순방향과 역방향 둘 다 활용하여 이 언어 모델을 BiLM(Bidirectional Language Model)이라고 함

  • BiLM의 특징으로는 char CNN이라는 방법으로 글자 단위로 계산하여 마치 서브단어(subword)의 정보를 참고하여 예를 들어 dog와 doggy란 단어의 연관성을 찾을 수 있고 이 방법은 OOV에도 견고하다는 장점 있음

  • 양방향 RNN VS ELMo의 BiLM

    • 양방향 RNN은 은닉 상태를 다음 층의 입력으로 보내기 전에 연결 시키지만 (=은닉이 이어짐)
    • ELMo의 BiLM은 순방향 언어 모델과 역방향 언어 모델을 각각의 은닉 상태만을 다음 은닉층에 보내며 훈련 시킨 후에 은닉상태를 연결(=따로 훈련 후 은닉 이음)

3. 1) biLM의 활용

  • 이 예제에서는 play란 단어가 임베딩이 되고 있다는 가정 하에 ELMo를 설명
  • play라는 단어를 임베딩 하기위해서 ELMo는 위의 점선의 사각형 내부의 각 층의 결과값을 재료로 사용. 다시 말해 각 층의 출력값을 가져옴
  • 여기서 출력값이란 첫번째는 임베딩 층을 말하고, 나머지 층은 각 층의 은닉 상태를 말함.
  • ELMo의 직관적인 아이디어 : 각 층의 출력값이 가진 정보는 전부 서로 다른 종류의 정보를 가지고 있고 이를 모두 활용한다는 것

3. 2) 임베딩 과정

  • 각층의 출력값을 연결(concatenate)

  • 각 층의 출력값 별로 가중치를 준다.

  • 각 층의 출력값을 모두 더한다. (가중합을 구한다.)

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

  • 이렇게 완성된 벡터를 ELMo 표현(represeentation)이라고 함. 지금까지 표현을 얻기 위한 방법이였고 이제 수행하고 싶은 자연어 처리 작업(텍스트 분류, 질의 응답 등등)을 정하자

  • 예를 들어 텍스트 분류 작업을 하기위해 GloVe와 같은 방법론을 사용한 임베딩 벡터가 있다면 ELMo표현을 GloVe 임베딩 벡터와 연결(concatenate)해서 입력을 사용

  • 위에서 사용한 \(s_{1}\), \(s_{1}\), \(s_{1}\), \(γ\)는 훈련 과정에서 학습하고, ELMo 표현을 만드는데 사용되는 사전 훈련된 언어 모델의 가중치는 고정






© 2018. by statssy

Powered by statssy