GCN 정규화 행렬, (1,3) 성분을 Step-by-Step으로 계산

HanJu Han·2025년 10월 12일

GCN 정규화 행렬, (1,3) 성분을 Step-by-Step으로 계산해보자!

“매트릭스 계산을 생략하지 말고, step by step으로 모두 보여줘!”
— 이 요청은 진짜 기초부터 철저히 이해하려는 태도입니다.
이제 행렬 곱을 하나하나 쪼개서, 숫자까지 대입해서, 완전히 눈으로 따라갈 수 있게 설명드릴게요.


목표

다음 행렬의 (1, 3) 성분, 즉 첫 번째 행, 세 번째 열을 계산해보자:

D~1/2A~D~1/2\tilde{D}^{-1/2} \tilde{A} \tilde{D}^{-1/2}

그리고 이것이 아래 식과 정확히 일치함을 확인하자:

1d~1d~3A~13\frac{1}{\sqrt{\tilde{d}_1} \cdot \sqrt{\tilde{d}_3}} \cdot \tilde{A}_{13}

1. 설정: 작은 그래프 예시 (노드 3개)

  • 노드: U1U_1, U2U_2, P1P_1 → 인덱스: 1, 2, 3
  • 연결 관계:
    • U1U_1P1P_1 연결됨
    • U2U_2P1P_1 연결됨
    • 모든 노드는 자기 자신과 연결 (self-loop 있음)

→ 인접 행렬 A~\tilde{A} (3×3):

A~=[101011111]\tilde{A} = \begin{bmatrix} 1 & 0 & 1 \\ 0 & 1 & 1 \\ 1 & 1 & 1 \\ \end{bmatrix}

2. 차수 d~i\tilde{d}_i 계산

차수는 행의 합으로 정의됩니다:

d~i=jA~ij\tilde{d}_i = \sum_j \tilde{A}_{ij}
  • d~1=1+0+1=2\tilde{d}_1 = 1 + 0 + 1 = 2
  • d~2=0+1+1=2\tilde{d}_2 = 0 + 1 + 1 = 2
  • d~3=1+1+1=3\tilde{d}_3 = 1 + 1 + 1 = 3

💡 여기서 “U1이 3개 구매” 같은 실제 데이터는 무시하고, 그래프 구조에 따라 계산해야 합니다.


3. D~1/2\tilde{D}^{-1/2} 만들기

D~\tilde{D}는 대각행렬로, 대각 성분이 d~i\tilde{d}_i입니다:

D~=[200020003]\tilde{D} = \begin{bmatrix} 2 & 0 & 0 \\ 0 & 2 & 0 \\ 0 & 0 & 3 \\ \end{bmatrix}

D~1/2\tilde{D}^{-1/2}는 각 대각 성분의 제곱근의 역수:

D~1/2=[120001200013]\tilde{D}^{-1/2} = \begin{bmatrix} \frac{1}{\sqrt{2}} & 0 & 0 \\ 0 & \frac{1}{\sqrt{2}} & 0 \\ 0 & 0 & \frac{1}{\sqrt{3}} \\ \end{bmatrix}

4. Step 1: D~1/2A~\tilde{D}^{-1/2} \tilde{A} 계산

행렬 곱:

D~1/2A~=[120001200013][101011111]\tilde{D}^{-1/2} \tilde{A} = \begin{bmatrix} \frac{1}{\sqrt{2}} & 0 & 0 \\ 0 & \frac{1}{\sqrt{2}} & 0 \\ 0 & 0 & \frac{1}{\sqrt{3}} \\ \end{bmatrix} \cdot \begin{bmatrix} 1 & 0 & 1 \\ 0 & 1 & 1 \\ 1 & 1 & 1 \\ \end{bmatrix}

각 행 계산:

  • 1행:

    • (1,1): 121=12\frac{1}{\sqrt{2}} \cdot 1 = \frac{1}{\sqrt{2}}
    • (1,2): 120=0\frac{1}{\sqrt{2}} \cdot 0 = 0
    • (1,3): 121=12\frac{1}{\sqrt{2}} \cdot 1 = \frac{1}{\sqrt{2}}
  • 2행:

    • (2,1): 120=0\frac{1}{\sqrt{2}} \cdot 0 = 0
    • (2,2): 121=12\frac{1}{\sqrt{2}} \cdot 1 = \frac{1}{\sqrt{2}}
    • (2,3): 121=12\frac{1}{\sqrt{2}} \cdot 1 = \frac{1}{\sqrt{2}}
  • 3행:

    • (3,1): 131=13\frac{1}{\sqrt{3}} \cdot 1 = \frac{1}{\sqrt{3}}
    • (3,2): 131=13\frac{1}{\sqrt{3}} \cdot 1 = \frac{1}{\sqrt{3}}
    • (3,3): 131=13\frac{1}{\sqrt{3}} \cdot 1 = \frac{1}{\sqrt{3}}

→ 결과:

D~1/2A~=[1201201212131313]\tilde{D}^{-1/2} \tilde{A} = \begin{bmatrix} \frac{1}{\sqrt{2}} & 0 & \frac{1}{\sqrt{2}} \\ 0 & \frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}} \\ \frac{1}{\sqrt{3}} & \frac{1}{\sqrt{3}} & \frac{1}{\sqrt{3}} \\ \end{bmatrix}

5. Step 2: (D~1/2A~)D~1/2(\tilde{D}^{-1/2} \tilde{A}) \tilde{D}^{-1/2} → (1,3) 성분만 계산

우리는 첫 번째 행세 번째 열의 내적만 구하면 됩니다.

  • 첫 번째 행: [12, 0, 12]\left[ \frac{1}{\sqrt{2}},\ 0,\ \frac{1}{\sqrt{2}} \right]
  • D~1/2\tilde{D}^{-1/2}는 대각행렬이므로, 세 번째 열은:
    [0013]\begin{bmatrix} 0 \\ 0 \\ \frac{1}{\sqrt{3}} \end{bmatrix}

→ 내적:

[D~1/2A~D~1/2]13=120+00+1213=123=16[\tilde{D}^{-1/2} \tilde{A} \tilde{D}^{-1/2}]_{13} = \frac{1}{\sqrt{2}} \cdot 0 + 0 \cdot 0 + \frac{1}{\sqrt{2}} \cdot \frac{1}{\sqrt{3}} = \frac{1}{\sqrt{2} \cdot \sqrt{3}} = \frac{1}{\sqrt{6}}

6. 기대값과 비교

우리가 기대한 식:

1d~1d~3A~13=1231=16\frac{1}{\sqrt{\tilde{d}_1} \cdot \sqrt{\tilde{d}_3}} \cdot \tilde{A}_{13} = \frac{1}{\sqrt{2} \cdot \sqrt{3}} \cdot 1 = \frac{1}{\sqrt{6}}

완전히 일치!


7. 결론

일반적으로, 다음이 성립합니다:

[D~1/2A~D~1/2]ij=A~ijd~id~j[\tilde{D}^{-1/2} \tilde{A} \tilde{D}^{-1/2}]_{ij} = \frac{\tilde{A}_{ij}}{\sqrt{\tilde{d}_i} \cdot \sqrt{\tilde{d}_j}}

이번 예시에서 (1,3) 성분을 직접 계산해보니, 이 공식이 정확히 맞는 것을 확인했습니다.


8. 전체 최종 행렬 (참고)

D~1/2A~D~1/2=[1201601216161613]\tilde{D}^{-1/2} \tilde{A} \tilde{D}^{-1/2} = \begin{bmatrix} \frac{1}{2} & 0 & \frac{1}{\sqrt{6}} \\ 0 & \frac{1}{2} & \frac{1}{\sqrt{6}} \\ \frac{1}{\sqrt{6}} & \frac{1}{\sqrt{6}} & \frac{1}{3} \\ \end{bmatrix}
  • 대각 성분: 1d~i\frac{1}{\tilde{d}_i}
  • 비대각 성분 (iji \ne j): A~ijd~id~j\frac{\tilde{A}_{ij}}{\sqrt{\tilde{d}_i \tilde{d}_j}}

9. 직관적으로 기억하자

“두 노드 사이의 연결 강도는, 두 노드의 ‘차수 제곱근’으로 나눠서 조절된다.”

  • 연결이 많은 노드 → 분모가 커져서 영향력 ↓
  • 연결이 적은 노드 → 분모가 작아서 영향력 ↑

이것이 GCN (Graph Convolutional Network)에서 사용하는 대칭 정규화(symmetric normalization)의 핵심입니다.


10. Step-by-Step 요약

단계내용
1A~\tilde{A} 만들기 (self-loop 포함)
2d~i=jA~ij\tilde{d}_i = \sum_j \tilde{A}_{ij} 계산
3D~1/2\tilde{D}^{-1/2} 생성 (대각 성분 = 1/d~i1/\sqrt{\tilde{d}_i})
4D~1/2A~\tilde{D}^{-1/2} \tilde{A} 계산
5그 결과에 D~1/2\tilde{D}^{-1/2} 곱해서 (1,3) 성분 도출
6A~13d~1d~3\frac{\tilde{A}_{13}}{\sqrt{\tilde{d}_1 \tilde{d}_3}} 와 비교 → 일치 확인
profile
시리즈를 기반으로 작성하였습니다.

0개의 댓글