← 문제 목록/Soft Thresholding (L1 prox)
문제 해설

Soft Thresholding (L1 prox)

최적화 · easy

preview

Soft Thresholding

Lasso / ISTA / FISTA 같은 L1 최적화 알고리즘의 핵심 연산. 각 원소를 원점 방향으로 λ 만큼 당기되, 부호가 바뀌면 0으로 자릅니다:

Sλ(x)=sign(x)max(xλ,0)S_\lambda(x) = \text{sign}(x) \cdot \max(|x| - \lambda, 0)

  • xλ|x| \le \lambda: 출력 = 0 (작은 값은 완전히 제거 → sparsity)
  • x>λ|x| > \lambda: 부호 유지 + 절댓값에서 λ\lambda

이 연산이 L1 페널티가 해를 희소 하게 만드는 메커니즘의 본질입니다.

등가 수식

Sλ(x)=max(xλ,0)max(xλ,0)S_\lambda(x) = \max(x - \lambda, 0) - \max(-x - \lambda, 0)

혹은 np.where 로 분기 처리해도 됨.

과제

함수 soft_threshold(x, lam) 을 완성하세요.

  • 스칼라 또는 배열 x.
  • 반환: 같은 shape, elementwise 적용.
  • np.sign, np.maximum 조합.

테스트 케이스

#이름입력기대
1작은 값 → 0x=0.3, λ=0.50
2양수 임계값 초과x=1.2, λ=0.50.7
3음수 임계값 초과x=-1.5, λ=0.4-1.1
4벡터[-2, -0.3, 0, 0.3, 2], λ=0.5[-1.5, 0, 0, 0, 1.5]
5λ=0 은 항등임의 xx 그대로
코드 작성
Loading...
실행 결과

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