4기(20200711)/데이콘

Attention 기법

KAU-Deeperent 2020. 8. 15. 03:35

딥러닝 초창기에 machine translation 에 관한  Method는 sequence 방식이였습니다.

 

 

 

 

데이터를 토큰으로 나눠서  sequence하게  input을 준다음에 output을 sequence하게 뽑아내는 방식이였습니다.

 

 

위의 사진은  프랑스어를 영어로 번역하는 예시를 나타낸 것입니다.

 

초록색: 원문

 

보라색: 번역

 

 

 

 

이 번역방식은 데이터 사이언티스트들이 무에서 유를 창조하듯이 뚝딱 만들어 낸 것이 아닙니다.

 

 

 

 

인간의 번역방식에도 위와 같은 유사한 방식이 있습니다.

 

 

 

 

 

봉준호 감독님의 영상입니다.  

 

봉준호 감독님이 말씀하신 내용을 번역가 분께서 '순차번역' 하셧습니다.

 

 

'순차번역' : 원문을 끝까지 들은 다음에 번역을 하는 과정을 의미합니다.

 

 

 

 

위에 있는 인코더-디코더 아키텍처에서 있는 것은 짧은 문장에서도 작동하기 때문에 상대적으로 표백점수가 높게 나올 수도 있습니다. 하지만 아주 긴 문장으로는 30~40단어 이상을 차지하면 성능이 저하됩니다

 

 

초록색: Attention

 

파랑색: Encoder-Decoder

 

 

순차번역 하는것처럼 했는데 왜 잘안되지?

 

 

직관적으로 보면, 사람이 모든 문장을 듣고 번역을 한다 하면, 각 단어를 번역할때마다 모든 문장의 정보를 이용하지 않습니다.

 

Encoder-decoder방식에서 다음 단어를 번역 할때마다 C라는 문맥 벡터를 넘기는데 , 이 고정된 길이에 벡터에 그동안 본 모든 단어들의 대한 정보가 축약이 됩니다.

 

문장의 길이가 길어지면 , 효율이 떨어지게 되죠.

 

 

제가 이해를 쉽게 하라고, 동시 통역 영상을 첨부했지만, 동시통역을 진행 할때도 , 번역된 말의 단어들이 모든 문장의 단어와 연관지어  번역된 것이 아닐것입니다.

 

이제, 고정된 길이의 C벡터에 모든 정보를 축약 할 것이 아니라, 매 step마다 새로 만들자라는 해결책을 제시하게 됩니다.

 

 

이러한 Encoder-Decoder 모델을 인간이 번역 하는것 처럼upgrade 시킨것이 바로  attention 모델 

입니다.

 

 

인간이 번역하는 것처럼 무슨말일까요 ? 영상 하나 보겠습니다.

 

 

 

 

 

 

 

이러한 통역방식을 동시통역방식이라고 합니다.

 

영어를 지금 한국말로 번역하는 과정인데 , 실시간으로

 

단어를 번역할 때마다 모든단어와 연관짓지  않고 , 문맥을 고려하여 번역을 합니다.

 

 

 

Attention 

Rnn 모델에 Attention 기법을 적용 하는걸로 보여드리겠습니다.

 

 

기존 encoder는 word-for-word translation 이였습니다.

 

단어 하나를 번역하면 , 그 단어를 넘기는 방식이였습니다.

 

Attention 모델은 word-for-word translation 이 아닙니다.

 

 

 

이러한 구조의 Rnn을 이용하여 Attention을 설명하겠습니다.

 

 

 

 

 

여기서 S  히든 스테이트를 의미합니다.

 

우리는  첫번째 단어가 Jane이 되길 바라고  , Jane visits to Africa  september를 만들려고 할것입니다.

 

그럼, 여기서 Jane이라는 이름의 결과물을 내기위해서  프랑스어 몇 개의 단어를 봐야할까요?

 

 

몇 개의 단어가 될지는 몰라요 하지만 문장 끝까지 볼 필요가 없습니다.

 

 

 

 

이제 Attention 모델이 계산할 것은 attention weigh입니다. 이를 a(1,1) 이라 표기 하겠습니다.

 

A(1,1) 에서 첫번1은 첫번째 단어를 생성하는데 얼마나 가중치를 부여할것인가,

두번째 1은 첫번째 정보를 사용하겠다 이뜻입니다.

 

A(1,2)는 첫번쨰 단어를 생성하는데 , 두번째 정보를 사용

 

이것들이 합쳐져서, 맥락이라는 정보(C)가 될 것 입니다.

 

 

 

 

이와 같이 구성이 됩니다.

 

여기서 볼게 , a(3,t) S(2) , a(2,t) a(4,t) 에 영향을 받는다고합니다.

 

일반적으로 정리하게 되면 , a(T,T’) 는 T번쨰 단어번역을 할때 , 원문의 T’ 번쨰  단어에 얼마나 attention을 줄것이냐를 의미하게됩니다.

 

, 전체 원문에서 일부 ,    local window 에 attention을 주겠다는 의미입니다.

 

 

 

위 그림을 쉽게 표현하자면, 아래와 같은 그림이 됩니다.