GNN/CS224

12. Graph Transformer Part1 CS224W: Machine Learning with Graphs 정리

뎁쭌 2024. 5. 16. 17:44
728x90
반응형

 

 

2024.05.16 - [GNN/CS224] - 13. Graph Transformer Part2 CS224W: Machine Learning with Graphs 정리

 

13. Graph Transformer Part2 CS224W: Machine Learning with Graphs 정리

https://web.stanford.edu/class/cs224w목차1. Part1-  Transformer 소개-  메시지 패싱 GNN과의 관계2. Part2-  Transformer GNN을 위한 새로운 디자인    👉 1. Part2-  Transformer GNN을 위한 새로운 디자인기존 GNN과

jypark1111.tistory.com

 


https://web.stanford.edu/class/cs224w

목차

1. Part1

-  Transformer 소개
-  메시지 패싱 GNN과의 관계

2. Part2

-  Transformer GNN을 위한 새로운 디자인

 

 

👉 1. Part1

- Transformer 소개

출처 : https://web.stanford.edu/class/cs224w/slides/14-graph-transformer.pdf

Transformer는 자연어 처리에서 뛰어난 성능을 보이며, 시퀀스 데이터를 병렬로 처리할 수 있는 능력으로 주목받았다. 그래프 데이터에서도 Transformer의 효용성을 높이기 위해 다양한 연구가 진행되고 있다. Transformer의 핵심은 셀프 어텐션 메커니즘으로, 입력 데이터의 모든 부분을 서로 비교하여 중요한 정보를 추출한다. 

출처 : https://web.stanford.edu/class/cs224w/slides/14-graph-transformer.pdf

위와 같은 Transformer 구조에서 Multi-Head Attetion을 이해하기 위해서는 Self Attention 메커니즘을 먼저 알아야 한다.


셀프 어텐션 메커니즘
셀프 어텐션은 각 단어(토큰)가 문장의 다른 모든 단어들과의 관계를 학습하게 한다. 이를 통해 문장의 의미를 더 잘 이해할 수 있게 한다. 셀프 어텐션의 작동 방식은 다음과 같다:

Step0. 입력 토큰 벡터화:
문장의 각 단어를 벡터로 변환한다고 한다. 예를 들어, "Thinking, Machines"라는 문장이 있을 때, 각 단어는 고유한 벡터로 표현된다.

출처 : https://web.stanford.edu/class/cs224w/slides/14-graph-transformer.pdf


Step1. 쿼리(Query), 키(Key), 값(Value) 벡터 생성:

출처 : https://web.stanford.edu/class/cs224w/slides/14-graph-transformer.pdf


각 단어의 벡터에서 세 가지 벡터를 생성한다 : 쿼리 벡터,  벡터,  벡터. 이는 셀프 어텐션을 계산하는 데 사용된다.

  • Q = XWq 
  • K = XWk
  • V = XWv

X는 입력 벡터 Wq, Wk, Wv,는 학습 가능한 가중치 행렬이다.

 

Step2. 어텐션 스코어 계산:

출처 : https://web.stanford.edu/class/cs224w/slides/14-graph-transformer.pdf

쿼리 벡터와  벡터 간의 내적(dot product)을 통해 어텐션 스코어를 계산한다. 이는 각 단어가 다른 단어에 얼마나 주의를 기울여야 하는지를 나타낸다. Score(Qi​,Kj​)=Qi​Kj

 

Step3-1. 스코어 정규화:

출처 : https://web.stanford.edu/class/cs224w/slides/14-graph-transformer.pdf


어텐션 스코어를 소프트맥스(softmax) 함수를 통해 정규화하여 확률 분포로 만든다. 이를 통해 각 스코어를 0과 1 사이의 값으로 변환하고, 모든 스코어의 합이 1이 되게 한다. Attention(𝑄𝑖, 𝐾𝑗) = softmax(Score(𝑄𝑖, 𝐾𝑗)) 

 

Step3-2. 값 벡터 가중합:

 

정규화된 어텐션 스코어를 사용하여 값 벡터의 가중합(weighted sum)을 계산한다. 이는 각 단어의 새로운 표현을 만드는데 사용된다.

출처 : https://web.stanford.edu/class/cs224w/slides/14-graph-transformer.pdf


셀프 어텐션은 이러한 과정을 병렬로 수행하므로, 긴 문장에서도 효율적으로 작동한다.




다중 헤드 어텐션(Multi-Head Attention)
다중 헤드 어텐션은 셀프 어텐션을 여러 번 병렬로 수행하여 다양한 관점에서 데이터를 학습하게 한다. 각 헤드는 독립적으로 어텐션을 계산하고, 결과를 결합하여 더 풍부한 표현을 만든다. 이 방법은 모델이 다양한 패턴을 인식하고, 문장의 의미를 더 잘 이해할 수 있도록 돕는다.

출처 : https://web.stanford.edu/class/cs224w/slides/14-graph-transformer.pdf

 

- 메시지 패싱 GNN과의 관계

전통적인 메시지 패싱 기반 GNN은 각 노드가 이웃 노드의 정보를 받아들여 자신의 임베딩을 업데이트하는 방식이다. 그러나 이 방식은 네트워크 깊이가 깊어질수록 정보가 희석되는 문제점이 있다. Transformer는 셀프 어텐션을 통해 이러한 문제를 해결하고, 그래프 구조를 효과적으로 학습할 수 있다.

  • 각 노드는 이웃 노드로부터 메시지를 수신하고 이를 집계하여 자신의 상태를 업데이트한다.
  • 이 과정은 여러 단계에 걸쳐 반복되며, 그래프의 구조적 정보를 학습한다.
  • 공식: ℎ𝑖(𝑘) = UPDATE(ℎ𝑖(𝑘−1), AGGREGATE({ℎ𝑗(𝑘−1):𝑗∈𝑁(𝑖)}))
    • 여기서 ℎ𝑖(𝑘)는 노드  𝑖의  𝑘번째 레이어의 상태를 나타낸다.

출처 : https://web.stanford.edu/class/cs224w/slides/14-graph-transformer.pdf

 

- Transformer GNN을 위한 새로운 디자인

Self-Attention Update 해석하기

 

Self Attention이란?

Self Attention(Transformers)에서 입력 시퀀스의 각 부분이 출력 시퀀스를 생성할 때 다른 부분에 얼마나 집중해야 하는지 결정하는 메커니즘이다. 쉽게 말하면, 특정 단어의 의미를 이해하기 위해 문장의 다른 단어들 중 어느 것이 가장 중요한지를 결정하는 것이다.

Self Attention 공식
Self Attention의 핵심 공식은 다음과 같다

  • Att(𝑋) =softmax(𝐾𝑇𝑄) 𝑉

𝑋는 입력 행렬이다. 𝐾, 𝑄, 𝑉는 학습된 가중치를 사용하여 𝑋로부터 생성된 키(Key), 쿼리(Query), 값(Value) 행렬이다.

 

Self Attention 계산 단계

  1. 키, 쿼리, 값 행렬 계산:
    입력의 각 토큰에 대해 키 (𝐾), 쿼리 (𝑄), 값 (𝑉) 벡터를 계산한다.
  2. 점수 계산:
    쿼리 벡터와 모든 키 벡터의 내적을 계산하여 어텐션 점수를 얻는다. 이 점수는 각 토큰이 다른 토큰에 얼마나 집중해야 하는지를 결정한다.
  3. 소프트맥스 적용:
    이 점수에 소프트맥스 함수를 적용하여 주목 가중치를 얻는다. 이는 점수를 0과 1 사이로 정규화하고 합이 1이 되도록 한다.
  4. 가중합 계산:
    주목 가중치를 값 벡터와 곱하여 각 토큰에 대한 새로운 표현을 얻는다.

한 토큰에 대한 업데이트 단순화
단일 토큰 𝑥𝑖에 대해: 𝑧𝑖 = ∑𝑗 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의 동작 방식과 유사해진다.