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 .

<span class =<span class= 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 .