¿Se puede reprogramar una red neuronal entrenada como un programa secuencial clásico?

P: “¿Se puede reprogramar la red neuronal entrenada como programa secuencial clásico? Supongamos que entrenamos una máquina por tiempos infinitos, luego todos los pesos convergen con 0 errores. En este momento, quiero reprogramarlo con lenguaje de programación secuencial con bucle y declaración if, etc. con reglas estrictas. ¿Es posible?”

A: Contestaré esto en partes.

  1. re: “Tiempos infinitos” Esto es imposible, solo podemos tener un “número realmente grande de veces”, no infinito. Por lo tanto, supondré que tiene la intención de entrenar a la ANN (Red neuronal artificial) millones o miles de millones de veces, no un número infinito de veces.
  2. re: “Convergente con 0 errores” Un ANN no converge con cero errores. El error se mide comparando los datos de prueba en un ANN que fue entrenado con datos de entrenamiento. Después de un cierto (enorme) número de ciclos de entrenamiento, un ANN converge, pero empeora, no mejora. Esencialmente se vuelve mejor en el manejo SOLO de los datos de entrenamiento OPUESTO a cualquier dato de prueba. En esencia, solo puede detectar “(a) Sí, esto se encontró en mis datos de entrenamiento” o “(b) No, no he visto esto antes”, por lo que pierde su capacidad de combinar nuevos patrones. Esto se conoce como “ajuste excesivo”.
  3. re: “Vuelva a programarlo con secuencial …” Por lo general, así es como se crea un ANN. Por supuesto, hay ANN creados como dispositivos de hardware especializados, pero el software ANN que usa o que crea está hecho para entrenar y ejecutar como un programa secuencial clásico. Por supuesto, si hay múltiples núcleos, puede procesar múltiples conjuntos de entrenamiento simultáneamente, pero esa es la naturaleza de un procesador moderno y todavía se considera secuencial.

No estás solo en estos conceptos erróneos. La mayoría de los artículos sobre ANN mencionan la gran cantidad de ciclos de entrenamiento sin discutir el ajuste excesivo. También hablan sobre el respaldo como si ocurriera en ondas a través de las capas en paralelo. Por cierto, hay muchos ANN disponibles para que comiences y muchos son de código abierto o gratuitos.

Si desea obtener más información, le sugiero que descargue e instale H2O, lo inicie, lo muestre en una ventana del navegador y siga el tutorial de aprendizaje profundo. Luego puede indicarle que genere código Java para pruebas o uso de producción. Si haces esto, te sugiero que abras dos ventanas del navegador en H2O para que puedas desplazarte por el tutorial en una ventana y seguir los pasos en la otra ventana.

Espero haber respondido tu pregunta.

Las respuestas de Jim son buenas. Sin embargo, me gustaría aclarar su segundo punto. Las redes neuronales son aproximadores de funciones universales, por lo tanto, suponiendo que haga buenas elecciones de diseño, su error finalmente llegará a 0 en sus datos de entrenamiento ; sin embargo, cuanto más cercano a 0 se encuentre su error para los datos de entrenamiento, menos capaz será de generalizar datos invisibles (que es el punto de los algoritmos de aprendizaje automático en general). Para obtener más información sobre esto, busque “Bias-Variance Tradeoff”.

Ahora, el punto del aprendizaje automático, como acabo de decir, es construir un modelo que pueda predecir con éxito datos no vistos (la lógica tradicional y varias otras técnicas de inteligencia artificial como el razonamiento basado en casos no pueden hacer esto); así que el punto es aplicar cosas como redes neuronales a dominios que no pueden ser modelados por declaraciones if / else debido al comportamiento del sistema estocástico.

Entonces, sí, podría construir una red neuronal que esté entrenada por la lógica tradicional para imitar lo que está haciendo la lógica tradicional, pero esto está perdiendo totalmente el punto de lo que estas herramientas están diseñadas para lograr. Si tiene un sistema que se modela o predice con éxito utilizando la lógica tradicional, debe detenerse allí.

Si lo que desea es convertir el proceso de aprendizaje en un conjunto de reglas, en lugar de redes neuronales, debe considerar árboles de decisión y similares, que expliquen su comportamiento.

Todavía no tenemos descompiladores de redes neuronales; entonces, aunque sería posible escribir un ANN en un lenguaje de programación clásico, probablemente no podamos decodificar lo que está haciendo un ANN capacitado.