본문 바로가기
NLP

[NLP Study] - Attention Mechanism이 특별한 이유

by Tiabet 2023. 12. 10.

사실상 세상을 바꾼 아키텍쳐라고 봐도 무방한 트랜스포머의 어텐션 매커니즘에 대해서 정리해보고자 한다. 

 

참고자료

https://wikidocs.net/22893

 

15-01 어텐션 메커니즘 (Attention Mechanism)

앞서 배운 seq2seq 모델은 **인코더**에서 입력 시퀀스를 컨텍스트 벡터라는 하나의 고정된 크기의 벡터 표현으로 압축하고, **디코더**는 이 컨텍스트 벡터를 통해서 출력 …

wikidocs.net

당연히 트랜스포머를 처음 제시한 구글 연구원들의 "Attention is All You Need" 도 참고했다.

https://arxiv.org/abs/1706.03762

 

Attention Is All You Need

The dominant sequence transduction models are based on complex recurrent or convolutional neural networks in an encoder-decoder configuration. The best performing models also connect the encoder and decoder through an attention mechanism. We propose a new

arxiv.org

https://www.coursera.org/learn/generative-ai-with-llms/home/welcome

 

Coursera | Online Courses & Credentials From Top Educators. Join for Free | Coursera

Learn online and earn valuable credentials from top universities like Yale, Michigan, Stanford, and leading companies like Google and IBM. Join Coursera for free and transform your career with degrees, certificates, Specializations, & MOOCs in data science

www.coursera.org

그리고 코세라에 있는 LLM 강의도 수강할 때 참고하였으며,

https://www.yes24.com/Product/Goods/115633781

 

트랜스포머를 활용한 자연어 처리 - 예스24

챗GPT처럼 자연어를 찰떡같이 알아듣는트랜스포머 완벽 해부트랜스포머는 우리 주변에 가득하다! 트랜스포머 아키텍처는 순식간에 자연어 처리 분야를 지배했고, 챗GPT가 전 세계를 강타했다.

www.yes24.com

마찬가지로 공부하면서 보고 있는 위 책도 참고했다.

 

강의와 책 모두 굉장히 도움이 되고 있기 때문에 공부를 시작하시는 분들께 강력히 추천드리는 바이다.

 

이 편에선 어텐션 매커니즘이 무엇인지만 정리하고, 다음 편에서 트랜스포머 구조를 정리해보고자 한다.

 

Attention Is All You Need

트랜스포머가 처음 소개된 위 논문에선 RNN, LSTM, GRU 등의 모델들은 현재 State-of-the-art 수준의 좋은 Seq2Seq 모델들이라고 언급하지만, 역시나 Recurrent한 NN들은 긴 입력값에 대해선 약한 모습을 보인다며 그 단점을 꼬집고 있다. 그러면서 트랜스포머 아키텍처를 소개하는데, 여기서 Attention 이란 개념이 무엇인지 짧게 소개한다.

 

Attention 은 함수다. 어떤 함수냐면 Output에 Query와 Key-Value 쌍들을 매핑해주는 함수라고 저자들은 소개한다. 물론 이들은 모두 벡터로, Output 벡터가 들어오면 그 숫자들을 읽어서 Query, Key, Value 벡터들을 만들어주는 함수라고 해석된다.

 

정확한 의미를 살펴보자. Attention 함수의 기능은 Query와 Key-Value 벡터들을 통해 Attention Value 값을 만드는 것이다.

 

파이썬 Dictionary 자료형엔 Key 에 Value 를 배당할 수 있는데, 그것과 비슷한 개념으로 Key-Value 쌍을 해석하면 될 것 같다. Attention Value는 Value들을 Weighted Sum 한 방식으로 구할 수 있다. 이때 weight, 즉 가중치는 Query와 Key의 유사도를 바탕으로 계산된다. 즉, Query와 비슷한 Key에 해당하는 Value에 높은 가중치를 주게 되는 것. 여기에 한 발짝 더 나아가 Transformer의 저자들은 Scaled Dot-Product Attention이라는 특별한 Attention을 소개한다.

 

Scaled Dot-Product Attention

메커니즘 자체는 거의 유사하지만 Attention을 계산하는 수식에서 차이가 있다고 한다.

 

평범한 어텐션 메커니즘에서 Attention Value를 계산하는 식은 다음과 같다.

q, K 는 각각 Query와 Key를, f 는 둘의 유사도를 측정할 수 있는 함수를 의미하고 a가 Attentino Weight가 된다. v는 당연하게도 Value를 의미하며 오른쪽 수식으로 최종 Attention Value를 계산할 수 있게 된다.

 

Scaled Dot-Product Attention은 이름에서 짐작할 수 있지만 차원 조정(Scale)을 더한 것이다.

우선 유사도를 구하는 방식이 Query와 Key를 내적해준 값이다. (별도의 유사도 계산 함수 없음) 두 번째로 내적 값에 Key의 차원 수의 루트 씌운 값을 나눠준다. 이 Dot-Product Attention은 논문이 나오기 전에도 있던 것으로, 단순히 차원 수를 고려하여 소프트맥스 함수로 보내는 점만 다르다고 볼 수 있다.

 

저자들은 Dot-Product Attention이 Additive Attention(가장 많이 사용된 어텐션 메커니즘 중 하나)보다 좋은 이유로 계산량의 단순함을 꼽았다. Additive Attention은 값 계산을 위해 레이어 하나를 더 사용하는데, 이론적으로 계산량은 비슷해도 공간 차지도 덜하고 시간도 Dot-Product 쪽이 훨씬 빠르다는 입장이다. 그 이유는 행렬 곱셈에 최적화된 코드를 사용할 수 있기 때문이라는데, 찾아보니 GPU의 메모리 할당 같은 부분을 얘기하는 것 같다.

 

Scaled를 취한 이유에 대해선 명확하게 밝혀놓지는 않았으나 Query와 Key의 내적값이 아주 커지는 상황에 대비한 것으로 보인다. 키의 차원이 작다면 Additive Attention과 비슷한 성능을 보였는데 커질 경우엔 성능이 급격히 저하된다고 한다. 이 이유로 Softmax 함수의 경사가 극히 작은 극단적인 쪽으로 값이 가버리기 때문이라고 설명, 그래서 그냥 차원을 나눠준 것이 아닌 루트를 씌워서 Query와 Key의 내적값이 아주 작아지는 걸 방지했다고 한다. 

 

추가로 통계학을 배우신 분들은 분산이 1인 확률변수들을 n개 더하면 분산이 n이 된다는 사실을 아실 것이다. 그러면 표준편차는 루트n이 되는데, 이때 이 확률변수들을 다시 루트 n으로 나눠주면 표준편차가 1이 된다. 주석으로 내적값이 커지는 현상을 언급한 것으로 보아 아마 이 효과도 노리지 않았을까 싶다.

 

 

Attention 메커니즘이 Recurrent한 딥러닝 모델들에 비해 특별한 이유는 Query, Key, Value 벡터를 따로 구하여 계산해야하는 부담은 있지만 Attention Value를 구함으로써 입력값의 길이가 길어져도 성능이 저하되는 현상을 완벽하게 해결할 수 있었다는 점이다. 단순히 이전 입력값의 계산값을 이후 입력값으로 보내가면서 단어와 단어 사이의 관계를 이해하는 것보다, 이 Attention Value를 갖고 있는 것이 성능이 훨씬 좋다는 점이다. 사실 참고한 책들에서 내용이 너무 많아서 한 편으로 옮기가 어려워서, 다른 내용은 이후 포스팅에서 따로 정리해보려고 한다.