논문리뷰 | Deep contextualized word representations(ELMo)

esyooon·2024년 3월 7일
0

더 자세히 공부하고 촘촘하게 수정하겠습니다
!!
!!


ELMo


불타올라라 화를륵르륵🔥🔥🔥

Introduction

  • word2vec은 각 word가 한 vector로 표현되어 문법 구조나 다의어에 따른 뜻 변형을 적절히 반영하기 어려움 (ex. present)
  • 따라서 문맥에 따라 다르게 워드 임베딩을 할 수 있으면 자연어 처리의 성능이 더 올라갈 것을 기대하며, word embedding 전 sentence를 고려하는 Contextualized Word Embedding을 제안
  • pre-trained LM을 사용
    \rarr ELMo는 문맥을 고려하고 사전 훈련을 고려하는 sentence 단위의 word representations을 학습하기 위해 Bidirectional LSTM을 사용

ELMo

다른 모델과 합치기에 쉬움

Bidirectional language models ; biLM

  • bidirectional LSTM은 Embedding된 xkLMx^{LM}_k를 두개 LSTM으로 보냄
    • LSTM을 left-to-right(순방향), right-to-left(역방향) 두가지 부분을 결합하여 사용
    • 아래는 각각 순전파와 역전파에 대한 목적식
      • (t1,t2,,tk1)(t_1,t_2, …,t_{k-1})이 주어졌을 때 token tkt_k가 나올 확률
        p(t1,..tk1)=Πk=1Np(tkt1,...,tk1)p(t1,..t_{k-1})=\Pi^N_{k=1}p(t_k|t_{1},...,t_{k-1})
      • (tk+1,,tN)(t_{k+1},…,t_{N})이 주어졌을 때 token tkt_k가 나올 확률
        p(t1,..tk1)=Πk=1Np(tktk+1,...,tN)p(t1,..t_{k-1})=\Pi^N_{k=1}p(t_k|t_{k+1},...,t_{N})
        : 미래의 단어들로 이전 단어들을 예측하도록 학습

두 식을 종합하여 log likelihood가 최대가 되는 것을 구함

k1N(log p(tkt1,...,tk1;Θx,ΘLSTM,Θs)+log p(tktk+1,...,tN;Θx,ΘLSTM,Θs)).\sum^N_{k-1}(log \ p(t_k|t_1,...,t_{k-1};\Theta_x,\overrightarrow\Theta_{LSTM},\Theta_s)+log \ p(t_k|t_{k+1},...,t_{N};\Theta_x,\overleftarrow\Theta_{LSTM},\Theta_s)).

Θx\Theta_x : token representation(t1,...,tNt1,...,tN)에 대한 파라미터
Θs\Theta_s : softmax layer에 대한 parameter

ELMo

L : LSTM layer의 개수
hk,0LM\bold h^{LM}_{k,0} : token layer
hk,jLM=[hk,jLM,hk,jLM]\bold h^{LM}_{k,j} = [ \overrightarrow \bold h^{LM}_{k,j}, \overleftarrow \bold h^{LM}_{k,j}]
stasks^{task} : softmax-normalized weight
γtask\gamma^{task} : output dimension을 맞춤
xkLM\bold x^{LM}_k : input token

기존과는 다른 문맥을 반영하는 representation을 사용하기에 두 LSTM과 input representation layer에 대하여 총 2L+1개의 representation을 concatenate 해야 함

Rk={xkLM,hk,jLM,hk,jLMj=1,...,L}={hk,jLMj=0,...,L}R_k = \{\bold x^{LM}_k, \overrightarrow\bold h^{LM}_{k,j},\overleftarrow\bold h^{LM}_{k,j}|j=1,...,L \} = \{\bold h^{LM}_{k,j}|j=0,...,L\}

ELMOktask=E(Rk;Θtask=γtaskj=0Lsjtaskhk,jLM)\bold{ELMO}^{task}_k=E(R_k;\Theta^{task}=\gamma^{task}\sum^L_{j=0}s_j^{task}\bold h ^{LM}_{k,j})

여기까지가 ELMO pretrain 단계

Using BiLMs for supervised NLP tasks

task에 맞게 적용시켜 supervised architecture를 설계

  1. biLM을 학습시켜 각 단어에 대한 layer representations를 저장
  2. downstream이 pretrained model의 선형결합을 학습하도록 함
    • pretrained biLM의 weights 고정
    • input text를 각 token에 대해 biLM을 거쳐 task에 맞게ELMOktask\bold{ELMO}^{task}_k를 뽑음
    • ELMOktask\bold{ELMO}^{task}_kxLM\bold x^{LM}을 결합하여 [xkLM;ELMOtakes][x^{LM}_k;ELMO^{takes}]의 형태의 input으로 supervised task RNN에 넣어줌
    • dropout과 loss에 biLM의 weights wwλw22\lambda ||w||_2^2를 더하는 정규화 방법도 사용.
      • inductive bias를 부과하여 모든 biLM layers에 평균에 근접하게 하기 위함(일반화 성능을 높이려고)

Pre-trained bidirectional language model architecture

  • L = 2 biLSTM을 사용
  • dimension = 512
  • STM 첫 번째와 두 번째 레이어 사이에 residual connection로 연결
  • embedding은 2048 character n-gram convolutional filters에 두 개의 highway layer를 사용하였고 512차원으로 projection 시켜줌

기존 embedding 방법은 고정된 어휘 한 개의 representations을 생성하는 반면, biLM은 각 입력 token마다 순수 문자기반 입력 이기 때문에 3개의 representations을 생성

본 논문에서는 한 번의 pretrained으로 여러 task의 representations을 학습할 수 있고 특정 도메인별 데이터에서 biLM을 fine-tuning 하면 perplexity가 크게 감소하고, downstream의 성능이 향상

Evaluation

모든 task에서 ELMo를 사용했을 때 성능이 향상


NLP.. 어렵다...

..
..

참고

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

https://lcyking.tistory.com/126

https://velog.io/@xuio/NLP-%EB%85%BC%EB%AC%B8%EB%A6%AC%EB%B7%B0-ELMo-Deep-contextualized-word-representations-%EC%83%81%ED%8E%B8

0개의 댓글

관련 채용 정보