Notice
Recent Posts
Recent Comments
Link
«   2026/03   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Tomato Basil

Transformer | Attention Is All You Need 본문

AI/NLP

Transformer | Attention Is All You Need

salt pepper 2024. 11. 27. 23:56

[ Attention Is All You Need ]

2017년 Google Brain 팀에서 발표한 혁신적인 논문입니다.

기존의 RNN이나 CNN 구조를 완전히 배제하고, 오직 어텐션(Attention) 메커니즘만을 사용하여 새로운 신경망 구조인 Transformer를 제안했습니다. 이 논문은 BERT, GPT 등 현대 NLP의 기반이 되는 모델의 근간이 되는 등 자연어 처리 분야에 큰 영향을 미쳤습니다.


 

 

 

https://tech.kakaoenterprise.com/45

 

신경망 번역 모델의 진화 과정

이 글은 2017년 카카오 AI 브런치에 게재된 포스팅을 가져온 것으로, 본문에서 설명하고 있는 모델 성능, 번역 결과 등은 모두 2017년 당시 자료를 바탕으로 합니다. 2017년까지의 신경망 기반 기계

tech.kakaoenterprise.com

 

위 블로그에서 신경망 기반 기계 번역(NMT) 발전 역사와 트랜스포머 모델의 탄생에 대해 다루고 있습니다.

 

 

 

인코더-디코더 구조에 어텐션 메카니즘을 더한 모델이 제일 좋은 성능을 내고 있는 차에, Transformer 논문은 최초로 RNN과 CNN에서 벗어나 오로지 어텐션 메카니즘에만 의존하는 모델을 선보였습니다.

 

RNN 구조는 순차적인 계산(sequential computation)은 병렬적이지 못해 긴 문장의 인풋에 약하고, 메모리 부족 문제를 겪습니다.

Transformer 모델은 어텐션 메카니즘을 통해 인풋과 아웃풋 간의 global dependencies를 이끌어낼 수 있으며, 계산 과정에 있어 더 많은 부분에 병렬 성질을 적용할 수 있기에 좋은 성능을 냅니다.

 

Sequential computation을 줄이고자 하는 노려근 CNN 기반 모델에서도 나타났습니다. 하지만 인풋과 아웃풋 사이의 거리에 따라 operation 수가 늘어나서 모두 병렬 계산이었음에도 의존성을 학습시키기 어려웠습니다.

Transformer 모델의 경우 상수 개의 operation 을 가집니다.

 

Self-attention은 문장의 의미를 파악(계산)하기 위해 그 문장 속 여러 포지션 간의 관계를 찾아냅니다. Self-attention 메카니즘 덕분에 Transformer 모델은 RNN과 Convolution의 sequence-aligned 성질을 필요로 하지 않게 되었습니다.

 

 

 

 

Transformer 모델은 위와 같은 인코더(왼쪽) - 디코더(오른쪽) 구조를 가집니다. (각 N=6)

인코더 안에서는 input symbol representations(x1, ..., xn) 로부터 continuous representations z = (z1, ..., zn)을 만듭니다.

디코더 안에서는 인코더로부터 받은 z를 output sequence of symbols (y1, ..., ym) 을 만듭니다.

이때 이전에 생성 완료된 symbols을 다음 input에 추가로 넣어 사용합니다.

 

인코더 구조 안에서는

1) multi-head self-attention

2) position-wise fully connected feed-forward network

3) residual connection & layer normalization

가 진행되며, 임베딩 레이어를 포함한 모든 sub-layer 는 d=512 차원의 아웃풋을 만듭니다.

 

디코더는 인코더 스택의 아웃풋으로부터 multi-head attention을 진행하는 추가적인 sub-layer를 가지고 있습니다.

 

 

 

 

Positional Encoding

Transformer는 회귀와 합성곱을 사용하지 않으므로 문장 속 토큰의 상대/절대적인 포지션 정보가 따로 있어야 합니다. 이때 삼각함수가 사용됩니다.