NEVERTHELESS

Attention & Transformer / All you need

by Ungbae

 

 

 

 

이거 아님

 

 

RNN은 긴 문장을 처리할 때 앞부분의 정보를 잊어버리는 문제(Long-term dependency) 문제가 있었다. 이를 해결하기 위해 구조를 개선한 모델들이 등장했다.


LSTM(Long Short-Term Memory)

RNN  셀 내부에 Cell State(장기 기억)를 추가하여 중요한 정보는 오래 기억하고 불필요한 정보는 삭제하는 구조.

 

작동원리

  • Forget Gate : 과거 정보 중 무엇을 버릴지 결정
  • Input Gate :새로운 정보 중 무엇을 저장할지 결정
  • Output Gate : 현재 시점에 어떤 정보를 내보낼지 결정

 

GRU(Gated Recurrent Unit)

LSTM의 복잡한 구조를 단순화하여 연산 속도를 높이면서도 비슷한 성능을 내도록 만든 모델. Cell state와 Hidden State를합쳐서 관리한다.

 

 


 

Seq2Seq의 한계와 Attention의 등장

 

문제점 - Bottleneck

기존 Seq2Seq(Encoder-Decoder) 모델은 인코더가 입력 문장의 모든 정보를 하나의 고정된 크기의 벡터(Context Vector)에 욱여넣어야 했다. 문장이 길어지면 정보 손실이 발생할 수 밖에 없다.

 

해결책 - Attention Mechanism

디코더가 단어를 생성할 때마다, 인코더의 모든 입력 단어들을(Attention), 현재 생성할 단어와 가장 관련 깊은 부분에 가중치(Attention Score)를 두어 정보를 가져오는 방식

 

'나는'을 번역할 때는 'I'에, '학교에'를 번역할 때는 'School'에 더 집중할 수 있게 되어 긴 문장 번역 성능이 획기적으로 향상되었다.

 

 


Trasformer / Attention is All you need

2017년 구글이 발표한 이 모델은 순환(Recurrence, RNN)을 완전히 없애고 Attention만으로 구현한 모델로, 자연어처리의 판도를 뒤집었다.

 

Self-Attention

입력된 문장 내의 단어들이 서로 어떤 관계를 맺고 있는지 계산하는 과정.

'그것(It)'이 무엇을 가리키는지 알기 위해 문장 내 다른 단어들을 참조하는 것과 같다.

 

Q, K, V(Query, Key, Value)

검색 시스템과 유사하게, 찾고자 하는 정보(Query)와 데이터의 식별자(Key)의 유사도를 계산하여 그에 맞는 내용(Value)을 가져오는 방식으로 작동한다.

 

Multi-Head Attention

Attention을 한 번만 하는게 아니라, 여러 개의 헤드(Head)로 나누어 병렬로 수행.

문장의 문법적 관계, 의미적 관계 등 다양한 특징을 동시에 포착하기 위함

 

Positional Encoding

RNN은 순서대로 데이터를 넣기 때문에 위치 정보를 자연스럽게 알지만, Transformer는 문장 전체를 한 번에 넣기 때문에 단어의 순서 정보(위치)를 따로 알려주어야 한다.

  • 사인, 코사인 함수를 이용해 각 위치에 고유한 값을 더해준다.

 


이 시점에서의, 2018 - 2019년의 연구 flow

 

길이 제어(Length Control)

RNN 시절처럼 Transformer에서도 생성될 문장의 길이를 제어하고 싶었다. 이를 위해 Positional Encoding을 조작(e.g. 남은 길이를 역순으로 넣어주기)하여 모델이 언제 문장을 끝내야 할지(EOS) 알도록 유도하는 연구들이 진행되었다.

블로그의 정보

그럼에도 불구하고

Ungbae

활동하기