¿Es posible aplicar de manera eficiente algoritmos de aprendizaje automático para problemas de optimización combinatoria?

Gracias por el A2A. La optimización combinatoria es un campo de optimización matemática o investigación operativa con aplicación en aprendizaje automático. (Cita parafraseada de wiki)

Su pregunta todavía tiene sentido, porque estos campos se superponen con ML. Piense en el aprendizaje de refuerzo donde descubra políticas con alguna técnica: gradiente de políticas, variante de programación dinámica o un ‘conocimiento’ codificado en una red neuronal suficientemente entrenada. Estos no son los únicos ejemplos en los que las opciones inteligentes de heurística reducen el espacio de búsqueda a un tamaño manejable. Pero el énfasis en la heurística. Porque para resolver un problema NP difícil de un real dentro de un tiempo razonable, necesitará uno. Y la idea de utilizar la red neuronal para la optimización no es nueva, ya que este artículo indica las fechas para resolver TSP con NN hasta 1985. Examinar la literatura en este artículo muestra que la investigación en esta dirección progresó aún más a principios de los años 90.

Discutir la eficiencia necesita un contexto, y me permite volver a visitar esta parte de su pregunta en otro momento. Por ahora, en resumen: sí, he utilizado políticas basadas en redes neuronales para problemas de decisión difícil de NP a muy gran escala de manera competitiva.

Espero eso ayude

Creo que esto dependerá en gran medida de la naturaleza del problema. El aprendizaje automático puede producir una buena solución (posiblemente muy buena) rápidamente, pero no creo que produzca una solución óptima probada (o en general demostrable). Tiendo a pensar que la “óptima” está un poco sobrevalorada (la solución óptima para un modelo que se aproxima a la realidad en realidad no puede ser mejor que una “buena” solución para ese modelo), pero si considera encontrar el óptimo óptimo exacto y si existen algoritmos exactos eficientes para resolver el problema (como suele ser el caso), sospecho que el algoritmo exacto será preferible a usar ML (o metaheurística, otra alternativa común).

El aprendizaje por refuerzo se ha utilizado como componente de la hiperheurística para problemas de optimización combinatoria. Las hiperheurísticas están diseñadas para mejorar la generalidad. La idea es que una instancia de un hiperheurístico puede resolver muchos problemas de optimización combinatoria.

Tienen a su disposición una lista de algoritmos heurísticos de bajo nivel o componentes de algoritmos heurísticos. El hiperheurístico es responsable de construir un algoritmo a partir de componentes heurísticos o seleccionar el orden en el que se ejecutarán las heurísticas completas de bajo nivel. El aprendizaje de refuerzo se puede utilizar para guiar este proceso seleccionando componentes heurísticos y heurísticos que funcionan bien.

Este es un ejemplo usando el recocido simulado con aprendizaje de refuerzo:
http://www.cs.nott.ac.uk/~znzbrb
Este usa Great Deluge con aprendizaje de refuerzo:
http://www.cs.stir.ac.uk/~goc/pa

Si.

Revisa:

https://www.google.com/url?url=h

y

6.883 Aprendizaje automático avanzado: aprendizaje con estructura combinatoria

Lo he visto en varios periódicos.

Es probable que ML pueda proporcionar una descripción buena / aceptable del problema para encontrar una solución subóptima.

En cualquier caso, debe probar varios enfoques en su viaje para encontrar la optimización.

More Interesting

Cómo hacer un bot de chat usando Python implementando algoritmos de aprendizaje automático (como SVM, Naive Bayes, Random Forest, etc.)

En un montón binario, un nodo con índice i tiene hijos en los índices 2i + 1 y 2i + 2 (cuando la matriz es 0 indexada). ¿Cómo se deriva esta relación?

¿Cuáles son los actos que se consideran hacer trampa durante un desafío de contratación en Interviewstreet?

¿Resolver todos los problemas en Project Euler facilita la resolución de problemas en Topcoder?

Cómo generar un número aleatorio en C

Cómo encontrar la ruta más corta en un gráfico no ponderado en lenguaje C

¿Por qué no necesito conocer algoritmos para lenguajes de programación modernos como Java o Python?

Cómo escribir un programa en C para buscar los elementos usando el orden de fusión

¿Hay algún algoritmo fijo para resolver el cubo de Rubik? Si es así, ¿qué es?

¿Cuáles son los 10 mejores algoritmos del siglo XX?

En F (n) -F (n-1) = n ^ 8, ¿qué es F (n)?

¿Por qué deberíamos instanciar una matriz en una línea diferente?

Cómo escribir un programa para encontrar el mayor número entre cuatro números, sin usar sentencias if y variables de tipo de matriz

Supongamos que eliminamos un borde de un árbol de expansión y luego agregamos un borde diferente para que permanezca conectado. ¿Seguirá siendo un árbol de expansión?

¿Cuál es el algoritmo utilizado para mostrar el orden de amigos que se muestra en toda la lista de amigos en Facebook?