https://www.youtube.com/watch?v=w6yYXzC6tRw&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=23
RNN W3L01 : Basic Models

번역 알고리즘은 squence to squence model 의 대표적 사용 예이다.

번역 알고리즘은 image captioning 알고리즘과 유사하다.
https://www.youtube.com/watch?v=5lMjCjjZPtQ&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=24
RNN W3L02 : Picking the most likely sentence

상단은 일반 language model을 보여주고 있다. 번역 알고리즘은 원문장 (condition)이 있을때 발생할수 있는 번역된 문장의 확률을 확인한다는 점이 다르다.

이 강의에서는 원문장이 불어이고 번역 타겟 문장이 영어인 경우를 설명하고 있다.

network를 거치면서 각 단계에서 그 순간 최고의 확률을 가지는 단어를 하나씩 순서대로 찾아가는 방법을 greedy search라고 한다. 이 방법의 경우 그림 하단에서 처럼 일반적으로 자주 사용되는 단어로 번역하려는 성향을 가지는 문제를 가지게 된다.
https://www.youtube.com/watch?v=n8x_Qh60D5E&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=25
RNN W3L03 : Basic Search
heuristic search라고 부르기도 한다. 가장 높은 확률의 몇몇 번역 후보를 계속 유지하면서 최고의 번역을 얻는 방법이다.

위의 그림은 beam width가 3인경우이며 이 경우 가장 높은 확률의 번역 3개를 뽑는 과정을 반복하게 된다.

맨처음에 가장 높은 확률로 뽑은 단어중에 다음 단계에서 다른 단어에의해 뽑힌 다른 단어보바 확률이 떨어지면 처음 뽑혔던 단어라도 제거된다. 위의 그림에서는 semtember가 제거되었다. 확률이 높은지 낮은 지를 확인할때는 conditional probability를 이용한다. ( 위그림 중간 )

beam width가 1인경우 greed search라고 할수 있다.
https://www.youtube.com/watch?v=DSQ6ByxGuqw&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=26
RNN W3L04 : Refinements to Beam
beam search를 사용하는데 보다 효과적으로 사용하기 위한 약간의 변형을 설명한다.

여러 단어가 연속적으로 선택되기 때문에 연속된 conditional probability의 곱으로 표현된다. 확률은 1보다 작은 수이기 때문에 연속해서 곱하게 되면 그 수가 매우 작아 지게 된다. 그래서 문제가 발생할수 있는데 이를 해결하기 위해 곱연산이 덧셈으로 전환되는 log를 이용하게된다. 또 각 단어의 평균 확률을 구하기위해 총 단어수인 Ty로 나누어 주게 된다. 또 alpha power를 이용해 부드럽게 그 효과가 부드럽게 적용이 되게해서 사용하기도 한다.

beam갯수가 많으며 좋은 결과를 얻을수 있지만 속도가 느리게 된다. 또 beam 갯수가 작으면 좋은 결과는 얻을수 없지만 속도가 빨라지게 된다.
beam의 갯수가 1000까지 가는 경우는 드물다.
https://www.youtube.com/watch?v=Ypnh5h1gbLU&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=27
RNN W3L05 : Error Analysis in Beam
일반적인 번역하는 알고리즘은 RNN과 beam search으로 구성되는데 어느 부분이 취약한지를 확인하는 방법을 설명하고 있다.

P( y | x) 는 RNN에서 계산하는 부분이다. 실제 사람이 번역한 문장 y* 과 번역 알고리즘이 최종적으로 만들어낸 문장 y hat의 P()을 얻고 이를 비교한다.

P( y* | x) 값이 P( y hat | x) 보다 큰경우 RNN은 제대로 작동하나 Beam search가 잘 안되고 있다는 것을 뜻한다.

여러문장을 통해 P( y* | x)과 P( y hat | x) 를 비교해서 최종적으로 어느 부분이 취약한지 알아 낼수 있다.
https://www.youtube.com/watch?v=9ZvTxChwg9A&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=28
RNN W3L06 : Bleu Score (Optional)
Bilingual evaluate understudy
이는 얼마나 번역이 잘 되었는지를 평가하는 기준이 될수 있다. 번역의 경우 정답이 하나가 아니고 여러개가 있을수 있다는 점에 유의한다.

위 그림은 unigram 을 이용한 방법이다. machine translation의 각 단어별 등장횟수의 합이 분모가 된다. 정답 ( 사람이 번역한 정답 )들의 각 문장에서 기계가 번역해서 나온 문장의 단어 하나하나가 몇번씩 나오는지 확인한다. 이때 횟수 최대값은 정답 문장중 최대로 많이 나온 횟수가 top cap이 된다. 위의 예시의 경우 ref 1에서 최대 두번 등장했으므로 top cap은 2가 된다. 그러므로 count clip 값은 2가 된다.


정답 문장안에 machine이 번역한 문장의 2단어 각각 부분이 등장한 횟수 (단 각문장의 top cap 갯수를 고려) 의 총합을 구하고 이를 machine 번역문의 각부분의 총합으로 나눈다.

P1, P2, P3… 각각의 값이 같다는 것은 번역한 문장이 정답문장에 매우 근접했다는 뜻이다.
기계의 번역문이 짧을 수록 bleu score가 크게 나올수 있으므로 이에 대한 보완책으로 BP를 사용한다.
https://www.youtube.com/watch?v=LLJmFO6KPBk&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=29
RNN W3L07 : Attention Model Intuition

일반 RNN의 번역의 경우 파란색 그래프처럼 문장이 아주 짧거나 문장이 길어질수록 그 성능이 떨어지게 된다. 문장이 길어지질수록 성능이 떨어지는 것을 보완하는 방법으로 attention model을 들수 있다.

전다계에서의 결과값과 forward a<t>, backward a<t>의 종합으로 alpha값이 결정된다.
https://www.youtube.com/watch?v=FMXUkEbjf9k&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=30
RNN W3L08 : Attention Model

시간단계가 총 t 개 있는 경 alpha <1 , t> 를 1 – t 까지 다 더한 값은 1이된다. (중간 오른쪽 쪽) . C는 context 값이며 이는 모든 alpha 1 – t 까지와 a 의 곱으로 구해진다.

exp는 자연로그값을 구하는 함수이다.

attention 값 alpha를 구하기 위해서는 softmax값을 구해야 한다(모든 시간단계에 대한). 그러기 위해서 a<t> 와 s<t-1>를 이용한 새로운 small neural network를 이용한다. (좌측하단) 그래서 Tx * Ty 만큼의 작업이 더 필요하게 되는 것이며 이는 단점중의 하나이다.
https://www.youtube.com/watch?v=OXFZYChtYko&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=31
RNN W3L09 : Speech Recognition

위는 일반적인 speech recognition의 알고리즘을 보여준다.

ctc cost 를 이용한 방법을 보여주고 있다.
https://www.youtube.com/watch?v=Ky2qMDfkLqk&index=32&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI
RNN W3L10 : Trigger Word Detection
