주뇽's 저장소
12. Graph Transformer Part1 CS224W: Machine Learning with Graphs 정리 본문
2024.05.16 - [GNN/CS224] - 13. Graph Transformer Part2 CS224W: Machine Learning with Graphs 정리
https://web.stanford.edu/class/cs224w
목차
1. Part1
- Transformer 소개
- 메시지 패싱 GNN과의 관계
2. Part2
- Transformer GNN을 위한 새로운 디자인
👉 1. Part1
- Transformer 소개
Transformer는 자연어 처리에서 뛰어난 성능을 보이며, 시퀀스 데이터를 병렬로 처리할 수 있는 능력으로 주목받았다. 그래프 데이터에서도 Transformer의 효용성을 높이기 위해 다양한 연구가 진행되고 있다. Transformer의 핵심은 셀프 어텐션 메커니즘으로, 입력 데이터의 모든 부분을 서로 비교하여 중요한 정보를 추출한다.
위와 같은 Transformer 구조에서 Multi-Head Attetion을 이해하기 위해서는 Self Attention 메커니즘을 먼저 알아야 한다.
셀프 어텐션 메커니즘
셀프 어텐션은 각 단어(토큰)가 문장의 다른 모든 단어들과의 관계를 학습하게 한다. 이를 통해 문장의 의미를 더 잘 이해할 수 있게 한다. 셀프 어텐션의 작동 방식은 다음과 같다:
Step0. 입력 토큰 벡터화:
문장의 각 단어를 벡터로 변환한다고 한다. 예를 들어, "Thinking, Machines"라는 문장이 있을 때, 각 단어는 고유한 벡터로 표현된다.
Step1. 쿼리(Query), 키(Key), 값(Value) 벡터 생성:
각 단어의 벡터에서 세 가지 벡터를 생성한다 : 쿼리 벡터, 키 벡터, 값 벡터. 이는 셀프 어텐션을 계산하는 데 사용된다.
- Q = XWq
- K = XWk
- V = XWv
X는 입력 벡터 Wq, Wk, Wv,는 학습 가능한 가중치 행렬이다.
Step2. 어텐션 스코어 계산:
쿼리 벡터와 키 벡터 간의 내적(dot product)을 통해 어텐션 스코어를 계산한다. 이는 각 단어가 다른 단어에 얼마나 주의를 기울여야 하는지를 나타낸다. Score(Qi,Kj)=Qi⋅Kj
Step3-1. 스코어 정규화:
어텐션 스코어를 소프트맥스(softmax) 함수를 통해 정규화하여 확률 분포로 만든다. 이를 통해 각 스코어를 0과 1 사이의 값으로 변환하고, 모든 스코어의 합이 1이 되게 한다. Attention(𝑄𝑖, 𝐾𝑗) = softmax(Score(𝑄𝑖, 𝐾𝑗))
Step3-2. 값 벡터 가중합:
정규화된 어텐션 스코어를 사용하여 값 벡터의 가중합(weighted sum)을 계산한다. 이는 각 단어의 새로운 표현을 만드는데 사용된다.
셀프 어텐션은 이러한 과정을 병렬로 수행하므로, 긴 문장에서도 효율적으로 작동한다.
다중 헤드 어텐션(Multi-Head Attention)
다중 헤드 어텐션은 셀프 어텐션을 여러 번 병렬로 수행하여 다양한 관점에서 데이터를 학습하게 한다. 각 헤드는 독립적으로 어텐션을 계산하고, 결과를 결합하여 더 풍부한 표현을 만든다. 이 방법은 모델이 다양한 패턴을 인식하고, 문장의 의미를 더 잘 이해할 수 있도록 돕는다.
- 메시지 패싱 GNN과의 관계
전통적인 메시지 패싱 기반 GNN은 각 노드가 이웃 노드의 정보를 받아들여 자신의 임베딩을 업데이트하는 방식이다. 그러나 이 방식은 네트워크 깊이가 깊어질수록 정보가 희석되는 문제점이 있다. Transformer는 셀프 어텐션을 통해 이러한 문제를 해결하고, 그래프 구조를 효과적으로 학습할 수 있다.
- 각 노드는 이웃 노드로부터 메시지를 수신하고 이를 집계하여 자신의 상태를 업데이트한다.
- 이 과정은 여러 단계에 걸쳐 반복되며, 그래프의 구조적 정보를 학습한다.
- 공식: ℎ𝑖(𝑘) = UPDATE(ℎ𝑖(𝑘−1), AGGREGATE({ℎ𝑗(𝑘−1):𝑗∈𝑁(𝑖)}))
- 여기서 ℎ𝑖(𝑘)는 노드 𝑖의 𝑘번째 레이어의 상태를 나타낸다.
- Transformer GNN을 위한 새로운 디자인
Self-Attention Update 해석하기
Self Attention이란?
Self Attention(Transformers)에서 입력 시퀀스의 각 부분이 출력 시퀀스를 생성할 때 다른 부분에 얼마나 집중해야 하는지 결정하는 메커니즘이다. 쉽게 말하면, 특정 단어의 의미를 이해하기 위해 문장의 다른 단어들 중 어느 것이 가장 중요한지를 결정하는 것이다.
Self Attention 공식
Self Attention의 핵심 공식은 다음과 같다
- Att(𝑋) =softmax(𝐾𝑇𝑄) 𝑉
𝑋는 입력 행렬이다. 𝐾, 𝑄, 𝑉는 학습된 가중치를 사용하여 𝑋로부터 생성된 키(Key), 쿼리(Query), 값(Value) 행렬이다.
Self Attention 계산 단계
- 키, 쿼리, 값 행렬 계산:
입력의 각 토큰에 대해 키 (𝐾), 쿼리 (𝑄), 값 (𝑉) 벡터를 계산한다. - 점수 계산:
쿼리 벡터와 모든 키 벡터의 내적을 계산하여 어텐션 점수를 얻는다. 이 점수는 각 토큰이 다른 토큰에 얼마나 집중해야 하는지를 결정한다. - 소프트맥스 적용:
이 점수에 소프트맥스 함수를 적용하여 주목 가중치를 얻는다. 이는 점수를 0과 1 사이로 정규화하고 합이 1이 되도록 한다. - 가중합 계산:
주목 가중치를 값 벡터와 곱하여 각 토큰에 대한 새로운 표현을 얻는다.
한 토큰에 대한 업데이트 단순화
단일 토큰 𝑥𝑖에 대해: 𝑧𝑖 = ∑𝑗 softmax(𝑞𝑖𝑇𝑘𝑗)𝑣𝑗 는 토큰 𝑖에 대한 새로운 표현 𝑧𝑖가 모든 값 벡터 𝑣𝑗의 가중합이라는 것을 의미한다. 여기서 가중치는 𝑞𝑖(토큰 𝑖의 쿼리 벡터)와 𝑘𝑗 (모든 토큰의 키 벡터)의 내적에 대한 소프트맥스 점수이다.
Self Attention 업데이트 해석
- 메시지 계산:
각 토큰은 다른 모든 토큰에 "메시지"를 보낸다. 이 메시지는 어텐션 스코어로 가중된 값 벡터 𝑣𝑗이다.
- 쿼리 계산:
각 토큰은 자신의 쿼리 벡터 𝑞𝑖를 계산한다.
- 메시지 집계:
각 토큰은 주목 가중치를 사용하여 다른 모든 토큰의 메시지를 집계한다. 이 집계를 통해 토큰의 표현이 업데이트된다.
주요 요점
- 메시지 전달로서의 자기 주목:
Self Attention은 그래프 신경망(GNN)에서 메시지 전달의 한 형태로 생각할 수 있다. 각 토큰(노드)은 다른 모든 토큰으로부터 메시지(Attention Score와 값 벡터)를 보내고 받는다. - 완전히 연결된 그래프:
Self Attention의 맥락에서 토큰들은 완전히 연결된 그래프를 형성한다. 이는 모든 토큰이 다른 모든 토큰에 영향을 미칠 수 있다는 것을 의미한다. - Grpah Attention Network(GAT):
Attnetion 메커니즘이 모든 노드가 아닌 인접 노드만 고려한다면, 이는 Graph Attention Network와 유사해진다. GAT는 그래프 구조를 통해 Attention을 수행한다.
위와 같이 Self Attention은 메시지 집계, 즉 GNN으로 표현할 수 있다! 하지만 지금까지는 그래프가 없고 토큰만 있다. 그렇다면 이것은 어떤 그래프에서 GNN일까? 토큰 = 노드인 것은 분명하지만 엣지는 무엇일까?
📝 정리
- Takeaway 1: Self-attention은 메시지 전달의 특수한 경우이다
메시지 전달은 그래프 신경망(GNN)에서 각 노드가 이웃 노드로부터 정보를 수집하고 이를 기반으로 자신의 상태를 업데이트하는 과정이다. Self-attention은 입력 시퀀스의 각 요소가 다른 모든 요소로부터 정보를 수집하고 이를 기반으로 새로운 표현을 계산하는 방식이다. - Takeaway 2: Self-attention은 완전히 연결된 그래프에서의 메시지 전달이다
Self-attention은 입력 시퀀스의 모든 요소가 서로 상호작용할 수 있는 완전히 연결된 그래프에서 작동한다. 이는 각 요소가 모든 다른 요소로부터 메시지를 받고 정보를 집계할 수 있음을 의미한다. - Takeaway 3: 그래프 𝐺가 주어졌을 때, self-attention의 소프트맥스를 𝑖 인접한 𝑗노드에만 제한하면, GAT와 유사하게 된다!
Graph Attention Networks (GAT)는 각 노드가 자신과 인접한 노드들로부터만 정보를 수집하는 메커니즘을 사용한다. 만약 self-attention에서 소프트맥스 연산을 특정 노드 𝑖의 인접한 노드 𝑗에만 적용하도록 제한하면, 이는 GAT의 동작 방식과 유사해진다.