실습 · 연습문제 1개
중심 차분으로 gradient 검증하기 numerical-gradient
직접 유도하거나 구현한 gradient가 맞는지 확인하는 가장 기본적인 방법은 수치미분과 비교하는 것이다. 역량 지도에서 이론·구현 축의 "검증" 수준을 스스로 확인하는 진단 과제다.
함수 numerical_grad(f, w, h=1e-5)를 완성한다. f는 1차원 배열 w를 받아 스칼라를 돌려주는 함수다. 각 좌표 에 대해 중심 차분
를 계산해, w와 같은 shape의 배열로 반환한다. 여기서 는 번째 성분만 1이고 나머지가 0인 벡터다.
| 인자 | 설명 |
|---|---|
f |
(D,) 배열 → 스칼라 |
w |
(D,) 배열. 함수 안에서 바꾸지 않는다 |
h |
차분 간격 |
테스트는 다음을 확인한다.
- 해석적 gradient를 아는 함수(이차식, , 평균 제곱 오차)에서 결과가 맞는지
- 반환값의 shape이
w와 같은지 - 호출한 뒤에도
w가 바뀌지 않았는지 - 한쪽 차분 보다 정확한지(중심 차분의 오차는 에, 한쪽 차분의 오차는 에 비례한다)
힌트: w를 복사한 배열에서 한 성분만 바꿔 f를 두 번 부른다. w 자체를 고친 뒤 되돌리는 방식은 f가 예외를 던지면 w가 망가진 채로 남는다.