Kurz: koncepce selektoru
Koncept selektoru se naučil koncepty, které vyvolávají výstup výběrem a vrácením výsledku z jednoho z několika konceptů možností. Selektor zvolí výsledek na základě normálního stavu, stejně jako u zjištěného konceptu.
Selektory jsou užitečné, pokud platí následující:
- Víte, že k vyřešení celkového problému je potřeba několik dovedností nebo strategií.
- Jednotlivé dovednosti součástí můžete navrhovat, programovat a vyškolovat samostatně.
- Chcete, aby se v AI zjistilo, jak určit, kdy se má jednotlivá dovednost použít.
Selektory stačí vybrat z dostupných možností, takže jsou často robustnější a rychlejší než jedna zásada, která se učí všechny relevantní dovednosti a kdy je používat. Selektory umožňují také kombinovat programové nebo importované dovednosti se zjištěnými koncepty.
V tomto kurzu se naučíte definovat, naučit a hodnotit koncepty selektoru.
Krok 1: definování dovedností nebo strategií, mezi kterými chcete vybírat
V tomto kroku definujete Koncepty možností, ze kterých se bude selektor vybírat. Všechny koncepty možností musí mít stejný výstupní typ (akce), aby selektor vybral z podobně strukturovaných výsledků.
Následující kód je založen na ukázce Cartpole . Problém cartpole vyžádá AI, aby přesunul vozík do cílové oblasti a přitom zachoval svislé pole vyrovnaný do středu košíku. Místo vývoje jednoho zjištěného konceptu k vyřešení problému vytvoříte dvě zjištěné koncepty, kde se AI učí hned a vlevo, a pak pomocí konceptu selektoru vybrat jednu ze dvou možností, jak přesunout vozík.
GoLeftKoncept posune košík doleva a zůstane v poli pole:
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
}
}
}
}
A GoRight koncept přesune přímo vozík a zůstane v poli pole:
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
}
}
}
}
Krok 2: Přidání selektoru
Teď, když jsou definované koncepty možností, musíte definovat studijní plán pro svůj koncept selektoru pomocí standardní syntaxe konceptu:
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
}
}
}
Poznámka
Pokud můžete přímo programovat pravidlo pro výběr konceptu, který se má použít, můžete místo zjištěného selektoru použít programový koncept . Například:
programmed function(state: LearningState, left_action: Action, right_action: Action) : Action {
if state.distance_to_target > 0 { return right_action }
else { return left_action }
}
Krok 3: výuka konceptů
Je potřeba, abyste si naučili vyučené koncepty jednotlivě a zhodnotili výkon každé z nich, abyste se ujistili, že budou fungovat před školením selektoru.
Níže uvedený snímek obrazovky ukazuje Inkling soubor a školicí plán pro školení ComputeDelta , GoLeft a GoRight pak PickOne .

Uživatelské rozhraní pro výuce bonsaje "Aria-describedby =" 153-0 "data-LINKTYPE =" relativní cestu ">
Snímek Bonsai uživatelského rozhraní učebny s příkladem Inkling kódu na panelu kódování a školicím diagramu, který zobrazuje koncepty ComputeDelta, GoLeft, GoRight a PickOne v pořadí, v jakém budou školením.
Tip
Pokud chcete upravit koncept, jednoduše změňte Inkling a přeškolujte mozek. Bonsai automaticky vytvoří novou verzi mozku a zachová postup v rámci konceptů, které změny neovlivnily. Můžete například přidat StopCart koncept do cartpole příkladu, vytvořit ho a potom přidat select StopCart do tohoto selektoru. Když předáte mozek, vynutí selektor, aby provedl přeučení, ale ne GoLeft nebo GoRight .
Krok 4: posouzení
Pomocí vlastních posouzení můžete prozkoumat, jak se selektor učí pomocí běžného procesu hodnocení. Hodnocení konceptů selektoru vám ukáže vybraný koncept i výslednou akci.
Další informace o posouzení najdete v kurzu hodnocení dat vyhodnocení mozku .