¿Se pueden usar redes neuronales para diseñar algoritmos?

9

Después de los éxitos cada vez más nuevos de las redes neuronales en los juegos de mesa, uno siente que el próximo objetivo que establecimos podría ser algo más útil que vencer a los humanos en Starcraft. Más precisamente, me preguntaba si

¿Pueden las redes neuronales ser entrenadas para resolver problemas algorítmicos clásicos?

Aquí me refiero a que, por ejemplo, la red tendría un gráfico de entrada con bordes ponderados, y dos vértices y especificado, y nos preguntamos a encontrar un corto camino lo más rápido posible. Entonces supongo que la red neuronal descubriría y se entrenaría para usar Dijkstra o algo similar.s t s tGstst

Por un lado, sabemos que el poder computacional de las redes neuronales esTC0 . Por otro lado, no sé si esto está necesariamente relacionado con mi pregunta. Aun así, para la mayoría de los problemas no sabemos si se pueden resolver en o no. Ver si una red neuronal puede entrenarse a sí misma, podría ser un buen indicador de si hay un algoritmo rápido o no. Por ejemplo, si las redes neuronales no pueden entrenarse a sí mismas para resolver SAT rápidamente, entonces eso hace (aún más) probable que . Me pregunto qué haría una red neuronal con GRAFISOMORFISMO o FACTORIZACIÓN.TC0NPTC0

Por supuesto, extraer el algoritmo es una pregunta completamente diferente. Sospecho que los expertos saben cómo hacerlo, pero discutirlo no es el tema de esta pregunta.

Agregado dos días después: después de ver las respuestas, permítame especificar que si responde negativamente, me gustaría saber

¿Por qué es más fácil jugar al ajedrez que Dijkstra o Graphisomorphism?

domotorp
fuente
Los comentarios no son para discusión extendida; Esta conversación se ha movido al chat .
Lev Reyzin

Respuestas:

2

De acuerdo con este blog de Reza Zadeh , entrenar una red neuronal para producir una salida correcta incluso para solo dos tercios de los ejemplos de entrenamiento es computacionalmente difícil:

De hecho, en 1988 J. Stephen Judd muestra que el siguiente problema es NP-hard:

Dada una red neuronal general y un conjunto de ejemplos de entrenamiento, ¿existe un conjunto de pesos de borde para la red para que la red produzca la salida correcta para todos los ejemplos de entrenamiento?

Judd también muestra que el problema sigue siendo NP-hard incluso si solo requiere una red para producir la salida correcta para solo dos tercios de los ejemplos de entrenamiento, lo que implica que incluso entrenar aproximadamente una red neuronal es intrínsecamente difícil en el peor de los casos. En 1993, Blum y Rivest empeoran las noticias: ¡incluso una red simple con solo dos capas y tres nodos es NP-difícil de entrenar!

Mohammad Al-Turkistany
fuente
1
Realmente no veo cómo esto responde a mi pregunta.
domotorp
Antes de editar la publicación, su primera pregunta es sobre entrenar a NN. Desde que agregó la etiqueta CC, mi respuesta muestra que es difícil entrenar NN independientemente de si su problema algorítmico está en P o NPC
Mohammad Al-Turkistany
Lo siento si fui vago.
domotorp
0

Esta no es una respuesta completa y no tengo mucha experiencia en redes neuronales, pero quizás sea útil.

Los NN esencialmente reciben una entrada y producen una respuesta. Luego son entrenados a través de la práctica para producir respuestas similares en entradas "similares" en el dominio, por ejemplo, la misma etiqueta para imágenes del mismo animal, o altas calificaciones para posiciones de ajedrez "buenas" donde buenas significa altas posibilidades de ganar.

Entonces, como comenté, las redes neuronales son un modelo de cómputo no uniforme que funciona de una manera totalmente diferente a los algoritmos paso a paso que se ejecutan en las máquinas de Turing. En cambio, piense en ellos como circuitos "blandos" que usan matemáticas continuas en lugar de booleanos y pueden modificarse o entrenarse, y se les permite errar.

¿Por qué es más fácil jugar al ajedrez que Dijkstra o Graphisomorphism?

Parcialmente, es la diferencia entre pedirle a alguien que responda una pregunta lo mejor que pueda y pedirle la respuesta correcta junto con una prueba de que es correcta. Parcialmente, es la diferencia entre resolver un problema de tamaño fijo y resolver simultáneamente el problema para todos los tamaños de entrada posibles.

Cada vez que Dijkstra's se ejecuta en una instancia, que puede ser de cualquier tamaño, prueba implícitamente que su salida es la única respuesta verdadera y no otra. En el reconocimiento de imágenes y ajedrez, uno da la mejor respuesta que uno puede y se toleran los errores. Además, uno solo entrena redes para resolver estos problemas de un tamaño a la vez. No creo que sepamos todavía cómo generalizar una solución de red neuronal para, por ejemplo, instancias problemáticas de tamaños y formas completamente diferentes.

No creo que debamos suponer que las redes neuronales no pueden resolver las rutas más cortas o problemas algorítmicos similares, pero resuelven los problemas de una manera fundamentalmente diferente a un algoritmo paso a paso que siempre es correcto.

Volviendo a la similitud entre redes neuronales y circuitos, tenga en cuenta que los circuitos se han estudiado durante décadas, pero a juzgar por la falta de respuestas a (5) de mi pregunta anterior , no sabemos casi nada sobre cómo construir circuitos completamente correctos para un determinado problema, excepto mediante la transformación de un algoritmo uniforme (máquina de Turing) en un circuito.

usul
fuente
No creo que tener una respuesta haga la diferencia: dos jugadores pueden jugar Dijkstra compitiendo y encontrar un camino más corto. La escalabilidad podría ser un problema más serio: ¿crees que los NN pueden aprender a jugar NIM?
domotorp
@domotorp, creo que hay una gran diferencia conceptual y práctica entre los algoritmos correctos y las heurísticas incorrectas pero aproximadas. No preguntó por qué el ajedrez es más difícil que los caminos más cortos aproximados, preguntó por qué el ajedrez es más difícil que Dijkstra, que es probablemente correcto el 100% del tiempo en todos los tamaños de entrada. Re: nim, ni idea; necesita una arquitectura NN que acepte entradas arbitrariamente grandes para comenzar ...
usul
0

No soy un experto de ninguna manera, pero todavía no veo por qué no.

Las redes neuronales realizan fundamentalmente la optimización de acuerdo con algún tipo de "modelo de costo / beneficio" que a menudo ya se conoce de antemano. Además, el espacio de búsqueda está bien definido, con movimientos válidos e inválidos que se conocen y "variaciones" que son fáciles de definir. Incluso para AlphaZero y AlphaGo, las funciones de costo probablemente se basan en la tasa de ganancia y la distribución de tasas de ganancia resultante para todos los movimientos posibles después de hacer un movimiento, o algún tipo de heurística para eso.

Para diseñar algoritmos, esencialmente le está pidiendo al programa que aprenda a generar una cadena correcta (con una codificación implícita y una función de costo ya conocida) que corresponde a un programa que "ejecuta un algoritmo". Sin embargo, posiblemente haya infinitos algoritmos para los cuales puede implementar un programa. Entonces, tal vez desee definir las métricas correctas de "aptitud".

Sin embargo, incluso para ciertos programas, las métricas de "aptitud" pueden ser algo difíciles de definir. ¿Hora? Uso del espacio? Cuantificación de "efectos secundarios?" De manera óptima, generará "el programa más corto" que solo hace lo que quiere que haga.

Supongo que si encuentra las métricas de aptitud física y los algoritmos de ajuste correctos, podrá hacerlo.

CinchAzul
fuente
-3

Las "redes neuronales" transforman un vector de un espacio dimensional a otro espacio dimensional. así que no son más que aproximadores de funciones altamente, altamente no lineales. Incluso las redes neuronales utilizan algoritmos de aproximación para minimizar sus pérdidas. sin embargo, el entrenamiento de redes neuronales para diseñar nuevos algoritmos está fuera de discusión. tomas mikolov hizo algo de trabajo en esta área con la red neuronal recurrente aumentada de pila, y también he oído hablar de las "máquinas neuronales de tensión" para este dominio. sin embargo, encontrar estrategias óptimas ha sido la causa fundamental de estudiar el aprendizaje de refuerzo, que está algo relacionado con su pregunta. pero el uso de redes neuronales para diseñar nuevos algoritmos no es posible, al menos en el futuro cercano.

riemann77
fuente
Creo que una estrategia óptima para un juego adecuado es lo mismo que un algoritmo óptimo para el problema correspondiente.
domotorp
@domotorp "estrategia" es más de una heurística de un algoritmo
riemann77
-6

Soy un ingeniero de automatización de control de calidad, así que no reclame experiencia en redes neuronales, pero, tautológicamente, sí, NN puede crear algoritmos. Los humanos mismos somos NN en algún nivel, y creamos algoritmos, por lo que es lógico que los sistemas NN artificiales que creamos puedan crear algoritmos.

Francis H Erdman III
fuente