Como he mencionado en preguntas anteriores, estoy escribiendo una aplicación de resolución de laberintos para ayudarme a aprender sobre temas CS más teóricos, después de algunos problemas tengo un algoritmo genético que funciona puede desarrollar un conjunto de reglas (manejadas por valores booleanos) para encontrar una buena solución a través de un laberinto.Aumento de mi GA con redes neuronales y/o aprendizaje de refuerzo
Habiendo dicho eso, el GA por sí solo está bien, pero me gustaría reforzarlo con una red neuronal, a pesar de que no tengo un verdadero conocimiento práctico de las redes neuronales (ninguna educación teórica formal de CS). Después de leer un poco sobre el tema, descubrí que se podría usar una red neuronal para entrenar un genoma a fin de mejorar los resultados. Digamos que tengo un genoma (conjunto de genes), tales como
1 0 0 1 0 1 0 1 0 1 1 1 0 0...
¿Cómo podría utilizar una red neuronal (estoy asumiendo MLP?) Para entrenar y mejorar mi genoma?
Además de esto, como no sé nada sobre Redes neuronales, he estado buscando implementar algún tipo de Aprendizaje de refuerzo, usando mi matriz de laberinto (matriz bidimensional), aunque estoy un poco atascado en lo que el siguiente algoritmo quiere de mí:
(de http://people.revoledu.com/kardi/tutorial/ReinforcementLearning/Q-Learning-Algorithm.htm)
1. Set parameter , and environment reward matrix R
2. Initialize matrix Q as zero matrix
3. For each episode:
* Select random initial state
* Do while not reach goal state
o Select one among all possible actions for the current state
o Using this possible action, consider to go to the next state
o Get maximum Q value of this next state based on all possible actions
o Compute
o Set the next state as the current state
End Do
End For
el gran problema para mí está implementando una matriz de recompensa R y lo que es una matriz Q es exactamente, y obtener el valor de Q. Utilizo una matriz multidimensional para mi laberinto y estados enum para cada movimiento. ¿Cómo se usaría esto en un algoritmo Q-Learning?
Si alguien me puede ayudar explicando lo que tendría que hacer para implementar lo siguiente, preferiblemente en Java, aunque C# sería bueno también, posiblemente con algunos ejemplos de código fuente sería apreciado.
Este es un tema muy complejo. Las mismas cosas de las que está hablando generalmente se abordan en un semestre completo de un curso universitario de AI. No estoy seguro de que realmente puedan abordarse correctamente en una pregunta de Stackoverflow, pero ciertamente me interesaría ver a la gente intentarlo. Nunca me detuve por completo con algunos de estos algoritmos. –
En una nota lateral, si está dispuesto a gastar algo de dinero en efectivo en un libro de texto realmente bueno sobre el tema, entonces le sugiero: http://www.amazon.com/Artificial-Intelligence-Modern- Approach-3rd/dp/0136042597/ref = sr_1_1? Ie = UTF8 & s = books & qid = 1268837913 & sr = 1-1 –
He echado un vistazo a ese libro un par de veces y aunque da un trasfondo teórico decente de la comprensión del sujeto cómo se puede implementar me está matando . Si alguien pudiera simplemente escribir una solución básica que funcionaría dada la información que he proporcionado, incluso si está en un pseudocódigo, estaría encantado de intentar implementarlo y dar una respuesta aceptada. – AlexT