NLP 이론 정리
1. Encoder-Decoder 구조 이해
Encoder-Decoder 구조는 기계 번역과 같은 sequence-to-sequence 작업에서 흔히 사용됩니다. 기본 개념은 입력 시퀀스를 주고 이를 처리해 출력 시퀀스를 생성하는 것입니다.
- Encoder: 입력 시퀀스의 정보를 hidden state로 변환하는 역할을 합니다. 이 때, LSTM이나 GRU와 같은 순환 신경망(RNN)이 주로 사용됩니다.
- Decoder: Encoder의 마지막 hidden state(또는 context vector)를 바탕으로 원하는 출력 시퀀스를 생성합니다.
샘플 설명:
- 입력 시퀀스: "I am a student"
- 출력 시퀀스: "Je suis étudiant" (프랑스어 번역)
Encoder는 "I am a student"라는 시퀀스를 읽고, 이를 고정된 크기의 벡터(=context vector)로 압축하여 Decoder로 전달합니다. Decoder는 이 context vector를 바탕으로 프랑스어 문장을 생성합니다.
하지만, 입력 시퀀스가 길어질수록 context vector에 모든 정보를 압축하기가 어려워지고 성능이 떨어집니다. 이 문제를 해결하기 위해 등장한 것이 Attention 메커니즘입니다.
2. Context Vector 이해
Context vector는 Encoder가 입력 시퀀스를 처리한 후, 그 정보를 압축한 벡터입니다. Encoder가 마지막 시점에 만든 hidden state를 context vector로 사용하기도 합니다.
하지만, 길이가 긴 시퀀스에서는 한 개의 context vector만으로는 충분히 정보를 담지 못해 디코딩 성능이 저하될 수 있습니다. 이 문제를 보완하기 위해 context vector에 Attention 메커니즘을 적용하여, 입력 시퀀스의 각 부분에서 중요 정보를 선택적으로 고려합니다.
3. Hidden State 이해
Hidden state는 RNN, LSTM 또는 GRU와 같은 모델이 시간에 따라 입력을 처리하면서 유지하는 상태입니다. 시간 t에서의 hidden state는 이전 hidden state와 현재 입력을 결합하여 생성되며, 다음 단계로 전달됩니다.
Hidden state는 시퀀스의 각 단계에서 정보를 누적하며, 마지막에 context vector로 변환될 수 있습니다.
4. Attention 메커니즘 이해
Attention 메커니즘은 입력 시퀀스의 각 부분이 출력 시퀀스의 각 부분에 얼마나 중요한지를 측정합니다. 이를 통해 Decoder가 각 시점에서 입력 시퀀스의 어떤 부분에 집중해야 할지 결정합니다.
Attention의 주요 개념:
- Query (q): Decoder의 현재 상태 (즉, 현재 시점에서의 hidden state)
- Key (k): Encoder에서 나온 각 입력의 hidden state
- Value (v): Encoder에서 나온 각 입력의 hidden state (또는 다른 가중치를 줄 수 있음)
4-1. Query Linear Transform (Query의 선형 변환)
Query Linear Transform은 Attention에서 Query 벡터를 선형 변환하는 과정입니다. Query는 Decoder의 hidden state에서 나옵니다. 이 변환을 통해 Attention Score를 계산할 준비를 합니다.
4-2. 에너지 값에 대한 이해 (Query와 Key 내적)
**에너지 값(energy)**은 Query와 Key 사이의 유사도를 나타내는 값입니다. Query와 Key를 내적하여 계산합니다.
4-3. 에너지 값과 Value를 왜 가중합 하는지
내적한 에너지 값(유사도)을 기반으로 softmax를 통해 확률 분포를 구하고, 이를 Value에 가중합합니다. 이 과정은 Decoder가 입력 시퀀스 중 어떤 부분에 집중할지를 결정하는 단계입니다.
예제
입력 문장이 "I am a student"이고, 출력 문장을 생성할 때 각 단어를 예측하는 상황을 가정해봅시다.
- Query는 Decoder가 현재 단어를 예측할 때의 hidden state입니다.
- Key와 Value는 Encoder가 생성한 입력 시퀀스의 각 hidden state입니다.
- 각 Query와 Key의 내적 결과로 에너지 값을 계산하고, softmax를 적용하여 가중치를 만듭니다.
- 이 가중치로 각 Value를 가중합하여 Decoder가 예측에 사용할 context vector를 생성합니다.
이러한 Attention 메커니즘 덕분에 Decoder는 "I am a student" 문장에서 'student'와 같은 중요한 단어에 더 집중하여 정확한 번역이나 예측을 할 수 있습니다.
요약
- Encoder-Decoder 구조는 입력 시퀀스를 처리해 출력 시퀀스를 생성하는 방식으로, context vector를 통해 정보를 전달합니다.
- Attention은 context vector의 정보를 보완하여, 입력 시퀀스의 각 요소에 가중치를 부여해 더 나은 예측을 할 수 있게 해줍니다.
- Query, Key, Value는 Attention 메커니즘의 핵심 요소로, Query와 Key의 내적을 통해 중요도를 측정하고, Value를 가중합하여 최종 결과를 만듭니다.
이 과정들이 자연스럽게 학습되면서 기계 번역, 음성 인식, 텍스트 요약 등 다양한 작업에서 성능을 극대화합니다.