Skip to content

Transformer #

Find similar titles

10회 업데이트 됨.

Edit
  • 최초 작성자
  • 최근 업데이트

Transformer #

Transformer 개요 #

Transformer 이전의 자연어 처리 분야에서는 Seq2Seq 모델이 가장 영향력 있는 모델이었습니다. Seq2Seq 모델은 RNN의 조합으로 이루어진 인코더-디코더 구조로 구성된 모델로 인코더는 입력 시퀀스를 하나의 벡터 표현으로 압축하고, 디코더는 이 벡터 표현을 통해 출력 시퀀스를 만들어냅니다. 하지만 인코더의 입력 시퀀스를 하나로 압축하는 과정에서 입력 시퀀스의 정보가 일부 손실된다는 단점이 있어 이를 보정하기 위해 스텝마다 입력 전체 문장을 참고하고 그 시점에서 예측할 단어 부분을 더 집중해서 참조하는 어텐션 기법을 고안하게 되었습니다.

Transformer 란? #

Transformer란 2017년 구글에서 발표한 "Attention os all you need" 논문에서 처음 발표된 모델로 앞서 설명한 Seq2Seq 구조에서 착안한 모델입니다. RNN 구조는 활용하지 않지만 동일하게 인코더, 디코더 구조를 따르며 Seq2Seq 모델의 한계를 보완하기 위해 고안한 어텐션 구조만을 활용하여 우수한 성능을 보이는 모델입니다

Transformer는 Positional Encoding을 거친 인풋을 활용하며 내부 구조는 크게 인코더와 디코더 블록으로 나뉩니다. 인코더 블록에서는 두 층으로 구성되어 있으며 멀티 헤드 어텐션과 피드 포워드 신경망으로 구성되어 있습니다. 디코더 블록에서는 세 층으로 구성되어 있으며 Masked 멀티 헤드 어텐션과 기본 멀티 헤드 어텐션, 피드 포워드 신경망으로 구성되어 있습니다.

Image

이미지 출처 : https://blog.promedius.ai/transformer/

Positional Encoding #

순차적으로 단어를 입력받는 RNN과는 다르게 트랜스포머는 단어 입력을 순차적으로 받지 않습니다. 따라서 각 단어의 임베딩 벡터에 위치 정보를 더하여 모델에 입력으로 사용하는 형식인 Positional encoding 방식을 활용합니다.

Image

이미지 출처 : https://wikidocs.net/31379

Self Attention #

어텐션 기법은 디코더에서 출력 단어를 예측하는 시점마다 인코더에서의 전체 입력 문장을 다시 한번 참고하는 기법을 말합니다. 해당 과정에서는 예측하는 단어와 연관이 있는 단어를 좀 더 집중하여 참고합니다.

셀프 어텐션은 query, key, value 3개 요소 사이의 문맥적 관계성을 추출하는 과정입니다.

  • Query, Key, Value 생성

먼저 입력 벡터에 3 요소를 만들어주는 행렬 W를 각각 곱하여 Q, K, V 값을 도출합니다.

Image

이미지 출처 : https://wikidocs.net/31379

  • 각 Query별 Self Attention 출력값 계산

셀프 어텐션 정의를 활용하여 각 쿼리에 대해 셀프 어텐션을 계산합니다.

Image

이미지 출처 : https://wikidocs.net/31379

한 번의 어텐션을 하는 것 보다, 여러 번의 어텐션을 병렬로 활용하는 것이 다양한 시각으로 정보를 수집하는 데에 더 효과적입니다. 따라서 트랜스포머에서는 멀티 헤드 어텐션 구조를 활용합니다. 병렬적으로 수행한 어텐션 연산은 통합 후 가중치 행렬을 곱하여 최종 행렬을 생성합니다.

Image

Image

이미지 출처 : https://wikidocs.net/31379

트랜스포머에는 세가지의 어텐션 구조가 사용됩니다. 인코더에서 사용되는 Self-Attention 구조과 Decoder에서 사용되는 Masked Self Attention, Encoder-Decoder Attention이 있습니다.

Image

이미지 출처 : https://wikidocs.net/31379

Feed Forward #

Feed Forward Neural Network는 인코더와 디코더에서 공통으로 가지고 있는 서브 층으로 Fully connected Layer로 이루어진 신경망을 의미합니다. 어텐션의 결과를 취합하여 전달하는 역할을 수행합니다. 아래 수식을 통해 최종값이 도출됩니다.

Image

Image

이미지 출처 : https://ratsgo.github.io/nlpbook/docs/language_model/tr_technics/

참고자료 #

0.0.1_20231010_1_v71