이전 강의 요약 - XCS224U: NLU I Intro & Evolution of Natural Language Understanding, Part. 1 I Spring 2023
이전 강의 요약 - XCS224U: NLU I Course Overview, Part. 2 I Spring 2023
이전 강의 요약 - XCS224U: NLU I Contextual Word Representations, Part. 1: Guiding ideas I Spring 2023
이전 강의 요약 - XCS224U: NLU I Contextual Word Representations, Part. 2: The Transformer I Spring 2023
강의영상 : https://www.youtube.com/watch?v=yqV_YfBBtK0&list=PLoROMvodv4rOwvldxftJTmoR3kRcWkJBp&index=6
강의자료 : https://web.stanford.edu/class/cs224u/slides/cs224u-contextualreps-2023-handout.pdf - Positional Encoding
이번 시간의 주제는 Positional Encoding이다. Transformer에서 가장 중요한 부분 중 하나인 이 PE를 자세히 알아보자.
The role of positional encoding
- 먼저 Transformer는 단어의 순서를 기록하는데 매우 어려움을 겪고 있다. Attention의 연결은 directional이 아닌, 그냥 dot-product 연산이다. 따라서 A B C가 들어오던, C B A가 들어오던 차이를 못 느낄 가능성이 크다.
- 그리고 columns간의 상호작용이 없다고 말하는데, 이는 Attention연산에서 column끼리 관계를 연산할 수는 있지만, 순서나 위치에 대한 정보는 반영하지 않기에 상호작용이 없다고 말하는 것 같다.
- 추가적으로 Positional encoding은 문장 내 단어 사이의 순서뿐 아니라, premise/hypothesis 간, 즉 문장과 문장 사이의 관계도 encoding할 수 있다는 것을 나타낸다.
Evaluating positional encoding schemes
- 그렇다면, 과연 우리가 Positional encoding을 사용할 때, 길이, 순서를 미리 정해야할 필요가 있을까? 또한 새로운 sequence에 대해서 positional encoding의 일반화가 잘 될까?
- 우선 Absolute positional encoding을 사용할 경우, Position은 미리 결정되어야 할 필요가 있다. ex) 우리가 512 길이의 sequence를 사용하고, 513번째 값이 들어온다면, 513번째 단어에 대해서 sequence정보를 넣을 수 없다.
- 또한 같은 단어가 다른 위치에서 들어왔을 때도 위와 같이 다른 번호를 준다면, 모델은 유연성이 떨어지며, 일반화를 하기가 더 어려워 질 것. 즉 왼쪽 이미지에서 The rock이라는 familiar phenomena를 다르게 처리함으로써 일반화에 어려움.
Frequency-based positional encoding.
- Transformer 모델에서 사용하는 방식은 이 Frequency-based positional encoding 방식이다. 우리는 입력을 python code의 pos 위치에 넣고, 상대적인 위치에 따라서 값(sin/cos)을 넣어줄 수 있다. 따라서 우리는 어떠한 길이의 입력이 들어와도 이를 해결할 수 있다. -> 미리 위치에 대한 정보를 넣어줄 필요가 없다.
- 하지만 이 역시 familiar phenomena에 대해서 다른 PE값을 넣어주게 된다. 또한 문장이 아주 길 경우 sin/cos의 경우 주기가 다시 돌아와 같은 값을 주게 됨으로 이러한 문제가 해결되지 않는다.
- 새로운 Attention layer 내부의 모든 vector가 각각의 positional encoding 정보를 가지게 된다. 따라서 기존의 녹색 vector가 가지고 있던 Positional encoding정보는 이제 필요가 없어지게 된다.
- 그리고 window size가 2일 때, 즉 d=2일 때, 우리는 주어진 query에 대해, 양 옆에 2개의 token에 대해서만 고려한다.
- a의 key의 4,4 위치를 0으로 기준으로 잡고, w의 key를 0으로 설정. 앞으로 가면 +1 뒤로가면 -1로 해서 최대 2의 값을 가지게 된다. 그리고 3.3에서도 똑같이 w의 key가 0으로 설정된다. 앞 뒤로 +1 -1을 할 때 2번째 줄과 같이 나오게 된다.
- 그래서 나온 최종 정의는 다음과 같다.
- 기존에 나온 문제를 모두 해결이 가능하며, Relative Postional encoding이 좋다고 말한다. 하지만 이 Shaw의 논문이 적용된 사례가 그렇게 많지는 않았다. 내가 찾아본 바에 의하면 2019년 XLNet이라고 Google에서 제시한 논문에서 사용이 됐다
- 그래도 이 Shaw의 방법론이 "Self-Attention with Relative Position Representations" 라는 이름의 논문으로 ciation 수가 1800을 넘는다. (2023년 9월 1일기준)