11

¿Es un algoritmo genético la forma más eficiente de optimizar el número de nodos ocultos y la cantidad de entrenamiento realizado en una red neuronal artificial?Neural Net Optimize w/Genetic Algorithm

Estoy codificando redes neuronales utilizando NNToolbox en Matlab. Estoy abierto a cualquier otra sugerencia de técnicas de optimización, pero estoy más familiarizado con GA's.

Respuesta

11

En realidad, hay varias cosas que puede optimizar utilizando GA con respecto a NN. Puede optimizar la estructura (número de nodos, capas, función de activación, etc.). También puede entrenar usando GA, eso significa establecer los pesos.

Los algoritmos genéticos nunca serán los más eficientes, pero por lo general se usan cuando tiene poca idea de qué números usar.

Para el entrenamiento, puede utilizar otros algoritmos incluyendo propagación hacia atrás, etc .. nelder-mead

Usted dijo que quería para optimizar el número oculto nodos, para esto, algoritmo genético puede ser suficiente, aunque lejos de "óptima". El espacio que está buscando es probablemente demasiado pequeño para usar algoritmos genéticos, pero aún así pueden funcionar y afaik, ya están implementados en matlab, así que no hay problema.

¿Qué quiere decir con optimizar la cantidad de entrenamiento realizado? Si se refiere al número de épocas, entonces está bien, solo recuerde que el entrenamiento es de alguna manera dependiente de los pesos de inicio y generalmente son al azar, por lo que la función de acondicionamiento físico utilizada para GA no será realmente una función.

+0

gracias. esta es la información exacta que estaba buscando. – ServAce85

+0

Me encantaría codificarlo en C/C++, luego encender 1000 servidores Amazon EC2 durante unas horas en eso. –

+0

¿Cuál es el beneficio de entrenar a una ANN usando GA sobre usar solo GP? Las RNA tienen el beneficio de que imitan a un cerebro, y que pueden usar métodos para actualizar los pesos de una manera inteligente, como la retropropagación, para garantizar que la red evolucione en la dirección correcta (al igual que en el cerebro). Pero al usar GA para actualizar los pesos, pierdes todo eso, y no me parece que ya tengas una ventaja real sobre GP, ya que ahora es una oportunidad si la red mejora o no. ¿Cuál es tu opinión sobre eso? – HelloGoodbye

0

No estoy seguro de si debe usar un algoritmo genético para esto.

Supongo que la población de solución inicial para su algoritmo genético consistiría en conjuntos de entrenamiento para su red neuronal (dado un método de entrenamiento específico). Por lo general, la población de solución inicial consiste en soluciones aleatorias a su problema. Sin embargo, los conjuntos de entrenamiento aleatorio realmente no entrenarían su red neuronal.

El algoritmo de evaluación para su algoritmo genético sería un promedio ponderado de la cantidad de entrenamiento necesario, la calidad de la red neuronal para resolver un problema específico y el número de nodos ocultos.

Por lo tanto, si ejecuta esto, obtendrá el conjunto de entrenamiento que entregó el mejor resultado en términos de calidad de red neuronal (= tiempo de capacitación, número de nodos ocultos, capacidades de resolución de problemas de la red).

¿O está considerando un enfoque completamente diferente?

0

No estoy del todo seguro del tipo de problema con el que estás trabajando, pero GA suena un poco exagerado aquí. Dependiendo del rango de parámetros con los que esté trabajando, una búsqueda exhaustiva (o no inteligente) puede funcionar. Intente trazar el rendimiento de su NN con respecto a la cantidad de nodos ocultos para los primeros valores, empezando por pequeños y saltando por incrementos cada vez más grandes. En mi experiencia, muchos NN meseta en el rendimiento sorprendentemente temprano; Es posible que pueda obtener una buena idea de qué rango de números de nodo ocultos tiene más sentido.

Lo mismo ocurre a menudo con las iteraciones de entrenamiento de NN. Más capacitación ayuda a las redes hasta cierto punto, pero pronto deja de tener mucho efecto.

En la mayoría de los casos, estos parámetros NN no afectan el rendimiento de una manera muy compleja. En general, aumentarlos aumenta el rendimiento por un tiempo, pero luego regresan los rendimientos decrecientes.GA no es realmente necesario para encontrar un buen valor en este tipo de curva simple; si la cantidad de nodos ocultos (o iteraciones de entrenamiento) realmente hace que el rendimiento fluctúe de una manera complicada, entonces las metaheurísticas como GA pueden ser aptas. Pero pruebe el enfoque de la fuerza bruta antes de tomar esa ruta.

+0

fuerza bruta no funciona para mi aplicación porque mis datos son muy ruidosos (piense en datos EEG). – ServAce85

0

Tiendo a decir que los algoritmos genéticos son una buena idea, ya que puede comenzar con una solución mínima y aumentar el número de neuronas. Es muy probable que la "función de calidad" para la que desea encontrar el punto óptimo sea suave y tenga pocos baches.

Si tiene que encontrar esta NN óptima con frecuencia, le recomendaría usar algoritmos de optimización y en su caso cuasi newton como se describe en recetas numéricas, lo cual es óptimo para problemas donde la función es costosa de evaluar.

2

Los algoritmos genéticos se pueden aplicar de manera útil a la optimización de redes neuronales, pero hay que pensar un poco en lo que se quiere hacer.

La mayoría de los algoritmos de entrenamiento NN "clásicos", como Back-Propagation, solo optimizan los pesos de las neuronas. Los algoritmos genéticos pueden optimizar los pesos, pero esto normalmente será ineficiente. Sin embargo, como estaba preguntando, pueden optimizar la topología de la red y también los parámetros para su algoritmo de entrenamiento. Sin embargo, tendrá que ser especialmente cauteloso con la creación de redes que estén "demasiado entrenadas".

Otra técnica con algoritmos genéticos modificados puede ser útil para resolver un problema con la propagación inversa. Back-Propagation generalmente encuentra mínimos locales, pero los encuentra de manera precisa y rápida. La combinación de un algoritmo genético con propagación inversa, por ejemplo, en una GA Lamarckiana, ofrece las ventajas de ambos. Esta técnica se describe brevemente durante el GAUL tutorial

4

Un buen ejemplo de redes neuronales y programación genética es la arquitectura NEAT (Neuro-Evolution of Augmenting Topologies). Este es un algoritmo genético que encuentra una topología óptima. También se sabe que es bueno para mantener baja la cantidad de nodos ocultos.

También hicieron un juego usando esto llamado Nero. Resultados tangibles absolutamente únicos y sorprendentes.

página de inicio del Dr. Stanley:

http://www.cs.ucf.edu/~kstanley/

Aquí encontrará casi todo lo relacionado NEAT como él es el que lo inventó.

+0

también hay una biblioteca de C# para esto -> SHARPNEAT http://sharpneat.sourceforge.net/ – JohnIdol

1

A veces es útil usar un algoritmo genético para entrenar una red neuronal cuando su función objetivo no es continua.

+0

¿Por qué no usar GP en ese caso?Si utiliza GA para actualizar los pesos en la red neuronal, en lugar de algún método inteligente que asegure que todos los pesos se actualicen en la dirección correcta, parece que pierde la ventaja de usar una red neuronal en lugar de simplemente usar GP. – HelloGoodbye