실습 · 연습문제 1개
Dirichlet 에너지로 over-smoothing 진단하기 dirichlet-energy
노드 표현이 이웃끼리 얼마나 다른지를 재는 Dirichlet 에너지는
이다. 는 대칭 인접행렬, 는 의 번째 행이다. 무방향 간선 하나는 와 로 두 번 더해지므로 을 곱해, 간선마다 한 번씩 센 값과 같게 한다. 층을 지날수록 이 값이 0으로 떨어지면 over-smoothing이다.
함수 dirichlet_energy(A, H)를 완성한다.
| 인자 | shape | 설명 |
|---|---|---|
A |
(N, N) |
대칭 인접행렬(가중치가 있어도 된다) |
H |
(N, D) |
노드 표현 |
반환값은 float 하나다.
테스트는 다음을 확인한다.
- 모든 노드의 표현이 같으면 0이다.
- 간선 하나짜리 그래프에서 과 같다.
- 노드 번호를 바꿔도(, ) 값이 같다(순열 불변).
- 그래프 라플라시안 로 쓴 와 같다.
- 정규화한 이웃 평균을 반복하면 값이 줄어든다.
힌트: 이중 반복문으로 써도 되고, H[:, None] - H[None]로 모든 쌍의 차이 (N, N, D)를 한 번에 만들어도 된다.