+ 개발

Seq2Seq와 Attention의 차이점과 활용(자연어 처리)

AI.Logger 2024. 9. 25. 00:09
  • 수업 내용 리마인드 및 아카이빙 목적의 업로드


 

Seq2Seq(Sequence to Sequence) 모델은 특히 기계 번역, 텍스트 요약, 질문 답변 등에서 뛰어난 성능을 발휘하는 모델입니다. 이 모델은 하나의 문장(입력 시퀀스)을 받아 또 다른 문장(출력 시퀀스)으로 변환하는 방식으로 작동합니다. 오늘은 Seq2Seq 모델의 기본 개념과 그 한계를 보완한 Attention 메커니즘에 대해 알아보겠습니다.

 

1. Seq2Seq 모델이란?

Seq2SeqRNN 계열의 모델로, 하나의 시퀀스를 입력받아 또 다른 시퀀스를 출력하는 구조입니다. 이 모델은 주로 기계 번역에서 많이 사용됩니다. 예를 들어, 영어 문장을 입력하면 그에 해당하는 한국어 문장을 출력하는 방식이죠.

 

1) Seq2Seq의 구조

Seq2Seq는 두 개의 주요 구성 요소로 나뉩니다.

  • Encoder: 입력 시퀀스를 처리하여 하나의 Context Vector로 변환합니다. 이 벡터는 입력 시퀀스의 모든 정보를 담고 있습니다.
  • Decoder: 이 Context Vector를 기반으로 새로운 시퀀스를 출력합니다. 번역 작업을 예로 들면, Decoder는 입력된 영어 문장에 대한 번역 결과를 한국어 문장으로 내놓는 역할을 합니다.

이 과정에서 Encoder는 정보를 압축하여 Context Vector로 만들고, Decoder는 이 벡터를 해석해 최종 출력을 생성하게 됩니다.

 

2) Seq2Seq의 한계: 정보 소실 문제

하지만 Seq2Seq 모델에는 한 가지 중요한 한계가 있습니다. Context Vector가 고정된 크기를 가지기 때문에, 입력 시퀀스가 길어질수록 모든 정보를 제대로 전달하지 못하는 문제가 발생하죠. 이 한계를 정보 병목(bottleneck) 문제라고 부릅니다.

예를 들어, 짧은 문장은 무리 없이 번역할 수 있지만, 문장이 길어지면 중요한 정보가 소실되거나 왜곡될 가능성이 커집니다. 그렇다면 이 문제를 어떻게 해결할 수 있을까요?

 

2. Attention 메커니즘이란?

Attention 메커니즘은 Seq2Seq의 정보 병목 문제를 해결하기 위해 고안된 방법입니다. Attention은 번역할 때 단순히 마지막 Context Vector만 사용하는 것이 아니라, 입력 시퀀스의 모든 단계에서 정보를 참고합니다.

 

1) Attention의 작동 방식

Attention은 매 시점마다 입력 시퀀스의 어느 부분이 중요한지 판단하여, 그 부분에 더 큰 가중치를 부여합니다. 즉, 번역할 때 중요한 단어에 더 집중할 수 있게 해주는 것이죠. 이를 통해 문장이 길어지더라도, 매 시점마다 필요한 정보를 효율적으로 가져올 수 있습니다.

예를 들어, 영어 문장에서 "I love you"라는 구문을 "나는 너를 사랑해"로 번역할 때, "love"라는 단어는 "사랑해"에 더 강한 영향을 미치고, "I"와 "you"는 각각 "나는"과 "너를"에 영향을 미칩니다. Attention 메커니즘 덕분에 이와 같은 단어 간의 연관성을 학습하여 더 자연스럽고 정확한 번역이 가능합니다.

 

2) Attention 메커니즘의 구조

Attention은 Query, Key, Value라는 세 가지 벡터를 사용하여 작동합니다.

  • Query: 현재 출력 시점에서 찾고자 하는 정보입니다. 주로 Decoder의 현재 은닉 상태(hidden state)에서 생성됩니다.
  • Key: 입력 시퀀스에서 각 요소의 특성을 나타내는 벡터입니다.
  • Value: 입력 시퀀스의 실제 정보를 나타내며, 각 Key와 연관된 값을 포함합니다.

이 세 가지 벡터를 사용해, QueryKey 간의 연관성을 계산하고, 이 정보를 바탕으로 중요한 정보에 더 큰 가중치를 부여해 최종 Context Vector를 생성합니다. 이를 통해 더 나은 예측과 번역이 가능합니다.

 

3. Seq2Seq와 Attention의 결합

Attention 메커니즘이 적용된 Seq2Seq 모델은 기존의 Seq2Seq 모델보다 훨씬 더 유연하고 강력한 성능을 발휘합니다. 특히 긴 문장이나 복잡한 시퀀스를 처리할 때, Attention을 통해 각각의 단어가 가지는 의미를 더 명확하게 파악할 수 있죠.