9/9 (목) 피어세션 정리

1. 오늘의 강의(NLP 6강, 필수과제3) 정리


2. 질문 및 토의 내용


  1. (필수과제4) batchfirst = false로 하는게 성능이 더 좋다?

    → 오피스아워때 질문 예정

  2. 어텐션 병목현상 질문

    2-1. 병목현상을 해결해주기 위해 hidden states의 백터 크기를 늘려주면 해결이 안되나요?

    → 네, attention의 주요 motivation은 encoder를 이용해 fixed size의 vector에 모든 정보를 담아서 전달하기 어렵기 때문이 맞는데요. 말씀하신 방법도 좋은 방법 중 하나입니다. 다만, 모델과 데이터의 한계로 성능 향상에 어느정도 제한이 있을 수 있습니다. (model이 주어진 데이터를 기반으로 적절한 representation을 학습하지 못하면 vector size가 아무리 커도 무용지물일 수 있겠죠?)

    2-2. 어텐션의 사용 목적 중 하나가 그레디언트 손실을 줄이기 위함인데, 그러면 time step을 따라가며 한번 어텐션 따라 한번더 해서 총 두번의 업데이트가 이뤄지는 것일까요?

    → 네, attention output vector와 hidden state를 concat/sum해서 linear layer를 통과하고 loss가 계산되어 back prop을 진행하면 encoder의 weight는 decoder에서부터 온 gradient와 attention에서부터 온 gradient를 모두 받아 weight를 업데이트합니다.

    2-3. vanishing gradient를 해결하는게 encoder 부분에서는 attention을 따라서 가중치가 업데이트 되니까 해결되는것은 알겠는데, decoder부분에서는 vanishing gradient를 어떻게 해결하는지 궁금합니다. backpropagation은 eos가 나온 이후에 loss 계산해서 맨 매지막 타임스텝부터 차례로 올라가는것으로 아는데 만약 decoder가 길다면 어떻게 decoder 부분에서 일어나는 vanishing gradient를 해결 할수가 있는지 궁금합니다.

    → 강의에서 설명드린 attention은 encoder에만 attention을 걸기 때문에 decoder의 long-term dependency는 해결할 수 없습니다. encoder 정보는 잘 참조할 수 있어도 현재 time step 기준 아주 앞쪽 decoder sequence의 정보는 고려하기 어려운 구조입니다. 이러한 문제인식을 갖고 이후 강의에서 transformer decoder를 잘 살펴보시면 연구자들이 해당 문제를 어떻게 해결하고자 했는지 참고하기 좋을 것 같습니다 :)

    원문 : https://www.boostcourse.org/boostcampaitech2/forum/100430

3. 9월 10일 학습 목표 설정


4. TMI Talk