El objetivo es diseñar un componente de optimización de políticas próximo que tenga restricciones específicas en el espacio de acción que dependen de las reglas impulsadas por el estado, utilizando un marco como Tensorforce.
Opciones de diseño enumeradas en la pregunta
Estas opciones se enumeran aquí para una referencia rápida al leer el análisis inicial a continuación.
- Cambie el espacio de acción en cada paso, dependiendo de internal_state. Supongo que esto no tiene sentido.
- No haga nada: deje que el modelo comprenda que elegir una acción no disponible no tiene ningún impacto.
- No haga casi nada: impacte ligeramente la recompensa cuando el modelo elija una acción no disponible.
- Ayuda al modelo: incorporando un número entero en el espacio de estado / observación que informa al modelo cuál es el valor de estado interno + punto de viñeta 2 o 3
Analisis inicial
De hecho, es sensato cambiar el espacio de acción para cada movimiento. De hecho, esa es una representación adecuada del problema como se indicó y la forma normal en que los humanos juegan y la forma en que las computadoras vencen a los humanos en Chess and Go.
La aparente falta de sentido de esta idea es simplemente un artefacto del progreso a lo largo de la hoja de ruta del proyecto Tensorforce y el progreso a lo largo de la teoría del refuerzo, ambos jóvenes en el panorama general. Al leer la documentación y las preguntas frecuentes de Tensorforce, no parece que el marco esté diseñado para conectar un motor de reglas para determinar el espacio de acción. Esto no es una deficiencia del código abierto. No parece haber ningún documento que proporcione teoría o proponga algoritmos para la decisión de la cadena de Markov condicionada por reglas.
La opción de no hacer nada es la que se ajusta a las estrategias disponibles actuales representadas en la literatura. Probablemente, hacer casi nada es el enfoque que producirá un comportamiento deseable más confiable y quizás más inmediato.
El problema con el concepto de ayudar al modelo es que no es una idea tan fuerte como extender el modelo. En código abierto, esto se haría ampliando las clases que representan el modelo, lo que requeriría un trabajo teórico antes de la codificación para
a. Represent rule-conditioned learning in nomenclature
b. Represent convergence mathematically using the new nomenclature
c. Determining a method of convergence
d. Proving convergence
e. Rechecking
f. Defining a smooth and efficient algorithm
g. Providing PAC learning information for planning
f. Peer review
g. Extending the classes of the library
h. Proof of concept with the current problem above
i. Additional cases and metrics comparing the approach with the others
j. Extending the library flexibility to support more such dev
La extensión de los sistemas de aprendizaje para cubrir el caso con restricciones de reglas es una gran idea para una tesis doctoral y podría volar en los laboratorios de investigación como una propuesta de proyecto con muchas aplicaciones posibles. No dejes que todos los pasos disuadan al investigador. Son esencialmente una lista de pasos para cualquier tesis doctoral o proyecto de laboratorio de IA financiado.
Para una solución a corto plazo, ayudar al modelo podría funcionar, pero no es una estrategia sólida para promover las ideas de IA a lo largo del camino de aprendizaje de refuerzo. Como solución a corto plazo para un problema en particular, puede funcionar bien. La idea de hacer casi nada puede ser más sólida, ya que se ajusta a las pruebas de convergencia que condujeron a la implementación particular que probablemente utilizará Tensorforce.
Cambiarle el nombre de hacer casi nada para ayudar a la convergencia puede ayudar a desarrollar la perspectiva correcta antes de intentarlo. Es posible que tenga que atenuar la asistencia a medida que se acerca a la convergencia para evitar el sobreimpulso al igual que con una tasa de aprendizaje.
Normalmente, el conjunto de acciones que el agente puede ejecutar no cambia con el tiempo, pero algunas acciones pueden volverse imposibles en diferentes estados (por ejemplo, no todos los movimientos son posibles en cualquier posición del juego TicTacToe).
Eche un vistazo como ejemplo en la parte del código https://github.com/haje01/gym-tictactoe/blob/master/examples/base_agent.py :
fuente