Loading...
2022. 5. 1. 21:35

scaled dot product attention

우리는 $softmax(QK^{T})V$로 attention을 구했지만 논문에서는 scaled dot product attention을 제안했다. key,query matrix의 차원 $d_{k}$의 제곱근으로 $QK^{T}$를 나눠줬다. 왜 그랬는지 생각해보자. query와 key의 내적은 언제나 하나의 scalar지만 query,key의 차원 $d_{k}$가 충분히 크다면 내적이 당연히 커진다는 점에 주목했다. 그러면 softmax function이 gradient를 극도로 낮게 만드는 영역이 존재한다는 것이다. We suspect that for large values of $d_{k}$, the dot products grow large in magnitude, pushing the softmax..

2022. 4. 28. 21:28

예시와 그림으로 이해하는 self attention의 원리

1. 예시로 알아보는 self attention hidden state vector를 만들고자 하는 x1의 query를 q1으로 생성 1에서 x1의 query q1와 x1,x2,x3의 key k1,k2,k3 각각의 내적으로 score를 계산 (3.8,-0.2,5,9) softmax를 취하여 어느 벡터에 집중할지 가중치를 계산 (0.2,0.1,0.7) 가중치인 score와 x1,x2,x3의 value v1,v2,v3의 weighted sum을 구한다. 즉 x1의 hidden vector h1=0.2v1+0.1v2+0.7v3으로 구해진다. 이러면 이제 x1,x2,x3를 학습이 가능한 weight matrix인 $W^{Q}, W^{K}, W^{V}$로 변환하여 얻은 query,key,value를 이용하였는데 ..

2022. 4. 27. 22:24

NLP의 역사를 바꾼 self-attention의 기본 원리

1. self-attention transformer에 도입한 attention의 원리는 seq2seq의 attention과 비슷하지만 조금 다르다. self-attention이라고 이름이 붙여졌는데 transformer encoder의 기본 구조는 input sequence x1,x2,x3가 self attention을 지나 바로 encoding되어 h1,h2,h3의 hidden vector가 된다. 2. seq2seq의 encoder 이전 sequence의 압축정보를 전달받아 다음 sequence로 넘겨가며 전달하며 encoder의 hidden vector를 생성했다. decoder에서 마지막 encoder의 hidden vector랑 첫번째 decoding input을 입력받아 생성한 decoder..

2022. 4. 20. 09:48

NLP에서 한 획을 그은 transformer은 왜 등장했는가 + bidirectional RNN의 특징

1. transformer는 왜 등장했는가 자연어를 입력받아 자연어를 생성하는 LSTM기반의 seq2seq의 성능을 개선한 transformer Attention is all you need, NeurIPS’17에서 발표 LSTM이나 GRU기반의 seq2seq는 추가적인 모듈로 attention을 사용했지만 transformer은 LSTM이나 GRU같은 RNN모듈을 걷어내고 attention 구조만 사용하여 더 이상의 RNN은 사용하지 않았다. 논문의 제목은 이러한 의미를 담고 있다. ‘오직 너에게 필요한것은 attention’ 왜 이것이 의미있을까? 이미 배웠지만 RNN은 구조상 매 step마다 이전 input의 정보를 쌓아나가며 일정한 차원에 계속해서 압축해나가기때문에 short term depend..

2022. 4. 19. 16:03

length normalization을 이용한 beam search의 종료조건

1. beam search의 종료조건 greedy decoding은 가 생성되면 종료했다. beam search도 그런가? 여러가지 hypothesis를 고려하기때문에 가 각 hypothesis마다 다르게 생성된다는 것이 문제다. 가 생성된 hypothesis는 더 이상 단어를 생성할 필요가 없으니 물론 고려할 필요는 없다. 중간에 고려대상 hypothesis가 를 만들경우 그 hypothesis는 임시공간에 저장해놓고 최종후보대상에 올려놓는 것이다. 그 경우 다음 step에서 몇개를 고려해야하느냐가 문제다. 1개를 선택했으니 k-1개만 고려할까? 아니 beam search의 취지에 맞게 계속 k개를 고려할까? 사람마다 다르다.. 적절하게 고려하는것이 중요하다 어떨때 종료할까? 첫번째로 time step..

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개만 고려하겠다. 최종적으로 고려한 적절한 수의 후보들 중 가장 확률이 높은..