생각하는감자

seq2seq with Attention 본문

NLP

seq2seq with Attention

토킹감쟈 2023. 1. 12. 14:08

Attention을 간단히 얘기하면,,,,

더 중요한 것에 집중한다!!!

 

어텐션 끝😅🤣

 

Sequence to Sequence Model (seq2seq)

seq2seq 모델은 sequence를 입력으로 받아서 sequence를 출력으로 생성하는 모델이다. 많은 자연어처리 task들에서 기본모델로 활용되고 있다. 챗봇이나 기계번역로 예를 들어 보면, 입력값이 문장으로 즉, 순서가 있는 단어의 나열로 들어가게 되며 출력되는 값도 마찬가지이다. 

 

인코딩은 context정보를 그 단어를 중심으로 하는 벡터에 더 입혀서 유의미한 벡터로 만들어주는 과정을 의미한다. 이때 단어의 문장상의 위치(조사, 주어 등)의 정보가 단어 벡터에 같이 입혀지는 형태라고 볼 수 있다.

 

위의 그림에서 h1에는 He라는 단어의 정보가 들어있고, h2에는 He, loved 두 단어에 해당하는 정보가 들어있다. 그리고 마지막 hidden state vector인 h5에는 모든 단어에 대한 정보가 다 들어있다. 정보를 축적한다고 볼 수 있지만 해당 time step에 대한 정보를 조금 더 가지고 있다고 볼 수 있다. 

 

attention모델은 정보 중 어떤 특정 encoding vector를 사용할 것인지에 대한 선택 issue가 생겼을 때 사용하게 되는 모델이다. 예를 들어 He라는 단어를 '그는'이라고 번역할 때에는 다른 input값들보다도 'He'에 집중해야 한다. 따라서 He 라는 단어에 대한 정보를 가지고 있는 hidden state vector인 h1에 더욱 집중하여 h1에 있는 정보를 좀 더 직접적으로 사용한다. 

 

Decoder에서는 Encoder에서 제공해 준 모든 단어의 hidden state vector와 비교하여 유사도를 기반하는 것을 기본으로 한다. 디코더의 hidden state vector를 g라고 하면, g1을 각각의 워드들의 encoding vector(h1~h5)와 비교하여, 즉, 내적 하여 이를 기반으로 하는 유사도를 뽑게 된다. 뽑아낸 유사도를 sofmax를 거치게끔 하고, 이는 각각 h1~h5의 가중치로 적용하여 가중평균(가중합)을 내어 하나의 vector를 출력하게 된다. 또한, 해당 time step에서 출력된 output은 그다음 time step의 입력으로도 넣어주게 된다. 

다시 말하면, time step t에서의 디코더의 input 값은 xt, gt-1, attention 모델에서 weighted average 된 encoding vector 이렇게 총 3개의 입력을 받아서 gt를 생성하게 되며, 이 gt는 output을 생성하는데 쓰이고, 다음 time step으로 넘겨주기도 하고, 다음 weighted average를 구하기 위해 내적 하는 데에 사용하게 된다.

 

"내적"이라는 계산은 곱셈을 기반으로 한다. 단어의 유사도를 구할 때 곱셈이 아닌 다른 형태로 attention을 구하는 방법도 존재한다. 내적과 같은 단순계산이 아니라 flexible 하게 좀 더 복잡한 형태의 계산이 가능하게끔 하려면 어떻게 해야 할까라는 생각에서 additive model이 구현되었고, 이는 위에 설명한 것과는 다르게 이어 붙이기(concat, 덧셈)를 이용한다. g1이랑 h1, h2, h3.. 등과 각각 비교한다. g와 h각각의 벡터를 입력으로 받아서 multi layer perceptron이나 cully connected neural net을 통과하여 결과노드를 도출하고 그 후에 similarity 값을 output으로 내주는 형태이다. 

 

Machine Translation - Attention

기계 번역에서 쓰이는 Attention을 예를 들어 아래와 같이 그래프로 표현할 수 있다. 흰색에 가까울수록 해당 단어에 가중치를 많이 두고 output값을 도출해 냈다는 뜻이다.

위의 그래프를 통해 어디에 attention이 쏠렸는지 알 수 있고, 어순에 따라 source language에서 단어를 뽑아오는 순서가 다르다는 것도 알 수 있다. 여러 언어의 문법적/언어적 특징을 고려해야 하는 기계번역의 특성이 반영되었다고 할 수 있다. 또한 target language에서는 여러 단어로 출력되는데 source language에서는 하나의 단어만 계속 보고 있는 경우도 존재한다. 이는 영어의 여러 단어가 한글로 번역하면 하나의 단어가 되는 상황과 동일한 경우인 것이다.

 

Attention은 자연어처리뿐만 아니라 Image Captioning과 MRC(NLP task의 종료)등 여러 분야에 응용되고 있다. Attention에 대해 잘 설명된 논문은 <Attention is All You Need>이라는 논문으로, 참고해 보면 좋을 것 같다:)

'NLP' 카테고리의 다른 글

Transformer  (0) 2023.01.15
Tokenization  (0) 2023.01.12
LSTM, GRU  (0) 2023.01.07
RNN의 여러가지 형태  (0) 2023.01.06
Word Embedding (3) - GloVe  (0) 2023.01.05