
그램 행렬 (Gram Matrix)
N 개 벡터 {x1,…,xN} 사이의 모든 쌍별 내적을 담은 행렬. 커널 방법(SVM with kernels), Style Transfer, attention 의 기본 블록.
Gij=xi⋅xj
즉 G=XX⊤ (X shape (N, D) → G shape (N, N)).
성질
- 대칭: Gij=Gji
- 대각 성분은 각 벡터의 제곱 노름: Gii=∥xi∥2
- 양의 준정부호 (모든 고유값 ≥ 0)
- rank ≤ min(N, D)
어디에 쓰이나
- SVM 커널 트릭 — 선형 내적을 커널 함수로 바꿔 비선형 분리
- Neural Style Transfer — feature map의 Gram 행렬로 스타일 표현
- 가우시안 과정 — 공분산 행렬의 기본 형태
과제
함수 gram_matrix(X) 를 완성하세요.
X shape (N, D) → 반환 (N, N).
X @ X.T 한 줄.
테스트 케이스
| # | 이름 | 검증 |
|---|
| 1 | shape (N, N) | |
| 2 | 대칭 | G == G.T |
| 3 | 대각 = squared norm | G[i, i] == np.sum(x_i**2) |
| 4 | 수동 내적과 일치 | |
| 5 | 영벡터 행렬 → 0 | |