zh.wikipedia.org/wiki/%E8%8E%B1%E6%96%87%E4%BC%AF%E6%A0%BC-%E9%A9%AC%E5%A4%B8%E7...
1 correction found
\[ μ I + ( J T J ) \] δ p , k \= J T ϵ k
This LM update has the wrong sign if ε is defined as earlier in the article. With ε = f(p) − x, the right-hand side should be −Jᵀε, not +Jᵀε.
Full reasoning
Earlier on the page, the residual is defined as ϵ = f(p^+) - x. Under that definition, the standard first-order linearization is ϵ(p + δ) ≈ ϵ(p) + Jδ, so minimizing the squared residual gives the normal equations
(J^T J + μI) δ = -J^T ϵ.
Authoritative references use this sign convention explicitly:
- Ceres Solver writes the nonlinear least-squares problem as minimizing
1/2 ||F(x)||^2, with gradientg(x) = J(x)^T F(x), and the linearized subproblem as minimizing1/2 ||J(x)Δx + F(x)||^2. Setting the derivative of that model to zero givesJ^T(JΔx + F)=0, i.e.(J^T J)Δx = -J^T F. - The GNU Scientific Library’s Levenberg–Marquardt documentation states the trust-region form as
(B_k + μ_k D_k^T D_k) δ_k = -g_kand, withB_k ≈ J_k^T J_k, equivalently solves[J_k; sqrt(μ_k) D_k] δ_k = -[f_k; 0].
So the article’s displayed LM equation is inconsistent with its own earlier residual definition. If the author wants the right-hand side to be +J^Tϵ_k, then ϵ_k must instead be defined as x - f(p_k). As written, one of those signs has to be corrected.
2 sources
- Solving Non-linear Least Squares - Ceres Solver
The gradient vector is g(x) = ∇ 1/2||F(x)||^2 = J(x)^T F(x). Using the linearization F(x+Δx) ≈ F(x) + J(x)Δx leads to the linear least squares problem min_{Δx} 1/2||J(x)Δx + F(x)||^2.
- GNU Scientific Library Reference Manual: Nonlinear Least-Squares TRS Levenberg-Marquardt
There exists μ_k ≥ 0 such that ( B_k + μ_k D_k^T D_k ) δ_k = -g_k. With the approximation B_k ≈ J_k^T J_k, the following linear least squares problem is solved: [J_k; sqrt(mu_k) D_k] δ_k = - [f_k; 0].