¿Cómo difieren las redes neuronales y los algoritmos genéticos en términos de método, procesos y resultados?

Es una pregunta abierta, pero lo intentaré.

Son muy diferentes. Ambas son técnicas de aprendizaje automático que se mueven gradualmente hacia soluciones, pero más allá de eso no tienen mucho en común.

Qué son / cómo funcionan:

Las redes neuronales artificiales se usan típicamente para modelar o aproximar funciones, específicamente las no lineales que son difíciles de modelar. Están estructurados en capas de pesos que se alimentan entre sí. El enfoque típico para el entrenamiento, la propagación hacia atrás, funciona para minimizar el error en una pendiente descendente utilizando la diferenciación para determinar la superficie del error y luego ajustando las capas una por una para minimizar ese error la próxima vez. Este es solo un enfoque bastante limpio, obviamente, si hay una superficie de error determinable, hay otras formas de minimizarla. Esto se repite para muchos casos y se entrena muchas veces en épocas.

Los algoritmos genéticos, por otro lado, generalmente están tratando de encontrar una clave, o algo de forma óptima. Posiblemente podría ser una cierta clase de función, y las ANN podrían encontrar valores altos de aptitud física, pero en general las GA se usan para encontrar datos (bien en un espacio teórico / de posibilidades, no encontrar como en una búsqueda típica), mientras que las ANN se usan para crear / entrenar funciones.

Un GA creará un tipo de código genético, típicamente una cadena o una matriz. De hecho, hará que muchos de estos sean una especie de población, y luego verificará su estado físico y eliminará a todos los miembros arbitrariamente de mayor rendimiento del rebaño, por así decirlo. Luego los criará (por ejemplo, tendrá dos hijos, cada uno con mitades diferentes del ADN de sus padres), y los mutará (al azar cambia un poco o un valor de un par de elementos del código genético). Repetirá esto a través de muchas generaciones hasta que encuentre una solución, se detenga arbitrariamente o hasta que los miembros de la población hayan alcanzado un nivel arbitrario de aptitud.

Ejemplos de casos de uso:

Podrías usar una ANN para detectar personajes. Pase muchas imágenes de caracteres en matrices normalizadas de tamaño. Divide los píxeles en blanco y negro y pasa una matriz binaria de todos los datos de píxeles para cada imagen de un personaje. Eso entra en la capa de entrada de un tamaño apropiado. Entrenarlo a ese personaje. Repita esto al azar para un gran conjunto de imágenes de personajes.

Cuando haya terminado, tiene una red en la que puede pasar caracteres y obtener clasificaciones. Este es un uso común, ya que es un problema difícil de descifrar que los ANN pueden ser entrenados para resolver con un trabajo mínimo (en comparación con las reglas de trabajo para clasificar los personajes). Es, de hecho, cómo nosotros, como humanos, diferenciamos los personajes.

Si la precisión es baja, aumente la cantidad de neuronas en cada capa y la cantidad de capas para mejorarla (segway en aprendizaje profundo, etc.). No tocará CNN, pero es suficiente para decir que este es un campo grande con mucho de trabajo muy específico que se realiza.

Diría que los GA tienen usos menos generales, pero siguen siendo bastante interesantes. Son especialmente buenos para diseñar y optimizar formularios (como en formularios físicos o virtuales, no como formularios en línea). Un caso de uso de muestra podría ser diseñar una antena para que funcione bien con patrones de radiación inusuales. Trabajan de forma iterativa y avanzan hacia un rendimiento cada vez mayor, por lo que los problemas en los que diseñar algo que tiene un gradiente de aptitud física para una solución óptima o buena crean buenos problemas (pueden quedar atrapados en los máximos locales). Es fácil jugar con el problema de la mochila, incluso si se trata esencialmente de una optimización física.

De hecho, no solo se pueden usar para diseñar antenas, sino que la NASA las ha usado exactamente para esta aplicación como se ve a continuación.

Ambas son dos cosas muy diferentes.

Una red neuronal es una máquina de decisión, le das entradas, te da salida.
Un algoritmo genético es un método utilizado para generar soluciones y mejorarlas con el tiempo.

Un algoritmo genético comienza por tener un conjunto de soluciones, establecer una función de aptitud (una función que define cuán buena es una solución) y crear nuevas generaciones cruzando piezas de las soluciones originales en función de su aptitud (puede elegir mezclar solo lo mejor soluciones juntas, por ejemplo, depende de usted). Agrega alguna mutación aleatoria para agregar diversidad. Cada generación da un mejor resultado que la anterior. Una vez que esté satisfecho con una de las soluciones, elija una y úsela. El agloritmo está “terminado”. Se utiliza para generar soluciones muy buenas en un problema que requeriría demasiado tiempo de computación para analizar cada posible solución.

Una red neuronal tiene un conjunto de neuronas interconectadas, cada neurona tiene entrada y salida, y un valor para aplicar a las entradas a fin de generar las salidas. Por sí misma, una red neuronal no evoluciona (aprende), y un conjunto de entrada muy específico siempre dará como resultado la misma salida, hasta que comience a ajustar las neuronas para mejorar los resultados. Puede usarlo para reconocer patrones específicos (audio, video, cualquier dato) y tomar una decisión en función de lo que se le ha dado. Para que aprenda, debe tocar los datos de las neuronas y verificar los resultados.

Puede optar por utilizar un algoritmo genético para mejorar el resultado de su red neuronal, una solución que representa todas las neuronas, crear una nueva generación y verificar si la red neuronal produce un mejor rendimiento (utilizándola como una función de aptitud para el algoritmo genético). ), o puede usar un algoritmo genético para mejorar la estructura de las neuronas (qué neurona está conectada a qué, cuántas capas de neuronas tiene, etc.).

Espero que eso lo aclare.