실습 · 연습문제 2개
최소 노름 보간과 경사하강의 도착점 min-norm-interpolation
과소결정 선형 회귀 (는 , , 행들은 일차독립)에는 데이터를 정확히 맞추는 해가 무수히 많다. 두 함수를 완성한다.
-
min_norm_solution(X, y): 보간하는 해 중 노름이 가장 작은 해.np.linalg.pinv를 쓰지 말고 위 식을np.linalg.solve로 계산한다(테스트가pinv결과와 비교한다). -
gd_limit(X, y, w0): 손실 에 안정적인 학습률로 경사하강을 무한히 반복했을 때, 초기값 에서 출발해 도달하는 해. 반복하지 말고 닫힌 형태로 계산한다.힌트: 경사하강의 업데이트는 항상 의 행 공간 안에 있으므로 도 행 공간 안에 있다. 행 공간 안의 벡터 중 를 만족하는 것을 찾는다. 결과는 에 1번 함수의 식을 "잔차 "에 적용한 것을 더한 꼴이 된다.
| 인자 | shape |
|---|---|
X |
(N, p) |
y |
(N,) |
w0 |
(p,) |
테스트는 다음을 확인한다.
- 두 해 모두 데이터를 정확히 맞춘다.
min_norm_solution은pinv해와 같고, 영공간 방향의 벡터를 더한 어떤 보간 해보다 노름이 작다.gd_limit(X, y, 0)은 최소 노름 해와 같다.gd_limit은 실제로 경사하강을 많이 반복한 결과와 같다.gd_limit의 해는 보간하는 해 중 에 가장 가깝다.
바닥이 있는 멱법칙 맞추고 외삽하기 power-law-floor
학습 곡선(데이터 크기 에 따른 시험 손실 )을 다음 꼴로 요약한다.
는 줄일 수 없는 바닥이다. 두 함수를 완성한다.
fit_power_law(N, L, floor=0.0): 바닥 =floor가 주어졌을 때, 을 최소제곱으로 맞춰(a, b)를 반환한다. 모든 이floor보다 커야 하고, 그렇지 않으면ValueError를 낸다.fit_with_floor(N, L, floors): 후보 바닥 배열floors의 각 값에 대해 1번으로 맞춘 뒤, 원래 척도에서의 제곱오차 이 가장 작은(a, b, c)를 반환한다.floor가 이상인 후보는 건너뛴다.
테스트는 다음을 확인한다.
- 잡음 없는 에서 바닥을 알려 주면 를 정확히 찾는다.
- 바닥을 0으로 두고 작은 범위()에서 맞추면, 의 손실을 실제보다 낮게 예측한다(본문의 실패).
fit_with_floor가 바닥을 대략 맞게 찾고, 그 외삽이 바닥 0의 외삽보다 정확하다.- 바닥이 손실보다 크거나 같으면
ValueError를 낸다.