초록(Abstract)
현재 지배적인 순차 변환 모델은 인코더와 디코더를 포함한 복잡한 순환 신경망(RNN)이나 합성곱 신경망(CNN)에 기반
- 복잡성을 없애고 오직 어텐션 메커니즘에만 기반한 간단한 네트워크 구조인 트랜스포머(Transformer)를 제안
- 이 모델은 순환과 합성곱을 완전히 제거
- 병렬 처리가 더 용이하고 훈련에 필요한 시간이 크게 줄어드는 것을 확인
서론(Introduction)
순환을 배제하고 대신 어텐션 메커니즘에 전적으로 의존하여 입력과 출력 사이의 글로벌 의존성을 도출하는 모델구조인 트랜스포머를 제안
- 셀프 어텐션(Self-Attention)
- 단일 시퀀스의 서로 다른 위치를 관련지어 시퀀스의 표현을 계산하는 어텐션 메커니즘
모델 구조(Model Architecture)
Scaled Dot-Product Attention
각 Q 벡터는 모든 K 벡터에 대해서 어텐션 스코어를 구하고, 어텐션 분포를 구한 뒤에 이를 사용하여 모든 V 벡터를 가중합하여 어텐션 값 또는 컨텍스트 벡터를 구하게 된다.
- 쿼리 : 물어보는 주체 - I am a teacher에서 ‘I’를 뜻함
- 키 : 물어보는 대상 - 각각의 단어들
- 값
마스크 행렬(Mask)을 이용해서 특정 단어는 무시할 수 있도록 한다.
두 가지 가장 일반적으로 사용되는 어텐션 함수는 가산 어텐션(additive attention)과 닷 프로덕트(dot-product, 곱셈) 어텐션
- 가산 어텐션은 단일 은닉층을 가진 피드포워드 네트워크를 사용하여 호환성 함수를 계산
- 닷 프로덕트 어텐션은 고도로 최적화된 행렬 곱셈 코드를 사용하여 구현할 수 있기 때문에 실제로는 훨씬 빠르고 공간 효율적
Multi-Head Attention
임베딩 차원(d_{model})의 키, 값, 쿼리를 사용하여 단일 어텐션 함수를 수행하는 대신, 쿼리, 키 및 값을 각각 d_k, d_k 및 d_v 차원으로 선형 투영하는 것이 유익하다는 것을 발견
- 선형 투영된 쿼리, 키 및 값의 각 버전에서 어텐션 함수를 병렬로 수행하여 $d_v$ 차원의 출력 값을 얻는다.
- 이 출력 값들을 연결한 후 다시 한 번 투영하여 최종 값을 얻는다.
모델에서 어텐션 응용(Applications of Attention in our Model)
세가지 종류의 어텐션 레이어가 사용된다.
- 인코더-디코더 어텐션(Encoder-Decoder Attention):.
- 쿼리가 디코더에 있고 각각 키와 Value는 인코더에 있는 것을 의미
- 디코더에 있는 쿼리가 인코더에 있는 키와 Value 값을 참조함.
- 인코더 셀프 어텐션(Encoder Self-Attention):
- 인코더의 각 층에서 모든 키, 값, 쿼리는 동일한 위치, 즉 인코더의 이전 층의 출력에서 나온다. 인코더의 각 위치는 인코더의 이전 층의 모든 위치에 주목한다.
- 각각의 단어가 서로에게 어떤 영향을 미치는 지 확인
- 디코더 셀프 어텐션(Decoder Self-Attention):
- 디코더의 각 위치가 해당 위치까지 디코더의 모든 위치에 주목할 수 있게 한다. 디코더에서 자가 회귀적 속성을 유지하기 위해 왼쪽으로 정보가 흐르지 않도록 마스킹을 사용
- 앞쪽 단어만을 참고할 수 있도록 만듦.
Position-wise Feed-Forward Networks
어텐션 서브 레이어 외에도, 인코더와 디코더의 각 레이어는 위치별로 동일하게 적용되는 완전 연결 피드포워드 네트워크를 포함
- 두 개의 선형 변환과 그 사이의 ReLU 활성화 함수로 구성
- 선형 변환은 다른 위치에서도 동일하지만, 층마다 다른 매개변수를 사용
Positional Encoding
- 모델이 시퀀스의 순서를 활용할 수 있도록 하기 위해 시퀀스 내 토큰의 상대적 또는 절대적 위치에 대한 정보를 주입
- pos는 각각 단어의 번호, i는 각각 단어의 임베딩 값 위치를 의미함
- 파장(wavelength)은 2π에서 10000 · 2π까지 기하급수적으로 증가
- 즉, 각 단어의 상대적인 위치 정보를 네트워크를 알 수 있도록 주기함수 사용
왜 셀프 어텐션이 유리한가?
순환 및 합성곱 레이어와 셀프 어텐션 레이어의 다양한 측면을 비교
- 셀프 어텐션을 사용하기 위한 동기부여 요소
- 레이어별 총 계산 복잡도가 줄어듦
- 필요한 최소 순차 연산 수로 측정되는 병렬처리가 가능
- 네트워크에서 장기 종속성 간의 경로 길이
- n은 시퀀스의 길이(단어의 개수), d는 표현차원, r은 이웃의 크기, k는 합성곱의 커널 크기
- 💡Self-Attention이 가장 복잡도가 낮음을 보여줌,
- n의 길이가 d보다 짧은 경우가 더 많음
- n은 word-piece와 같이 단어의 단위의 개수로 보기 때문에
Training
- 약 450만 개의 문장 쌍으로 구성된 표준 WMT 2014 영어-독일어 데이터셋으로 학습을 진행
- 문장은 약 37000개의 토큰으로 구성된 공유된 소스-타겟 어휘를 사용하는 바이트 페어 인코딩을 사용하여 인코딩
- 영어-프랑스어의 경우, 우리는 약 3600만 개의 문장으로 구성된 WMT 2014 영어-프랑스어 데이터셋을 사용하였고, 토큰을 32000개 단어 조각 어휘로 나눈다.
결과(Results)
- 영어-독일어 번역과제에서, 대형 프랜스포머 모델은 기존에 보고된 최고 모델보다 2.0 BLEU이상 높은 28.4의 BLEU 점수를 기록해 새로운 최고 성능 달성
- 영어-프랑스어 작업을 위해 훈련된 대형 트랜스포머 모델은 $P_{drop}$비율을 0.3대신 0.1로 설정했다
- 트랜스포머가 다른 작업에도 일반화할 수 있는지 평가하기 위해 우리는 **영어 구성구 분석(English constituency parsing)**에 대한 실험을 수행
- RNN 시퀀스-투-시퀀스 모델과는 달리, 트랜스포머는 WSJ 훈련 세트의 40K 문장만으로도 BerkeleyParser보다 우수한 성능
결론(Conclusion)
본 연구에서는 트랜스포머를 소개했다.
- 완전히 어텐션 메커니즘에 기반한 최초의 순차 변환 모델로
- 인코더-디코더 구조에서 주로 사용되던 순환 레이어 → **다중 헤드 셀프 어텐션(multi-headed self-attention)**로 대체함.
- 번역 작업에서 트랜스포머는 순환(recurrent) 또는 합성곱 레이어((convolutional layers) 기반구조 보다 훈련 속도가 훨씬 빠름.
'AI.ML' 카테고리의 다른 글
[AI/ML 스터디] 8주차 - 08. 이미지 분류 (1) | 2024.11.20 |
---|---|
[AI/ML 스터디] 4주차 - 05. 토큰화 (2) | 2024.11.01 |
[AI/ML 스터디] 3주차 - 04. 파이토치 심화 (3) | 2024.10.13 |
[AI/ML 스터디] 1주차 - 03. 파이토치기초(~최적화) (1) | 2024.10.07 |
[AI/ML스터디] 2주차- 03. 파이토치기초(~퍼셉트론) (0) | 2024.10.05 |