(08강) Sequential Models - Transformer

Further Reading

Further Questions

  • Pytorch에서 Transformer와 관련된 Class는 어떤 것들이 있을까요?

1. Transformer

  • N개의 단어가 인코더에서 어떻게 한번에 처리가 되는지

  • 인코더와 디코더 사이에 주고받는 정보

  • 디코더가 어떻게 Generate(생성) 하는지

  • Encoder의 1개 Layer를 살펴보면 위 그림과 같다. Self-Attention과 Feed Forward Neural Network로 구성되어있다.

  • Self-Attention은 한 개의 단어에 대해서 다른 단어와의 관계까지 고려하는 것이 핵심이다.

1.1. Self-Attention 구조

  • 각 단어마다 Query, Key, Value 3개의 벡터를 만들고

  • 대상 단어의 Query와 나머지 각 단어의 Key를 내적한 Score 벡터를 각각 구한다.

  • Dimention의 크기(Key 벡터의 차원)로 나눠준다. 이는 값이 너무 커지지 않게 하기 위함이다.

  • Softmax -> Attention Weight

  • Value 벡터와 Weighted Sum 한 값이 최종 encoding vector가 된다.

❓왜 Transformer가 추정이 잘 될까?

  • CNN, MLP를 할 경우 Input이 Fix되면 Output도 Fix 된다.

  • Transformer는 Input이 Fix되더라도 주위의 단어에 따라 Output이 달라진다.=> Flexible 하여 더 많은걸 표현하게 된다.

❕ check

  • n개의 단어가 주어지면 nxn개의 Matrix가 필요하고 이를 한번에 처리할 수 있어야한다.

✔ Multi-headed Attention (MHA) 위 single-attention의 과정을 n번 진행하는 것이다. 하나의 encoding된 vector에 대해 n개의 query, key, value vector를 만드는 것. 이 논문에서는 8개의 attention head를 가진다.

  • 동일한 seq가 주어지더라도 다른 기준으로 여러 지표를 뽑아와야할 필요가 있을 수 있다. 예를 들어 "나는 학교에서 공부를 했다." "나는 집에 와서 휴식을 취했다." 라는 문장이 있을 때 "나"에 대해 위치정보(학교, 집)의 정보가 중점이 될 수 있고, 행동("공부", "휴식")의 정보가 중점이 될 수 있다.

  • 생성된 8개의 head-attention을 concat하여 합치고 이를 원하는 출력의 차원으로 선형변환하는 WOW^O를 행렬곱을 하여 Z를 구해낸다.

1.2. Decoder

  • 학습 단계에서는 마스킹하는 작업을 하여 미래의 정보를 사용하지 않도록 한다.

Last updated