
Nuclear Norm (특이값 합)
64번 Frobenius 노름 은 원소 제곱합의 제곱근 = 특이값 제곱합의 제곱근. Nuclear norm 은 특이값을 그냥 더합니다:
∥A∥∗=∑iσi(A)
- Frobenius: ∑σi2 (L2-처럼 작용)
- Nuclear: ∑σi (L1-처럼 작용 — 특이값을 0으로 밀어넣음)
왜 중요?
- 저-rank 정규화 의 convex surrogate. rank(A) 는 비볼록(0-노름 같음); nuclear는 볼록 → 경사 기반 최적화 가능.
- 행렬 완성 (Matrix Completion): Netflix 문제처럼 결측 엔트리 복원에
min ||A||_* subject to A_observed = M_observed.
- Robust PCA: low-rank + sparse 분해.
관계
- rank(A)≤k 이면 ∥A∥∗≤∥A∥Fk
- 등호는 모든 특이값이 같을 때.
과제
함수 nuclear_norm(A) 를 완성하세요.
A shape (M, N).
- 반환: Python
float.
- 힌트:
np.linalg.svd(A, compute_uv=False).sum().
테스트 케이스
| # | 이름 | 검증 |
|---|
| 1 | 영행렬 → 0 | |
| 2 | 단위행렬 → N | 대각 특이값 1이 N개 |
| 3 | 스케일 선형성 | `‖cA‖_* = |
| 4 | rank=1 행렬 → 유일 특이값 = ‖A‖_F | |
| 5 | np.linalg.norm(A, 'nuc') 일치 | |