Self-attention은 신경망에서 사용되는 기본 메커니즘으로, 특히 변환기 모델에서 두드러지며 순차적 데이터를 효과적으로 처리할 수 있게 해줍니다. 이를 통해 모델은 시퀀스 내에서 서로 다른 단어나 요소의 가중치를 다르게 적용하여 계산 중에 관련 부분에 더 집중할 수 있습니다.
Self-Attention의 구성요소
-
쿼리, 키 및 값: self-attention에서 입력 시퀀스는 쿼리, 키 및 값의 세 가지 벡터로 변환됩니다. 이러한 벡터는 입력 시퀀스에서 선형 변환을 통해 얻어지며, 주의 점수를 계산하는 데 사용되는 이러한 구성 요소를 생성합니다.
-
주의 점수: 이러한 벡터가 얻어지면 쿼리 벡터와 키 벡터 * 사이의 유사성 을 측정하여주의 점수**가 계산됩니다. 시퀀스의 모든 요소*. 이는 일반적으로 내적을 사용한 다음 스케일링하고 소프트맥스 함수를 적용하여 각 요소에 대한 주의 가중치를 구하는 방식으로 수행됩니다.
-
가중 합계: 얻은 주의 가중치는 값 벡터에 가중치를 부여하는 데 사용됩니다. 각각의 Attention 가중치를 기준으로 이러한 값의 가중 합계가 self-attention 레이어의 출력을 생성합니다.
-
Multi-Head Attention: 단어나 요소 간의 다양한 관계를 캡처하기 위해 여러 세트의 쿼리, 키 및 값 변환이 병렬로 수행되어 여러 세트의 Attention 가중치 및 출력 벡터가 생성됩니다. 그런 다음 연결하고 다시 변환하여 최종 출력을 얻습니다.
장거리 의존성 학습 촉진
Self-attention은 시퀀스의 모든 요소 간 상호 작용을 직접 모델링하는 기능으로 인해 시퀀스의 장거리 종속성을 캡처하는 데 탁월합니다. 순환 신경망(RNN)과 같은 기존 아키텍처는 사라지거나 폭발하는 그래디언트 문제로 인해 장거리 종속성을 학습하는 능력이 제한됩니다. 반면에 Self-attention은 이러한 문제 없이 멀리 있는 단어나 요소 간의 관계를 포착할 수 있으므로 시퀀스 내의 맥락과 관계를 이해하는 데 더 효과적입니다.
기존 아키텍처에 비해 장점
-
병렬화: Self-attention을 사용하면 시퀀스의 모든 요소에 대한 Attention 점수를 병렬로 계산할 수 있으므로 RNN의 순차적 처리보다 효율적입니다.
-
장거리 종속성: 순차적 특성으로 인해 장거리 종속성을 캡처하는 데 어려움을 겪는 RNN과 달리 self-attention은 이러한 종속성을 효과적으로 캡처할 수 있습니다.
-
경로 길이 감소: Self-attention은 시퀀스의 모든 요소를 직접 연결하여 멀리 있는 요소 사이의 경로 길이를 줄이고 훈련 중에 더 나은 그라데이션 흐름을 가능하게 합니다.
한계 및 계산 복잡성
-
2차 복잡성: Self-attention에는 시퀀스의 모든 요소 간의 쌍별 비교가 포함되며, 결과적으로 시퀀스 길이가 증가함에 따라 계산이 2차 증가합니다. 매우 긴 시퀀스의 경우 계산 비용이 많이 들 수 있습니다.
-
메모리 요구 사항: Transformer는 self-attention 메커니즘으로 인해 CNN 또는 RNN과 같은 단순한 아키텍처에 비해 더 많은 메모리가 필요한 경우가 많습니다.
-
어텐션 마스킹: 가변 길이의 시퀀스를 처리하려면 패딩을 처리하기 위해 어텐션 마스크를 사용해야 하며, 이로 인해 모델 및 교육 프로세스가 복잡해질 수 있습니다.
이러한 한계에도 불구하고 self-attention은 자연어 처리 작업에서 매우 효과적인 메커니즘임이 입증되었으며, 지속적인 연구는 더 나은 효율성과 확장성을 위해 계산 복잡성을 해결하는 것을 목표로 합니다.