언어 모델은 인간의 두뇌가 자연어를 생성하는 능력을 모방한 모델이다.
- 앞의 문맥을 바탕으로 다음 단어(토큰)를 예측한다.
- 이러한 예측을 반복하여 자연스러운 문장을 생성한다.
예시
나는 맛있는 사과를
-> 여기까지 들어오면 언어모델은 다음 단어 후보에 점수나 확률을 준다.
...
먹는다 0.70
샀다 0.15
좋아한다 0.08
...
위와 같이 가장 가능성이 높은 단어를 골라서 문장을 이어갈 수 있다.
N-gram은 문장에서 연속된 N개의 단어(또는 문자)를 하나의 묶음으로 보는 방법이다.
예시로
나는 맛있는 사과를 먹는다
나는, 맛있는, 사과를, 먹는다나는 맛있는맛있는 사과를사과를 먹는다나는 맛있는 사과를맛있는 사과를 먹는다언어 모델에서는 이걸 이용해서 앞의 몇 개 단어를 보고 다음 단어를 예측한다.
SMT(Statistical Machine Translation)는 대규모 번역 데이터를 바탕으로
단어 또는 구(phrase)의 번역 확률과 언어 모델의 확률을 조합하여 가장 적절한 번역을 선택하는 방식이다.
입력 문장
↓
단어/구 단위 번역 후보 생성
↓
번역 모델 + 언어 모델로 점수 계산
↓
가장 점수가 높은 문장 선택
하지만 다음과 같은 한계가 있다.
→ 이러한 한계를 개선하기 위해 신경망을 이용해 문장 전체의 정보를 학습하는 NMT가 등장하였다.
→ NMT의 대표적인 구조가 Seq2Seq(Encoder-Decoder)이다.
NMT는 인공 신경망을 이용해 기계 번역을 수행하는 방법이다.
- 대표적인 신경망 구조로 Seq2Seq(Sequence-to-Sequence)가 있다.
- Seq2Seq는 크게 Encoder와 Decoder로 이루어진다.
- 2014년 Google의 Sequence to Sequence Learning with Neural Networks 논문에서 소개되었다.
언어마다 문장의 길이가 다를 수 있다.
예시)
the black cat drank milkle chat noir a bu du lait→ 입력 문장과 출력 문장의 길이가 다를 수 있으므로,
NMT에서는 길이가 다른 시퀀스 간의 매핑을 처리할 수 있어야 한다.
Seq2Seq는 보통 2개의 LSTM을 이용한다.
입력 문장
the → black → cat → drank → milk
↓
Encoder
↓
문장 정보 벡터
↓
Decoder
↓
le → chat → noir → a → bu → du → lait
End-to-End로 동시에 최적화된다.Teacher Forcing 은 모델이 스스로 예측한 단어 대신 정답 단어를 디코더 입력으로 강제로 넣어줌으로써 훨씬 안정적이고 빠르게 학습을 수행하는 방법이다.
hidden state 에 문장의 모든 의미 정보가 담긴다.Decoder가 출력 단어를 만들 때 Encoder의 마지막 hidden state 하나만 보는 게 아니라, 입력 문장의 여러 hidden state 중 지금 필요한 부분을 골라서 참고하는 방법이다.
기존 Seq2Seq에서는
the → black → cat → drank → milk
↓ ↓ ↓ ↓ ↓
h1 h2 h3 h4 h5
↓
마지막 h5만 사용
↓
Decoder
입력 문장의 정보를 마지막 hidden state 하나에 압축하여 Decoder에 전달하였다.
하지만 Attention은 출력할 단어와 관련 있는 Encoder의 hidden state에 더 높은 가중치를 주어 참고한다.
Encoder
h1 h2 h3 h4 h5
\ | | | /
\ | | | /
↓ ↓ ↓ ↓ ↓
Decoder에서 y1 만들기
→ h1~h5 중 필요한 곳에 가중치
→ y1 = "le"
Decoder에서 y2 만들기
→ 다시 h1~h5를 보고 다른 가중치
→ y2 = "chat"
Decoder에서 y3 만들기
→ 다시 h1~h5를 보고 다른 가중치
→ y3 = "noir"
그래서 기존 Seq2Seq와 비교하면:
| 기존 Seq2Seq | Attention |
|---|---|
| 마지막 hidden state 하나에 의존 | 여러 Encoder hidden state를 참고 |
| 긴 문장에서 정보 손실 가능 | 필요한 부분에 더 높은 가중치를 부여 |
| 문장 전체를 하나의 고정된 벡터로 압축 | 출력 시점마다 다른 입력 부분에 집중 |

hidden state를 참고하면서, 현재 출력에 필요한 부분에 더 집중할 수 있다.hidden states에 직접 접근할 수 있다.N-gram은 앞의 일정 개수 단어만 참고하여 다음 단어를 예측한다.Teacher Forcing을 사용하면 학습 시 정답 단어를 Decoder 입력으로 넣어 안정적으로 학습할 수 있다.hidden state 하나에 압축한다.hidden state 하나만 사용하는 것이 아니라 여러 hidden state를 참고한다.전체 흐름
언어 모델
→ SMT
→ SMT의 한계
→ NMT
→ Seq2Seq(Encoder-Decoder)
→ Bottleneck Problem
→ Attention으로 필요한 입력 부분에 집중