ELMO : Deep contextualized word representations

홍선재·2025년 3월 24일


요즘 자연어처리(NLP)를 공부하다 보면 단어 임베딩이라는 개념은 빠질 수 없다. 단어를 숫자 벡터로 표현해서 기계가 언어를 이해하게 만드는 기본 도구다. 그런데 단어 임베딩 방식에도 다양한 진화가 있었고, 그 한계를 해결하려는 시도들이 이어져왔다. ELMo 논문에서는 이 흐름을 잘 정리해주고 있다.

Abstract

  1. 기존의 문제점

    • 이전의 단어 벡터(Word2vec, glove 등) 단어마다 고정된 벡터만 제공했다.
    • 그래서 문맥에 따라 의미가 달라지는 경우 구분을 하기 어려웠다.

    1️⃣ (부모님께 게임을 하다 걸렸을 때) 잘한다

    2️⃣ (공부를 하다가 발견 당했을 때) 잘한다

    1번과 2번은 같은 잘한다지만 문맥적 의미에 따라 잘한다의 의미는 달라진다.

  2. ELMo는 문장 전체를 보고 단어 벡터를 정하는 방식이다.

    • 단어의 의미가 문맥에 따라 달라져야 한다.
    • 그래서 ELMo는 문장 전체를 보고 단어 벡터를 정하는 방식이다.
    • 방법 :
      • 양방향 LSTM(biLSTM)으로 구성된 언어 모델(BiLM)을 학습해서 그 내부에서 나온 다양한 층의 정보를 이용해 단어 표현을 만든다.
  3. 장점

    • ELMo 벡터는 기존 모델에 쉽게 추가가 가능하다.
    • 감정 분석, 질문 응답, 텍스트 추론 등 6가지 대표 NLP 과제에서 적용해봤더니 → 모든 경우에서 성능이 개선됨
  4. 깊은 층의 활용

    • 엘모는 단순히 마지막 층 출력에만 쓰지 않는다.
    • biLSTM의 모든 층을 조합하여 사용하는 게 핵심이다.
      • 어떤 층은 문법 정보 잘 잡고, 어떤 층은 의미 정보를 잘 잡는다.

1. Introduction

기존의 단어 임베딩(Word2Vec, GloVe 등)은 많은 NLP 모델에서 핵심 구성 요소지만, 여전히 문제점이 있다.

문제점 2가지

  1. 단어의 복잡한 특성 표현이 부족하다.
    • 예 : 문법적인 정보(품사), 의미적인 뉘양스 등을 구분하지 못한다.
  2. 문맥에 따라 단어 의미가 달라지는 현상(polysemy)를 잘 못한다.
    • ex)
      • He went to the bank to get money ⇒ 은행
      • he sat by the bank of the river ⇒ 강가
      • 기존 방식은 저 bank를 같은 벡터로 처리한다.

그래서 어떻게 해야하냐?

Deep Contextualized word representation) 을 제안했다.

  • 단어 벡터를 문장 전체를 고려해서 동적으로 생성한다.
  • 이 벡터는 biLSTM 기반 언어 모델(biLM)의 내부 상태에서 나온다.
  • 이 모델을 pretrian하고, 이후에 다양한 NLP 작업에 추가하는 방식으로 사용한다.

ELMo란?

ELMo = Embeddings from Language Models

(언어 모델로부터 만든 임베딩)

  • deep → 단어 표현이 단순히 하나의 층이 아니라 여러 층을 조합한 것
  • contexualized → 문장 안에서 단어의 의미가 매번 달라진다.
항목내용
기존 한계문맥 무시, 다의어 처리 어려움
ELMo의 제안문맥 기반 단어 표현, biLSTM 언어 모델 사용
작동 방식사전 학습된 biLM의 여러 층을 조합해서 단어 표현 생성
장점다양한 NLP 과제에서 성능 향상, 추가하기 쉬움
중요한 포인트내부 상태 전체를 활용해야 더 좋은 결과가 나온다

2. Related Work

기존 단어 임베딩의 한계

가장 널리 알려진 단어 임베딩 방식은 word2vec과 glove이다. 이들은 대규모 말뭉치에서 단어 간의 공동 등장 빈도를 바탕으로 각 단어를 고정된 벡터로 표현한다. 문제는 이 방식은 단어의 의미를 항상 동일하게 표현한다는 점이다. 즉 문맥을 반영하지 못하고 기계처럼 단어 번역만 하는것 이다.

한계를 보완하려는 시도

고정된 단어 벡터의 한계를 극복하기 위해 여러 연구들이 등장했다.

  • subword 기반 접근 : 단어 자체를 글자 단위나 하위 단위로 분해해서 단어 내부 구조를 반영하는 방식이다. 예를 들어 FastText에서는 ‘unbelievable’이라는 단어를 ‘un’과 ‘believe’, able’ 등의 부분으로 나눠 표현력을 높인다.
  • 단어 의미(sense) 별 벡터 분리 : 같은 단어라도 문맥에 따라 다른 의미를 가질 수 있으니 의미별로 따로 벡터를 만들자는 접근이다.

여전히 완벽하게 문맥을 반영하진 못했다. 대부분의 경우 문맥 정보는 사후 처리 형태로 활용되거나 정해진 의미 클래스가 있어야 했다.

문맥 기반 단어 표현의 등장

context를 직접 반영하는 방식들이 나왔다.

  • context2vec : 중심 단어 주변 문맥을 양방향 LSTM으로 인코딩 해 단어 벡터를 생성한다. 다만 중심 단어 자체와 문맥이 분리되어 있어 완전한 통합은 어렵다.
  • Cove : NMT 모델의 인코더를 이용해 문맥 기반 벡터를 만듦
  • Perters et al (2017) : ELMO 전작 (논문 참조)

ELMo의 차별점

  • 단어 벡터를 문장 전체의 문맥에 다라 동적으로 생성한다.
  • biLSTM 기반의 언어 모델(biLM)을 pretraining해 사용한다.
  • 단지 마지막 LSTM 층의 출력만 쓰는 것이 아니라, 모든 층의 출력을 linear combination해서 더 풍부한 정보를 담는다.
  • CoVe와 달리 병렬 말뭉치가 필ㅇ요하지 않고, 단일 언어 데이터 (monolingual corpus)만으로도 충분히 학습할 수 있따.

이를 통해 ELMo는 문맥에 따라 유연하게 바뀌는 단어 표현을 만들 수 있다.


3. ELMo : Embeddings from Language M0dels

ELMo의 정의는 character convolutions을 갖춘 2-layer biLM 모델 위에서 lienar function으로 계산된다.

이러한 구조는 우리가 semi-supervised learning을 수행하게 해주며 biLM은 대규모로 pretrained되고 기존의 다양한 신경망 기반 BLP 구조에 쉽게 적용될 수 있다.

3.1 Bidirectional Language Models

  1. Language Model의 기본 개념

    언어 모델이란 문장 안에 단어들이 등장할 확률을 예측하는 모델이다. 예를 들어 “i am going to the” 다음에 store가 올 확률이 높다고 판단하는 식이다.

    이 확률은 보통 이렇게 계산된다.

    p(t₁, t₂, ..., tₙ) = p(t₁) * p(t₂ | t₁) * p(t₃ | t₁, t₂) * ... * p(tₙ | t₁, ..., tₙ₋₁)

    앞 단어들을 기반으로 다음 단어를 예측하는 구조이다. 이를 Forward Language Model이라고 부른다.

  2. Forward Language Model (정방향 언어 모델)

    • 먼저 각 단어를 문맥 독립적인 벡터로 바꾼다.
    • 그 벡터들을 2층짜리 LSTM에 입력으로 넣는다.
    • 각 위치에서 문맥 정보를 반영한 표현이 생성된다.
    • 마지막 LSTM 층의 출력을 사용해 다음 단어를 softmax로 예측한다.
  3. Backward LM (역방향 언어 모델)

    이 모델은 문장을 오른쪽에서 왼쪽으로 읽는다.

    현재 단어를 미래 문맥으로부터 예측하는 방식이다.

    이 모델도 forward lm과 구조는 유사하지만 LSTM이 반대 방향으로 동작한다.

  4. Bidirectional Language Model (biLM)

    ELMo는 정방향과 역방향 언어 모델을 동시에 사용하는 biLM 구조를 선택한다.

    • 각 단어에 대해 forward와 backward 두 방향에서 문맥 표현을 각각 계산한다.
    • 학습 시에는 양쪽 방향에서 계산한 확률 log 값의 합을 최대하는 방식으로 진행한다.
log p_forward(tₖ | t₁, ..., tₖ₋₁) + log p_backward(tₖ | tₖ₊₁, ..., tₙ)
  1. 파라미터 공유 전략

ELMo

  • 입력 벡터(x)와 softmax 계층(s)은 forward와 backward 방향에서 공유
  • 하지만 LSTM 가중치는 각 방향에 대해 별도로 학습

3.2 ELMO

3.1 절에서는 elmo의 핵심 구조인 biLM이 어떻게 동작하는지 살펴봤다.

이제는 그 biLM을 이용해서 하나의 단어를 어떤 방식으로 벡터로 표현하는지 ELMo 표현을 어떻게 만드는지를 설명한다.

  1. 단어 표현의 재정의

기존의 word2Vec이나 Glove는 단어당 하나의 고정된 벡터만 제공하지만 elmo는 문맥에 따라 벡터가 매번 달라지는 동적 표현을 제공한다.

ELMo의 표현은 단순 LSTM의 마지막 층 출력만 사용하는 게 아니라, biLM의 여러 층(layer)에서 나오는 표현들은 linear comlination하여 만든다.

  1. 층별 표현을 결합하는 방식

biLM은 여러 층의 LSTM을 사용한다. 각 단어는 각 층마다 ㅓㅅ로 다른 표현을 갖게 된다.

예를 들어 한 단어에 대해 다음과 같은 표현들이 존재한다.

  • 문자 기반 입력 표현 (CNN 기반): xkLMx_k^{LM}
  • 첫 번째 LSTM 층의 출력: hk,1LMh_{k,1}^{LM}
  • 두 번째 LSTM 층의 출력: hk,2LMh_{k,2}^{LM}
ELMo_k = γ × ∑(s_j × h_{k,j}^{LM})
  • sjs_j는 각 층의 가중치 (softmax로 정규화됨)
  • γγ는 전체 스케일링 파라미터
  • hk,jLMh_{k,j}^{LM}는 j번째 층에서 나온 단어 k의 표현

각 층의 정보를 얼마나 반영할지 학습을 통해 결정하고, 그걸 가중합해서 최종 단어 벡터로 쓰는 구조입니다.

왜 여러 층을 쓸가?

각 LSTM 층은 다른 종류의 정보를 찾아낸다

  • 하위 층 : 문법, 형태소 같은 구문 정보(syntax)
  • 상위 층 : 의미적 차이 같은 의미 정보(semantics)

이걸 통합해서 사용하면 단어의 다양한 특성을 표현할 수 있다. 또한 다운스트림 태크스(감정 분석, 질의응답 등)에 따라 가장 적합한 층 조합을 자동으로 학습할 수 있게 된다.

특징설명
문맥 기반단어 표현이 문장 전체를 고려하여 달라짐
다층 결합LSTM의 모든 층 정보를 조합해 사용
태스크 적응형과제(task)에 따라 각 층의 중요도가 달라짐
학습 가능결합 가중치(sjs_j)와 스케일링(γγ) 모두 학습됨

3.3 Using biLMs for supervised NLP tasks

ELMo는 기존 모델에 어떻게 추가될까?

ELMo 표현은 기존의 신경망 기반 NLP 모델에 아주 쉽게 추가할 수 있다. 기존 모델이 단어 임베딩을 입력으로 받아서 RNN이나 CNN에 넣는 구조라면 ELMo는 이 입력 벡터에 자신의 벡터를 더해서 넣는 방식이다. 예를 들어 감정 분석 모델이 GloVe 입데잉을 쓰고 있다면 그 임베딩 ELMo 벡터를 추가해서 더 풍부한 입력을 만들 수 있다.

중요한 점은 ELMo 벡터는 biLSTM 언어 모델의 여러 층에서 나온 출력들을 조합해서 만들어진다는 것 각 층의 정보를 얼마나 반영할지는 task마다 다르게 학습된다. 어떤 task는 문법 정보가 중요하고 어떤 task는 의미 정보가 중요하니까 그렇다.

실제로는 ELMo를 입력에 붙이는 경우도 있고 모델 중간에 삽입하는 경우도 있다.

핵심은 기존 모델 구조는 거의 손대지 않고 ELMo만 추가하면 쓸 수 있다.

3.4 Pre-trained bidirectional language model

architecture

ELMo는 전형적인 semi-supervised learning 구조이다.

두 단 계를 거쳐 학습된다.

  • 1단계는 pretraining 라벨이 없는 대규모 텍스트 데이터(위키피디아, 뉴스 등)를 이용해서 biLSTM 기반의 언어 모델을 학습한다. 여기서 단어 순서를 예측하는 방식으로 문법과 의미 패턴을 익히게 된다.
  • 2단계는 fine-tuning 과정이다. 우리가 원하는 실제 과제(감정 분석, 질의응답 등)에 맞춰 라벨이 있는데이터를 사용해 학습한다. 이때는 기존 모델에 ELMo 벡터를 추가한 상태로 학습을 진행한다. 즉 대량의 텍스트로 언어 감각을 먼저 키우고 그 다음 문제풀이 train을 하는 셈이다. 특이한 점이 있는데 forward 언어 모델과 backward 언어 모델이 있는데 ELMo는 이 두 방향에서 입력 벡터와 Softmax는 공유 LSTM은 따로 학습되도록 구성했다. 비슷한 방식은 이전 논문에서도 있었지만 ELMo는 더 효율적인 가중치 공유 방식을 택했다.

4. experiment(논문 참조)

5. Analysis

ELMo는 왜 잘 작동할까?

  1. 각 층마다 담고 있는 정보가 다르다.

    ELMo는 biLSTM 언어 모델의 여러 층의 출력들을 조합해서 단어 표현을 만든다.

    • lower layers : 문법 정보를 잘 포착함
    • higher layers : 의미 정보를 더 많이 담음
  2. 단어 의미 구분에도 유리하다.

    • 문맥에 따라 단어 의미가 달라지는 경우에 ELMo는 문장 전체를 고려해서 그 의미를 구분해낸다.
    • 논문에서도 별도의 학습 없이도 ELMo 표현만으로 단어 의미 구분(WSD) 작업에서 좋은 결과를 낼 수 있음을 보여준다.
  3. 다양한 신호를 동시에 제공한다는 점이 강점

    • 기존 모델은 단일한 벡터를 사용했지만 ELMo는 여러 층의 정보를 함께 제공하기 때문에 task 별로 필요한 정보만 선택적으활용할 수 있다.
    • 감정 분석에서는 상위 층의 의미정보가 중요할 수 있고 구문 분석에서는 하위 층의 문법 정보가 더 유용할 수 있다. ELMo는 모두 갖고 있는 셈이다.

6. Conclusion

  • ELMo는 단어의 문맥을 반영한 동적 임베딩을 제공한다.
  • 기존 고정 벡터 방식의 한계를 극복하며, 다의어 처리에 강하다.
  • biLSTM 언어 모델의 여러 층 출력을 선형 조합해 표현을 만든다.
  • NLP 과제에서 성능을 향상시키고, 모델에 쉽게 합칠 수 있다.
  • ELMo는 이후 BERT, GPT 등 문맥 기반 언어 모델의 흐름을 여는 시작점이 되었다.

0개의 댓글