Los algoritmos genéticos y las redes neuronales son conceptos completamente diferentes y se utilizan para resolver problemas diferentes. En este artículo, primero, comenzaremos con una breve introducción general a los algoritmos genéticos y las redes neuronales. Luego, delinearemos algunas pautas sobre cuándo debemos usar cada una de estas técnicas utilizando un par de ejemplos. Finalmente, concluiremos el artículo haciendo una comparación de alto nivel entre estas dos técnicas.

¿Qué son los algoritmos genéticos y las redes neuronales?
Comencemos discutiendo algunos conceptos básicos del algoritmo genético y la red neuronal.
Fundamentos del algoritmo genético
El algoritmo genético es una heurística de búsqueda que se inspira en la teoría de la evolución natural de Darwin. Refleja el proceso de selección del elemento más apto de forma natural.
Un algoritmo genético comienza con una población inicial. A partir de la población inicial, este algoritmo produce una nueva población utilizando pasos de selección, cruce y mutación:
- El algoritmo toma la población inicial como entrada y elige una función de aptitud. La función de aptitud ayuda al algoritmo a generar una solución óptima o casi óptima. El algoritmo continúa y evoluciona la población a través de operaciones de selección, cruce y mutación. Genera varias poblaciones hasta que cumple con las restricciones de optimización.
Introducción a la red neuronal
Por otro lado, una red neuronal consiste en una serie de algoritmos que se esfuerzan por determinar e identificar patrones. Funciona de manera similar a cómo funciona la red neuronal del cerebro humano. En los algoritmos, una red neuronal se refiere a una red de neuronas, donde una neurona es una función matemática utilizada para recopilar y clasificar datos de un modelo dado.
Una red neuronal puede contener pesos y muchas capas ocultas:
- Las entradas de los usuarios forman la capa de neuronas de entrada en una red neuronal. La capa de función de activación determina la salida. Dependiendo del problema, puede tener más de una capa de función de activación. La capa de sumatoria suma la salida generada por la capa de función de activación y luego la muestra en la sección de capa de salida.
Motivación
Algoritmos genéticos
Se sabe que los sistemas biológicos son altamente optimizados y adaptativos. La intención detrás del algoritmo genético es desarrollar un sistema adaptativo e inteligente artificialmente.
Los algoritmos genéticos se utilizan generalmente para problemas de optimización basados en búsquedas, que son difíciles y requieren mucho tiempo para resolver mediante otros algoritmos generales. Los problemas de optimización se refieren tanto a la maximización como a la minimización de la función objetivo. El algoritmo genético tiene como objetivo encontrar la solución óptima o casi óptima al problema de optimización.
Redes neuronales
Una red neuronal es un modelo matemático que es capaz de resolver y modelar patrones de datos complejos y problemas de predicción. Los algoritmos de redes neuronales se desarrollan replicando y utilizando el procesamiento del cerebro como una unidad básica. Como tiene la capacidad de imitar la funcionalidad y operación del cerebro humano, puede hacer cualquier cosa que un humano pueda hacer.
Las redes neuronales tienen muchas aplicaciones:
- Reconocimiento de patrones como la detección de spam en el correo electrónico y la detección de cáncer en el cuerpo humano.
- Predicción como el pronóstico del tiempo y la predicción del mercado de valores.
¿Cuándo usar un algoritmo genético en lugar de una red neuronal?
Ahora veamos más detalles y tratemos de entender cuándo un algoritmo genético es una buena opción para un problema dado.
Un algoritmo genético es un método de optimización basado en la búsqueda. Supongamos que tenemos un gran conjunto de espacio de estados discretos de buenas soluciones, y la única solución disponible es evaluar todas las combinaciones (método de fuerza bruta). En este caso, un algoritmo genético puede dar una solución razonablemente buena, pero no se garantiza la solución óptima.
Hay muchos problemas NP-Duros y problemas intensivos en tiempo en el campo de la informática que son extremadamente difíciles de resolver. Por ejemplo, consideremos el problema del vendedor ambulante (TSP). Una de las aplicaciones de la vida real del TSP es encontrar el camino más corto entre dos ciudades. Ahora supongamos que una persona está utilizando un GPS mientras conduce para encontrar el camino más corto de una ciudad a otra. No se acepta el retraso en el GPS para obtener una ruta óptima. En estos casos, un algoritmo genético es una buena opción para obtener una solución rápida y bastante precisa.
Los métodos de cálculo tradicionales funcionan bien en el caso de una función objetivo de un solo pico, donde comienza con un punto aleatorio, se mueve hacia el gradiente y se detiene tan pronto como alcanza el punto máximo. Pero en la vida real, los problemas como los paisajes consisten en muchos picos y valles. En estos casos, el método de cálculo tradicional puede quedar atrapado en el máximo local. Un algoritmo genético en estos casos es capaz de encontrar el máximo global.
¿Cuándo usar una red neuronal en lugar de un algoritmo genético?
Examinemos los casos en los que las redes neuronales pueden ser una opción eficiente en lugar de los algoritmos genéticos.
Cuando hay un problema de aproximación de funciones con datos continuos, una red neuronal es la mejor opción.
Supongamos que tenemos un millón de imágenes almacenadas en un disco duro, y de estas imágenes, tenemos que decidir cuál contiene la imagen de un perro y cuál contiene la imagen de un gato. Este es un ejemplo de un problema de clasificación. Esta tarea puede ser realizada eficientemente por una red neuronal.
Finalmente, consideremos que tenemos un conjunto de datos que contiene el precio y el tamaño de las casas en una ciudad específica. Dados los detalles de tamaño de una casa, la tarea es predecir el precio. Este es un ejemplo de un problema de regresión lineal. En este caso, el uso de una red neuronal puede dar una buena predicción de precios para cada casa.
Ejemplos
En esta sección, vamos a ver un par de problemas de ejemplo donde aplicaremos un algoritmo genético y una red neuronal.
Ejemplo de algoritmo genético
Hablemos del problema MAXONE y veamos cómo podemos usar un algoritmo genético para resolverlo.
Supongamos que tenemos una cadena de dígitos binarios (cadena de 0's y 1's) y queremos maximizar el número de 1's en la cadena binaria. Supongamos que la población inicial tiene N cadenas aleatorias de longitud L, y F denota la función de aptitud. En el problema MAXONE, F es el número de 1's presentes en la población.
Aquí, la función CountOne() cuenta el número de 1's en la población inicial. X denota cualquier número entero de 1's que se espera de este algoritmo. La población inicial evoluciona a través de las operaciones de selección, cruce y mutación, y el algoritmo calcula nuevamente la función de aptitud. Si cumple con las restricciones dadas (el valor de X), entonces se acepta la población, de lo contrario, vuelve a la operación de selección.
Tomamos N=4 y L=Aquí está la población inicial generada aleatoriamente:
- M1 = 1011 F(M1) = 3
- M2 = 0010 F(M2) = 1
- M3 = 1010 F(M3) = 2
- M4 = 0000 F(M4) = 0
Como se muestra en el ejemplo anterior, el número total de 1's en la población inicial es El algoritmo genético tiene como objetivo producir la nueva población con un mayor número de 1's utilizando selección, cruce y mutación.
En la selección, se prefieren las cadenas con buenos puntajes de aptitud sobre las demás cadenas para generar la nueva población con un mayor número de 1's. Supongamos que después de la aplicación de la selección, obtenemos la siguiente población:
- M1 = 1011 (M1)
- M2 = 1010(M3)
- M3 = 0010(M2)
- M4 = 1011(M1)
Ahora, la razón para cambiar M4 es que el puntaje de aptitud de M4 es cero. Entonces, nuestra operación de selección da preferencia a la cadena M1, ya que contiene el mayor número de 1's en comparación con las otras cadenas en la población inicial.
Ahora, apliquemos la operación de cruce. En el cruce, se seleccionan dos cadenas y se intercambia una porción aleatoria de ambas cadenas para generar una nueva cadena. Estamos eligiendo al azar M4 y M3 para el cruce. M1 y M2 no cambiarán después del cruce:
Antes del cruce: M3 = 0 010 M4= 1 011
Después del cruce: M3 = 0 011 M4 = 1 010
Los bits en rojo se intercambian entre M3 y M4 durante la operación de cruce.
Ahora, pasemos a la operación de mutación. En la mutación, la idea es cambiar algún bit existente o introducir algunos bits en la cadena para mantener la diversidad:
Antes de la mutación: M1 = 101 1 M2 = 1 0 1 0 M3 = 0 0 11 M4 = 101 0
Después de la mutación: M1 = 1010 M2 = 1111 M3 = 0111 M4= 1011
Los bits coloreados cambian durante el proceso de mutación. Ahora, es hora de calcular nuevamente la función de aptitud:
- F(M1) = 2
- F(M2) = 4
- F(M3) = 3
- F(M4) = 3
Entonces, el valor de la función de aptitud en la nueva población es 1De los 16 bits, ahora tenemos 12 bits correspondientes a Comenzamos con la población inicial donde el número de 1's en la población era Por lo tanto, la nueva población ha mejorado con respecto a la población anterior.
El algoritmo continuará iterando. El usuario puede establecer algunas condiciones de terminación. Por ejemplo, podemos especificar que cuando la función de aptitud sea igual a 14, queremos que este algoritmo se detenga.
Creación de una red neuronal
En esta sección, vamos a crear una red neuronal muy simple para verificar una tabla AND. La red neuronal tendrá una capa de entrada y una capa de salida. Aquí, las aristas contienen peso:
Con esta red neuronal simple, veamos cómo podemos verificar la compuerta AND. Aquí estamos considerando una compuerta AND de dos entradas.
La idea básica es que cada nodo tiene un valor umbral T. Si la señal entrante es mayor que el valor umbral del nodo, entonces los valores de entrada no se aceptan (Generar 0). Por simplicidad, estableceremos los valores de pesos y umbrales manualmente para este ejemplo. El algoritmo calcula la señal entrante para cada nodo y luego realiza un paso de verificación con el valor umbral del nodo de salida:
Hay varias formas de calcular pesos y valores umbral. En este ejemplo, usaremos nuestros valores preespecificados.
Peso del nodo X1 es W1(X1) = 5
Peso del nodo X2 es W2(X2) = 5
Valor umbral del nodo Y es T(Y) = 2
Primera entrada: X1 = 0, X2 = 0
Paso de verificación:
Segunda entrada: X1 = 0, X2 = 1
Paso de verificación:
Tercera entrada: X1 = 1, X2 = 0
Paso de verificación:
Cuarta entrada: X1 = 1, X2 = 1
Paso de verificación:
Por lo tanto, con la ayuda de este algoritmo de red neuronal, verificamos con éxito una tabla AND en este ejemplo.
Comparación de alto nivel
Hemos discutido mucho sobre los algoritmos genéticos y las redes neuronales. Ahora, es hora de poner todos los puntos que ya hemos discutido en una comparación de alto nivel entre las dos técnicas.
- En primer lugar, los algoritmos genéticos son algoritmos de optimización basados en la búsqueda utilizados para encontrar soluciones óptimas o casi óptimas para problemas de búsqueda y problemas de optimización. Las redes neuronales, por otro lado, son modelos matemáticos que mapean entre entradas y salidas complejas. Pueden clasificar elementos que no se conocen previamente.
- Los algoritmos genéticos generalmente funcionan bien en datos discretos, mientras que las redes neuronales generalmente funcionan eficientemente en datos continuos.
- Los algoritmos genéticos pueden descubrir nuevos patrones, mientras que las redes neuronales utilizan datos de entrenamiento para clasificar una red.
- No siempre se requiere información derivada para resolver un problema con algoritmos genéticos.
- Los algoritmos genéticos calculan la función de aptitud repetidamente para obtener una buena solución. Es por eso que lleva bastante tiempo calcular una solución razonable. Las redes neuronales, en general, tardan mucho menos tiempo en la clasificación de nuevas entradas.
En este tutorial, hemos discutido algoritmos genéticos y redes neuronales. Comenzamos con una introducción y motivación, y luego anotamos algunos casos y pautas generales para usar las dos técnicas.
Además, hemos dado algunos ejemplos de problemas y una comparación de alto nivel entre las dos técnicas para dar al lector una mejor comprensión.
Si quieres conocer otras notas parecidas a Control inteligente y algoritmos genéticos puedes visitar la categoría Inteligencia.
