단어 시퀀스 전체에 확률을 부여하여 문장의 자연스러움을 측정함
한 문장의 확률은 각 단어의 조건부 확률들의 곱으로 표현할 수 있음

대표적인 언어모델 : N-gram 언어모델
예시 4-gram 언어모델

말뭉치 정보

통계학적인 접근은 구조의 복잡성, 많은 수작업, 언어별 자원 구축 등의 필요로 유지 및 확장에 어려움이 존재함
→ 이러한 한계로 인해, 이후 기계 번역 연구는 Neural Machine Translation으로 넘어가게 됨
Neural Machine Translation 이란 인공 신경망을 이용해 기계 번역을 수행하는 방법임.
이때 사용되는 신경망 구조를 sequence-to-sequence (Seq2Seq)라 하며, 두개의 RNNs으로 이루어져 있음.
번역 문제는 입력 & 출력 길이가 다를 수 있기 때문에 길이가 다른 시퀀스 간의 매핑을 처리할 수 있어야 함
<aside> 💡
Seq2Seq Architecture
Seq2Seq는 encoder와 decoder로 이루어짐
Encoder : 입력 문장에 담긴 정보를 인코딩
Decoder : 인코딩된 정보를 조건으로 하여 타겟 문장(출력)을 생성

⇒ 하나의 통합 네트워크로 인코더와 디코더가 연결되어 있음. 디코더에서 발생한 오차는 역전파 과정을 통해 입력을 처리한 인코더까지 전달되어 전체 네트워크가 End-to-End로 동시에 최적화됨

이 구조는 기계번역 외에도 다양한 태스크에서 적용 가능(ex- 요약, 대화, 코드생성 등)
학습 수행
모델이 스스로 예측한 단어 대신 정답 단어를 디코더 입력으로 강제로 넣어줌으로써 훨씬 안정적이고 빠르게 학습을 수행하는 방법

Seq2Seq 토큰 출력방법
Greedy inference
토큰을 출력하는 방법 중 하나로, 각 단계에서 가장 확률이 높은 단어를 선택함

한계
Beam Search

<aside> ‼️
Seq2Seq의 한계 : the bottleneck problem
인코더는 입력 문장 전체를 하나의 벡터로 요약하는데 마지막 hidden state에 문장의 모든 의미 정보가 담김
고정 길이 벡터 하나에 모든 문장의 의미를 압축하다 보니 정보 손실이 생길 수 있는데, 이를 bottleneck problem라고 함

</aside>
<aside> 💡
Attention은 디코더가 단어를 생성할 때, 인코더 전체 hidden state 중 필요한 부분을 직접 참조할 수 있도록 함
매 타임스텝마다 어떤 단어나 구절에 집중할지를 가중치로 계산해 bottleneck 문제를 완화했음 </aside>
Attention 효과
Seq2Seq에서 attention을 사용할 때, 각 decoder와 hidden state와 모든 encoder와 hidden states 간의 관계를 Query와 Values의 관계로 볼 수 있음
Attention 과정

<aside> ❓
RNN이 꼭 필요할까?
RNN은 정보를 hidden state로 전달하며 순차적 의존성을 형성함
그에 반해 Attention은 필요한 순간 입력 전체에서 직접 정보를 전달 </aside>
RNN의 한계점
RNN은 왼쪽에서 오른쪽으로 순차 전개되어 먼 단어 쌍이 상호작용하려면 시퀀스 길이 만큼의 단계를 거쳐야 함
→ 길어진 단계만큼 기울기 소실 혹은 폭발 문제가 발생해 장기 의존성 학습 어려움
RNN은 입력된 선형 순서를 강하게 반영하기 때문에 언어의 비선형적 의존성을 잘 잡아내지 못함
Forward와 backward pass 모두 시퀀스 길이 만큼의 단계가 필요함
→ 순차적으로 연산이 진행돼서 병렬화가 불가능함
이는 병렬 연산에 강한 GPU 활용을 어렵게 만들어 대규모 데이터 학습에 비효율적임
Attention은?
Self-Attention의 장점