Check Gradient (Jacobian) of objective function -- what is the meaning of absolute difference (1e-6) if component of gradient is less than 1 ?
조회 수: 3 (최근 30일)
이전 댓글 표시
I use lsqnonlin to solve my data-fitting problem and provide the Jacobian, which I verify using CheckGradients option.
As stated here, if a component of the Jacobian is less than 1, gradient check is successful if the absolute difference between the user-shipped Jacobian and Matlabs finite-difference approximation of that component is less than 1e-6.
Example: Jacobian_USER(1,1)=2e-7, Jacobian_MATLAB(1,1)=1e-7.
Here, Jacobian_USER(1,1) is clearly wrong, but Jacobian check would be successful. Is that true?
댓글 수: 11
Torsten
2023년 1월 18일
편집: Torsten
2023년 1월 18일
Why should I not be alarmed in that case?
If I know my values are so small (around 1e-7) per nature, a difference between 1e-7 and 2e-7 is significant.
The values you investigate are numerical derivatives (usually of complex functions). Already when choosing the h in approximating the derivative as (f(x+h)-f(x))/h can cause such differences.
채택된 답변
Matt J
2023년 1월 18일
편집: Matt J
2023년 1월 18일
If I know my values are so small (around 1e-7) per nature, a difference between 1e-7 and 2e-7 is significant.
Not necessarily. The element-wise relative error is large, but remember lsqnonlin uses the Jacobian J in matrix products of the form J*x and J.'*y to compute its updates. If the average value of abs(J(m,n)) is 1000 and the average values of abs(x(n)) or abs(y(m)) is 10, then an absolute error of 1e-7 in any entry J(m,n) would likely contribute negligibly to J*x or J.'*y.
Regardless, if you don't have full confidence in DerivativeCheck, you can implement your own finite difference computation, using for example,
https://www.mathworks.com/matlabcentral/fileexchange/13490-adaptive-robust-numerical-differentiation
and then do the comparison according to a criterion you prefer.
댓글 수: 0
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Surrogate Optimization에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!