딥러닝

[딥러닝] Transformer 논문 읽기

tannyrun 2025. 5. 12. 09:23

Attention Is All You Need (Transformer)

Ashish VaswaniNoam ShazeerNiki ParmarJakob UszkoreitLlion JonesAidan N. GomezLukasz KaiserIllia Polosukhin

논문링크 : https://arxiv.org/abs/1706.03762

 

Attention Is All You Need

The dominant sequence transduction models are based on complex recurrent or convolutional neural networks in an encoder-decoder configuration. The best performing models also connect the encoder and decoder through an attention mechanism. We propose a new

arxiv.org

 

읽기 전, 딥러닝 기반 기계번역 발전 과정을 알아보자!

Transformer은 현대의 자연어 처리 딥러닝 모델에 중대한 여향을 끼쳤다.

Transformer 이전에는 RNN, LSTM, Seq2Seq 모델이 존재했으며, 이들은 고정된 크기의 context vector이 사용되었다. 그러다 Attention 모델이 개발되면서 입력 시퀀스 전체에서 정보를 추출하는 방향으로 발전하였고, 이러한 Attention 기법을 활용한 Transformer 모델이 활용되기 시작하였다. 

 

 

기존 seq2seq 모델들의 한계점

convext vector v에 소스 문장의 정보를 압축하기 때문에 병목현상이 발생하여 성능이 하락할 수 있다. 

seq2seq 모델은 단어가 입력 될 때 마다 hidden state를 만들고, 이를 다음 hidden state에 전달하는 순차적인 방식으로 입력 벡터를 처리한다. 때문에 마지막 단어가 들어온 후에 만들어진 hidden state는 이전의 문맥을 모두 고려한 context vector로 간주할 수 있다. decoder 부분에서 이 context vector 을 입력받으면, 이전과 같은 방식으로 hidden state를 만들고 갱신하며 출력값을 만들어낸다. 

하지만 이렇게 cotext vector가 소스 문장의 모든 정보를 가지고 있어야 하므로 병보현상 발생, 즉 성능이 저하되게 된다. 

→ 매번 소스문장 전체를 입력으로 받자! (  context vector 의 정보손실 문제 해결, 많은 메모리와 병렬처리 필요)

 

 

Attention 메커니즘을 적용한 seq2seq 구조

 

디코더는 인코더의 모든 출력을 참고하여 출력값 만들어 내어, 소스 문장전체를 반영할 수 있음.

또한 출력 단어를 만들기 위해 각 hidden state 값에 가중치를 반영하여 성능 높일 수 있음

 

 

 

Transformer

Transformer은 현대의 자연어 처리 네트워크에서 핵심이 되는 모델이다.

RNN이나 CNN을 전혀 사용하지 않는 대신, 문장 내 단어들의 순서 정보를 알려주기 위해 Positional encoding을 사용한다.

인코더와 디코더로 구성되며, attention 과정을 여러 레이어에서 반복한다.

트랜스포머 구조

 

 

Encoder 동작원리

input : 토큰 단위의 문장이 input으로 들어옴(문장 전체가 한번에 들어옴)

positional encoding : 각 토큰의 문장 위치 정보를 담고있음

Multi-head attention : 문장 임베딩이 끝난 후 문맥에 대한 정보를 학습하도록 어탠션 진행

Add & Norm : 성능 행상을 위한 잔여학습 단계 & 정규화 과정

transformer 는 이러한 형태의 encoder가 여러개의 Layer로 중첩되어 있다. Decoder도 마찬가지로 여러개의 layer로 구성되어 있으며, Encoder의 마지막 과정을 거친 문장정보(출력값)가 Decoder을 수행할 때 마다 input으로 들어가게 된다. 

문장의 시작 토큰 <sos>, 문장의 끝 토큰 <eos>

Transformer 동작구조

 

 

 

Attention자세히 알아보기

'문장 전체의 내용을 반영한다..'라는 내용으로 attention을 언급했는데, 좀 더 자세히 알아보도록 하겠다.

어텐션을 위한 세가지 입력 요소

쿼리(Query) : 현재 토큰이 다른 토큰에 얼마나 집중할지 결정하는 벡터

키(Key) : 각 토큰의 고유한 특징을 나타내어 쿼리와의 관련성을 평가하는 벡터

값(Value) : 각 토큰의 실제 정보로 쿼리가 선택할 정보를 담고 있는 벡터

 

 

Scaled Dot-Product Attention : Query와 Key의 내적을 통해 각 Query-Token이 Key-Token과 얼마나 관련 있는지 유사도를 계산하고, 이를 Value 벡터의 가중합으로 변환하여 최종 Attention 값을 생성

 

Multi-Head Attention : 전체 입력 시퀀스의 길이가 n일 때 각 토큰마다 h개의 헤드가 존재하여 총 n × h 개의 Attention 결과가 생성됨.각 헤드의 Attention 결과는 각 토큰에 대해 독립적으로 계산되며, 이들은 모두 병렬로 계산.

최종적으로 n × h 개의 Attention 결과가 Concat 되어 최종 출력을 형성

 

 

 

Transformer 동작원리(행렬)

임베딩 차원(4차원) 헤드2개 가정한 상황

 

 

입력된 문장은 'I love you' 이며, 각 단어는 고정된 차원(4차원 벡터)로 임베딩 되어 있다. 각각의 토큰은 가중치 행렬W와  행렬곱 연산 되어  Query, Key, Value 값을 갖게 된다. 이때 head=2 로 가정했으므로, (임베딩차원x헤드 차원)크기의 가중치 벡터를 사하여 2차원의 Query, Key, Value 값들을 얻어낼 수 있다. 

 

 

dk​ = Key 벡터의 차원 수

 

위에서 구했던 각각의 Query값들에 대하여 모든 Key 벡터간의 내적을 계산한다. 내적 결과는 각 Query와 Key 간의 유사도를 나타내며, 각 토큰에 대한 중요도를 평가하는 데 사용된다.

이후 스케일링 ( 내적 결과를 dk로 나눔 ) → softmax 적용 ( 각 Query와 Key 간의 유사도를 확률로 변환 )

→ 생성된 softmax 확률값을 각 value와 곱하여 attention 값 생성

 

위 과정을 그림으로 한번에 표현 (모든 토큰값 이용한 최종 결과)

 

 

 

이때, Query와 Key 값을 구해 만든 Attention energies에 Mask Matrix를 곱해주면 특정 단어를 무시할 수 있게 된다. 마스크 값으로 음수 무한의 값을 넣어 softmax 함수의 출력이 0%에 가까워 지도록 함.

 

Multihead Attention은 이러한 Attention과정을 여러번 반복하여 h개의 head를 생성하는 과정이다.

 

 

 

트랜스포머의 3가지 Attention

1. Encoder Self-Attention

인코더와 디코더 모두에서 사용, 매번 입력 문장에서 각 단어가 어떤 다른 단어와 연관성이 높은지 계산

2. Masked Decoder Self-Attention: 디코더 내부에서 각 출력 토큰이 이전까지 생성된 토큰들만 참고하여 순차적 예측 수행

3. Encoder-Decoder Attention: 디코더의 각 출력 토큰이 인코더의 모든 입력 토큰을 참고하여 입력 문장의 전체 의미 반영

 

 

Attention Is All You Need 논문에서는 순환 신경망(RNN)이나 합성곱 신경망(CNN) 없이 오직 어텐션 메커니즘으로 동작하는 Transformer 아키텍처를 제안한다. 이 모델은 기존 시퀀스 모델의 순차적 처리 제약을 제거하고, 병렬 처리와 효율성을 극대화하여 더 빠르고 효과적인 성능을 보여준다. 논문에서는 WMT 2014 영어-독일어 번역 작업에서의 성능을 통해 Transformer의 우수성을 입증했으며, 이후 Transformer는 다양한 자연어 처리 작업에서 기존 방법을 뛰어넘는 성과를 거두었다. 

 

 

 

## 유튜브 동빈나 님의 [딥러닝 기계 번역] Transformer: Attention Is All You Need (꼼꼼한 딥러닝 논문 리뷰와 코드 실습) 영상을 참고하였습니다.

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

[딥러닝] GPT 논문읽기  (0) 2025.05.27
[딥러닝] BERT 논문읽기  (0) 2025.05.22
[딥러닝] LSTM의 gate (초간단 정리)  (0) 2025.05.05
[딥러닝] Seq2Seq 논문 읽기  (0) 2025.05.05
[딥러닝] GRU 논문읽기  (0) 2025.03.30