엘모는 세서미 스트리트의 캐릭터다.
TV는 아닌 것 같은데 어디서 봤을까...?
그렇다! Sake L의 노동요에서 본, 핵폭발을 배경으로 하고 있는 그 캐릭터다.
이후 등장하는 임베딩 모델인 버트도 세서미 스트리트에 등장하는 캐릭터 이름을 땄다.
문맥을 반영한 워드 임베딩의 필요성
실제 문장에서는 같은 단어라도 문맥에 따라 임베딩을 다르게 해야 할 때가 많다. 이는 다의어에 대해 임베딩할 때 많이 발생한다. ‘고소하다’라는 단어는 법대로 하자는 뜻과 고소한 맛이라는 뜻을 가지고 있는데, Word2Vec과 GloVe에서는 이를 문맥에 따라 제대로 반영하지 못하고 다른 의미인데도 같게 임베딩해버린다.
같은 표기여도 다르게 임베딩할 수 있도록 문맥을 고려해서 임베딩하자는 아이디어가, 문맥을 반영한 워드 임베딩(Contextualized Word Embedding)이다.
단방향 RNN 언어 모델링
문장에서 단어 단위로 입력을 받으며, RNN 내부의 은닉 상태 h_t가 시점에 따라 업데이트된다. 이는 RNN이 문장의 문맥 정보를 반영한다고 할 수 있다.
biLM(Bidirectional Language Model)
ELMo에서 사용하는 biLM은 기본적으로 다층 구조(Multi-layer), 즉 은닉층이 최소 2개 이상인 모델을 전제로 한다.
ELMo에서는 단방향 언어 모델 뿐만 아니라, 반대 방향으로 문장을 스캔하는 역방향 RNN도 활용한다. 양쪽 방향 모두를 학습한다고 하여 biLM이라고 한다.
문장의 역방향 분석이 필요한 이유는, 예를 들어
‘운동을 열심히 하면 ( ) 세진다’
라는 문장의 괄호 안에 들어갈 문장을 예측한다고 해 보자. 이 때 순방향 모델만 적용하면 괄호 안에 들어갈 단어가 건강해진다는 건지, 근육이 성장한다는건지 예측하기 어렵다. 문장의 뒤쪽도 읽었을 경우 괄호 안의 단어를 더 정확하게 예측할 수 있다.
이때 각 단어에 대한 임베딩은 문자 단위로 CNN을 적용하여 임베딩한다.(Word2Vec, GloVe 등 지금까지 알아본 임베딩과는 다름!) 이는 학습 시 존재하지 않았던 단어, 즉 OOV에 대한 대응을 가능하게 해 준다.
ELMo에서 말하는 biLM과 양방향 RNN 둘을 헷갈릴 수 있는데, 둘은 다르다! 양방향 RNN은 순방향과 역방향 RNN의 은닉층 출력을 연결(concatenate)하여 다음층의 입력으로 사용하는 반면, biLM에서는 순방향 모델과 역방향 모델을 별개의 모델로 학습한다.
☆LSTM : 기존의 RNN이 출력과 먼 위치에 있는 정보를 기억할 수 없다는 단점을 보완! ELMo에서는 일반 RNN 대신 LSTM을 활용한다.
N개의 임베딩된 토큰을 받아, \(t_k\) 이후에 등장할 \(t\)를 구하는데 사용되는 식은 다음과 같다.
식을 보면, 예를 들어 "수완이가 수능 완성을 푼다."라는 문장이 될 probability를 계산할 때,
('수완이가' 이후 '수능'이 올 확률) \(\times\) ('수완이가 수능' 이후 '완성을'이 올 확률) \(\times\) ('수완이가 수능 완성을' 이후 '푼다'가 올 확률) 을 모두 곱한다는 의미이다.
L개의 레이어를 가진 LSTM층에 대해 k번째 토큰, j번째 layer에 대한 출력을 \({\overrightarrow{h}}^{LM}_{k, j}\)로 오른쪽 화살표를 써서 쓴다. 반대로 역방향 LSTM에 대해서는
이렇게 쓴다. 방금 설명한 방법을 역방향으로 문장을 읽어 가며 적용한다는 의미이다.
세타 엑스, 세타 LSTM, 세타 s는 각각 token representation, LSTM, softmax에 관한 parameter이다.
token representation, softmax에 관한 parameter은 묶고, 순방향과 역방향 LSTM은 따로 취급한다. 그렇게 해서 위 식의 값, 즉 forword와 backward에 대해서 예측한 likelihood에 각각 log를 씌운 값이 최대가 되도록 가중치들을 훈련한다.
ELMo는 biLM의 각 중간층들의 출력값들을 task-specific하게 모두 짬뽕해놓은 것이다. 이게 무슨 말인지 알아보자. 위의 식에서 말하는 건 L개의 층을 가진 biLM이 가지는 representation (2L+1)개의 원소를 가지는 \(R_k\)이다. 여기서 rightarrow h와 leftarrow h를 단순히 concatenate한 벡터가 h이고, h의 0번째 인덱스 벡터는 \(x_k^{LM}\)이다.
ELMo에서는 이 \(R_k\)를 downstream model을 위해 ELMo vector로 바꾼다.
예를 들어 가장 간단하게는 맨 위의 layer의 출력값을 선택하는 방법이 있다.
여기서 task-specific 하도록 ELMO는 scale parameter \(\gamma\)와 softmax-normalize된 \(s^{task}\)를 h벡터 각각에 곱해서 다음과 같은 ELMo vector를 만들어낼 수 있다.
결과
ELMo를 적용한 결과 다양한 과제에 대해 기존의 어휘 임베딩보다 좋은 성능을 보였다.
- Question & Answering
- Textual Entailment : 주어진 문장 A, B에 대한 추론 과제
- Semantic Role Labeling : 의미역 레이블링 과제
- Coreference Resolution : 문장에서 동일한 객체를 가리키는 표현 찾는 과제
- Named Entity Recognition : 개체명 인식 과제
- Sentiment Analysis
실습 시 주의사항
이 녀석은 텐서플로우 2.0에서 사용할 수 없다.
ELMo의 한계
ELMo를 사용하는 자연어처리 시스템은 ELMo를 통해 단어 단위 벡터를 얻고, 이후에는 기존의 단어 단위 임베딩과 동일하게 동작한다. 따라서, 학습이 끝난 ELMo 임베딩 모델은 이후 학습에서 제외된다.
이후에 나오는 BERT부터의 기술들은 단어 임베딩 모델을 최대한 재활용하여, 임베딩 모델이 자연어처리 시스템이 되는 형태를 띤다. 이런 방식이 더 우수한 성능을 띠는 것으로 나타난다. 그러므로 ELMo는 단어 단위 임베딩과 문장 단위 임베딩의 과도기적 특성을 띤다고 볼 수 있다.
'NLP lab > 엔엘피' 카테고리의 다른 글
GPT-1, GPT-2, GPT-3 (0) | 2022.04.08 |
---|---|
Generative model, Discriminative model (0) | 2022.04.08 |
Word2Vec, GloVe, FastText 요약 (0) | 2022.03.12 |
계층적 소프트맥스(Hierarchical Softmax, HS) in word2vec (3) | 2022.03.11 |
Context Free Grammar, CYK(CKY) 알고리즘 (2) | 2022.03.01 |