본문으로 건너뛰기
261 / NUMERICAL COMPUTING LAB
먼저 알아두면 좋아요 · 연결된 선수 단원의 선형대수·미적분·연산 그래프 기초
단원 목록 (600) · Finite Difference·Gradient Check의 함정
이해하는 속도로 읽으세요.개념도이론실험확인 문제
BUILD YOUR INTUITION

먼저 그림으로 이해하기

한 번에 한 단계씩 살펴보세요.

절단·반올림 오차와 미분 불가능점의 거짓 통과를 살펴봅니다.

For exp(x) or |x| compare forward and centered differences as h=10^exponent changes. Blue is forward, orange centered; the axis is log10(h). Binary64 evaluation can make x+h equal x. At the kink x=0, |x| has no derivative even when centered difference agrees exactly with the zero convention used by the proposed gradient.

-18.720.722.946-0.113
가로 log10(h) · 파랑 forward difference · 주황 centered difference · 미분값과 오차는 표·수치로 확인
log10 hnominal hactual plus stepforwardcentered
-181.000e-18000
-171.000e-17000
-161.000e-161.110e-1601.11
-151.000e-159.992e-161.5541.665
-141.000e-149.992e-151.6431.643
-131.000e-131.000e-131.6481.648
-121.000e-121.000e-121.6491.649
-111.000e-111.000e-111.6491.649
-101.000e-101.000e-101.6491.649
-91.000e-91.000e-91.6491.649
-81.000e-81.000e-81.6491.649
-71.000e-71.000e-71.6491.649
-61.000e-61.000e-61.6491.649
-51.000e-51.000e-51.6491.649
-41.000e-41.000e-41.6491.649
-30.0010.0011.651.649
-20.010.011.6571.649
-10.10.11.7341.651
0112.8331.938

nominal step h = 1.000e-4

고정 기준 예제의 그림과 수치입니다. 각 단계에서 같은 그림의 의미를 차례로 살펴보세요. 고정된 기준 예제이며 아래 실험의 설정과 독립적입니다.
1 / 4

절단

매끄러운 함수에서 centered 차분의 leading 오차는 보통 h²입니다.

D_c= fprime + O(h²)

실험에서 확인하기 →
이 단원 목차

Gradient 검증도 하나의 수치 알고리즘이다

Finite difference는 독립적으로 평가한 함수값 변화와 제안 gradient를 비교합니다. 빠진 계수·chain rule 경로·잘못된 reduction을 찾는 데 유용하지만 검사 자체도 절단 오차·반올림 오차·미분 가능성 가정을 가집니다. 검사의 통과는 그 조건에서의 근거이지 모든 미분 구현의 증명은 아닙니다.

실험은 매끄러운 exp(x)와 0에서 꺾인 |x|를 비교합니다. Bias control로 일부러 틀린 gradient도 만들 수 있습니다. |x|의 0에서 제안하는 값 0은 구현 관례로 표시하며, 존재하지 않는 수학적 미분값을 대신 채우지 않습니다.

절단과 상쇄의 균형

Forward와 centered 차분은 다음 식입니다.

Df(h)=f(x+h)−f(x)h,Dc(h)=f(x+h)−f(x−h)2h.D_f(h)=\frac{f(x+h)-f(x)}h,\qquad D_c(h)=\frac{f(x+h)-f(x-h)}{2h}.

매끄러운 점의 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과 완전히 일치하지만 좌우 미분은 다릅니다.

lim⁡h↓0∣h∣−0h=1,lim⁡h↑0∣h∣−0h=−1.\lim_{h\downarrow0}\frac{|h|-0}{h}=1,\qquad \lim_{h\uparrow0}\frac{|h|-0}{h}=-1.

고전적인 도함수는 존재하지 않습니다. 대칭 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 미분·수치 검사 문서.

CHECK YOUR UNDERSTANDING

설명할 수 있나요?

실험 설정과 무관한 기준 예제를 묻습니다. 답을 고르고 설명을 확인해보세요.

1. h를 작게 할수록 gradient check가 항상 좋아지나요?
2. Centered 차분과 0 gradient의 일치가 |x|의 0 미분을 증명하나요?

선택한 답과 학습 표시는 이 브라우저에 저장됩니다. 다시 풀거나 표시를 해제할 수 있습니다.