본문 바로가기
Natural Language Processing

[간단한 Review] Deep contextualized word representations (ELMo)

by 지구킹 2023. 5. 22.
728x90

Abstract

Deep contextualized word representation 모델은 아래의 사항들을 내포하고 있다.

  • 단어의 복잡한 특성
  • 단어 사용이 언어적인 문맥에서 다양한지 (모델의 다형성)

예를 들어, Bank라는 단어를 생각해보자. Bank Account(은행 계좌)와 River Bank (강둑)에서의 Bank는 전혀 다른 의미를 가지게 된다.

 

따라서 같은 표기의 단어더라도 문맥에 따라 다르게 워드 임베딩을 한다면 성능을 향상시킬 수 있을 것이다.

 

따라서 Contextualized Word Embedding 방식 즉, 문맥을 반영한 워드 임베딩을 활용한 모델을 이 논문에서 제안했다.

ELMo : Embedding from Language Models

  • RNN 언어 모델은 문장으로부터 단어 단위로 입력을 받는다. 따라서 RNN 내부의 은닉 상태는 시점이 지날수록 점점 업데이트 된다. 이는 결과적으로 RNN의 은닉 상태의 값이 문장의 문맥 정보를 점차적으로 반영한다고 말할 수 있다.
  • 하지만, ELMO는 기존의 RNN과는 다르게 순방향 RNN 뿐만 아니라, 반대 방향으로 문장을 스캔하는 역방향 RNN 또한 활용한다.
  • 따라서 양쪽 방향의 언어 모델을 둘 다 학습하여 활용한다해서 이 언어 모델을 biLM이라고 한다.
  • 좀 더 구체적으로 설명하자면, ELMO는 문장을 입력 받아 단어 토큰의 임베딩 벡터를 만든다. 커다란 말뭉치를 2개 층으로 이루어진 bi-LSTM이 만들어 내는 임베딩 벡터를 사용한다.
  • 이 벡터는 bi-LSTM의 내부 층에 대한 은닉 벡터에 가중치를 부여한 뒤 선형 결합해서 사용한다. 선형 결합을 통해 나타나는 벡터는 단어가 가진 많은 특성에 대한 정보를 담고 있게 된다. 각 은닉 벡터 중에서 위쪽에 위치한 LSTM은 단어의 문맥적인 의미를 포착할 수 있고, 아래쪽에 위치한 LSTM은 단어의 구조적인 의미를 포착할 수 있다.

  • 아래 그림과 같이 ELMo가 입력 문장을 양 방향으로 읽어 나간다.

  • 이후에는 단어마다 순방향 LSTM의 은닉 벡터 및 토큰 임베딩 벡터역방향 LSTM의 은닉 벡터 및 토큰 임베딩 벡터concatenate한다.
  • 이어 붙인 벡터에 각각 가중치를 곱해준 다음, 마지막으로 3개의 벡터를 더해준 벡터를 ELMo의 임베딩 벡터로 사용한다.
    • 이떄, s0,s1,s2는 학습을 통해 갱신되는 파라미터로 수행하고자 하는 테스크에 따라 달라진다.
    • 문맥적인 요소가 중요한 태스크 에서는 s2가 커지게 되고, 구조 관계가 중요한 태스크에서는 하위 레이어에 곱해주는 s1이 커지게 된다.

  • 이때, biLM이 BiLSTM과 비슷하다고 생각할 수 있다. 하지만 차이점은
    • BiLSTM은 RNN의 은닉 상태와 역방향 RNN의 은닉 상태를 연결하여 다음 층의 입력으로 사용한다.
    • biLM은 순방향 언어모델과 역방향 언어모델이라는 두 개의 언어 모델을 별개의 모델로 보고 학습 한다.

Results

실험 결과 6개의 주요 NLP 태스크에서 제일 좋은 성능을 보였다.

 

Additional Experiments

임베딩 벡터와 은닉 벡터에 가중치를 어떻게 부여할 것인가?

  • L+1개의 벡터에 모두 다른 가중치를 적용할 때의 성능이 가장 좋다.
  • 벡터의 선형 결합을 사용하지 않고 하나의 벡터만 사용한다면 L번째 층, 즉 최상단 은닉층이 생성한 벡터를 사용하는 것이 그냥 단어 임베딩 벡터를 사용하는 것 보다 좋다.

ELMo 임베딩 벡터를 어떤 단계에 Concatenate하는 것이 좋은가?

  • 입출력 단계에 모두 ELMo 임베딩을 적용하는 것이 좋다.
  • 입, 출력 벡터 중 하나에만 적용하는 경우는 모두 적용한 경우보다는 떨어지지만, 아무것도 사용하지 않은 모델 보다는 좋은 성능을 보여준다.

Source code

https://github.com/allenai/allennlp/tree/main/allennlp/modules

Reference

728x90

'Natural Language Processing' 카테고리의 다른 글

Self-paced Learning  (0) 2023.10.31
NLP metrics 정리 (BLEU vs sacreBLEU vs spBLEU 란)  (1) 2023.05.10

댓글