* A2A *
- Generalice su código para optimizar la función objetiva arbitraria (es una buena oportunidad para usar std :: function).
- Use la biblioteca de diferenciación automática para proporcionar una API donde el usuario solo tiene que proporcionar la función y su código usa la biblioteca para calcular automáticamente las derivadas.
- Busque trabajos de investigación sobre el tamaño de paso adaptativo para una convergencia rápida de los métodos de descenso de gradiente e intente incorporar algunas de esas ideas para que el usuario no tenga que proporcionarle tamaños de paso.
- Para las funciones objetivas convexas, los puntos de partida aleatorios en el descenso de gradiente están absolutamente bien, pero si la función no es convexa, necesita mejores puntos de partida. Intente implementar el recocido simulado.
- Actualice su pendiente de gradiente con Hesse para obtener el método de Newton en la optimización.
- Vaya más allá e implemente el método Cuasi-Newton y, en particular, BFGS de memoria limitada.