본문 바로가기
논문 리뷰/NLP

[X:AI] ELMo 논문 리뷰

by hyeon827 2024. 3. 25.

 

논문 원본  https://arxiv.org/abs/1802.05365

 

Deep contextualized word representations

We introduce a new type of deep contextualized word representation that models both (1) complex characteristics of word use (e.g., syntax and semantics), and (2) how these uses vary across linguistic contexts (i.e., to model polysemy). Our word vectors are

arxiv.org

 

발표 영상  https://www.youtube.com/watch?v=eu67_hJJrbM

  •  오타 ICLR 2018 -> NAACL 2018

 

 

1. Abstract & Introduction

  • 기존 단어 표현 방법(Word2Vec, GloVe 등)은 단어의 의미를 잘 표현하지만 하나의 단어가 다른 문맥에서 다르게 사용될 수 있는 다의성(polysemy)을 잘 모델링하지 못함
  • 또한, 문법적 정보를 모두 포괄하기 어려움 
    • Word2Vec, GloVe 등은 각 단어를 한 개의 벡터로만 표현
  • 본 연구에서는 같은 단어라도 문장이 제공하는 맥락에 따라 그 단어의 표현(벡터값)이 달라진 ELMo(Embeddings from Language Models)라는 새로운 방식 제안
  • 이 표현은 단순히 하나의 정적인 벡터로 단어를 표현하는 것이 아니라, 양방향 LSTM의 내부 상태를 이용해 문장의 맥락을 반영하는 벡터를 만듦
  • 또한, 단순히 LSTM의 마지막 층만 사용하는 것이 아니라, 모든 층의 정보를 결합해 더 풍부한 단어 표현을 만듦
    • 상위 LSTM 층: 문맥 의존적인 의미(예: 단어의 뜻 구분)
    • 하위 LSTM 층: 문법적 정보(예: 품사 태깅)
  • 기존의 NLP 모델에 쉽게 추가할 수 있음

 

2. Related Work

  • 기존 단어 벡터의 한계
    • 단어 벡터(예: Word2Vec, GloVe)는 레이블이 없는 대규모 텍스트 데이터에서 단어 간의 관계를 학습
    • 그러나 단어마다 고정된 하나의 표현만 제공

 

  • 기존 방법들의 개선
    • subword 정보 사용: 단어를 문자 단위로 쪼개서 벡터를 학습
      • 예: "playing"은 "play"와 "ing"로 나누어 학습 → 단어의 세부 정보를 반영
      • 하지만, 이 방식은 여전히 문맥에 따른 의미 구분은 어려움
    • 단어 의미(sense)별 벡터 학습: 같은 단어라도 의미가 다르면 다른 벡터를 학습
      • 예: "bank(강가)"와 "bank(은행)"에 서로 다른 벡터를 사용
      • 하지만, 이 방식은 라벨링해야 하므로, 데이터 준비가 번거롭고 비용이 많이 듦
    • ELMo는 문자 기반 컨볼루션을 사용해 subword 정보를 활용하고, 사전 정의된 의미 클래스(sense classes)를 예측하지 않으면서도, 자동으로 단어의 주변 맥락에 따라 단어의 다양한 의미 반영

 

  • 기존 연구: 단어와 맥락을 학습하는 방법
    • context2vec 
      • 문맥 정보를 학습하기 위해 양방향 LSTM이라는 기술을 사용
    • CoVe 
      • 기계 번역 모델에서 사용되는 기술로, 병렬 코퍼스(같은 문장이 두 언어로 쓰인 데이터)를 활용해 학습
      • 하지만 병렬 데이터가 많지 않으면 성능이 제한적
    • ELMo
      • 병렬 데이터 없이, 한 언어로 된 대규모 단일언어 데이터를 사용하여 biLM을 학습해 단어의 문맥 의존적 표현을 생성

 

  • Fine-Tuning 관련 이점
    • 기존 방법
      • 특정 작업에 맞춰 모델을 사전 학습하고 fine-tuning을 해야 했음
    • ELMo
      • 먼저 라벨이 없는 대규모 데이터로 biLM을 학습
      • 다운스트림 작업에 사용될 때는 ELMo 가중치를 고정한 채로 추가적인 모델을 학습
      • 덕분에 적은 데이터만으로도 성능이 좋음

 

 

3. ELMo : Embeddings from Language Models

 

   3.1 Bidirectional language models 

  • Forward LM
    • 각 토큰 의 확률을 이전 토큰들의 히스토리 에 기반하여 모델링
    • 주어진 문장의 각 단어를 Token Embedding 또는 문자 기반 CNN을 사용하여 문맥과 무관한 초기 표현인

https://jalammar.github.io/illustrated-bert/

 

  • Backward LM
    • 정방향 모델과 유사하지만, 시퀀스를 역순으로 처리
    • 즉, 현재 토큰 기준으로 이전 토큰 예측

 

https://jalammar.github.io/illustrated-bert/

 

  • biLM 
    • biLM = Forward LM + Backward LM
    • 두 방향의 log likelihood를 최대화하는 것을 목표로 함 
      • 모델이 단어가 문장에서 앞뒤 문맥에 얼마나 잘 들어맞는지 학습하려면, 두 방향의 확률이 모두 높아야 함
    • Θx = token representation, ΘLSTM = LSTM layer , Θs = Softmax layer 
    • Θs는 forward와 backward 모델이 공유
    • 하지만, forward LSTM과 backward LSTM은 각각 다른 가중치를 가짐

 

 

   3.2 ELMo

  • 각 토큰 에 대해, L층으로 구성된 biLM은 다음과 같은 2L + 1개의 representation이 계산됨
    • 임베딩 벡터 1개
    • Forward LM에서의 벡터 L개
    • Backward LM에서의 벡터 L개

 

  • ELMo는 의 모든 층 표현을 하나의 벡터로 축소
    • 1) 각 층의 출력값을 concatenate
    • 2) 각 층의 출력값 별로 가중치를 줌 (학습 파라미터)
    • 3) 각 층의 출력값을 모두 더함
    • 4) 벡터의 크기를 결정하는 스칼라 매개변수를 곱함 (학습 파라미터)
      • task마다 필요로 하는 표현의 크기가 다를 수 있음 
        • 감정 분석에서는 작은 크기의 표현이 적합할 수 있음
        • SQuAD 같은 복잡한 작업에는 큰 크기의 표현이 필요할 수 있음

https://jalammar.github.io/illustrated-bert/

 

   3.4 Pre-trained bidirectional language model architecture

  • BiLSTM 층 간에 잔차 연결을 추가
  • 2개의 BiLSTM 층으로 구성
    • 각 층은 4096개의 차원으로 구성
    • 출력은 512차원으로 projection
  • 입력 데이터는 문자 기반으로 처리 -> ["h", "e", "l", "l", "o"]
  • n-gram을 사용하는 방식
    • 개별 문자 뿐만아니라 여러 문자 조합(n-gram)의 특징 학습
      • ex) "hello" → ["he", "el", "ll", "lo"]
    • 2048개의 합성곱 필터(CNN)로 특징 추출
    • highway layers를 통과 (불필요한 정보 제거)
    • 최종적으로 512차원 벡터로 변환
    • 신조어나 오타 같은 단어에도 유연하게 대처할 수 있음 (ex. "hellooo")

 

 

4. Evaluation

  • 6개의 NLP downtask에 대하여 단지 ELMo을 추가하는 것만으로도 SOTA보다 좋은 성능을 이끌어냄

 

 

5. Analysis

  • BiLM의 마지막 layer를 사용하는 것보다 모든 layer를 사용하는 것이 더 좋음
  • λ를 작게 하는 것이 더 좋은 성능을 보여줌
    • λ=1 : 가중치를 단순히 평균
    • λ=0.001 : task에 따라 가중치 변화

 

  • 본 논문은 input layer에서만 ELMo 적용
  • output layer에서 ELMo 적용 시 SQuAD, SNLI task에서 성능 향상을 보임
  • task마다 차이는 있겠지만, 대체로 input,output layer에서 ELMo를 적용하면 성능 개선

 

 

6. Conclusion

  • ELMo의 일반적인 접근법
    • biLM을 통해 문맥에 따라 동적으로 변화하는 고품질 표현을 학습하는 일반적인 방법을 제안
  • 다양한 NLP 작업에서의 성능 개선
    • ELMo를 여러 NLP 작업(예: 감정 분석, 질문 응답 등)에 적용하여 큰 성능 향상을 확인
  • 구문 및 의미 정보 학습
    • ELMo의 biLM 층들이 단어의 구문적(syntactic) 및 의미적(semantic) 정보를 효율적으로 학습함을 입증
  • 모든 층 활용의 중요성
    • biLM의 모든 층 표현을 활용하면 전체 작업 성능이 개선됨을 실험적으로 확인

 

 

7. Reference

https://velog.io/@skm0626/Deep-contextualized-word-representationsELMo-%EB%85%BC%EB%AC%B8-%EB%A6%AC%EB%B7%B0

https://lcyking.tistory.com/entry/%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-ELMoDeep-contextualized-word-representations%EC%9D%98-%EC%9D%B4%ED%95%B4

https://wikidocs.net/33930

https://github.com/pilsung-kang/text-analytics

'논문 리뷰 > NLP' 카테고리의 다른 글

[X:AI] BART 논문 리뷰  (0) 2025.02.11
[X:AI] RoBERTa 논문 리뷰  (1) 2025.02.04
[X:AI] BERT 논문 리뷰  (0) 2024.02.15
[X:AI] GPT-1 논문 리뷰  (0) 2024.02.11
[X:AI] Transformer 논문 리뷰  (0) 2024.02.10