티스토리 뷰

딥러닝

Attention

up_one 2025. 4. 21. 16:02

2025.04.16 - [딥러닝] - Seq2Seq

 

Seq2Seq

Seq2Seq 모델은 Attention, Transformer의 기초가 되는 딥러닝 모델로서 시퀀스 데이터를 처리하는 RNN과 LSTM의 단점을 보완한 모델입니다. 특히 Seq2Seq 모델은 하나의 입력 시퀀스에서 다른 시퀀스로 출력

up-one-coding.tistory.com

Rnn 모델의 장기 의존성 문제의 해결책으로 나온 Seq2Seq 모델에도 단점은 존재합니다. Encoder의 학습으로 산출된 Context vector은 압축된 정보가 담기므로 시퀀스가 길수록 정보 손실이 크고 학습이 어렵다는 것입니다. 이를 해결하기 위해 나온 구조가 Attention입니다.

 

기존 방식처럼 압축된 정보, Context Vector만을 추론하여 Decoder에서 예측하는 것과 달리, Attention은 Decodr에서 출력 단어를 예측하는 매 시점마다 Encoder의 모든 입력 문제를 참고하는 것이 가장 큰 특징입니다. 단 입력되는 전체 시퀀스를 참고하는 것이 아닌 어텐션 가중치를 구해 현재 시점의 Decoder와 가장 관련이 높은 것으로 추정되는 시퀀스를 중점적으로 학습합니다.

1. 어텐션 함수

어텐션 함수는 입력 시퀀스의 각 단어들에 대해 가중치를 부여하는 역할을 합니다. 그 가중치는 Query, Key, Value을 통해 구해질 수 있습니다.

  • Query : 현재 출력 단어를 나타내는 벡터, t 시점의 Decoder의 은닉 상태
  • Key : 현재 입력 단어에 대응하는 벡터, 모든 시점의 Encoder의 은닉 상태
  • Value : 모든 시점의 Encoder의 은닉 상태

어텐션 함수로 어텐션 가중치를 구하는 이유는 Query와 Key 간의 유사도를 판단해 입력 시퀀스의 단어 중 어떤 단어를 중점적으로 판단하기 위해서입니다. 즉 현재 시점의 Decoder에서 단어를 예측하기 위해 Encoder의 모든 시점의 시퀀스와 유사도를 판단하는 것입니다.

어텐션 스코어(가중치) 구하기

 

Attention Score을 구하는 대표적인 2가지 방법은 dot-product Attention과 Bahadanu Attention이 있습니다. dot-product Attention은 query와 key의 내적을 기반으로 Encoder와 Decoder의 유사도를 계산합니다. 이러한 방식의 장점은 연산 속도가 빠르다는 것입니다. 이와 달리 Bahadanu Attention은 Dense layer을 이용한 선형 변환, tanh로 비선형을 처리한 후, Dense을 걸쳐 유사도를 산출하는 방식입니다. 이러한 방식은 더 복잡한 유사도 관계를 비선형적으로 학습할 수 있어 성능이 크게 개선될 수 있습니다.

2. Attention 전체 과정

1 ) Attention Score 구하기

가장 선행되는 과정은 Encoder의 모든 시점의 은닉 상태와 Decoder의 t 시점의 은닉 상태가 얼마나 유사한지를 판단하는 것입니다. 

디코더와 인코더 간의 유사도 계산

Decoder의 t 시점의 은닉 상태를 s, Encoder의 모든 시점의 은닉 상태를 h라고 하면 각 h에 대한 Attention Score 모음을 구할 수 있습니다.

 

2 ) 소프트 맥스 함수를 이용하여 Attention Score을 확률 분포화

소프트 맥스 함수로 산출된 값의 특징은 각 값의 합이 1이 된다는 것입니다. 이러한 특징을 활용해 Attention Score가 가중치가 되어 어떤 단어를 중점적으로 볼 것인지 판단할 수 있습니다.

#softmax 함수 구현
def softmax(x):
    e_x = x - np.max(x, axis=-1)[np.newaxis,:].T
    e_x = np.exp(e_x)
    return e_x / e_x.sum(axis = - 1)[np.newaxis,:].T

 

3 ) Attention Score와 h을 가중합

Encoder의 모든 시점의 은닉 상태와 Attention Score을 가중합 하면 Encoder의 입력 시퀀스 중 어느 시퀀스를 중점적으로 볼 것인지에 대한 기준을 판단할 수 있습니다.

Attention 만의 Context vector

 

최종적으로 구한 Attention value와 Decoder의 t 시점의 은닉 상태를 연결합니다.

attention value와 decoder을 concat

4 ) 출력층 연산의 입력이 되는 벡터 계산

최종적으로 tanh 연산을 통해 Decoder의 다음 시점의 Hidden state의 입력값이 되는 새로운 벡터를 계산합니다.

새로운 벡터 s 구하기

 

이러한 방식의 Attention은 Transformer의 Self Attention으로 발전하여 자연어 처리, 컴퓨터 비전 분야에서 비약적인 성능 개선을 이끌어냅니다.

 

'딥러닝' 카테고리의 다른 글

Seq2Seq  (0) 2025.04.16
오차역전파법(Backpropagation)  (2) 2024.07.16
적대적 생성 신경망(GAN)  (0) 2024.07.11
RNN (Recurrent Neural Network)  (0) 2024.07.08
[3] LSTM(Long Short-Term Memory)  (0) 2024.06.27
TAG more
글 보관함
최근에 올라온 글