실습 · 연습문제 2개
Heavy ball momentum 구현하기 heavy-ball
Heavy ball 방법은 속도 에 과거 gradient를 누적한다.
함수 heavy_ball(grad, x0, lr, beta, steps)를 완성한다. grad는 점을 받아 gradient를 반환하는 함수다. 반환값은 시작점을 포함한 모든 반복점을 쌓은 배열로, shape은 (steps + 1, n)이다.
테스트는 다음을 확인한다.
beta = 0이면 경사하강과 같다.- 처음 두 step이 식과 같다.
- 조건수가 100인 이차함수에서, Polyak의 최적 파라미터 , 를 쓰면 같은 정확도에 도달하는 데 필요한 step 수가 경사하강()보다 5배 이상 적다.
- 일 때 학습률이 보다 조금 작으면 수렴하고 조금 크면 발산한다.
이차함수에서 GD의 최대 안정 학습률 max-stable-lr
이차함수
(는 대칭 양의 정부호)에 학습률 의 경사하강을 적용한다. 두 함수를 완성한다.
gd_quadratic(H, b, x0, lr, steps): 에서 시작해 를steps번 반복한 를 반환한다. 다.max_stable_lr(H): 어떤 시작점에서든 GD가 최솟점 로 수렴하는 학습률의 상한 를 반환한다. 이면 수렴하고 이면 (일반적인 시작점에서) 발산해야 한다.
테스트는 대각이 아닌 에서도 의 0.99배로는 수렴하고 1.01배로는 발산하는지 확인한다.
힌트: 오차 는 를 따른다. 의 고유벡터 방향마다 오차가 배가 된다. 모든 에서 이 되는 조건을 구한다.