본문 바로가기
머신러닝(Machine Learning)

NLP 시퀀스 투 시퀀스 신경망 기계 번역 모델(Seq2Seq Neural Machine Translation) 기초

by Blaze_블즈 2023. 7. 11.

안녕하세요 

블레이즈 테크 노트의 블레이즈 입니다. 

 

지난 포스트에서 RNN 순환 신경망을 공부했습니다. 

이번에는 RNN을 활용한 시퀀스 투 시퀀스 신경망 기계 번역 모델에 대해서 알아보고자 합니다. 

 

https://blazetechnote.tistory.com/entry/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9DML-Recurrent-Neural-Network-%EA%B8%B0%EC%B4%88

 

머신러닝(ML) Recurrent Neural Network 기초

https://youtu.be/UNmqTiOnRfg 순환 신경망에 대해서 아주 쉽게 설명한 영상입니다. 특히 내가 원하는 정보를 벡터로 변환하는 걸 잘 보여준다고 생각합니다. 영상에서 요리사는 애플파이, 햄버거, 치킨

blazetechnote.tistory.com

 

시퀀스 투 시퀀스 모델은 순서가 있는 입력을 받아서 순서가 있는 출력으로 내보냅니다. 

 

아래의 그림처럼 어떤 순서가 있는 입력 A B C D를 받았다면 

여기에 어떤 처리를 해서 내가 원하는 출력인 P Q R S를 산출하는 모델인 것입니다. 

https://towardsdatascience.com/day-1-2-attention-seq2seq-models-65df3f49e263

 

우리의 언어는 순서의 특징을 가지고 있습니다. 

단어는 어떤 위치에 나타나느냐에 따라 다른 의미를 내포하고 있기 때문입니다. 

 

또한 어떤 단어가 나오면 그 뒤에 나올 수 있는 단어가 어느정도 유추 가능합니다. 

예를 들어 The little이 나왔다면 그 뒤에 다시 the가 나올 확률보다는 bird가 나올 확률이 높겠죠. 

 

따라서 한국어를 영어로 번역하고 영어를 프랑스어로 번역하는 일 역시 일종의 순서가 있는 데이터의 변환이라고 볼 수 있습니다. 

시퀀스 투 시퀀스 (Seq2Seq) 기계 번역이라고 하는 이유입니다. 

 

 

 

 

그렇다면 Seq2Seq 모델이 어떻게 인풋을 아웃풋으로 변환하는지 원리가 궁금할 것입니다. 

 

Seq2Seq 모델을 살펴보면 인코더와 context, 디코더가 있습니다. 

인코더는 인풋을 받고 

이 인풋을 전부 받은 다음 하나의 context로 변환합니다.(벡터로 변환)

이 context를 다시 디코더에 넣으면 그 순서가 있는 출력이 반환됩니다. 

 

https://blog.dataiku.com/decoding-nlp-attention-mechanisms-to-understand-transformer-models

 

인코더는 인풋이 내포하고 있는 맥락(context)를 읽어서 이를 hidden state라고 하는 벡터에 담고 

디코더는 이 hidden state를 해석해서 아웃풋을 만든다고 생각할 수 있습니다. 

 

이 때 인코더와 디코더는 모두 RNN 순환신경망입니다. 

그래서 Seq2Seq모델이 RNN을 활용했다고 하는 것이죠. 

 

 

위 그림을 자세히 보시면 Le를 입력으로 받고 h(1)을 인코더에 다시 넣어줍니다. 

이 때, 각각의 단어는 워드 임베딩(word embedding)을 통해 입력됩니다.

워드 임베딩은 단어를 벡터로 매핑하는 기술입니다. 

다시 말해 Le 라는 단어가 [0.24 1.84 0.23 2.1] 이런 식으로 변환되어서 인코더로 입력된다는 뜻입니다. 

그림에서 이 과정은 생략되었습니다. 

 

인코더 RNN은 h(1)과 petit을 받아 h(2)를 생성합니다. 

그리고 h(2)와 oiseau를 입력받아 h(3)를 생성합니다. 

 

아래의 포스트에서 RNN이 이전 state와 날씨 두 개의 input을 입력받았던 것과 유사하죠? 

https://blazetechnote.tistory.com/entry/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9DML-Recurrent-Neural-Network-%EA%B8%B0%EC%B4%88

 

머신러닝(ML) Recurrent Neural Network 기초

https://youtu.be/UNmqTiOnRfg 순환 신경망에 대해서 아주 쉽게 설명한 영상입니다. 특히 내가 원하는 정보를 벡터로 변환하는 걸 잘 보여준다고 생각합니다. 영상에서 요리사는 애플파이, 햄버거, 치킨

blazetechnote.tistory.com

 

 

 

 

이렇게 인코더가 모든 입력을 다 처리하고 나면 context를 만듭니다. 

 

context는 벡터인데 다음과 같다고 할 수 있겠죠.

0.2
-0.3
0.5
-0.8
0.3
0.7

이 벡터는 인코더로 들어온 인풋의 정보가 전부 다 담겨 있습니다. 

제가 표현한 예시는 6개의 값만 들어있는 벡터이지만 실제로는 훨씬 훨씬 더 길 것입니다. 

 

 

https://moondol-ai.tistory.com/412

 

시퀀스-투-시퀀스(sequence-to-sequence) 간단히 이해하기

본 글은 "딥 러닝을 이용한 자연어 처리 입문"을 학습하며 작성한 것입니다. 중간중간 제가 이해한 내용을 좀 더 풀어서 썼습니다. 시퀀스-투-시퀀스(이하 seq2seq)는 입력된 시퀀스로부터 다른 도

moondol-ai.tistory.com

이 블로그도 잘 정리되어 있네요. 

 

 

아래의 그림은 인코더 RNN 이 인풋을 받아서 hidden state를 만들고

마지막 hidden state가 디코더로 들어가는 형상을 나타낸 그림입니다. 

Seq2Seq 모델에서 인코더와 디코더 출처: https://towardsdatascience.com/day-1-2-attention-seq2seq-models-65df3f49e263

 

 

컨텍스트는 인풋의 모든 정보를 가지고 있어서 길다고 말씀을 드렸습니다. 

따라서 컨텍스트는 전체 모델의 성능을 안좋게 만드는 핵심 부분입니다. 

 

특히 문장이 길수록 그 모든 정보들을 담아야 한다는 점에서 전체 처리 속도가 느려질 수 밖에 없습니다. 

그리고 시퀀스의 앞쪽 정보가 상당히 흐려진다는 문제도 있습니다. 

 

영상출처 : https://jalammar.github.io/visualizing-neural-machine-translation-mechanics-of-seq2seq-models-with-attention/

 

이렇게 context의 문제를 보완하고 기계 번역을 크게 향상시킨 개념이 Attention 개념입니다.

Bahdanau et al., 2014 와 Luong et al., 2015에서 제안된 개념이죠. 

 

그러나 이 어텐션 개념은...

다음 포스트에서 함께 알아보겠습니다. 

 

감사합니다. 

블레이즈 테크노트