Add a trust-region Newton optimizer
Los mantenedores suelen responder en 1 día
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 15/100
Línea de trabajo
Start from make_lbfgs, which the issue names as the interface to match: an objective over rvars, a vector of variables, and step(). Then read how autodiff_reverse supplies exact derivatives, since the Hessian comes from it. The issue leaves the design open (dogleg versus Steihaug–CG, and the trust-region update rule), so agree on a plan with maintainers first. Done means a step()-based optimizer that handles indefinite Hessians and reaches f − f* ≤ 1e-6 on 2-D Rosenbrock in fewer calls than L-BFGS.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
The gradient-based optimizers (make_gradient_descent, make_nag, make_lbfgs) are all first-order or quasi-Newton. A trust-region Newton method would use the exact Hessian, which autodiff_reverse can already supply, and converge quadratically near a minimum.
- Dogleg for small n, Steihaug–CG (Hessian–vector products only) for large n.
- A trust region rather than a line search, so indefinite Hessians (saddles, as on Styblinski–Tang or Himmelblau) are handled.
- Same interface as
make_lbfgs: an objective onrvars and a vector of variables, withstep().
On Rosenbrock in 2-D, L-BFGS needs ~100–150 objective calls to reach f − f* ≤ 1e-6; this is the case where exact curvature should pay off.
- Lenguaje dominante
- C++
- Estrellas
- 378
- Forks
- 271
- Merge medio
- 12 h 31 min
- PR fusionados (30 d)
- 70
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de boostorg/math
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 12/100
Los mantenedores suelen responder en 1 día
-
Reverse-mode autodiff: order-2 tape slows order-1 gradients, rewound tapes keep allocating blocks, rvar copies silently share a nodePosiblemente ocupada @NAThompson la tomó hace 3 días. Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 20/100
Los mantenedores suelen responder en 1 día
-
Feature WishlistAbiertoenhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 20/100
boostorg/math#303 · 20 comentarios ·
Los mantenedores suelen responder en 1 día
Todos los issues de boostorg/math
Issues similares
-
libc++ test-suite
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
llvm/llvm-project#239851 ·
Los mantenedores suelen responder en 1 día
-
Bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
scipy/xsf#454 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
bug :bug:
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
-
comp-documentation
Dificultad 1/5 Menos de una hora Aptitud para principiantes 84/100
ClickHouse/ClickHouse#129829 ·
Los mantenedores suelen responder en 1 día
-
feature request Python
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Los mantenedores suelen responder en 2 días