2 분 소요


Convolution Seq2Seq (ConvS2S)

image

Encoder

image

  • Residual Connection: 입력 정보가 가중치 합(weight sum) 연산에 적용되고자 지름길 route를 만든다. 다음 레이어에 전이시켜 최종 출력에 영향을 줄 수 있도록 하기 위함.

ResNet 알아보기.

기존 RNN의 ‘직렬화’라는 한계점을 타파하고자 RNN 구조를 제거하고 몇 개의 단어 토큰으로 ‘Convolution’을 적용한 경우이다.

RNN 확장 모델 LSTM으로도 무한히 많이 쌓이는 데이터 처리에 대한 RNN의 근본적인 한계점을 해결하지는 못한다.

image

  • Convolution Filter 개수: 순환 신경망의 레이어 간 연결선을 제거하여 이전 출력을 기다릴 필요없이, 상기 사진에서는 가령 3개의 단어 토큰 단위로 새로운 단어 벡터를 인풋으로 활용한다.
  • 빨간색 평행사변형은 ‘go’, ‘to’, ‘the school’ 세 단어가 하나의 새로운 벡터로 변환되는 모습을 보여준다.

image

이러한 아키텍쳐를 구현함으로써 질적으로도 뛰어날 뿐 아니라, 계산의 병렬화를 가능하게 하여 훈련 시간의 단축이라는 쾌거를 이루어낼 수 있었다.

  • 기존 직렬화 방식은 ‘I’ –> ‘go’ –> ‘to’ –> ‘the school’ 식으로 학습하면서 최종적으로 이전 단어 맥락을 전부 고려하는 context vector를 만든다.

image

상기 사진에서, ①은 Attention Weight를 구할 때 사용되는 부분으로, Softmax 이후 Attention Weights가 도출되는 모습이다.

또한, ②은 ①에서 얻은 Attention Weights에 각 단어 토큰에 대한 지름길 route를 통하여 가중합을 구할 때 사용된다.

Decoder

하나의 time step에서 디코딩을 할 때, 이전 단계의 decoder에서 얹어준 hidden state vector, 생성 단어 토큰, 그리고 인코더에서 계산된 attention weights를 입력으로써 활용한다.

image

  • Decoder들의 hiddens state vector에 인코더처럼 합성곱 연산을 취한다 image
  • 노란색 박스: 가중치가 가장 높은 단어 토큰을 의미한다 image
  • 인코더에서 계산된 출력값 (encoding vectors) image
  • 현 time step 디코더 hidden state vector 가중치 image
  • 현 time step 단어 토큰을 대표하는 hidden state vector image
  • 인코더처럼 Concat하는 것이 아니라 Sum한다 image

한계점

문장의 처음 혹은 끝에 나오는 하나의 단어 토큰을 전체 맥락 상에서 구별하지 못한다 (Convolution 그룹 단위로 관찰하기 때문이다).

  • 반면에, RNN 기반은 정보의 소실은 있으나 어느 정도 전체 문장을 감안할 수 있다.

단어 토큰의 순서를 부여하는 Transformer-positional Encoding 방법으로 개선이 가능하다.

Transformer-positional Encoding

image image

RNN 구조가 아닌 ConvS2S 같은 모델의 Embedding에서 각 차원(단어 토큰)의 순서를 보장하는 방법론이다.

\(e=(w_1+p_1,...,w_m+p_m\)에서 \(p_m\)을 각 단어 토큰에 더함으로써, 단어의 순서 파악이 가능하게 된다.

image

  • BLEU (blue score): image
  • PPL (perplexity)

Self-attention 모델

image

RNN의 시계열 학습에서 벗어나 Attention 구조만으로 학습에 임한다.

Decoder 해석에 용이한 방향으로 가중치 업데이트를 하는 것이 아닌 input 그 자체를 가장 잘 표현하기 위한 방향으로 학습하는 방식으로 동작한다.

image

인코더 내부에서 인코더 한 토큰을 재구성하는 개념이다.

  • Query, Key, Value가 동일한 시퀀스를 가진다.

image

  • Score = Query와 Key 내적

최종적으로, softmax와 value를 곱한 값의 합계를 도출하여 해당 단어가 가진 전체적인 의미를 설명한다.

이러한 과정을 단어마다 각각 수행한 것이 바로 self-attention 모델로, 하기 도표를 통해 직관적으로 이해해보자.

image


Multi-head Attention 모델

하나의 Attention 모델은 각 단어 토큰의 가중치만을 도출하기에, 다른 단어와 어떻게 연관되어있는지 잘 훈련이 안될수도 있다.

따라서 여러개의 어텐션, 즉 Multi-head Attention을 이용하여 이를 하나로 이어붙여서 연관성을 탐구한다.

여러 번의 Self-attention을 병렬처리로 수행하여 빠른 속도를 끌어낸 것이 바로 multi-head attention이다.


Transformer 모델

Multi-head attention으로 이루어진 encoder를 여러 층 쌓아서 encoding을 수행하며, 이것이 바로 BERT에 탑재된 기술인 Transformer이다.

seq2seq의 구조인 ‘인코더-디코더‘를 따르면서도, 어텐션(Attention)만으로 구현한 모델이기 때문에 RNN을 사용하지 않는다.

또한, 인코더-디코더 구조를 설계하였음에도 번역 성능에서도 RNN보다 우수한 성능을 보여준다.

이제, BERT와 KoBERT 실습을 수행해보자.

Reference

Deep Learning for NLP - KAIST 주재걸 교수님

댓글남기기