[논문] Attention Is All You Need (2017) - 4
4. Why Self-Attention
셀프 어텐션 레이어와 순환 레이어, 컨볼루션 레이어에 대한 비교 진행
=> 3가지 조건 (층별 계산 복잡성, 연속 연산, 최장 경로 길이)
1. 각 층에 대한 총 계산 복잡도
=> 시퀀스의 길이가 차원보다 작으면($n<d$) self-attention layer > recurrent layer
=> 이런 상황은 최첨단 기계 번역 모델(예: word-piece, byte-pair)에 사용되는 시퀀스 표현에서 자주 발생
=> separable convolution의 경우 $O(knd+nd^2)$까지 복잡성을 감소시킴
=> 그러나, $k=n$일 때, separable convolution의 복잡성은
self-attention layer와 point-wise feed-forward layar의 결합과 동일
2. 병렬적으로 수행 가능한 계산의 양
- 연속 연산의 최소 수로 측정됨
=> self-attention의 경우, 모든 위치를 연결하는 데 순차적으로 실행되는 연산의 수는 상수값
=> recurrent layer의 경우에는 $O(n)$번의 순차적인 실행을 요구
3. 네트워크의 장기 의존성 사이 경로 길이
- 장기의존성을 학습하는 것은 시퀀스 번역 작업에서의 중요한 과제
- 의존성을 학습하는 능력에 중요한 요인은 네트워크에서 횡단해야하는 경로의 길이
- 길이가 짧을수록 장기의존성 학습이 쉬워짐.
*장기의존성(Long-range dependence, LRD) : 통계적 의존성이 시간과 공간을 지나면서 얼마나 쇠퇴하는지를 묘사하는 현상
=> self-attention은 각각의 아웃풋에 중점은 둔 입력값 시퀀스의 $r$ 크기의 이웃만 고려하도록 제한 가능.
=> 이렇게 하면 최장 경로의 길이를 $O(n/r)$까지 높힐 수 있음.
=> 커널의 크기가 시퀀스의 길이보다 작을 경우(k<n), 단일 컨볼루션은 입력값과 출력값 위치의 모든 짝을 연결하지 않음.
=> 이럴 경우엔, 연속적인 커널(contiguous kernels)은 $O(n/k)$개의 컨볼루션 층을 쌓아야 함.
=> 확장된 컨볼루션(dilated convolutions)은 $O(log_{k}(n))$개의 층을 필요로 함.
=> convolution layer의 경우, k의 요인을 가지기 때문에 일반적으로 recurrent layer보다 비싸다.
*확장된 컨볼루션(dilated convolutions) 참고 : https://zzsza.github.io/data/2018/02/23/introduction-convolution/