← 문제 목록/그램 행렬 (Gram Matrix)
문제 해설

그램 행렬 (Gram Matrix)

NumPy 기초 · easy

preview

그램 행렬 (Gram Matrix)

NN 개 벡터 {x1,,xN}\{\mathbf{x}_1, \dots, \mathbf{x}_N\} 사이의 모든 쌍별 내적을 담은 행렬. 커널 방법(SVM with kernels), Style Transfer, attention 의 기본 블록.

Gij=xixjG_{ij} = \mathbf{x}_i \cdot \mathbf{x}_j

G=XXG = X X^\top (X shape (N, D) → G shape (N, N)).

성질

  • 대칭: Gij=GjiG_{ij} = G_{ji}
  • 대각 성분은 각 벡터의 제곱 노름: Gii=xi2G_{ii} = \|x_i\|^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 한 줄.

테스트 케이스

#이름검증
1shape (N, N)
2대칭G == G.T
3대각 = squared normG[i, i] == np.sum(x_i**2)
4수동 내적과 일치
5영벡터 행렬 → 0
코드 작성
Loading...
실행 결과

코드를 작성하고 Run 을 눌러보세요.