Loading...
2022. 4. 18. 10:21

beam search 기법이란 무엇인가

1. exhaustive search decoding의 매 스텝마다 모든 가능한 경우에 대해 확률분포를 따져보겠다는 것이다. 모든 가능한 경로에 대해 확률을 계산하여 최종적으로 가장 확률이 높은 1가지를 선택한다 근데 이제 보면 알겠지만 계산비용이 $O(V^{T})$로 T가 조금만 커져도 말도 안되게 커진다 참고로 greedy decoding은 매 스텝마다 가장 확률이 높은 1가지만 뽑으니까 2. beam search greedy는 계산이 쉽지만 최적을 항상 보장하지 않는다는 점, exhaustive search는 계산 비용이 너무 많이 든다는 점에서 중간책을 선택하고 싶다는 것이다. 그렇다면 매 step마다 beam size=k개만 고려하겠다. 최종적으로 고려한 적절한 수의 후보들 중 가장 확률이 높은..

2022. 4. 17. 08:26

greedy decoding(greedy search)은 왜 최적이 아닐까?

1. greedy decoding 일반적으로 행하던 decoding 방법이다. 매 time step마다 계산된 확률분포중 가장 확률이 높은 단어를 하나씩 선택한다. sequence 전체적으로 보는것보다 당장 현재 step에서 가장 확률이 높은 최적 단어를 뽑고자 하는 것이다. 순간순간에는 최적이지만 전체로 볼때는 최적이 아니라는 greedy algorithm에서 따온거겠지? 정답은 he hit me with a pie인데 he, he hit 생성하고 다음 단어 생성하는데 최적인 단어는 a라고 생각한거지.. 그러면 이제 이 순간 다음부터는 뭐가 나오든 최종 결과는 무조건 잘못된거임 2. 이상적인 번역이란 이상적으로 input sequence x가 주어질 때 그것에 대한 번역인 translation y를 찾..

2022. 4. 15. 23:50

attention 구조는 NLP를 어떻게 바꾸었는가

1. backpropagation attention의 가중치(attention distribution, attention모듈에는 가중치가 없는데? 근데 이놈들은 결국 encoder의 가중치랑 decoder의 가중치에 영향을 받겠지)를 잘 학습하도록 backpropagation에 의한 gradient가 attention module로도 흘러들어감 gradient vanishing 문제를 어느정도 완화시켰다. 직관적으로 attention구조가 없다면 gradient는 위 그림에서 먼 단어까지 가는데 굉장히 멀어서 잘 안흘러가겠다는 것을 느낄 수 있는데 attention구조에 의해 마치 빠른 길로도 gradient가 흘러들어가는 모습이다.. 2. 다양한 attention mechanism attention 구..

2022. 4. 15. 01:56

teacher forcing 기법

decoder의 예측 수행은 이전 예측 단어를 다음 예측을 위한 input으로 넣어준다. 문제가 무엇이냐? 예측이라는 것이 항상 정확할까? 특히 학습 초반에는 예측이 정확할 경우가 거의 없다. 그러면서 정확히 예측하지 못한 단어가 다음 단어 예측을 위한 input으로 들어가면서 이런 오류가 누적된다는 것. 그래서 보통 학습이 더디다. 이런 결과를 피하고싶어서 이전 단어 예측값과는 무관하게 decoder의 다음 단어 예측을 위한 input으로 무조건 정답을 넣어주는 것을 teacher forcing 기법이라고 한다. 첫 단어의 정답은 the인데 예측결과 a가 나왔다. 이것을 넣지 않고 그냥 무조건 the를 넣어주는 것이다. 위와 같은 방법은 당연하겠지만 학습속도를 올릴수 있다. 정답으로 예측하니까 당연하지..

2022. 4. 9. 02:06

attention 구조는 왜 등장했을까? -attention의 근본 아이디어-

seq2seq 논문에서는 attention구조를 alignment라고 칭하였다. 1. bottleneck problem 물건이 순차적으로 전달되는데 어느 순간 막혀서 전달되는 양이 점점 적어지는 현상. RNN에서 hidden state vector가 step이 지날수록 점점 정보량이 줄어드는 현상이 이와 비슷해서 이름 붙여짐 bottleneck problem을 그림으로 표현 RNN구조는 그 특징이 앞에서부터 읽어들인 정보를 순차적으로 hidden state vector로 쌓아간다. 심지어 모든 모듈은 공유되어있어서 모든 hidden state vector의 차원이 동일하다. sequence가 길수록 정보를 멀리 보내면서 많은 정보가 쌓이지만 동일한 차원에 압축해야 하기때문에 필연적으로 정보의 손실이 발생..

2022. 4. 5. 01:12

seq2seq model이란?

0. seq2seq는 왜 등장했는가? “말은 끝까지 들어봐야 안다.” 예를 들어 일반적인 RNN의 챗봇을 생각해보자. 사람이 I broke up yesterday라고 적으면 챗봇은 broke up를 보고 슬픈 단어를 생성할 확률이 높아져서 sorry to hear that을 생성 그런데 그 이후 사람이 Today’s perfect weather makes me much sad를 쳤는데 분명 슬픈 문맥인데 챗봇은 perfect weather만 보고 긍정적인 단어를 생성할 확률이 높다가 sad보면서 꼬이기 시작해서 제대로 생성을 못함 그래서 나온 seq2seq는 문장을 encoder에 넣어서 문맥 정보를 decoder에 보낸 뒤 단어를 생성하고 그 단어를 받아 다음 단어를 생성하는 등 모든 문장을 들은 뒤 ..