셀프-어텐션
셀프-어텐션
개요
셀프-어텐션(Self-Attention)은 인공지능 분야에서 시퀀스 데이터의 상호작용을 모델링하는 데 사용되는 핵심적인 기술입니다. 특히 트랜스포머(Transformer) 아키텍처의 핵심 구성 요소로, 자연어 처리(NLP) 및 컴퓨터 비전(CV) 등 다양한 분야에서 혁신을 이끌었습니다. 이 메커니즘은 입력 시퀀스 내 모든 위치 간의 의존성을 동시에 분석하여 장거리 관계를 효과적으로 포착합니다.
기본 개념
정의
셀프-어텐션은 동일한 입력 시퀀스 내에서 쿼리(Query), 키(Key), 값(Value) 벡터 간의 관계를 계산하여 각 위치의 표현을 갱신하는 메커니즘입니다. 이는 기존의 순환 신경망(RNN)이나 합성곱 신경망(CNN)과 달리 시퀀스의 순서에 의존하지 않고 병렬 처리가 가능합니다.
구조
입력 벡터 $ X \in \mathbb{R}^{n \times d} $ (n: 시퀀스 길이, d: 임베딩 차원)에 대해 다음과 같은 단계를 수행합니다:
1. 선형 변환: 입력을 통해 Query(Q), Key(K), Value(V) 행렬 생성
$ Q = XW_Q, K = XW_K, V = XW_V $
2. 어텐션 점수 계산: $ QK^T $를 통해 유사도 측정
3. 소프트맥스 정규화: 점수를 확률 분포로 변환
4. 가중합: 정규화된 점수로 Value 벡터 결합
어텐션 메커니즘의 종류
종류 | 설명 | 사용 사례 |
---|---|---|
일반 어텐션 | 소스와 타겟 시퀀스 간 상호작용 | 번역 모델(예: Seq2Seq) |
셀프-어텐션 | 동일 시퀀스 내 상호작용 | 트랜스포머, BERT |
크로스-어텐션 | 서로 다른 시퀀스 간 상호작용 | 이미지-텍스트 태스크 |
작동 원리
단계별 설명
-
쿼리-키 유사도 계산
$ \text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V $
여기서 $ d_k $는 스케일링 계수로 계산 안정성을 위해 사용됩니다. -
예시: 문장 분석
문장 "The cat sat on the mat"에서 "cat"의 표현은 "the", "sat", "on" 등 주변 단어에 가중치를 부여하여 업데이트됩니다.
수학적 표현
import torch
import torch.nn.functional as F
def scaled_dot_product_attention(Q, K, V):
d_k = K.size(-1)
scores = torch.matmul(Q, K.transpose(-2, -1)) / torch.sqrt(torch.tensor(d_k))
attn_weights = F.softmax(scores, dim=-1)
return torch.matmul(attn_weights, V)
장점과 단점
장점
- 병렬 처리: RNN의 순차적 처리 한계를 극복
- 장거리 의존성: 시퀀스 전체 범위에서 관계 포착
- 유연성: 다양한 태스크에 적용 가능
단점
문제 | 설명 |
---|---|
계산 복잡도 | $ O(n^2) $로 시퀀스 길이 증가 시 비용 급증 |
과적합 위험 | 짧은 시퀀스에서 학습 불안정 가능성 |
응용 분야
자연어 처리(NLP)
- 기계 번역: Google의 Transformer 모델
- 텍스트 요약: BERT 기반 모델
- 질의응답: SQuAD 데이터셋
컴퓨터 비전
- 비전 트랜스포머(ViT): 이미지 패치 간 관계 분석
- 객체 감지: DETR 모델
관련 기술 및 모델
트랜스포머 아키텍처
셀프-어텐션은 인코더-디코더 구조의 핵심 블록으로, 멀티-헤드 어텐션(Multi-Head Attention) 을 통해 다양한 표현을 병렬로 학습합니다.
멀티-헤드 어텐션
여러 어텐션 헤드를 결합하여 다양한 관계를 포착합니다.
$ \text{MultiHead}(Q, K, V) = \text{Concat}(\text{head}_1, ..., \text{head}_h)W_O $
( $ h $: 헤드 수, $ W_O $: 선형 변환 행렬 )
위치 인코딩(Positional Encoding)
시퀀스 순서 정보를 보존하기 위해 입력에 위치 벡터를 추가합니다.
예시: $ PE_{(pos, 2i)} = \sin(pos / 10000^{2i/d}) $, $ PE_{(pos, 2i+1)} = \cos(...) $
참고 자료
- Attention Is All You Need (Vaswani et al., 2017)
- BERT: Pre-training of Deep Bidirectional Transformers (Devlin et al., 2018)
- 비전 트랜스포머 논문
이 문서는 머신러닝 분야에서 셀프-어텐션의 이론과 응용을 체계적으로 설명하며, 관련 기술과 실제 사례를 함께 다룹니다.
이 문서는 AI 모델(qwen-3-235b-a22b)에 의해 생성된 콘텐츠입니다.
주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.