
66번 Soft Thresholding 은 L1 정규화의 proximal 연산자 — 작은 값은 0, 큰 값은 축소. Hard thresholding 은 "축소" 없이 그대로 보존:
즉 "작으면 버리고, 크면 안 건드린다".
| 연산 | 큰 값 처리 | Sparsity | 볼록성 |
|---|---|---|---|
| Soft | $ | x | - \lambda$ 로 축소 |
| Hard | 그대로 | 희소 | 비볼록 (L0 proximal) |
함수 hard_threshold(x, lam) 을 완성하세요.
x, 양수 lam.|x| > lam 이면 x, 아니면 0.np.where(np.abs(x) > lam, x, 0).| # | 이름 | 입력 | 기대 |
|---|---|---|---|
| 1 | 작은 값 → 0 | x=0.3, λ=0.5 | 0 |
| 2 | 큰 양수 → 그대로 | x=1.2, λ=0.5 | 1.2 (축소 X) |
| 3 | 경계값 | x=0.5, λ=0.5 | 0 |
| 4 | 벡터 | [-2, -0.3, 0, 0.3, 2], λ=0.5 | [-2, 0, 0, 0, 2] |
| 5 | Soft 와 다름 | x=3, λ=1 → hard=3, soft=2 |
코드를 작성하고 Run 을 눌러보세요.