AI/Computer Vision

[CV] Attention 메커니즘과 Transformer의 기초

도도걸만단 2026. 2. 12. 14:49
반응형

어텐션(Attention) 메커니즘과 트랜스포머의 기초에 대한 내용을 상세하게 정리해 드립니다.

크게 기존 Seq2Seq 모델의 한계와 이를 해결하기 위해 등장한 어텐션(Attention) 메커니즘의 작동 원리 및 시각화로 나뉩니다.

 

* computer vision 강의노트 정리한것입니다

어텐션(Attention)과 트랜스포머의 기초 (Part 1)

1. 서론: 어텐션(Attention)의 등장 배경

현대 인공지능, 특히 자연어 처리(NLP)와 컴퓨터 비전 분야에서 가장 중요하고 유명한 개념인 **어텐션(Attention)**과 **트랜스포머(Transformer)**에 대한 2부작 강의 중 첫 번째 시간입니다.

목표:어텐션 모듈과 트랜스포머의 개념적 기초를 다집니다.

기원:순환 신경망(RNN)이 가진 주요 문제를 해결하는 과정에서 처음 등장했습니다.

핵심 아이디어:모델이 입력 시퀀스의 '관련된 부분'을 되돌아보게(Look back)하는 혁신적인 아이디어입니다.

중요성:이 초기 형태의 어텐션을 이해하는 것은 이후 NLP와 컴퓨터 비전 분야를 지배하게 된 트랜스포머 아키텍처를 이해하는 데 필수적입니다.

 

 

2. 기존 Seq2Seq 모델 (RNN 기반) 복습

어텐션이 왜 획기적인지 이해하기 위해, 먼저 2014년에 발표된 표준 Seq2Seq (Sequence-to-Sequence)아키텍처를 검토해야 합니다. (주로 기계 번역 작업에 사용됨)

2.1. 인코더 (Encoder)

구조:LSTM이나 GRU 같은 순환 신경망(RNN)입니다.

역할:입력 시퀀스(예: "We are eating bread")를 토큰 단위로 읽어 들입니다.

과정:매 단계마다 은닉 상태(Hidden State)를 업데이트합니다.

결과:마지막 은닉 상태(예: $h_4$)가 입력 시퀀스 전체의 의미를 압축한 **컨텍스트 벡터(Context Vector)**가 됩니다. 이 벡터는 디코더로 전달됩니다.

 

2.2. 디코더 (Decoder)

구조:또 다른 RNN입니다.

역할:출력 시퀀스를 생성합니다.

과정:

특수 토큰인 'Start Token'으로 시작합니다.

매 시점 $t$마다 이전 은닉 상태($s_{t-1}$), 방금 생성한 단어($y_{t-1}$), 그리고 **고정된 컨텍스트 벡터($C$)**를 사용하여 다음 단어와 새로운 은닉 상태($s_t$)를 생성합니다.

'Stop Token'이 나올 때까지 반복합니다.

특징:이미지 캡셔닝의 이미지 특징 벡터처럼, 컨텍스트 벡터 $C$는 고정되어 있으며 매 단계 업데이트되지 않습니다.

 

 

3. 기존 모델의 결정적 문제점: 병목 현상 (The Bottleneck)

이 아키텍처는 작동은 하지만 치명적인 약점이 있습니다.

정보의 병목 (Information Bottleneck):입력 시퀀스의 길이와 상관없이 모든 정보를 **하나의 고정된 컨텍스트 벡터($C$)**에 압축해 넣어야 합니다.

10단어 문장이든 1,000단어 문장이든 똑같은 크기의 벡터 하나에 욱여넣어야 하는 것은 불공평합니다.

정보 손실:긴 시퀀스의 뉘앙스나 특히 문장 앞부분의 정보를 기억하기가 매우 어렵습니다. 마지막 은닉 상태($h_t$)는 필연적으로 마지막 몇 단어의 정보에 지배되게 됩니다.

결과:문장 길이가 길어질수록 모델의 성능이 급격히 저하됩니다.

 

 

4. 해결책: 어텐션 메커니즘 (Attention Mechanism)

2015년 바다나우(Bahdanau) 등의 논문 *"Neural Machine Translation by Jointly Learning to Align and Translate"*에서 제안된 핵심 아이디어입니다.

4.1. 핵심 아이디어

동적 컨텍스트 벡터 (Dynamic Context Vector):하나의 고정된 벡터를 쓰는 대신, 디코더가 매 시점($t$)마다 새로운 동적 컨텍스트 벡터를 사용한다면 어떨까요?

전체 요약본만 보는 것이 아니라, 입력 시퀀스의 서로 다른 부분(관련된 부분)을 직접 들여다보며단어를 생성하게 합니다.

4.2. 어텐션의 작동 단계 (상세 과정)

예를 들어 첫 번째 단어(예: 스페인어 'Estamos')를 생성하는 과정을 추적해 봅시다.

준비:기존처럼 마지막 상태만 쓰는 것이 아니라, 인코더의 **모든 은닉 상태($h_1, h_2, h_3, h_4$)**를 유지합니다.

Step 1: 정렬 점수 계산 (Alignment Scores)

현재 디코더의 상태($s_0$)와 각 입력 은닉 상태($h_i$)가 얼마나 잘 맞는지를 계산합니다.

여기서 $s_{t-1}$(이전 상태)를 **쿼리(Query)**로 사용하고, $h_i$를 입력으로 사용하여 작은 신경망(Alignment Network)을 통해 **스칼라 정렬 점수(Alignment Score)**를 계산합니다.

의미: 현재 디코더 상태에서 어떤 입력 단어가 중요한지 판단합니다.

Step 2: 정규화 (Softmax)

계산된 점수들을 소프트맥스(Softmax)함수에 통과시켜 확률 분포로 만듭니다.

이 결과가 **어텐션 가중치(Attention Weights, $\alpha_{t,i}$)**입니다.

각 값은 0과 1 사이이며, 총합은 1이 됩니다. (예: $h_3$에 0.85, 나머지는 0에 가깝게)

Step 3: 컨텍스트 벡터 계산 (Compute Context Vector)

어텐션 가중치를 사용하여 인코더 은닉 상태들의 **가중 합(Weighted Sum)**을 구합니다.

공식: $c_t = \sum \alpha_{t,i} h_i$

가중치가 높은 은닉 상태(중요한 단어)가 컨텍스트 벡터 $c_t$의 대부분을 차지하게 됩니다.

Step 4: 디코딩 (Decoding)

새로 생성된 동적 컨텍스트 벡터 $c_1$을 $s_0$, $y_0$(Start token)와 함께 디코더에 넣어 새로운 상태 $s_1$과 첫 번째 단어를 생성합니다.

4.3. 반복 및 차별성

이 과정은 매 타임 스텝마다 반복됩니다.

다음 단어를 생성할 때는 새로운 디코더 상태($s_1$)를 쿼리로 사용하여, **완전히 새로운 어텐션 가중치와 컨텍스트 벡터($c_2$)**를 계산합니다.

전체 과정은 **미분 가능(Differentiable)**하므로 역전파(Backpropagation)를 통해 학습될 수 있습니다.

 

 

5. 예시 및 시각화 (Interpretability)

5.1. 직관적 예시: "eating" 번역하기

입력: "We are eatingbread"

출력(목표): "Comiendo" (스페인어 'eating')를 생성할 차례라고 가정합시다.

모델은 입력 단어 "eating"에 해당하는 은닉 상태($h_3$)에 매우 높은 가중치(예: 0.85)를 부여합니다.

결과적으로 컨텍스트 벡터는 $h_3$의 정보를 주로 담게 되어, 디코더가 올바른 번역어인 "Comiendo"를 생성할 수 있도록 도와줍니다.

5.2. 히트맵(Heatmap) 시각화

어텐션 메커니즘의 가장 우아한 점은 **해석 가능성(Interpretability)**입니다. 모델이 어디를 보고 있는지 시각화할 수 있습니다.

바다나우 논문의 시각화:(영어 -> 프랑스어 번역)

X축: 영어 입력 / Y축: 프랑스어 출력

각 셀의 밝기: 어텐션 가중치(강도)

대각선 패턴:대체로 단어 순서대로 번역되므로 강한 대각선 패턴이 나타납니다.

어순 차이 해결:

영어: "European Economic Area" (유럽 경제 지역)

프랑스어: "Zone Économique Européenne" (지역 경제 유럽 - 어순이 반대임)

모델은 프랑스어 'Zone'을 생성할 때 영어의 'Area'를, 'Européenne'을 생성할 때 영어의 'European'을 정확히 쳐다봅니다(Attend).

결론:모델은 단순 암기가 아니라, 두 언어 간의 깊은 정렬(Alignment)관계를 학습했음을 보여줍니다.

 

 

6. 결론 및 요약

어텐션 메커니즘을 통해 디코더는 매 시점마다 입력 시퀀스의 다른 부분을 참고하여 동적인 컨텍스트 벡터를 생성합니다.

이로써 입력 시퀀스 전체를 하나의 벡터에 욱여넣는 병목 현상을 해결했습니다.

컨텍스트 벡터는 은닉 상태들의 선형 결합(Linear Combination)으로 만들어지므로, 디코더 입장에서는 입력 상태들을 순서가 없는 집합(Unordered Set)처럼 처리하지만, 어텐션 가중치를 통해 필요한 정보를 정확히 추출합니다.

 

 

핵심은 "고정된 벡터의 한계를 넘어, 매 순간 필요한 정보를 입력에서 직접 찾아보는(Attention) 방식이 AI 성능을 혁신적으로 끌어올렸다"는 점입니다.

 


어텐션의 확장과 메커니즘 (Part 2)

1. 어텐션의 확장: 이미지 캡셔닝 (Image Captioning)

어텐션 아이디어는 단순한 텍스트 작업을 넘어 다양한 모달리티(Modality)로 빠르게 확장되었습니다. 가장 유명한 사례는 2015년 발표된 논문 **"Show, Attend, and Tell"**입니다. 이 모델의 목표는 이미지를 보고 텍스트 설명을 생성하는 것입니다.

1.1. 구조적 변화 (Encoder-Decoder)

인코더 (Encoder):RNN 대신 **합성곱 신경망(CNN)**을 사용합니다.

이미지 전체를 하나의 벡터로 압축하는 대신, CNN을 통해 **특징 벡터(Feature Vectors)의 그리드($h_{i,j}$)**를 추출합니다.

각 벡터 $h_{i,j}$는 이미지의 특정 패치(Patch)나 영역에 대한 고차원 설명을 담고 있습니다.

디코더 (Decoder):여전히 LSTM과 같은 RNN을 사용하여 단어를 하나씩 생성합니다.

 

1.2. 작동 원리

  • 번역 모델과 유사하게 작동합니다. 캡셔닝을 생성하는 매 단계($t$)마다 디코더는 다음을 수행합니다.
  • 이전 상태($s_{t-1}$)를 사용하여 모든 이미지 특징($h_{i,j}$)에 대한 어텐션 가중치를 계산합니다.
  • 정렬 점수(Alignment Score)를 계산하고 소프트맥스(Softmax)로 정규화하여 어텐션 가중치 $\alpha_{t,i,j}$를 얻습니다.
  • 이 가중치를 적용한 **가중 합(Weighted Sum)**으로 **컨텍스트 벡터($c_t$)**를 생성합니다.
  • 결과:$c_t$는 모델이 현재 단어를 생성할 때 보고 있는 이미지의 특정 부분을 나타냅니다.

 

 

2. 상세 예시: "Cat running outside" 생성 과정

모델이 고양이가 밖에서 뛰는 이미지를 보고 캡션을 생성하는 과정을 추적해 봅시다.

Step 1 ("Cat"):

초기 상태 $s_0$가 쿼리(Query)가 되어 이미지 특징을 탐색합니다.

가장 눈에 띄는 객체인 '고양이'영역에 가장 높은 어텐션 가중치가 부여됩니다.

생성된 컨텍스트 벡터 $c_1$은 고양이와 관련된 시각적 특징을 담고 있으며, 이를 통해 단어 **"Cat"**과 새로운 상태 $s_1$을 생성합니다.

 

Step 2 ("running"):

새로운 상태 $s_1$이 쿼리가 되어 다시 이미지를 봅니다.

이번에는 어텐션이 고양이의 **'다리'**나 동작과 관련된 부분으로 이동합니다.

새로운 컨텍스트 벡터 $c_2$를 통해 **"running"**을 생성합니다.

 

Step 3 ("outside"):

상태 $s_2$를 사용하여 다시 어텐션을 계산합니다.

이번에는 배경인 '푸른 잔디'등으로 초점이 이동합니다.

컨텍스트 벡터 $c_3$를 통해 **"outside"**를 생성합니다.

시각화 (Visualization):

모델이 "Bird"를 생성할 때는 이미지의 새를 하얗게 하이라이트하고, "Stop sign"을 생성할 때는 표지판을 봅니다. 이는 모델이 단순히 단어를 나열하는 것이 아니라, 언어 생성을 이미지의 특정 시각적 내용에 근거(Grounding)하고 있음을 아름답게 증명합니다.

 

 

3. 생물학적 영감: 인간의 시각 시스템

AI의 어텐션을 논하기 전에, 인간의 시각 시스템이 어떻게 작동하는지 살펴봅시다. 이것이 어텐션 메커니즘의 모티브가 되었습니다.

단속적 안구 운동 (Saccade):우리의 눈은 절대 멈춰있지 않습니다. 무언가에 집중하고 있다고 생각할 때도 눈은 미세하고 빠르게 점프하며 움직입니다(초당 여러 번).

중심와 (Fovea) vs 주변부:망막의 아주 작은 영역인 중심와만이 선명한 시각(High acuity)을 담당하고, 주변부는 흐릿합니다.

정보 처리의 효율성:뇌는 전체 이미지를 고해상도로 한 번에 처리하는 대신, 시선을 이리저리 옮기며(Saccade) 필요한 부분의 정보만 빠르게 수집하여 장면을 재구성합니다. 이는 계산 자원을 필요한 곳에만 집중하는 생물학적 지혜입니다.

AI와의 연결:

"A bird flying over a body of water"라는 문장을 읽을 때, 인간은 문장 전체를 한 번에 보지 않고 단어에서 단어로 시선을 옮깁니다.

이와 마찬가지로 신경망의 어텐션 메커니즘도 데이터의 특정 부분(토큰이나 이미지 영역)에 동적으로 더 높은 가중치를 할당합니다.

즉, 어텐션은 네트워크가 "인간처럼 보도록(See like humans)"해줍니다. 모든 것을 균일하게 처리하는 것이 아니라, 현재 작업에 가장 관련성 높은 정보만 선택적으로 집중합니다.

 

4. 딥러닝에서의 어텐션 정의와 확장

핵심:전체 입력을 균일하게 처리하는 대신, 동적으로 가장 관련 있는 부분(이미지 영역, 문장 내 단어 등)에 집중하는 메커니즘입니다.

다양한 적용 사례:

  • Show, Attend, and Tell (2015):이미지 캡셔닝.
  • Ask, Attend, and Answer:VQA (시각적 질의응답).
  • Listen, Attend, and Spell:음성 인식.
  • Robot Control:로봇 제어에서도 어디에 집중할지 학습.
  • 이 메커니즘은 신경망이 복잡하고 고차원적인 데이터를 처리하는 방식을 근본적으로 변화시켰습니다.

 

5. 어텐션의 기계적/수학적 기초 (Query, Key, Value)

이제 현대 트랜스포머 모델의 기초가 되는 어텐션의 메커니즘을 수학적으로 정의해 봅시다.

5.1. 기본 구조

  • 구성 요소:우리가 찾고자 하는 정보를 나타내는 **쿼리(Query, $Q$)**와 정보 자체를 담고 있는 **입력 벡터들($X$)**이 있습니다.
  • 유사도 함수 (Similarity Function):$f_{att}(Q, X_i)$는 입력이 쿼리와 얼마나 일치하는지 측정합니다.
  • 과정:유사도 점수 $\rightarrow$소프트맥스(Softmax) $\rightarrow$가중치 $\rightarrow$입력 벡터들의 가중 합(Weighted Sum).
  • 결과:쿼리와의 관련성에 따라 혼합된 **컨텍스트 벡터(Output Vector)**가 생성됩니다.

 

5.2. 스케일드 닷 프로덕트 (Scaled Dot-Product)

초기에는 일반적인 유사도 함수를 썼지만, 바다나우(Bahdanau) 이후 **내적(Dot Product)**을 사용하여 단순화했습니다.

스케일링 (Scaling):벡터 차원($d_k$)이 커지면 내적 값이 너무 커져 기울기(Gradient)가 불안정해집니다. 이를 방지하기 위해 $\frac{1}{\sqrt{d_k}}$로 나누어 스케일링합니다.

$$\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V$$

 

5.3. Query, Key, Value (Q, K, V)의 분리

입력 벡터 $X$를 그대로 쓰는 대신, 학습 가능한 선형 변환(Linear Projection)을 통해 세 가지 다른 벡터로 변환합니다.

Key ($K = X W_K$):쿼리와 매칭되는지 확인하는 "꼬리표" 역할. (어디를 볼 것인가?)

Value ($V = X W_V$):실제 가져올 정보. (무엇을 가져올 것인가?)

Query ($Q$):현재 찾고자 하는 정보.

직관적 비유:

Query:열쇠 구멍 (우리가 찾고 있는 모양)

Key:열쇠 (그 구멍에 맞는지 확인하는 톱니 모양)

Value:열쇠로 문을 열었을 때 방 안에 있는 내용물 (실제 정보)

Query와 Key가 잘 맞으면(유사도가 높으면), 해당 Value를 많이 가져옵니다.

 

5.4. 셀프 어텐션 (Self-Attention)의 의의

  • 어텐션에서는 Key와 Value가 같은 입력($X$)에서 유래합니다. 즉, 시퀀스 내의 모든 토큰이 자기 자신을 포함한 다른 모든 토큰을 봅니다.
  • Global Flow:
  • CNN:좁은 수용 영역(Receptive field)만 봅니다 (Local).
  • RNN:순차적으로만 정보를 처리합니다.
  • Attention:단 한 번의 레이어에서 모든 요소가 서로를 볼 수 있어, **장거리 의존성(Long-range dependencies)**을 효율적이고 암묵적으로 포착할 수 있습니다.

 


 

강의 정리: Self-Attention의 심화와 구조적 특징 (Part 3)

1. Self-Attention의 작동 메커니즘 (Mechanism)

강의 초반부는 앞서 배운 어텐션(Scaled Dot-Product Attention)이 단일 시퀀스 내에서어떻게 적용되는지 설명합니다.

1.1. 

가중치 행렬과 투영 (Projection) 1111

입력 벡터 $X$(예: 문장의 단어 임베딩) 하나만 있으면 됩니다.

이 $X$에 **세 개의 서로 다른 학습 가능한 선형 가중치 행렬($W_Q, W_K, W_V$)**을 곱하여 세 가지 벡터 세트를 만듭니다.

Query ($Q = XW_Q$):질문을 던지는 주체

Key ($K = XW_K$):질문에 매칭되는지 확인하는 대상

Value ($V = XW_V$):실제 가져올 정보 내용

핵심:기존 'Cross Attention'(인코더-디코더 어텐션)에서는 쿼리가 디코더에서, 키와 밸류가 인코더에서 왔지만, Self-Attention에서는 Q, K, V가 모두 같은 소스($X$)에서 나옵니다.22

 

1.2. 

출력 벡터 생성 과정 3333

유사도 계산:쿼리($Q$)와 키($K$)를 내적(Dot Product)하고 스케일링하여 정렬 점수(Alignment Score)를 구합니다.

가중치 산출:소프트맥스(Softmax)를 통해 확률값인 어텐션 가중치를 얻습니다.

가중 합:이 가중치를 밸류($V$)에 곱해 모두 더합니다.

의미:생성된 출력 벡터 $Y$는 입력 $X$의 고도로 문맥화된(Contextualized) 표현입니다. 즉, $Y_i$는 단순히 $X_i$의 정보만 담는 게 아니라, 문장 내의 관련된 다른 모든 토큰($X_j$)의 정보를 함축하고 있습니다.

 

 

2. CNN vs Self-Attention (구조적 비교)

이 부분은 강의 노트의 "Three Typical Ways of Processing Sequences"슬라이드 내용과 일치합니다. 4

2.1. 

합성곱 신경망 (CNN)의 한계 5

국소적 처리 (Locality):CNN의 필터는 작은 고정된 영역(Receptive Field)만 볼 수 있습니다. (예: $3 \times 3$픽셀)

글로벌 문맥 파악의 어려움:이미지 전체의 관계(예: 사람 머리부터 발끝까지)를 파악하려면, 층(Layer)을 아주 많이 쌓아 수용 영역(Receptive Field)을 점진적으로 넓혀야 합니다.

장점:병렬 처리가 가능합니다.

 

2.2. 

Self-Attention의 강력함 6

전역적 연결 (Global Connectivity):이미지나 문장의 모든 위치가 다른 모든 위치와 직접 연결될 수 있습니다.

효율성:단 한 번의 단계(Single Layer)만으로도 입력 전체의 장거리 의존성(Long-range dependencies)을 포착할 수 있습니다. 예를 들어, 문장 맨 앞의 단어와 맨 뒤의 단어를 즉시 연결할 수 있습니다.

적응형 연결 (Adaptive):CNN처럼 고정된 가중치를 쓰는 게 아니라, 데이터의 내용에 따라 "어디를 연결할지"동적으로 학습합니다.

 

 

3. 순서 무시 문제와 위치 인코딩 (Permutation Invariance & Positional Encoding)

Self-Attention은 강력하지만 치명적인 구조적 특성이 있습니다.

3.1. 

문제점: 순열 불변성 (Permutation Invariance) 7

상황:입력 순서 $x_1, x_2, x_3$를 섞어서 $x_3, x_1, x_2$로 넣었다고 가정해 봅시다.

결과:Self-Attention은 입력을 순서가 있는 시퀀스가 아니라 **'벡터들의 집합(Set of Vectors)'**으로 취급합니다. 따라서 출력도 똑같이 순서만 바뀐 채 값은 그대로 나옵니다 ($y_3, y_1, y_2$). 888

언어 처리에서의 문제:"The dog bit the man"과 "The man bit the dog"는 단어 구성은 같지만 순서 때문에 의미가 완전히 다릅니다. Self-Attention 자체는 이 순서를 구별하지 못합니다. 9

 

3.2. 

해결책: 위치 인코딩 (Positional Encoding) 10

아이디어:입력 벡터 $X$에 위치 정보를 담은 벡터 $E$를 더해줍니다.

구현:

$E$는 사인/코사인 함수 같은 고정된 함수일 수도 있고, 학습 가능한 임베딩일 수도 있습니다.

이 $E$벡터는 **"나는 시퀀스의 첫 번째야", "나는 두 번째야"**라는 고유한 신호를 줍니다.

이로써 모델은 단어의 의미뿐만 아니라 위치 정보까지 함께 처리하게 됩니다.

 

 

4. 마스크드 셀프 어텐션 (Masked Self-Attention)

디코더 부분에서 사용되는 중요한 변형입니다.

 

4.1. 필요성: Autoregressive 특성

디코더는 단어를 하나씩 순차적으로 생성해야 합니다.

세 번째 단어를 예측할 때는 첫 번째와 두 번째 단어만 봐야 합니다. 만약 네 번째, 다섯 번째 단어(미래의 정답)를 미리 본다면(Cheating), 학습이 제대로 되지 않습니다.

일반적인 Self-Attention은 전체를 한 번에 보기 때문에 미래 정보까지 다 보게 됩니다.

 

4.2. 

해결 방법: 마스킹 (Masking) 11

방법:소프트맥스(Softmax)를 적용하기 전, 유사도 행렬에서 **현재 위치보다 미래에 있는 위치(Upper triangular part)**의 값을 **음의 무한대($-\infty$)**로 설정합니다.

결과:소프트맥스를 거치면 $e^{-\infty} \approx 0$이 되어, 미래 토큰에 대한 어텐션 가중치가 0이 됩니다.

즉, 모델은 과거의 단어들만 '볼(Attend)' 수 있게 강제됩니다.

 

 



어텐션의 응용과 아키텍처 비교 (Part 4)

1. 마스크드 셀프 어텐션의 의의 (Masked Self-Attention)

적용 분야:GPT나 Gemini와 같은 자기회귀적(Autoregressive) 생성 모델의 가장 핵심적인 모듈입니다.

필요성:텍스트를 생성할 때, 현재 시점($t$)에서는 과거의 정보($1$~$t$)만 봐야 합니다. 미래의 정보($t+1$이후)를 미리 보는 치팅(Cheating)을 방지하기 위해 마스킹을 통해 미래 토큰과의 연결을 끊습니다.

작동:미래 토큰 위치의 값을 음의 무한대($-\infty$)로 설정하여 소프트맥스 결과(확률)를 0으로 만듭니다.

 

 

2. CNN과 어텐션의 결합 (Self-Attention in CNNs)

어텐션은 텍스트뿐만 아니라 이미지 처리(CNN)에도 통합되어 유연성을 높일 수 있습니다.

2.1. 작동 원리

구조:CNN에서 추출된 특징 맵(Feature map)을 입력으로 사용하여 $Q, K, V$를 계산합니다.

1x1 Convolution:$Q, K, V$변환 및 어텐션 연산 후 원래의 특징 맵 크기로 복원하기 위해 1x1 합성곱을 사용합니다.

잔차 연결 (Residual Skip Connection):기울기 소실(Gradient Vanishing)이나 폭주 문제를 막고 학습을 돕기 위해, 어텐션 결과에 원래 입력을 더해주는 스킵 연결을 추가합니다.

2.2. 예시: Self-Attention GAN (SAGAN)

목표:이미지 생성 품질 향상.

하이브리드 접근:CNN의 장점인 국소적(Locality)특징 추출 능력과 어텐션의 장점인 전역적(Global) 문맥파악 능력을 결합했습니다.

효과:픽셀 단위의 국소적 정보뿐만 아니라, 이미지 내 멀리 떨어진 영역 간의 관계도 고려하여 고품질 이미지를 생성합니다.

 

3. 시퀀스 처리 아키텍처 3종 비교 (Three Typical Ways)

순차 데이터 처리를 위한 세 가지 주요 아키텍처의 장단점 비교입니다.

3.1. 순환 신경망 (RNN)

방식:순차적 처리 (Inherently Sequential). $y_4$를 계산하려면 $y_3$가 필요하고, $y_3$는 $y_2$가 필요함.

단점 (-):

병렬화 불가능:순서대로 계산해야 하므로 GPU의 이점을 살리기 어렵고 느립니다.

장거리 의존성 취약:시퀀스 길이가 길어지면 정보 병목(Bottleneck) 현상으로 인해 앞부분의 정보를 잊어버립니다.

3.2. 1D 합성곱 신경망 (1D Convolution)

방식:국소적 수용 영역(Receptive Field)을 가짐.

장점 (+):병렬화 가능 (Highly Parallel).모든 출력을 한 번에 계산할 수 있습니다.

단점 (-):

국소적 한계:커널 크기만큼만 볼 수 있습니다.

깊은 네트워크 필요:멀리 떨어진 정보(Global Context)를 보려면 레이어를 아주 많이(Deep) 쌓아야 하므로 계산 비용이 증가합니다.

3.3. 셀프 어텐션 (Self-Attention)

방식:모든 토큰이 모든 토큰과 연결됨 (Fully Connected).

장점 (+):

최고의 조합:CNN처럼 병렬 처리가 가능하면서도, RNN의 한계를 넘어 장거리 의존성을 완벽하게 처리합니다.

경로 길이 1:어떤 두 단어($x_i, x_j$) 사이의 거리도 단 1단계(Matrix Multiplication)면 연결됩니다.

단 한 번의 레이어로 전체 문맥을 파악합니다.

단점 (-):

메모리 사용량 (Memory Intensive):$N$개의 토큰이 있으면 $N \times N$크기의 어텐션 행렬을 계산하고 저장해야 합니다.

시퀀스 길이($N$)가 길어질수록 메모리 사용량이 제곱으로 증가합니다. (현재 연구자들의 주요 해결 과제입니다.)

 

 

4. 전체 요약 및 결론

  • RNN의 한계:고정된 컨텍스트 벡터의 병목 현상 발견.
  • 어텐션의 등장:디코더가 매 시점 입력의 다른 부분을 동적으로 참고(Attend)하도록 하여 번역 및 이미지 캡셔닝 성능 혁신.
  • 일반화 (Generalization):쿼리(Query), 키(Key), 밸류(Value) 개념을 도입하고 스케일드 닷 프로덕트(Scaled Dot-Product) 어텐션 정립.
  • Self-Attention:입력 시퀀스 내의 요소들이 서로를 참조하여 고차원적 표현을 병렬로 학습. (단, 순서 정보가 사라짐)
  • 보완책:순서 정보를 주입하기 위한 **위치 인코딩(Positional Encoding)**과 미래 정보 참조를 막는 마스크드 어텐션(Masked Attention)도입.
반응형