Tutorial: Conceptos del selector
El concepto de selector son conceptos aprendidos que generan resultados seleccionando y devolviendo un resultado de uno de varios conceptos de opción. El selector elige un resultado basado en la información de estado normal igual que un concepto aprendido.
Los selectores son útiles cuando se cumple lo siguiente:
- Sabe que se necesitan varias aptitudes o estrategias para resolver un problema general.
- Puede diseñar, programar y entrenar cada una de las aptitudes del componente por separado.
- Quiere que la inteligencia artificial aprenda a determinar cuándo se debe usar cada aptitud.
Los selectores solo necesitan elegir entre las opciones disponibles, por lo que a menudo son más sólidos y rápidos de entrenar que una sola directiva que aprende todas las aptitudes pertinentes y cuándo usarlas. Los selectores también permiten mezclar aptitudes programadas o importadas con conceptos aprendidos.
En este tutorial, aprenderá a definir, entrenar y evaluar conceptos del selector.
Paso 1: Definir las aptitudes o estrategias que desea seleccionar entre
En este paso, definirá los conceptos de opción entre los que elegir el selector. Todos los conceptos de opción deben generar el mismo tipo de salida (acción) para que el selector elija entre resultados estructurados de forma similar.
El código siguiente se basa en el ejemplo Cartpolis. El problema del carro pide a la inteligencia artificial que mueva un carro a una región de destino mientras mantiene un poste vertical equilibrado en el centro del carro. En lugar de desarrollar un concepto aprendido para resolver el problema, creará dos conceptos aprendidos en los que la inteligencia artificial aprende a ir a la derecha y a la izquierda por separado y, a continuación, usará un concepto de selector para elegir entre las dos opciones para mover el carro.
El GoLeft concepto mueve el carro a la izquierda mientras mantiene el poste vertical:
concept GoLeft(ComputeDelta): Action {
curriculum {
source CartpoleSim
goal (state: SimState) {
avoid FallOver:
Math.Abs(state.pole_angle) in Goal.RangeAbove(MaxPoleAngle)
# There isn't a specific "close enough" threshold, so using
# Goal.RangeBelow(0) to encourage the system to minimize as well as it can
minimize DistToTarget:
Math.Abs(state.target_pole_position - state.cart_position) in Goal.RangeBelow(0)
}
training {
EpisodeIterationLimit: 200,
}
lesson One {
# Because we're using relative positions, just need to randomize initial position to be far and close to the target.
# "GoLeft" starts the cart to the right of the target.
scenario {
initial_cart_position: number<0 .. MaxPosition>,
target_pole_position: 0
}
}
}
}
Y el GoRight concepto mueve el carro a la derecha mientras mantiene el poste vertical:
concept GoRight(ComputeDelta): Action {
curriculum {
source CartpoleSim
goal (state: SimState) {
avoid FallOver:
Math.Abs(state.pole_angle) in Goal.RangeAbove(MaxPoleAngle)
# There isn't a specific "close enough" threshold, so using
# Goal.RangeBelow(0) to encourage the system to minimize as well as it can
minimize DistToTarget:
Math.Abs(state.target_pole_position - state.cart_position) in Goal.RangeBelow(0)
}
training {
EpisodeIterationLimit: 200,
}
lesson One {
# Because we're using relative positions, just need to randomize initial position to be far and close to the target.
# "GoRight" starts the cart to the left of the target.
scenario {
initial_cart_position: number<-MaxPosition .. 0>,
target_pole_position: 0
}
}
}
}
Paso 2: Agregar un selector
Ahora que se han definido los conceptos de opción, debe definir el plan de estudios para el concepto de selector mediante la sintaxis de concepto estándar:
output concept PickOne(ComputeDelta): Action {
select GoRight
select GoLeft
curriculum {
source CartpoleSim
training {
EpisodeIterationLimit: 200,
NoProgressIterationLimit: 1000000,
}
goal (state: SimState) {
avoid FallOver: Math.Abs(state.pole_angle) in Goal.RangeAbove(MaxPoleAngle)
minimize DistToTarget: Math.Abs(state.target_pole_position - state.cart_position) in Goal.RangeBelow(0)
}
lesson One {
# Because we're using relative positions, just need to randomize initial position to be far and close to the target
# "PickOne" starts at a random position within the full range.
scenario {
initial_cart_position: number<-MaxPosition .. MaxPosition>,
target_pole_position: 0
}
}
}
Nota
Si puede programar directamente una regla para seleccionar qué concepto usar cuando, puede usar un concepto programado en lugar de un selector aprendido. Por ejemplo:
programmed function(state: LearningState, left_action: Action, right_action: Action) : Action {
if state.distance_to_target > 0 { return right_action }
else { return left_action }
}
Paso 3: Entrenamiento de los conceptos
Debe entrenar los conceptos aprendidos individualmente y evaluar el rendimiento de cada opción para asegurarse de que funcionan antes de entrenar el selector.
En la captura de pantalla siguiente se muestra el archivo Inkling y el plan de entrenamiento para el entrenamiento ComputeDelta y, a GoLeftGoRight continuación, y PickOne .
Bonsai
Teaching UI" aria-describedby="153-0" data-linktype="relative-path">
Captura de pantalla de la interfaz de usuario de Teaching con el código inkling de ejemplo en el panel de codificación y un diagrama de entrenamiento que muestra los conceptos ComputeDelta, GoLeft, GoRight y PickOne en el orden en que se Bonsai entrenarán.
Sugerencia
Si desea modificar un concepto, simplemente cambie inkling y vuelva a entrenar el cerebro. Bonsai creará automáticamente una nueva versión del cerebro y conservará cualquier progreso de entrenamiento para los conceptos que no se ven afectados por el cambio. Por ejemplo, puede agregar un concepto al StopCart ejemplo del carro, entrenarlo y, a continuación, select StopCart agregarlo al selector. Al volver a entrenar el cerebro, obligará al selector a volver a entrenar, pero no GoLeft a ni GoRight a .
Paso 4: Evaluación
Use evaluaciones personalizadas para investigar cómo el selector aprende mediante el proceso de evaluación normal. La evaluación de los conceptos del selector le mostrará el concepto seleccionado, así como la acción resultante.
Para más información sobre la evaluación, consulte el tutorial Evaluación de datos de evaluación del cerebro.