Contextual Embedding
ELMO
- Embedding from Language MOdels
- biLSTM
- Deep representation :
- 이전에는 마지막 layer의 embedding만을 중요하게 생각했으나, 여기서는 각 layer의 linear combination 을 반영
- 이는 각 layer의 weight가 표현하는 의미가 달랐기 때문
ex) 첫 layer는 syntactic(pos tagging), 두번째 layer는 semantic(similarity)
- pre-trained model
- LSTM의 단점
- LSTM은 병렬학습이 불가능
- weight decay, long term dependency
- LSTM 단점(Backpropagation)을 Positional Encoding으로 보완
- 긴 문장에도 각 단어가 다른단어와 연산 수행
- 병렬연산 가능
- Encoder-Decoder 구조는 Machine Translation에 이용됨
아래 과정은 하나의 sequence가 input으로 들어갔을 떄를 가정
Positional Encoding
- 단어의 순서에 관한 정보를 담고 있음
- Tokenizing 후 생성된 Input Embedding vector(shape: (Token 개수) * (Dimension)) 에 더해지는 값
Query, Key, Value
- sequence에 대응되는 Attention 값 계산을 위한 설정값
- key* Query는 weight의 개념이 되고, normalize 및 softmax 함수에 의해 확률값으로 매핑
- 이를 value와 곱해서 생성되는 것이 attention matrix
- Key, Query, value는 각각 sequence 와 곱하질 parameter(weight)를 가지고 있으며 backprop으로 update되는 값
Multi-head self attention
- sequence 당 self-attention을 head 개수(base 는 8) 만큼 수행
- 이후 각 self attention matrix를 concat함
- 이를 weight matrix와 곱하여 Embedding vector 차원을 맞춰줌.
BERT
- Transformer의 encoder 이용
- Token embedding(Context) + positional embedding(문장 내 위치) + segment embedding(문장 간 위치)
Pre-training
Fine-tuning
Parameters
- vocab_size = tokenizing 후 lookup table. 쉽게 말해 학습 후 mapping 가능한 token의 개수
- hidden_size = token embedding의 차원
- num_hidden_layers = encoder의 개수
- num_attention_heads = 각 인코더 layer의 attention head 개수
- max_position_embedding = input 입력 시 최대 입력 토큰 개수