다시 이음

임베딩(3) - Contextual Embedding 본문

Pre_Onboarding by Wanted(자연어 처리)

임베딩(3) - Contextual Embedding

Taeho(Damon) 2022. 3. 11. 17:54

안녕하세요.

 

오늘은 Embedding 시리즈의 3번째 문맥 임베딩에 대해서 알아보도록 하겠습니다.

 

 

Contextual embedding model

 

Contextual Embedding은 단어를 저차원 (일반적으로 100~500 차원) 공간에서 표현하는 기법입니다. 단, 기존의 전통적 Word Embedding과는 달리, 같은 단어더라도 문맥에 따라 그 표현방법이 바뀔 수 있는 개념의 Embedding입니다.

 

전통적인 Pre-trained Word Representation(Word2vec)은 한 단어가 가지고 있는 여러가지의 의미를 표현할 수 없었습니다.

 

Contextualized Word Embedding은 같은 단어라도 문맥에 따라 다른 vector를 만들어 냅니다. 대표적으로 ELMo, Bert, OpenAI GPT 등의 기법이 있습니다. 이들의 특징은 같은 단어라도 문맥에 따라 다른 방식으로 표현(representation)한다는 것입니다. 

 

word embedding과 다르게 contextual embedding은 input 값이

Input : sentence (word1,word2,….)

과 같이 문장단위를 기준으로 입력됩니다.

 

 

 1. ELMO(Embedding from Language Models)

 

특징

 

- biLSTM

커다란 말뭉치를 2개 층으로 이루어진 bi-LSTM(bidirectional LSTM, 양방향 LSTM)이 만들어내는 임베딩 벡터를 사용합니다.

이 벡터는 bi-LSTM의 내부 층에 대한 은닉 벡터(Hidden vector)에 가중치를 부여한 뒤에 선형 결합(Linear combination)하여 사용합니다. 이렇게 선형 결합을 통해 나타나는 벡터는 단어가 가진 많은 특성에 대한 정보를 담고 있게 됩니다. 각 은닉 벡터 중에서 위쪽에 위치한 LSTM은 단어의 문맥적인(Context-dependent,semantic 문장의 유사도 task) 의미를 포착할 수 있고 아래쪽에 위치한 LSTM은 단어의 구조적인(Syntax,객체명 인식, 품사확인 task) 의미를 포착할 수 있습니다.

- LM(Language Model)

ELMo는 기본적으로 언어 모델(Language Models)을 따르고 있기 때문에 타겟 단어 이전까지의 시퀀스로부터 타겟 단어를 예측합니다. 

 

- biLM(양뱡향 언어모델)

LSTM 2 layer + LSTM 2 layer 

Linear combination of layer embedding 이 2개 생기고 이 벡터들을 concat하여 사용합니다.

 

- Input : sentence

 

- ELMO weight를 input이 모두 통과하는 과정을 거쳐야 합니다.(inference)

 

 

2. Transformer

트랜스포머는 이전에 많이 정리를 했기 때문에 간단하게 키워드만 남기고 건너가겠습니다.

 

특징

 

- LSTM 단점(기울기소실, 병렬학습 불가능) 해결

- Attention

- 병렬학습 가능

- Encoder + Decoder 구조

- Encoder만 사용하면 BERT - NLU 특화

- Decoder만 사용하면 GPT - NLG 특화

 

구조

 

- Positional encoding : 단어에 순서를 주기 위한 인코딩

- Encoding 전에 토큰화되어 있는 input

- Multi-head self attention 

key * query 내적값을 weight를 value와 곱하여 attention z matrix를 생성합니다.

multi 라는 말과 같이 dmodel 차원(512개)를 8개의 self attention으로 나누어 64차원씩 연산하여 z값을 concat하여 사용합니다. 

 

 

 

3. BERT

특징

 

- Input : token embedding(토큰에 대한 벡터) + sentence embedding(문장 구분) + positional embedding(순서 벡터)

 

- 12 Encoder layers

 

- Pre-training model

 

- 2 task

  • 1.Language model - Masked LM

    다음 단어 예측 하면 안됩니다.
    Masking된 단어를 찾는 task를 사용합니다. - 문맥 인식 가능

  • 2.Next Sentence Prediction

    input의 50% mask 하지 않고, 50%는 mask해서 넣습니다.
    Sentence A다음 B가오는 게 맞는지 구분하는 task를 수행합니다.

 

-Attention으로 양방향

 

자주 사용되는 parameters

vocab_size = 토크나이저 학습으로 만든 token lookup table
hidden_size = 토큰 벡터의 차원
num_hidden_layers = # 인코더
num_attention_heads = 각 인코더 레이어의 # attention head max_position_embedding = 최대 입력 토큰의 개수