Logical Scribbles

[딥러닝] Seq2Seq 와 거자일소(去者日疎 ) 본문

딥러닝/딥러닝 이론

[딥러닝] Seq2Seq 와 거자일소(去者日疎 )

KimJake 2023. 11. 25. 14:46

이전 포스팅에서 RNN에 대해 다루었다. 이번에는 RNN에서 조금 더 나아가보자. RNN에 대한 자세한 내용은 다음 글을 참고하면 된다.

 

 

[딥러닝] RNN(Recurrent Neural Network)이란?

이번 포스팅에서는 가장 기본적인 인공 시퀀스 모델인 RNN에 대해 알아보자. RNN을 한글로 풀어서 쓰면 '순환 신경망'이 된다. 즉 network 안에서 '순환'하는 무언가가 핵심인 모델이라는 것인데, 이

stydy-sturdy.tistory.com

 

옛말에 '거자일소' (去者日疎) 라는 말이 있다.아무리 친밀한 사이라고 해도 죽어서 세상을 떠나면 마음에서 멀어짐을 뜻하는 사자성어이다. 요새는 몸이 멀어지면 마음도 멀어진다는 뜻으로 자주 쓰인다고 한다. (장거리 연애에 대한 논쟁에서 몸이 멀어지면 마음도 멀어질 수 밖에 없다는 것을 설명할 때 자주 쓰이는 것 같다.)

 

RNN 등의 '시퀀스를 입력받아 시퀀스를 출력하는 모델'을 'sequence-to-sequence 모델'이라고 한다. seq2seq 모델이라고도 불린다. 이러한 seq2seq 모델의 한계점은 위의 포스팅에도 설명 되어있듯 시퀀스의 길이가 길어질수록 이전 정보의 손실이 발생할 수 있다는 것이었다. 즉 멀수록 잊혀져간다는 것이다. (seq2seq 모델은 '거자일소' 적인 특징이 있다!)

 

 

 

seq2seq 모델은 크게 위와 같은 구조를 갖는다. "I am a student" 라는 문장을 분역하고 싶을 때, 인코더가 입력 문장의 모든 단어들을 순차적으로 입력 받은 뒤 하나의 Context Vector로 만들어 디코더로 전달해주고, 디코더가 번역된 문장을 출력하는 형태이다.

 

이 구조를 더 자세히 살펴보면 다음과 같다.

 

 

 

따라서 Context Vector에 가장 마지막 'student'라는 단어의 정보가 가장 뚜렷하게 담기고, 그런 vector를 이용하여 decoder가 번역을 진행하다보니 마지막 단어를 제일 열심히 본다는 문제점이 있는 것이다.

 

어찌됐든 이러한 문장을 번역하고자 할 때, 기계가 이해할 수 있도록 인풋을 넣어주어야 할 것이다. 기계는 텍스트보다는 숫자를 더 잘 처리한다는 특징이 있다. 따라서 'I', 'am', 'a', 'student'와 같은 단어를 숫자 형태로 기계에 입력해주어야 한다.

 

따라서 한개의 층이 각각의 단어에 추가가 되는데, 이렇게 모든 텍스트를 기계가 더 잘 처리할 수 있도록 변환해주는 과정을 '임베딩'이라고 하고, 그 과정을 수행하는 층을 '임베딩 층' 라고 부르며, 이에 따라 변환된 결과를 '임베딩 벡터'라고 부른다.

각 단어에 따른 임베딩 벡터

 

이렇게 입력된 임베딩 벡터들을 통해 context vector를 만들게 되고, 이 벡터가 디코더에 들어가서 번역이 시작되는 것이다.

 

 

 

디코더는 인코더의 마지막 RNN 셀의 context vector를 첫번째 hidden state의 값으로 사용한다. 이후, 디코더의 첫번째 RNN 셀은 이 첫번째 hidden state의 값과, 입력값인 <sos>로부터, 다음에 등장할 단어를 예측한다. 그리고 이 예측된 단어는 다음 시점에  RNN에서의 입력값이 되고, 이 시점의의 RNN 또한 이 입력값과 전 시점에서의 hidden state로부터 해당 시점에서의 출력 벡터. 즉, 또 다시 다음에 등장할 단어를 예측하게 될 것이다.

 

이 과정을 유심히 보면 디코딩 과정에서도 '거자일소'가 적용될 것임을 알 수 있을 것이다. 이렇게 멀수록 이전 정보에 대한 손실이 발생하는 RNN과 같은 모델에  'short reference window'를 갖고 있다고 한다.

 

 

따라서 이러한 한계점을 극복하기 위하여 Attention Mechanism이 등장하게 된다. 이 메커니즘은 Transformer를 알기 위해서 꼭 필요한 개념이다. 다음 포스팅에서는 이 Attention Mechanism에 대해 다뤄보도록 하겠다.

 

 

끝!