Transformer Block은 두 Mixer다

transformerattentionmlp

Transformer block은 복잡해 보이지만, 중심 계산은 두 부분이다.

input x
  -> attention
  -> MLP/FFN
  -> output

입력과 출력의 기본 모양은 보통 유지된다.

x: [B, T, D]
output: [B, T, D]

중간 계산은 복잡하지만, block 바깥에서 보면 같은 모양의 텐서를 받아 같은 모양의 텐서를 내보낸다. 그래서 layer를 여러 번 쌓을 수 있다.

Attention: token mixing

Attention은 한 token 위치의 표현을 만들 때 다른 token 위치들을 참고한다.

token 5의 새 표현
  = token 1, token 2, token 3, ... 을 참고해서 계산

즉 attention은 sequence 방향, 다시 말해 T 방향으로 정보를 섞는다.

MLP/FFN: 각 token의 feature 변환

MLP/FFN은 각 token 위치에 같은 작은 network를 적용한다고 볼 수 있다.

token 1의 D차원 벡터 -> MLP -> token 1의 새 D차원 벡터
token 2의 D차원 벡터 -> MLP -> token 2의 새 D차원 벡터
token 3의 D차원 벡터 -> MLP -> token 3의 새 D차원 벡터

MLP 자체는 token 1과 token 2를 직접 섞지 않는다. token 사이의 정보 교환은 주로 attention이 담당한다.

확인

  • Transformer block의 입력과 출력 shape은 보통 어떻게 유지되는가?
  • attention은 T 방향과 D 방향 중 어느 쪽 정보를 주로 섞는가?
  • MLP/FFN은 token 사이를 직접 섞는가?