2021. 2. 25. 12:41ㆍnlp
Transformer 이전엔 RNN, LSTM과 같은 recurrent model에 attention을 추가하여 성능을 향상했는데, Transformer는 recurrence 없이 attention만 사용하고도 좋은 성능을 보인 모델이다. recurrence가 없기 때문에 임베딩뿐만 아니라 positional encoding을 입력으로 주어 토큰의 순서 정보를 제공해줘야 한다.
Transformer의 모델은 크게 Autoregressive model과 Autoencoding model로 나눌 수 있다. Autoregressive model은 transformer의 decoder에 해당하고 Autoencoding model은 transformer의 encoder에 해당한다. 그래서 Autoregressive model은 이후에 나올 토큰을 볼 수 없고 주로 생성 과제에 활용된다. 대표적 모델은 GPT이다. Autoencoding model은 모든 토큰을 볼 수 있고 주로 분류 과제에 활용된다. 대표적 모델은 BERT이다. BERT는 Masked Language Model, Next Sentence Prediction이라는 두 가지 과제로 사전학습된다. Masked Language Model은 입력 문장 중 랜덤하게 선택된 토큰을 [MASK]로 가리고 문맥을 통해 [MASK] 자리에 들어갈 실제 토큰을 예측하는 과제이다. Next Sentence Prediction은 2개의 문장의 입력되면 첫 번째 문장 다음에 두 번째 문장이 오는 것이 자연스러운지 아닌지 판단하는 과제이다.
1. Encoder
1.1. Self-Attention
- 각 토큰에 대해 Query, Key, Value 벡터를 생성한다.
- attention을 계산하고 있는 현재 토큰의 query 벡터와 주어진 문장의 모든 토큰의 key 벡터를 내적하고 이를 key 벡터 차원의 루트로 나눈다. 이 값을 softmax 함수에 넣은 후 각 토큰의 value 벡터와 내적한다. 이들을 모두 더하면 현재 토큰의 self-attention을 계산할 수 있다
- layer normalization을 거친 후 FFN으로 전달한다
1.2. Feed Forward Neural Network
- self-attention의 output을 입력받는다
- layer normalization을 거친 FFN의 출력을 그 다음 Encoder의 input으로 전달한다
2. Decoder
2.1. Self-Attention
- Encoder와 같은 방식으로 self-attention을 계산한다
- 단, 현재 위치보다 이전에 있는 토큰에 대해서만 attend할 수 있다. 그렇지 않으면 cheating이기 때문.
- layer normalization을 거친 후 encoder-decoder attention으로 전달한다
2.2. Encoder-Decoder Attention
- query 벡터는 밑의 layer(이전 decoder)에서, key와 value 벡터는 encoder의 출력에서 가져와서 attention을 계산한다.
- layer normalization을 거친 후 FFNN으로 전달한다
2.3. Feed Forward Neural Network
- encoder-decoder attention의 output을 입력받는다
- layer normalization을 거친 FFN의 출력을 그 다음 Decoder의 input으로 전달한다
3. Linear & Softmax Layer
3.1. Linear Layer
- decoder의 output 벡터를 vocab size로 축소한다
3.2. Softmax Layer
- linear layer의 output을 확률로 변환한다
'nlp' 카테고리의 다른 글
GPT-3 API 받았네?? (0) | 2021.07.30 |
---|---|
Imbalanced Text Data Resampling 후 huggingface 🤗 로 학습하기 (0) | 2021.06.30 |
임베딩Embedding 정리 (0) | 2021.02.25 |
알파벳으로 한글 쓰기 0r2#rld7lxolNJ 6rLrlN ^^-7l (0) | 2020.10.27 |
'-거든'과 맨스플레인 (성별에 따른 정보구조 사용의 변이) (0) | 2020.06.24 |