← 문제 목록/Top-k Sparsity Projection
문제 해설

Top-k Sparsity Projection

최적화 · easy

preview

Top-k Sparsity Projection

67번 Hard Thresholding임계값 λ 를 고정해서 "λ 이하 버림". 실전에선 "정확히 k 개만 남기고 싶다" 가 더 자연스럽죠:

Pk(x)={xixi 가 상위 k0나머지P_k(\mathbf{x}) = \begin{cases} x_i & |x_i| \text{ 가 상위 } k \text{개} \\ 0 & \text{나머지} \end{cases}

이는 L0 제약 집합 {v:v0k}\{v : \|v\|_0 \le k\} 로의 투영 입니다. Iterative Hard Thresholding(IHT) 에서 사용.

알고리즘

  1. x|x| 내림차순 정렬 → 상위 kk 인덱스.
  2. 해당 인덱스만 xx 값 유지, 나머지 0.

루프 없이:

idx = np.argsort(-np.abs(x))[:k]
mask = np.zeros_like(x, dtype=bool); mask[idx] = True
return np.where(mask, x, 0)

어디에 쓰이나

  • Neural Network Pruning: 가중치 중 상위 k만 유지 → sparse 모델.
  • Sparse coding: dictionary 위에서 k 개의 atom만 활성화.
  • Compressed Sensing: k-sparse 신호 복원.
  • Top-k gating (Mixture of Experts): k 개 전문가만 활성화.

과제

함수 top_k_sparse(x, k) 를 완성하세요.

  • 1D 벡터 x, 정수 k.
  • 반환: 같은 shape, 상위 k (절댓값 기준) 만 값 유지, 나머지 0.
  • 동점 처리: argsort 의 안정성에 위임.
  • k >= len(x) 이면 그대로 반환.
  • k <= 0 이면 0 벡터 반환.

테스트 케이스

#이름검증
1‖·‖_0 = k비영 원소 수 = k
2상위 k 인덱스 보존
3값이 그대로 (축소 없음)
4k >= n → 항등
5k = 0 → 영벡터
6음수도 magnitude 기준[-5, 3] k=1 → [-5, 0]
코드 작성
Loading...
실행 결과

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