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 t
Por un lado, sabemos que el poder computacional de las redes neuronales es . 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.
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?
Respuestas:
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:
fuente
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.
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.
fuente
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.
fuente
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.
fuente
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.
fuente