본문 바로가기

개발일지/도서추천서비스

Transformer 모델이란 (구조와 종류)

반응형

목차

  1. 기존 seq2seq 모델의 한계
  2. 트랜스포머 모델에 대하여
  3. 트랜스포머를 활용한 대표적인 NLP 모델 3가지
    1. BERT, GPT, BART의 차이점
    2. 각각의 모델이 가진 장단점

1. 기존 seq2seq 모델의 한계

seq2seq는 인코더-디코더 구조의 모델로 각각의 인코더, 디코더에서 RNN을 사용한다.

RNN(순환신경망) : 입력과 출력을 시퀀스 단위로 처리하는 시퀀스 모델.

 

인코더에서는 입력 시퀀스를 받아 벡터화한 요소를 차례대로 처리하면서 내부 상태를 갱신한다.

이 때 '내부 상태'는 과거의 모든 정보를 압축하고 있다.(히든 상태)

이후 모든 단어 정보를 압축해서 하나의 벡터(컨텍스트 벡터)를 만들어 디코더에 전달한다.

디코더는 이 벡터 표현을 사용하여 출력 시퀀스를 만들어낸다.

인코더-디코더 구조

 

그러나 입력 시퀀스가 길어질수록 초기에 포함된 정보가 희석되거나 손실되는 문제가 발생했는데

인코더가 입력 시퀀스를 하나의 벡터로 압축하는 과정에서 일부 정보가 유실되는 것이다.

이를 '장기 의존성 문제'라고 한다.

 

이러한 한계점을 극복하기 위해서 LSTM이 사용되었다.

LSTM은 RNN의 한 종류로 입력, 망각, 출력 게이트를 통해 장기 의존성 문제를 해결한 모델이지만

입력 시퀀스의 모든 요소들 간의 관계성을 효과적으로 파악하지 못하는 문제점이 있었다.

 

이를 위해 나온 것이 '어텐션 메커니즘'이다.

그런데 어텐션을 RNN을 보정하기 위한 도구로만 사용하는 것이 아니라

어텐션만으로 인코더와 디코더를 만들면 어떨까?

 

여기서 탄생한 것이 바로 트랜스포머 모델이다.

 

 

2.  트랜스포머 모델에 대하여

트랜스포머(Transformer)는 2017년 구글이 발표한 모델이다.

기존의 seq2seq와 같은 인코더-디코더 구조를 가지고 있다.

 

그러나 seq2seq와 다르게 인코더-디코더에서 RNN을 사용하지 않고

'셀프 어텐션'이라는 메커니즘을 사용하여 문장을 이해한다.

 

셀프 어텐션은 입력 시퀀스 내에서 각 요소가 어떻게 연관되어 있는지 모델링 한다.

입력 데이터를 단어 또는 토큰으로 임베딩 하여 벡터를 생성하고,

선형 변환을 통해 각각 Query, Key, Value 벡터를 생성한다.

 

각 벡터를 사용하여 단어 간의 연관도 즉, 어텐션 값(Attention Value)을 어텐션 함수를 사용하여 계산한다.

계산하는 방법은 아래와 같다.

어텐션 값 계산

먼저 주어진 Query에 대해서 모든 Key와의 유사도를 각각 구한다. (Attention Score)

그리고 구해낸 이 유사도를 가중치로 하여 Key와 맵핑되어 있는 Value에 가중치를 반영한다.

유사도가 반영된 Value를 가중합하여 리턴하면 이것이 어텐션 값 또는 컨텍스트 벡터가 되는 것이다.

 

트랜스포머 인코더-디코더 구조

 

트랜스포머의 인코더-디코더에는 Multi-head Self-Attention이 적용되어 있는데

이는 위에 설명한 Self-Attention을 여러 개를 사용하여 병렬적으로 학습하는 구조이다.

멀티 헤드 어텐션에서는 입력 데이터를 여러 '헤드'로 나누어서 다양한 관점으로 데이터를 집중(attention)하여 분석할 수 있다.

 

 

3.  트랜스포머를 활용한 대표적인 NLP 모델 3가지

1. Encoder 모델 (예. BERT)

Encoder 모델은 Transformer의 encoder만 사용하는 모델로

각 stage에 어텐션 레이어가 초기 문장의 모든 단어에 접근할 수 있다.

 

전체 문장의 이해를 요구하는 task에 적합하며

문장 내에서 단어의 의미를 더 정확하고 깊게 파악이 가능하기 때문에

텍스트 분류, 질문 응답, 감정 분석, NER(개체명인식) 등에 적용할 수 있다. 

 

2. Decoder 모델 (예. GPT)

Decoder 모델은 Transformer의 decoder만 사용하는 모델로

어텐션 레이어는 각 stage에서 문장 내에 주어진 단어의 바로 앞 단어만 접근할 수 있다.

 

Decoder 모델의 pre-training에서는 주어진 문맥에서 다음에 올 단어를 예측하는 방식으로 학습하기 때문에

텍스트를 생성하는 task에 적합하다.

대화형 AI, 기계 번역, 문장 생성 등에 적용할 수 있다.

 

3. Encoder-Decoder 모델 (예. BART)

Encoder-Decoder 모델은 트랜스포머의 Encoder와 Decoder를 모두 사용한다.

각 stage에서 encoder의 어텐션 레이어는 초기 문장의 모든 단어에 접근할 수 있지만

decoder의 어텐션 레이어는 입력으로 주어진 단어의 앞 단어에만 접근할 수 있다.

 

Encoder-Decoder 모델은 주어진 입력에 따라 새로운 문장을 생성하는 task에 적합하다.

요약, 번역, 생성적 질문에 대한 답변 등에 적용할 수 있다.

 

 

https://wikidocs.net/31379
https://moon-walker.medium.com/transformer%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EB%8C%80%ED%91%9C%EC%A0%81%EC%9D%B8-nlp-%EB%AA%A8%EB%8D%B8%EC%9D%98-%EC%A2%85%EB%A5%98-%EC%A0%95%EB%A6%AC-a455810193ae