diff --git a/_posts/machine-learning/2024-11-27-attention-is-all-you-need.md b/_posts/machine-learning/2024-11-29-attention-is-all-you-need.md similarity index 74% rename from _posts/machine-learning/2024-11-27-attention-is-all-you-need.md rename to _posts/machine-learning/2024-11-29-attention-is-all-you-need.md index 14b2601b..757ee776 100644 --- a/_posts/machine-learning/2024-11-27-attention-is-all-you-need.md +++ b/_posts/machine-learning/2024-11-29-attention-is-all-you-need.md @@ -172,3 +172,67 @@ $i$번째 위치의 예측이 $i$ 이전 위치에서 알려진 아웃풋에만 (figure2) #### 3.2.1 Scaled Dot-Product Attention + +우리는 이 특정한 어텐션 방식을 "Scaled Dot-Product Attention"이라고 부르겠다. +(figure2 참고) +인풋 데이터는 $d_k$ 차원의 쿼리와 키(key)와 $d_v$ 차원의 값(value)으로 구성되어 있다. +우리는 쿼리와 키 간의 내적을 계산한 뒤, 각 결과를 $\sqrt(d_k)$로 나누고 +소프트맥스 함수를 적용해 값(value)에 대한 가중치를 얻는다. + +실제로는 동시에 여러 쿼리들에 어텐션 함수를 적용하고, 행렬 Q에 함께 모아서 처리한다. +키와 값들 역시 행렬 k와 v에 함께 모아처리한다. +우리는 아웃풋 해열을 다음과 같이 계산할 수 있다. + +$Attention(Q, K, V) = softmax(\frac{QK^{T}}{\sqrt{d_k}})V$ + +가장 흔하게 사용되는 어텐션 함수는 additive(가산) attention과 dot-product(내적) 어텐션이다. +내적 어텐션은 $1/\sqrt{d_k}$ 스케일링 요소만 추가된 것을 제외하면 +우리 알고리즘(Scaled Dot-Product Attention)과 동일하다. +가산 어텐션은 호환성 함수를 계산할 때, +단일 은닉층을 가진 피드포워드 네트워크를 사용한다. +이러한 두 방식은 이론적인 복잡도가 비슷하지만, +내적 어텐션은 매우 최적화된 행렬 곱셈 코드로 구현할 수 있으므로 +실제로 훨씬 빠르고 메모리 효율적이다. +즉, 가산 어텐션은 은닉층을 활용해 호환성을 계산하고, 내적 어텐션은 단순히 내적을 사용하는데, +내적 어텐션이 더 빠르고 효율적이라고 할 수 있다. + +$d_k$가 작을 때는 두 방법의 성능이 비슷하지만 +$d_k$가 클 경우에는 스케일링이 없는 내적 어텐션은 가산 어텐션보다 성능이 떨어진다. +$d_k$ 값이 클 경우, 내적 결과값이 매우 커지면서 소프트맥스 함수의 +그래디언트가 매우 작은 영역(region)으로 밀려서 그런것이 아닐까 추측한다. +따라서 이러한 일을 예방하고 안정성을 확보하기 위해 +내적 값에 $1/\sqrt{d_k}$을 곱하는 스케일링을 적용한다. + + +#### 3.2.2 Multi-Head Attention + +우리는 $d_{model}$ 차원의 키, 값, 쿼리를 사용해 단일 어텐션 함수를 수행하는 대신, +쿼리 키, 값을 각각 서로 다르게 학습된 프로젝션(linear projections)을 사용해 +$d_k$, $d_k$, $d_v$ 차원으로 프로젝션(linear projections)하고 +이를 h번 반복하는 것이 유리하다는 것을 발견했다. +이렇게 선형 변환된 쿼리, 키, 값에 대해 각각 병렬로 어텐션 함수를 수행하여 +$d_v$차원의 아웃풋을 얻는다. +이 아웃풋들을 이어 붙여 서로 연결(concatenate)하고 다시 한번 선형 변환 한 뒤, +figure2에 묘사된 것과 같은 최종 값을 구할 수 있다. + +멀티-헤드 어텐션은 모델이 다양한 표현 공간(Representation Subspace)에서 +서로 다른 위치의 정보를 동시에 주목할 수 있게 한다. +단일 어텐션 헤드에서는 평균화로 인해 여러 정보가 하나로 합쳐지면서 +구체적인 특징들이 희석될 수 있다. +그러나 멀티-헤드 방식은 각 헤드가 독립적으로 특정 특징을 학습할 수 있게 함으로써 +모델의 표현력을 강화시킨다. + +$MultiHead(Q, K, V) = Concat(head_1, ..., head_h)W^{O}$ +$where head_i = Attentino(QW_{i}^{Q}, KW_{i}^{K}, VW_{i}^{V})$ + +이때 프로젝션(projection, 선형 변환)에 사용되는 행렬들은 +다음과 같은 매게변수 행렬로 정의 된다. + +$W_{i}^{Q}\in \mathbb{R}^{d_{model} \times d_k}$ +$W_{i}^{K}\in \mathbb{R}^{d_{model} \times d_k}$ +$W_{i}^{V}\in \mathbb{R}^{d_{model} \times d_v}$ +$W_{i}^{O}\in \mathbb{R}^{hd_{v} \times d_{model}}$ + + +#### 3.2.3 Applications of Attention in our Model +