Attention model 기존과 크게 다른 것은 없고 attention model에 필요한 context를 어떻게 계산하는지 식으로 설명하고 있습니다. attention은 말 그대로 집중이며, 전체 문장을 구성하는 요소에 따라 다른 비중을 두는 방식이라고 이해할 수 있습니다. 따라서 attention 가중치를 나타내는 alpha의 총합은 1로 고정됩니다. 그리고 이 가중치와 실제 값을 곱한 것들의 누적합이 각 스텝의 context가 됩니다. 이를 지금까지의 state와 함께 입력으로 삼아 새로운 y hat을 만든다고 볼 수 있습니다. Computing attention a
Sequence Models
The problem of long sequences 우리가 지금까지 다룬 모델들의 구조를 살펴보면 encoder / decoder가 결합된 것으로 이해할 수 있습니다. 즉, 도식의 초록색 부분은 입력을 이해하는 encoder, 그리고 보라색 부분은 이해한 것을 바탕으로 생성을 담당하는 decoder가 됩니다. 하지만 이런 구조는 문장의 길이에 비례하여 성능이 급감하는 경향을 보여줍니다. 길이가 길어지더라도 초록색 그래프처럼 준수한 성능이 유지될 수 있도록 하는 것이 목표입니다. Attention model intuition 문맥을 반영하는 새로운 RNN의 형태를 떠올릴 수 있습니다. 지금까지의 RNN 모델은 이전까지의 입력, 생성 정보만을 condition으로 사용했습니다. 하지만 실제 문장이라는 것은..
Evaluating machine translation 이전까지는 바람직한 번역 결과, 정답이 딱 한 개 있을 때의 상황이었습니다. 그렇다면 바람직한 번역 결과가 두 개 이상 존재하는 경우엔 평가를 어떻게 해야 할까요? 이때 사용할 수 있는 것이 Bilingual Evaluation Understdy(BLEU)입니다. 원래 사용되던 precision 계산식은 MT의 결과 각 단어가 reference에 포함되어 있는지를 기준으로 삼습니다. 그래서 총 7개의 예측 단어가 모두 reference에 포함되기 때문에 7/7이었죠. 이를 개선한 것은 7개 중에서 실제로 포함된 것을 reference별로 비교하여 최대를 고릅니다. the는 각 reference에 2개, 1개씩 들어가므로 개수가 더 많은 2/7가 됩니..
Example Beam search를 통해 예측한 결과는 BFS/DFS와 달리 최선의 결과로 보장되지 않는다는 한계가 있다고 했습니다. 따라서 최선의 결과인 y*(사람이 번역한 결과)와 beam search를 통해 예측된 결과 y hat을 비교하여 어디에 문제가 있는 것인지 분석할 수 있습니다. 경우에 따라 x라는 context 내에서 y*가 등장할 확률이 더 높을 수도 있고 반대일 수도 있습니다. Error analysis on beam search y*일 확률이 y hat보다 높은 경우엔 beam search 자체에 문제가 있던 것입니다. 실제로 정답을 고를 확률이 더 높음에도 불구하고 가지치기를 하는 과정에서 잘못 뻗어나갔던 것이죠. 반대로 y hat일 확률이 y*보다 높은 경우에는 RNN 모델에 ..
Length normalization Beam search를 개선하는 방법 중 하나는 length normalization입니다. 지난 시간에 배웠던 것처럼 beam search는 각 단계에서 확률이 가장 높은 것들을 뽑는 방식입니다. 기존의 결과들에 대한 확률을 전부 곱하는 구조이므로, 여기에 log를 취하면 합연산으로 바꿀 수 있습니다. 또한 합연산으로 표현된 log 확률을 예측하고자 하는 문장의 길이로 나눠주어 보다 soft한 예측을 할 수 있습니다. 이때 사용되는 하이퍼 파라미터 alpha는 지수가 되므로 0이면 정규화가 이뤄지지 않음을 의미하게 됩니다. Beam search discussion beam width를 몇으로 설정해야 하는가 역시 하이퍼 파라미터라고 볼 수 있습니다. 주어진 inpu..
Beam search algorithm 주어진 input x에 대해 다음에 등장할 수 있는 예측값 하나만을 뽑았던 greedy search와 달리, Beam search algorithm은 해당 시점에 다음으로 등장할 확률이 가장 높은 것 B개를 뽑습니다. 이것은 일종의 hyper-parameter로 상황에 따라 다른 값을 부여할 수 있고, 이를 beam width라고 부릅니다. 맨 처음 골랐던 세 단어를 기준으로 또 세 개씩 뽑습니다. 각각의 확률을 구하는 방식은 완전히 동일하게 반복됩니다. 어떤 단어가 뽑혔을 경우, 이것을 포함한 것이 조건으로 들어가고, 이때 다음으로 등장할 확률이 가장 높은 B개를 추출하게 됩니다. 이를 문장이 끝날 때까지 반복하면 됩니다. 재밌는 것은 결국 한 개의 후보만 가지고..