#1 개념

1-1. Seq2seq

  Seq2seq 모델은 문장이 순서와 위치의 영향을 많이 받는 특성을 이용하여 문장을 하나의 시퀀스로 다루고 학습한다. Seq2seq 모델의 원리는 인코더와 디코더를 통해 입력 언어를 문맥 벡터(중간 언어)로 변환하고, 디코더를 통해 문맥 벡터를 출력 언어로 변환한다. 즉, 문맥 벡터라는 중간 언어를 통해 입력 언어와 출력 언어 사이의 모델을 형성하고 인코더 디코더는 각 언어와 문맥 벡터의 관계를 학습하는 것이다. 그리고 시퀀스 데이터를 처리하는 데 특화된 RNN, LSTM 모델을 활용하여 인코더와 디코더의 각 계층을 구성한다. 

그림 1. Seq2seq overview

 

  하지만 seq2seq2 모델은 다음과 같은 단점이 있어 자연어 처리를 위한 새로운 모델의 설계 필요성이 촉구 됐다.

  • RNN 모델이 가지는 장기 의존성 문제로 인해 시퀀스 사이의 장거리 상관관계를 학습하기 어렵다.
  • 시퀀스를 학습하기 위해 RNN 모델과 같이 이전 단계에 의존하기 때문에 병렬화가 어렵다.
  • 인코더 디코더로 인해 모델의 병렬화가 어렵다.
  • RNN 모델의 계층은 컴퓨팅 연산이 복잡하다.

1-2. Transformer

  트랜스포머 모델은 기존 RNN 모델을 이용한 seq2seq 모델의 단점을 극복하기 위해 인코더 디코더가 존재하지만 어텐션이라는 개념을 이용하여 단어 입력을 순차적으로 받지 않는 새로운 모델이다. 이를 통해 모델의 병렬 연산이 가능하며, 이전 단계에 의존하지 않게 되었다. 그리고 트랜스포머 모델의 내부는 인코더 스택으로 이루어진 인코딩 컴포넌트와 인코더 스택과 같은 수의 디코더 스택으로 이루어진 디코딩 컴포넌트 그리고 두 컴포넌트 사이의 연결 컴포넌트로 구성되어 있다. 

그림 2. Transformer overview

 

  트랜스포머 모델의 어텐션 메커니즘은 순차적이지 않은 단어 입력을 위해 위치 정보를 알려주기 위한 메커니즘으로, 입력 시퀀스의 각 요소가 다른 요소에게 주는 중요도를 계산하여 가중 평균을 구하고 문장의 어느 부분에 주의를 기울여야 하는지를 결정한다. 이를 통해 트랜스포머 모델은 seq2seq 모델의 장기 의존성 문제를 효과적으로 해결한다. 트랜스포머의 어텐션은 크게 인코더, 디코더, 인코더-디코더 세 가지가 있다.

#2 모델

  트랜스포머 모델은 하이퍼 파라미터인 num_layers 개수의 인코더 층을 쌓으며, 인코더와 디코더는 self-attention, feed forward neural network 두 하위 계층으로 이루어져 있다. 또한, 인코더와 디코더를 연결하기 위한 인코더-디코더 어텐션 계층이 존재한다.

그림 3. Transformer model architecture

2-1. Embedding

  트랜스포머 모델은 인코더에 입력을 전달하기 전에 먼저 텍스트 데이터인 입력을 수치화하여 모델이 이해하고 처리할 수 있도록 고정된 크기의 벡터로 변환하는 과정을 거친다. 임베딩 과정을 통해 입력 텍스트를 단어 또는 하위 단어로 나누어 토근화 하고, 각 토큰을 고정된 크기의 벡터로 변환한다. 그리고 순차적인 구조를 갖지 않는 트랜스포머 모델을 위해 포지셔널 인코딩을 통해 단어 벡터 사이의 위치 정보를 제공하여 디코딩 후 단어를 재조합 할 수 있도록 한다.

그림 4. Embedding

2-2. Encoder

  • Self-Attention

  트랜스포머 모델의 Self-Attention은 입력 시퀀스의 각 요소가 다른 모든 요소들과의 관계를 고려하여 자신을 재구성하는 메커니즘이다. Self-Attention은 입력 시퀀스의 모든 위치 간 상호 의존성을 모델링하는 데 사용되며, 단어의 문맥을 이해하는 데 매우 유용하여 장기 의존성 문제가 없다. 또한 임베딩 과정을 통해 순차적이지 않은 요소들을 통해 병렬 처리가 가능하다.

  Self-Attention은 하나의 단어가 문맥의 모든 단어와의 관계성을 반영하기 위해 하나의 단어 벡터를 Query, Key, Value 세 가지 벡터로 변환한다. 이 과정은 Wq(쿼리 가중치 벡터), Wk(키 가중치 벡터), Wv(밸류 가중치 벡터)를 하나의 단어에 곱하여 수행되며, 각 벡터의 선형 벡터로 변환되도록 하며, 다음의 역할을 수행할 수 있도록 한다.

  1. 쿼리 벡터: 단어 간의 유사 정도를 질문하기 위한 벡터
  2. 키 벡터: 단어 간의 유사 정도를 나타내기 위한 벡터
  3. 밸류 벡터: 출력 값을 전달하기 위한 벡터

  Self-Attention은 위의 세 가지 벡터를 통해 각 단어들의 문맥 속 의미를 모델링한다. 먼저 한 단어의 쿼리 벡터를 모든 단어의 키 벡터와 어텐션 스코어를 계산하여 단어와 단어 사이의 유사성을 계산한다. 계산된 어텐션 스코어는 소프트맥스 함수를 통해 정규화되며, 이를 어텐션 가중치라 한다. 이를 통해 한 단어와 모든 단어 사이의 유사성을 정규화 된 어텐션 가중치 값으로 나타낼 수 있다. 이러한 과정을 스케일 닷 프로덕트 어텐션이라 하며, 계산된 어텐션 가중치는 하나의 밸류 벡터에 모든 단어에 대한 어텐션 가중치 값을 곱하여 한 단어가 문맥 속에서 다른 모든 단어와의 유사성 정보를 내포하는 벡터의 형태로 출력된다.

  또한 인코더에서 Self-Attention은 주로 병렬적으로 수행하며 이를 Multi-Headed Self-Attention이라 한다. 각 단어들의 쿼리, 키, 벨류 벡터가 여러 개로 나뉘며, 각 벡터 간의 의존성이 없기 때문에 병렬적으로 나뉘어 수행될 수 있다.

그림 5. Scaled Dot-Product Attention

  • FFN (Feed Forward Network)

  앞의 Self-Attentinon에서는 모델의 계산을 위해 입력 벡터를 가중치 벡터의 곱을 통해 벡터의 선형화를 수행하였다. 따라서 Self-Attention의 계산은 관계와 가중합을 기반으로 한 단순 정보만 제공하기 때문에 단어의 특징을 나타내기에는 밸류 벡터의 비선형성이 없어 부족할 수 있다. 따라서 트랜스포머 모델에서는 FFN을 통해 비선형성을 추가하고, 추가적인 특징 추출을 통해 벡터의 표현력을 향상시킨다.  FFN은 가중 벡터를 통해 선형화 된 후, 활성화 함수 ReLU를 통해 비선형성을 추가한 후 다시 가중 벡터를 통해 선형화하는 방식으로 동작한다.

그림 6. Feed Forward Network

2-3. Dedocer

  디코더 또한 인코더와 같이 Self-Attention과 FFN으로 이루어져 있으며, 추가로 인코더와 디코더를 연결하기 위한 Encoder-Decoder Attention이 존재한다.

그림 7. Decoder

  • Masked Multi-Head Self-Attention

  인코더의 Self-Attentnio 계층에서는 입력 시퀀스의 모든 단어를 고려하여 특징을 추출해야 문맥의 의미를 파악할 수 있었다. 하지만 디코더의 Self-Attentnio 계층에서는 문장의 차례대로 생성하는 과정에서 이후의 단어를 고려하는 것이 아니라 이전의 생성된 단어만 고려하여 다음 단어를 예측하여야 한다. 이러한 문제를 해결하기 위해 Masked Multi-Head Self-Attention 계층에서는 이후의 단어에 대한 어텐션을 제한하여 이전 단어를 고려하면서 다음 단어를 예측하도록 한다. 이는 self-attention을 구하기 위한 소프트맥스 함수 계산 전 포지션 마스킹을 통해 계산하여야 할 키와 쿼리를 정하여 수행된다. 

  • Encoder-Decoder Attention

  Encoder-Decoder Attention은 Encoder의 출력과 Decoder의 입력을 연결하는 역할을 수행하며, Attention의 동작을 기본 원리로 한다. 기존의 Attention처럼 쿼리와 키의 어텐션 가중치와 밸류를 곱하여 컨텍스트 벡터를 구한다. 여기서 키와 밸류는 인코더의 출력 벡터에서 가중 벡터를 곱하여 구하고, 쿼리는 디코더의 입력에 가중 벡터를 곱하여 구한다. 이를 통해 디코더는 인코더의 출력과 입력을 고려하는 컨텍스트 벡터를 이용하여 다음 단어를 예측하게 된다.

2-4. Final Linear and Softmax Layer

  • Linear layer: 디코더의 스택에 의해 생성된 벡터를 로짓 벡터라고 하는 훨씬 더 긴 길이의 보캅 크기의 벡터로 투영
  • Softmax layer: 가능한 다음 단어의 확률 분포를 생성

 

 

 

 

참고 자료

'컴퓨터 과학 > 인공지능' 카테고리의 다른 글

다층 퍼셉트론 (ANN, MLP)  (0) 2024.05.07
선형 회귀 (Linear Regression)  (1) 2024.04.30

+ Recent posts