하나의 언어 x(source language)를 또 다른 언어 y로(target language)로 번역하는 작업
x: L'homme est né libre, et partout il est dans les fers
▽
y: Man is born free, but everywhere he is in chains
ex. 불어($x$)를 영어($y$)로 번역하는 경우

SMT에서의 정렬 (alignment) 학습
$P(x|y)$를 어떻게 학습할 수 있을까? → 대규모의 병렬(parallel) 데이터
→ 언어 간 문장의 대응이 어떻게 되는지를 알아야 학습을 할 수 있다!

source 문장 $x$와 target 문장 $y$ 간 단어 수준에서 상응하는 것이 **정렬(alignment, a)**임
정렬(alignment)이란?
문장 쌍에서 특정 단어 간의 대응
그러나 언어 간의 특성 차이 때문에 대응이 잘 되지 않는 경우가 존재
ex. 아래의 Le처럼 대응이 없는 경우 spurious word라고 함

정렬은 다대일 대응(many-to-one), 일대다 대응(one-to-many), 다대다(many-to-many)대응이 될 수 있음

다대일 대응(many-to-one)

일대다 대응(one-to-many)

다대다 대응(many-to-many)
Decoding for SMT
$argmax_{y}P(x|y)P(y)$에서 argmax 값을 어떻게 구할까?
모든 경우의 수를 전부 조합하는 것은 너무 계산량을 많이 요구
→ 모델 내에 강하게 독립적이라는 가정을 적용하고, 동적 프로그래밍을 이용하여 전역 최적해를 도출
⇒ 이를 decoding이라 함

해당 decoding 방식의 예를 들면 위 그림에서 두 번째 독일 단어는 동사인데 영어에서는 올 수 없는 위치이며 재배열이 필요하다. 따라서 각 단어들의 변역될 수 있는 영단어들을 나열하여 조합해 나간다. 그래서 시작할 때 첫 단어가 he가 가장 가능성 있으므로 he를 선택하게 되고, 위의 박스는 검게 칠해진 것이 사용된 독일 단어의 위치를 표기해 준다. 이렇게 단어의 조합을 살펴보면서 가능성이 낮은 애들을 가지치기 해나가면서 가장 적절한 문장을 선택하게 된다.
SMT의 의의 & 한계