17.8 학습 모니터링과 대시보드

실습 · 연습문제 1개

대시보드의 smoothing을 직접 계산하기 debiased-ema

대시보드의 smoothing 슬라이더가 곡선을 어떻게 바꾸는지 알면, smoothed 곡선에서 무엇을 믿고 무엇을 의심할지 판단할 수 있다. 함수 smooth(values, weight)를 완성해, 보정(debias)한 지수이동평균을 NumPy 배열로 반환한다.

상태 s0=0s_0 = 0에서 시작해, 유한한 값 xx가 들어올 때마다 개수 kk를 1 늘리고

sk=w sk−1+(1−w) x,출력=sk1−wks_k = w\, s_{k-1} + (1 - w)\, x, \qquad \text{출력} = \frac{s_k}{1 - w^{k}}

를 계산한다. 분모 1−wk1 - w^k는 s0=0s_0 = 0에서 출발한 치우침을 지우는 보정이다. 보정이 없으면 처음 값들이 0 쪽으로 끌려 내려간다.

  • weight는 0≤w<10 \le w < 1이다. w=0w = 0이면 출력은 원본과 같다.
  • NaN·무한대는 smoothing하지 않고 그 자리에 원본 값을 그대로 출력하며, 상태 ss와 개수 kk를 바꾸지 않는다. 발산한 step이 곡선에서 사라지지 않게 하려는 것이다.
  • 모든 값이 같은 배열은 원본을 그대로 반환한다.
  • 입력은 리스트나 1차원 배열이고, 출력은 같은 길이의 float 배열이다.

이 규칙은 집필 시점 TensorBoard 웹 화면의 scalar smoothing 코드와 같은 방식이다. 테스트는 손으로 계산한 값, 상수 입력, NaN이 섞인 입력, 그리고 smoothing이 계단 변화를 늦게 따라가는 정도(지연)를 확인한다.