최적화·연습 문제

균일 양자화 (Uniform Quantization)

문제 설명PROBLEM

preview

균일 양자화 (Uniform Quantization)

69번 Clip by Value 는 범위 밖 값을 경계로 이동. 양자화는 clip + 이산화 — 범위 안도 N 개의 균등 레벨 중 가장 가까운 값으로 snap:

  1. xclip(x,lo,hi)x \leftarrow \text{clip}(x, lo, hi)
  2. 단계 간격 Δ=(hilo)/(N1)\Delta = (hi - lo) / (N - 1)
  3. x^=round((xlo)/Δ)Δ+lo\hat x = \text{round}\big((x - lo) / \Delta\big) \cdot \Delta + lo

결과: NN 개의 정확한 값만 등장 → 부동소수를 log2N\lceil \log_2 N \rceil 비트로 저장 가능.

어디에 쓰이나

  • Post-training quantization: fp32 가중치/활성화 → int8 으로 변환해 추론 속도/메모리 4× 개선.
  • 색상 양자화: 이미지 색상 팔레트.
  • gradient compression: 분산 학습 통신량 줄이기.

양자화 오차

e=xx^,eΔ/2=(hilo)/(2(N1))e = x - \hat x, \quad |e| \le \Delta / 2 = (hi - lo) / (2(N - 1))

N 2배 → 오차 절반. 8-bit (N=256) 이면 full range 대비 0.2%\approx 0.2\%.

과제

함수 uniform_quantize(x, lo, hi, num_levels) 를 완성하세요.

  • 배열 x, 스칼라 lo < hi, 정수 num_levels >= 2.
  • 반환: 같은 shape, 값은 {lo,lo+Δ,,hi}\{lo, lo+\Delta, \dots, hi\} 중 하나.
  • 루프 금지.

테스트 케이스

#이름검증
1경계값 그대로quantize(lo, lo, hi, N) == lo
2num_levels=2 → {lo, hi} 만이진화
3범위 바깥 → clip
4양자화 오차 ≤ Δ/2무작위 입력
5정확히 N개의 유니크 값 (범위 내 충분 샘플)
개념 노트와 실수 포인트

최적화 (옵티마이저)

  • GD/SGD/모멘텀/Adam. ⚠️ 학습률: 너무 크면 발산, 너무 작으면 느림.
  • 파라미터 -= lr * gradient. 모멘텀/Adam 은 과거 기울기 활용.