머신러닝&딥러닝/자연어처리

Transformer(4) - 모델의 학습과정 정리

Like_Me 2020. 2. 20. 15:04
반응형

  Transformer는 기존의 모델들과 달리 CNN의 Convolution이나 RNN의 Cell들을 이용하지 않아 낯설게 느껴져서 다시 한번 모델의 총과정을 리뷰한다.

 

  Transformer의 Input data로 Embedding 된 벡터를 넣어주는데 이때 들어가는 벡터에 Positional Encoding 방법으로 벡터의 순서를 표시해준다. 다음으로 Multi-Head Attention에서 self-attention을 수행해주고 단어 간의 관련도를 계산해준다(query, key, value가 모두 같은 sequence가 된다). 이 과정이 Transformer의 성능을 끌어올리는 핵심이다. Attention의 내적연산으로 같은 문장 내 단어끼리의 의미적, 문법적 관계를 포착해내는 중요한 과정이다. Multi-Head Attention을 통해 attention-weights(attention-score)와 value의 곱으로 Attention value를 계산해준다. 이때, Scaled-dot-product Attention을 여러 개 만들어 계산하여 concat 해주는 이유는 각기 다른 Linear층을 거쳐 다른 결괏값을 낼 것이므로 여러 측면에서 데이터를 바라보는 앙상블 효과를 낼 수가 있다. 마지막으로 Dense층을 거쳐 차원을 model_dim으로 맞춰줄 수 있다.

RNN과 달리 순서대로 데이터를 넣는 것이 아니라서 병렬적으로 처리가 가능하고 속도가 빠르다는 장점이 있다.

 

Multi-Head Attention 구조

 

다음으로는 Feed Forward의 Dense층을 거쳐 Decoder(Incoder에서 나온 경우)의 Key와 Value로 넘겨준다. Decoder에서도 Multi-Head Attention에서 Mask를 적용하는 것을 제외하고 같은 과정으로 Query를 만들어낸다. 좋은 Query를 만들어내는 것도 Transformer 학습의 중요한 과정이다. 결국 핵심은 좋은 Embedding을 만들어내는 것이다!

Transformer 구조

 

Decoder에서 나온 Query와 Encoder에서 나온 key,value를 통해 한 번 더 Multi-Head Attention을 하는데 이때의 구조는 Seq2 seq에서 Attention을 하는 것과 동일한 구조이다. query와 key를 비교해서 value값에 적용하여 결과를 뽑아내고 Dense층을 거쳐 softmax로 output를 내게 된다.

 

Self-Attention은 결과적으로 Embedding을 더욱 강화시키는 벡터를 만드는 과정이고 좋은 Embedding 결과가 Feed Forward 구조와 더해지며 좋은 결과를 만들었다고 이해하면 될 것 같다.

반응형