Loading...
2022. 5. 2. 21:02

multi-head attentiond 개념 알아보고 간단하게 구현해보기

지금까지 이야기한 것은 word embedding vector들의 self attention을 단 1번만 수행했다는 점인데 이것을 확장하여 여러번 수행하고 싶다는 것이다. 왜 여러번 수행해야할까? 단 1번의 self attention은 1가지 측면에서만 word들의 attention 측면을 고려하지만 필요에따라 attention 측면을 여러 방면에서 수행할 필요가 있다. 특히 매우 긴 문장의 경우 ‘I went to the school. I studied hard. I came back home. I took the rest.’를 생각해보자. 이 문장을 해석하기 위해 단어 I에 대해서 고려해야할 대상은 went, studied, came, took 등 동사 측면도 있지만 그것의 대상이되는 school, ..

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. 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. 14. 01:17

예시로 이해하는 attention의 기본 아이디어

encoder의 기본 진행은 다음과 같다. 위에서 나온 4개의 encoder의 hidden vector $h_{1}^{(e)}$, $h_{2}^{(e)}$, $h_{3}^{(e)}$, $h_{4}^{(e)}$와 첫번째 step의 decoder output hidden vector $h_{1}^{(d)}$가 있는데 원래라면 첫번째 단어 생성을 위해서 $h_{1}^{(d)}$가 output layer로 들어가서 예측을 수행했을 것 그러나 attention은 첫번째 단어 생성을 위해 어떤 단어에 더욱 집중해야하는지 알기 위해 $h_{1}^{(d)}$와 $h_{1}^{(e)}$ ,$h_{2}^{(e)}$ ,$h_{3}^{(e)}$ ,$h_{4}^{(e)}$과의 내적 연산을 수행하여 각 vector에 대하여 sc..