딥러닝 초창기에 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을 주겠다는 의미입니다.
위 그림을 쉽게 표현하자면, 아래와 같은 그림이 됩니다.
'딥러닝 > 모델' 카테고리의 다른 글
InceptionNet (0) | 2020.07.18 |
---|---|
CNN과 Fully Connected Network의 차이점 및 ResNet에대하여 (0) | 2020.07.18 |