본문 바로가기
Natural Language Processing

[NLP] Transformer 트랜스포머 모델

by 자몽먹은토끼 2023. 8. 1.
728x90
반응형

 

Transformer 모델
; 기존의 seq2seq의 구조인 인코더-디코더를 따르면서도, RNN은 사용하지 않고 attention만으로 구현한 모델

 

 

Transformer 모델

 

 

Seq2Seq 모델과 다르게 컨텍스트 벡터를 사용하지 x

인코더의 출력되는 값이 하나의 벡터로 압축되는데 이때 생기는 정보의 손실을 보완하기 위해 나온것이 attention 구조이다.
> LSTM모델을 사용하지 않고 Attention 구조를 사용한다.

> 입력과 출력의 길이가 다른 경우에 특히 유용

attention만으로 인코더와 디코더를 만든 모델이다.

 

트랜스포머는 RNN을 사용하지 X

이전 Seq2Seq 구조에서는 인코더와 디코더에서 각각 하나의 RNN이 t개의 시점(time step)을 가지는 구조였다면 이번에는 인코더와 디코더라는 단위가 N개로 구성되는 구조이다.

 

인코더에서 정보를 입력받아 디코더에서 출력하는, 기존 Seq2Seq 구조와 동일한 모습을 보인다.

그러나 RNN은 사용되지 않는다.

(RNN은 단어의 위치에 따라 단어를 순차적으로 입력받아서 처리하는 특성으로 인해 각 단어의 위치 정보(position information)를 가질 수 있다는 점이 자연어처리를 유용하게 했다.

지만 트랜스포머는 단어 입력을 순차적으로 받는 방식이 아니므로 단어의 위치 정보를 다른 방식으로 알려줄 필요가 있다.)

 

 

트랜스포머는 단어를 순차적으로 입력받지 않아서, 단어의 위치를 알려줄 무언가가 필요하다. 그래서 RNN구조를 사용하지 않는 대신 Positional Encoding(포지셔널 인코딩)을 이용한다.

> Positional Encoding ; 각 단어의 임베딩 벡터에 위치 정보들을 더하여 모델의 입력으로 사용한다.

 

 

 

 

임베딩 벡터와 포지셔널 인코딩이 더해지는 과정의 시각화
포지셔널 인코딩을 사인/ 코사인 함수로 나타낼 수 있다.

 

 

 

 

 

 

 

 

 

Attention
; 입력 문장의 모든 단어를 고려하여 디코더가 출력 문장을 생성할 때 필요한 정보에 더 집중할 수 있도록 입력 문장의 각 단어들에게 '가중치'를 부여하여 어떤 단어에 더 집중해야 하는지를 결정

 

 

  • Self- Attention (Encoder)

  • Self- Attention (Masked Decoder)

 

 

>> Self-Attention은 기본적으로 Query, Key, Value 가 동일한 경우를 말한다.

(벡터의 값이 같은 것이 아니라 벡터의 출처가 같다)

 

 

 

  • Attention (Encoder - Decoder)

>> Key와 Value가 인코더의 벡터이고, Query가 디코더 벡터 이므로 "Self - Attention" 이라고 부르지 않는다.

 

트랜스포머의 아키텍처에서 세가지 어텐션이 각각 어디에서 이루어지는가
attention의 개념

; 주어진 쿼리( 'Query' )에 대해서 모든 키( 'Key' )와의 유사도를 각각 구한다. 그리고 구해낸 이 유사도를 가중치로 하여 키와 맵핑되어있는 각각의 값( 'Value' )에 반영해줍니다. 그리고 유사도가 반영된 값( 'Value' )을 모두 가중합하여 리턴한다.

 

 

seq2seq에서의 어텐션

Q = Query : t 시점의 디코더 셀에서의 은닉 상태
K = Keys : 모든 시점의 인코더 셀의 은닉 상태들
V = Values : 모든 시점의 인코더 셀의 은닉 상태들

셀프어텐션

Q : 입력 문장의 모든 단어 벡터들
K : 입력 문장의 모든 단어 벡터들
V : 입력 문장의 모든 단어 벡터들

The Illustrated Transformer – Jay Alammar – 기계 학습을 한 번에 하나의 개념으로 시각화합니다. (jalammar.github.io)

 

The Illustrated Transformer

Discussions: Hacker News (65 points, 4 comments), Reddit r/MachineLearning (29 points, 3 comments) Translations: Arabic, Chinese (Simplified) 1, Chinese (Simplified) 2, French 1, French 2, Italian, Japanese, Korean, Persian, Russian, Spanish 1, Spanish 2,

jalammar.github.io

Q, K, V 값을 구하는 과정 참고!

 

 

>> Attention 메커니즘은 기본적으로 디코더가 출력을 생성하는 동안 인코더의 각 입력 요소와의 유사도를 계산하여 가중치를 얻는다. 이 가중치를 사용하여 디코더가 출력 단어를 생성하는데 필요한 정보를 인코더의 입력 요소들로부터 선택적으로 가져올 수 있게 된다. 디코더가 출력 단어를 생성하는 동안 이러한 과정을 반복하여 입력의 각 단어들에게 주의(attention)를 기울이게 되는 것이다.

728x90
반응형