실습 · 연습문제 2개
선형 보간 경로의 손실 장벽 interpolation-barrier
학습된 두 해 , 를 잇는 선분 위에서 손실을 재면, 두 해 사이를 손실이 높아지지 않고 곧장 갈 수 있는지 알 수 있다. 경로 위 최대 손실이 양 끝보다 얼마나 높은지를 장벽(barrier)이라 한다.
함수 interpolation_barrier(loss, a, b, num=21)를 완성한다. 0부터 1까지 균등 간격 num개의 에서 손실을 계산해 (ts, losses, barrier)를 반환한다. 장벽은 격자 위의 최댓값으로 근사한다.
테스트는 다음을 확인한다.
- 반환값의 shape과 양 끝의 손실
- 볼록 함수에서는 장벽이 0이다(현이 그래프 위에 있다는 10.1장의 정의)
- 이중 우물 의 두 최솟점 사이 장벽은 1이다
- 장벽은 경로 최대에서 양 끝 중 큰 값을 뺀 것이다
Hessian-vector product로 최대 고윳값 추정하기 top-hessian-eigenvalue
파라미터가 많은 모델에서는 Hessian 를 만들 수 없지만, Hessian-vector product 는 계산할 수 있다(8.4장). 이것만으로 power iteration을 돌려 절댓값이 가장 큰 고윳값을 추정한다.
함수 top_hessian_eigenvalue(hvp, n, iters=100, seed=0)를 완성한다. hvp는 길이 n인 벡터를 받아 를 반환한다. 시드 seed의 정규분포 난수 벡터에서 시작해 iters번 반복하고 (lam, v)를 반환한다. lam은 부호를 포함한 고윳값 추정(Rayleigh 몫), v는 단위 고유벡터다.
테스트는 다음을 확인한다.
- 대각 행렬과 무작위 양의 준정부호 행렬에서 최대 고윳값, 그리고
- 절댓값이 가장 큰 고윳값이 음수이면(안장점 근처) 음수를 반환한다
hvp에는 길이n인 벡터만 넘긴다(행렬을 만들지 않는다)
참고: power iteration이 찾는 것은 절댓값이 가장 큰 고윳값이다. 손실 지형의 최대 양의 고윳값(sharpness)을 원하는데 이 값이 음수로 나오면, 에 대해 한 번 더 돌리는 식의 보정이 필요하다.