Otra forma de ver este problema es considerar las herramientas de problemas inversos discretos, es decir, problemas que implican resolver o min | El | A x - b | El | 2 donde A está muy mal condicionado (es decir, la relación entre el primer y el último valor singular σ 1 / σ n es grande).Ax=bmin||Ax−b||2Aσ1/σn
Aquí, tenemos varios métodos para elegir el criterio de detención, y para un método iterativo, recomendaría el criterio de la curva L ya que solo involucra cantidades que ya están disponibles (DESCARGO DE RESPONSABILIDAD: mi asesor fue pionero en este método, por lo que definitivamente estoy sesgado hacia eso). He usado esto con éxito en un método iterativo.
La idea es monitorear la norma residual y la norma de solución η k = | El | x k | El | 2 , donde x k es la k 'ésima iteración. A medida que itera, esto comienza a dibujar la forma de una L en un diagrama de registro (rho, eta), y el punto en la esquina de esa L es la opción óptima.ρk=||Axk−b||2ηk=||xk||2xkk
Esto le permite implementar un criterio en el que vigila cuando haya pasado la esquina (es decir, mirando el gradiente de ), y luego elija la iteración que se encuentra en la esquina.(ρk,ηk)
La forma en que lo hice implicaba almacenar los últimos 20 iteraciones, y si el gradiente abs(log(ηk)−log(ηk−1)log(ρk)−log(ρk−1))
También hay métodos más detallados para encontrar la esquina, y estos funcionan mejor pero requieren almacenar un número significativo de iteraciones. Juega un poco con eso. Si está en matlab, puede usar las herramientas de regularización de la caja de herramientas, que implementa algo de esto (específicamente la función "esquina" es aplicable).
Tenga en cuenta que este enfoque es particularmente adecuado para problemas a gran escala, ya que el tiempo de computación adicional involucrado es minúsculo.