이 단원 목차
Gradient 검증도 하나의 수치 알고리즘이다
Finite difference는 독립적으로 평가한 함수값 변화와 제안 gradient를 비교합니다. 빠진 계수·chain rule 경로·잘못된 reduction을 찾는 데 유용하지만 검사 자체도 절단 오차·반올림 오차·미분 가능성 가정을 가집니다. 검사의 통과는 그 조건에서의 근거이지 모든 미분 구현의 증명은 아닙니다.
실험은 매끄러운 exp(x)와 0에서 꺾인 |x|를 비교합니다. Bias control로 일부러 틀린 gradient도 만들 수 있습니다. |x|의 0에서 제안하는 값 0은 구현 관례로 표시하며, 존재하지 않는 수학적 미분값을 대신 채우지 않습니다.
절단과 상쇄의 균형
Forward와 centered 차분은 다음 식입니다.
매끄러운 점의 Taylor 전개에서 forward 절단 오차는 보통 h, centered는 h² 차수입니다. 처음에는 h를 줄이면 좋아집니다. 그러나 거의 같은 반올림 함수값을 뺀 뒤 작은 h로 나누면 평가 오차가 증폭되어 더 나빠질 수 있습니다.
그림의 가로축은 log10(h), 세로축은 실제 두 차분값입니다. 미분 불가능점의 symmetric 추정값을 참 미분값으로 부르지 않습니다. 수학적 도함수·실제 표현된 보폭·제안 gradient와의 차이는 수치와 표를 함께 읽으세요.
명목상 보폭이 사라지는 경우
Binary64의 x=1에 10^-18을 더하면 같은 표현값 1입니다. 같은 크기를 빼도 변하지 않습니다. 차분의 분자는 둘 다 0이 되어 계산 결과는 0이지만 exp'(1)=e입니다.
그래서 실험은 요청한 h뿐 아니라 (x+h)-x와 x-(x-h)를 표시합니다. 함수 평가까지 전달되지 않은 perturbation을 나눗셈으로 복원할 수 없습니다. 여러 보폭에서 검사하고 특히 참 미분이 0에 가까우면 절대·상대 허용오차를 함께 설계해야 합니다.
미분 불가능점에서의 거짓 통과
x=0에서는 |h|=|-h|이므로 모든 양의 h에서 centered 차분이 0입니다. 제안 관례 0과 완전히 일치하지만 좌우 미분은 다릅니다.
고전적인 도함수는 존재하지 않습니다. 대칭 stencil은 꺾임을 숨길 수 있습니다. x가 0이 아니어도 너무 큰 보폭이 꺾임을 가로지르면 매끄러운 국소 전개의 조건을 벗어납니다.
직접 풀기: 검사 실패의 원인 구분
exp(0.5), h=10^-4, bias=0.25로 설정하면 차이는 약 0.25로 잘못된 gradient를 드러냅니다. 다음으로 exp의 x=1, h=10^-18을 고르면 gradient가 맞아도 검사 산술 때문에 차이가 커집니다. 마지막으로 |x|의 0에서는 정확히 일치해도 미분은 존재하지 않습니다. 세 결과에 각각 어떤 판단이 필요한지 설명하세요.
더 읽기: JAX 미분·수치 검사 문서.
설명할 수 있나요?
실험 설정과 무관한 기준 예제를 묻습니다. 답을 고르고 설명을 확인해보세요.
선택한 답과 학습 표시는 이 브라우저에 저장됩니다. 다시 풀거나 표시를 해제할 수 있습니다.