고정된 입력 크기 문제: DNN은 입력 데이터를 고정된 크기의 벡터로 받습니다. 예를 들어 이미지나 고정된 길이의 텍스트를 처리할 때는 잘 동작하지만, 시계열 데이터나 자연어 처리(NLP)와 같은 순차적 과제에서는 입력 길이가 변할 수 있습니다. 예를 들어, 문장은 각각 다른 길이일 수 있고, 주식 가격처럼 시간이 흐르면서 길이가 변하는 데이터도 있습니다. DNN은 이 가변적인 길이를 처리할 수 없어 시계열 데이터에 적합하지 않습니다.
시간적 의존성(Time Dependency): 시계열 데이터나 언어 데이터는 시간에 따라 이전 상태가 이후 상태에 영향을 미칩니다. 즉,이전 데이터(단어, 값 등)가 이후 데이터를 예측하거나 처리하는 데 중요한 역할을 합니다. 하지만 DNN은 이전 상태에 대한 정보를 기억하지 못합니다. 각 입력은 독립적으로 처리되기 때문에 앞에서 처리한 데이터가 뒤에 영향을 미치지 않습니다. 이런 구조로는 문장이나 시계열 데이터에서 앞의 정보가 중요한 상황을 다루기 어렵습니다.기존의 DNN(Deep Neural Network)의 경우에는 sequence한 task에 적용이 불가
DNN 구조
여기서 고안한 LSTM 기반의 sequential한 모델의 특징
알려진 바와는 다르게 생각보다 긴 문장에 대해서 좋은 성능을 보임
어순에 민감하면서도 능/수동에는 민감하지 않는 단어들 위주로 학습함
어순을 거꾸로 하면서 입력 문장과 target 문장 사이에 많은 단기 종속성 (short term dependencies)를 도입하도록 함
2. Introduction
기존 DNN에 관한 내용
음성 인식과 객체 탐지와 같이 많은 task에 사용되고 있음
병렬 컴퓨팅이 가능하고, 지도 학습의 경우에는 역전파를 이용하여 최적의 파라미터 찾음
그러나, input과 target이 고정된 길이의 벡터로 encoding되는 점이 문제점
실제로 대부분의 task는 고정된 길이가 아닐 것이기 때문에,도메인 독립적인 모델이 필요 -> 모델이 특정 언어나 도메인(분야)에 종속되지 않고 다양한 언어나 분야에서도 잘 작동하도록 해야 한다
이러한 DNN의 문제점에 대하여 Sequence-to-Sequence 모델을 고안함
input sequence를하나의 특정 시점에서 받고, output도 똑같이하나의 특정 시점에서 받음
각 입력은 인코더의 각 셀(네트워크)에서 처리되며, 최종적으로<EOS> (End of Sequence)토큰이 입력 시퀀스의 끝을 나타냅니다. 인코더는 입력 시퀀스 전체를 처리한 후하나의 고정된 벡터를 생성합니다. 이 벡터는 입력 시퀀스의 전체 정보를 요약한 것입니다.
디코더 (Decoder):
오른쪽에 있는 디코더는 인코더에서 전달된고정된 벡터를 받아, **출력 시퀀스(W, X, Y, Z)**를 하나씩 생성합니다.
디코더는 출력 시퀀스의 이전 단어(출력값)를 입력으로 받아서 그 다음 단어를 예측합니다. 처음에는 인코더로부터 받은 정보를 바탕으로 예측을 시작하고, 그 후에는 이전에 출력된 결과를 기반으로 다음 단어를 계속 예측합니다.
마지막으로<EOS> 토큰을 생성하여 출력 시퀀스가 종료됨을 나타냅니다.
주요 특징:
왼쪽에서 오른쪽으로 이어지는 흐름이 인코더와 디코더의 흐름을 나타냅니다. 인코더는 입력 시퀀스를 차례대로 받아하나의 벡터로 압축한 후, 디코더가 그 벡터를 받아출력 시퀀스를 생성합니다.
A, B, C는 입력 시퀀스의 각 요소를 의미하며,W, X, Y, Z는 출력 시퀀스의 각 요소입니다.
<EOS>는 입력과 출력 모두에서 시퀀스의 끝을 의미하는 특별한 토큰입니다.
결과
모델의 구성
5개의 deep LSTMs(with 384M parameters and 8,000 dimensional state each)를 앙상블
simple left-to-right beam-search decoder 사용
적은 수(80K)의 단어로 학습한 결과, BLEU score가 34.81임
결론
LSTM이 생각보다 긴 문장에 취약하지 않다고 함
어순 배열 바꾸기 trick으로 optimize를 되게 simple하게 해줌
LSTM의 경우에는 가변 길이의 문장을 고정된 길이로 바꿔주는 것을 학습함
SOTA 보다는 약간 낮은 BLEU Score이기는 하지만, Sequence한 task를 다뤘다는 점에서 의의
3. The Model
RNN의 경우에는 아래와 같은 연산을 반복해서 수행함
한계 : input과 output의 길이가 다르거나 복잡한 문제에 대한 해결력이 떨어짐
input을 고정된 길이의 벡터로 바꾼다는 한계점과 long term dependancy가 있음
LSTM을 이용한 Seq2Seq가 기존 RNN 모델과 다른 점
2개의 LSTM을 이용하는 데 하나는 Encoder 용도, 또 다른 하나는 Decoder 용도(이것을 논문에서는 input과 output으로 각각 표현함)
Shallow하게 층을 쌓지 않고, 4개의 Deep LSTM을 쌓음
입력 순서를 바꿔서 RNN에서 문제가 되었던 long term dependancy을 해결함
LSTM의 목적 : input과 output의 길이가 다르더라도 계산 기능 (아래 수식 이용)
v는 지금까지의 내용들이 들어가 있음 (Context Vector 같음)
4. Experiements
적용 : *WMT’14의 English-to-French task에 적용함 *Workshop on Machine Translation 2014 - 매년 번역 모델들의 성능을 비교하기 위한 대회
SMT(Statistical Machiine Translation) 시스템 기반이 아니라 직접 번역
SMT Baseline의 n-best lists에 대하여 rescoring을 진행함 -> SMT 방식을 이용해 번역을 할 때 번역 가능성 후보가 생성된 리스트들의 모임 = n-best lists를 rescoring 한다는 것은 여러가지 번역 리스트 중 가장 적합한 번역을 선택한다는 것 이다.
SMT는통계적 기계 번역이라는 방법입니다. 이 방식은 사람이 직접 언어 규칙을 넣어주는 게 아니라, 컴퓨터가 엄청나게 많은 양의 번역 데이터를 보고 패턴을 학습합니다. 간단히 말해, 과거 번역된 문장 쌍을 보고 어떤 단어나 구문이 어떤 번역으로 연결되는지를 학습하는 방식입니다. 예를 들어, "apple"이라는 단어가 "사과"로 번역된 예시가 많이 나오면, 새로운 문장에서 "apple"을 보면 "사과"로 번역하려고 하는 겁니다.
SMT는 번역할 때 문장을 작은 단위로 나눕니다. 단어, 구문 또는 문장 일부를 번역하고 이를 다시 조립하는 방식인데요, 이 조립 과정에서 가장 가능성이 높은 번역을 선택하기 위해확률을 사용합니다. 컴퓨터는 그동안 학습한 번역 패턴들을 바탕으로 확률이 높은 조합을 선택해 번역 결과를 만들어냅니다.
하지만 이 방식은 문맥을 잘 이해하지 못하고, 단어나 구문이 문장에서 어떤 의미로 쓰였는지 고려하지 못하기 때문에 자연스럽지 않은 번역을 내놓기도 합니다.
- NMT
NMT는신경망 기계 번역이라는 방법입니다. 이 방식은 SMT와 달리, 문장 전체를 하나의 고차원 벡터(숫자들의 집합)로 변환한 후, 이를 통해 번역을 합니다. 신경망을 사용하는 방식이라서 문장의 의미를 더 잘 파악하고, 문맥에 맞는 자연스러운 번역을 할 수 있다는 장점이 있습니다.
NMT는 컴퓨터가 단순히 단어 쌍을 외우는 것이 아니라, 문장 구조와 의미를 학습하려고 합니다. 한 문장에서 어떤 단어가 중요한지, 전체 문맥에서 어떻게 해석되는지를 더 잘 이해할 수 있습니다. 이렇게 문맥을 반영한 번역이 가능해지니, 특히 긴 문장이나 복잡한 문장에서 SMT보다 훨씬 자연스러운 번역을 만들어내는 경우가 많습니다.
SMT와 NMT의 차이
방식의 차이: SMT는 단어와 구문의 번역 규칙을 학습해서 그 조합을 확률적으로 결정하는 방식입니다. 반면 NMT는 문장 전체를 하나의 벡터로 변환하고, 그 벡터를 통해 문장을 이해한 후 번역합니다.
문맥 이해: SMT는 문맥을 잘 고려하지 못하고, 단어 단위로 번역하는 경향이 있습니다. NMT는 문장 전체의 맥락을 파악해서 더 자연스러운 번역을 할 수 있습니다.
번역의 자연스러움: NMT는 더 복잡한 문장을 번역할 때도 자연스러운 결과를 만들어내는 경향이 있습니다. SMT는 단어와 구문을 따로따로 번역해 결합하기 때문에 어색한 번역이 나올 수 있습니다.
계산 자원: SMT는 상대적으로 계산 자원이 적게 필요하지만, NMT는 신경망을 활용하기 때문에 훨씬 더 많은 데이터와 연산 능력이 필요합니다.
4.1. Dataset Details
총 348M의 French와 304M의 English 중 12M만 사용함. 이 선택받은 부분은 한 논문에서 선택한 것을 통해 참고한 것임. 또한, public availability of training과 testing을 고려해서 뽑은 거라 더더욱 신뢰할 수 있음
NLM이 단어의 벡터 표현에 의존적이라 가능한 모든 어휘들을 고정함
160,000개의 English와 80,000개의 어휘들에 대해 진행하고, out of vocabulary는 <UNK> 토큰으로 나타냄
>>> 대규모 데이터에서 일반화할 수 있도록 돕고, 불필요한 단어들로 인한 혼란을 줄여주는 방식으로 사용됩니다.
NLM(Neural Language Model)이 단어의 벡터 표현에 의존한다는 것은, 신경망 기반의 언어 모델이 단어를 처리할 때 단어 자체를 텍스트로 인식하는 것이 아니라, 그 단어를 **벡터(숫자의 집합)**로 변환하여 학습하고 예측하는 것을 의미합니다. 이때 벡터는 다차원 공간에서 단어들의 의미적 관계를 표현합니다. 단어들이 벡터로 변환되는 과정을 **단어 임베딩(word embedding)**이라고 부르며, 대표적인 예로는 Word2Vec, GloVe, 또는 BERT 임베딩 등이 있습니다.
쉽게 풀어 설명하면:
단어의 벡터 표현:
NLM은 단어 자체를 텍스트로 보는 것이 아니라, 그 단어의 의미를 숫자로 변환한 벡터로 처리합니다.
예를 들어, "cat"이라는 단어는 [0.1, 0.3, -0.7, 0.8]처럼 고차원의 숫자들로 표현될 수 있습니다. 이 벡터는 단어 간의 의미적 유사성을 반영하기 때문에, "cat"과 비슷한 단어인 "dog"는 벡터 공간에서 가까운 위치에 있을 수 있습니다.
이렇게 벡터화된 단어를 이용해 NLM이 문장의 맥락이나 의미를 학습합니다.
사용 가능한 어휘를 고정한다:
NLM이 학습하는 동안 사용할 수 있는 단어의 수를 제한하는 것을 의미합니다. 예를 들어, 160,000개의 영어 단어와 80,000개의 프랑스어 단어만을 대상으로 번역을 수행하도록 설정한 것입니다.
이렇게 제한된 어휘 내에서 각 단어마다 고유한 임베딩(벡터 표현)이 존재하며, 그 임베딩 값은 고정된 차원(예: 300차원 벡터 등)에서 주어집니다.
즉, 모델이 학습할 때 새로운 단어를 만나게 되면, 해당 단어에 대한 임베딩이 없기 때문에 이를 <UNK> 토큰으로 처리하게 됩니다.
4.2. Decoding and Rescoring
Training phase
아래 식을 최대화. 아래 식은 sequence가 주어질 때 모든 번역 확률에 대하여 평균을 구함
Test phase
아래 식을 최대화. 아래 식은 decoding 시에 최대가 되어야 하며, simple left-to-right beam search를 이용한다. *beam search를 이용하면 <EOS>와 같은 부분을 걸러낼 수 있음
Beam Search
Beam search는 번역이나 생성 작업에서 최적의 결과를 찾기 위해 여러 경로를 탐색하는 방식입니다. 모든 경로를 탐색하는 것은 비효율적이므로, 가능성이 높은 경로 몇 개를 추적하며 최적화된 결과를 얻는 방식입니다.
번역 과정에서, <EOS><EOS><EOS>와 같은 끝나는 토큰을 찾아내고, 불필요한 출력을 제거함으로써 최적의 번역을 얻도록 합니다.
**패딩(Padding)**은 특히 시계열 데이터나 자연어 처리에서 서로 다른 길이의 입력 데이터를 동일한 길이로 맞추기 위한 기법입니다. 많은 딥러닝 모델, 특히 RNN이나 CNN 같은 모델들은 입력 데이터의 크기가 일정해야 정상적으로 작동하므로, 서로 다른 길이의 데이터가 입력될 때는 패딩 기법을 사용해 문제를 해결합니다.
Padding의 적용 예:
문장 길이 차이 해결: 예를 들어, 두 문장이 있다면:
문장 A: "I like coffee."
문장 B: "I love drinking coffee every morning."
이 두 문장은 길이가 다르기 때문에, 동일한 길이로 맞추기 위해 짧은 문장 A에 '패딩'을 추가합니다. 예를 들어, 문장 A에 <PAD> 토큰을 추가하여:
문장 A: "I like coffee. <PAD> <PAD> <PAD>"
고정된 입력 크기: 이렇게 하면 딥러닝 모델에 입력되는 모든 데이터가 고정된 크기를 가지게 됩니다. 이는 모델이 일관되게 데이터의 크기를 처리할 수 있도록 도와줍니다.
고정된 임베딩 값을 통해 적절한 번역어를 결과로 제공한다면 이때 어떤 학습 방법이 사용된 것일까?
지도학습? 비지도 학습?
- 그렇다면 Seq2Seq 모델은 단어를 단어로 예측하는 것일까 문장을 문장으로 번역하는 것일까?
Seq2Seq 모델은 단어 단위로 예측을 진행하지만, 단어 하나만으로 문장의 의미를 파악하는 것이 아니라, 전체 문맥을 고려하여 번역을 수행한다. 즉, 단어 단위 예측이지만, 예측된 단어들만을 개별적으로 보는 것이 아니라, 문장 전체의 의미와 문맥을 기반으로 번역된 문장을 완성하는 것이다.