Transformer Block은 두 Mixer다
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 사이를 직접 섞는가?