Actualmente estoy trabajando en un proyecto que usaría algoritmos genéticos para optimizar las redes neuronales. Me doy cuenta de que probablemente esta no sea la mejor forma de optimizarlos, pero soy nuevo en ambos, así que solo quería probarlos.Uso de algoritmos genéticos para redes neuronales
Mis planes son los siguientes (sujeto a cambios, mucho). Mis neuronas de entrada estarían usando un conjunto de datos que podría tener casi cualquier número positivo (incluyendo decimales hasta dos lugares, así que realmente serían números flotantes), pero muy probablemente entre 0 y 20000. Porque la importancia está en cómo el los números se comparan entre sí en cuanto a su valor en lugar de lo grandes que son, primero se dividirían por el número más alto de todos los valores que se ingresarían. Lo harían multiplicar por pesos (cualquier flotación positiva o negativa) antes de ir a su capa oculta. Cada neurona en la capa oculta estaría sumando todas sus entradas hasta que se terminaron de calcular. Luego se ejecutarían a través de una función de logística y se generarían.
Mi entorno es Visual Studio C++ 2010 Express y estoy usando el clr.
Mi problema radica en el algoritmo genético y en cómo funcionaría. Sería ajustar los pesos. Mi problema es que cuando cambia aleatoriamente un poco en uno de los pesos (tasa de mutación), puede hacer que los pesos sean extraordinariamente altos o bajos, causando desbordamiento u otro error cuando se multiplica por la entrada y se agrega con los demás. No tengo idea de cómo organizaría mis cromosomas tampoco. Entonces, ¿sería mejor realizar la aleatorización por pesos de selección en lugar de bits al azar y cambiarlos a un número aleatorio dentro de un rango definido? Básicamente, estoy buscando sugerencias sobre cómo organizar esto sin causar errores al hacer que los valores sean demasiado grandes o demasiado pequeños mientras se mantiene el rendimiento.
Gracias, (y lo siento si esto debe estar en la informática teórica, pero pensé que no iba a encajar allí)
no recuerdo los detalles, pero en este libro: http://www.amazon.com/Techniques-Programming-Premier-Press-Development/dp/193184108X, el autor hace más o menos lo que describes, es decir, usa valores de peso genéticamente mutados para optimizar una red neuronal. –
Sería interesante ver una comparación del rendimiento entre la solución que se presenta y un proceso más convencional (tal vez incluso uno no neural). – Predictor