Kulcsszó: Cél

A célok annak magas szintű specifikációi, hogy mit szeretne az MI-nek megtanulni. A célokkal a betanítási motor automatikusan meghatározza a megfelelő jutalom függvényeket és feltételeket a korai megszakításhoz.

A célalapú tantervek segítségével a Bonsai az Ön által meghatározott konkrét célkitűzések alapján készít jelentést a betanítási előrehaladásról, nem pedig absztrakt jutalompontszámok alapján.

Használat

A célok eléréséhez foglalja bele a névteret a inkling fájl elejére, és foglalja bele a utasítást (egy vagy több célkitűzéssel) a Goal goal tanterv definíciójában.

using Goal

...

curriculum {

...

    goal (state: SimState) {
        avoid Fall: Math.Abs(state.angle) in Goal.RangeAbove(MaxAngle)
        drive SmallAngle: Math.Abs(state.angle) in Goal.Range(0, MaxAngle/6)
        drive StayCentered: Math.Abs(state.position) in Goal.Range(0, MaxPosition/10)
    }
    training {
        EpisodeIterationLimit: MaxIterationCount
    }
}

A célkitűzések megadásának sorrendje nem számít. A betanító motor megpróbálja kielégíteni mindegyik sikerességére vonatkozó feltételt.

Fontos

Nem használhat célokat, és nem határozhat meg explicit jutalom- és terminálfunkciókat

Támogatott célkitűzések

A célok jelenleg a következő célkitűzéseket támogatják:

  • avoid: Kerülje a megadott régiót.
  • drive: A céltartományt a lehető leggyorsabban el kell kapnia, és próbáljon meg ezen a tartományon belül maradni.
  • maximize: A célérték leküldése a lehető legnagyobbra.
  • minimize: A célértéket a lehető leg alacsonyan kell leküldéses értékként leküldésre.
  • reach: A céltartományt a lehető leggyorsabban el kell eléréséhez.

A cél arra utasítja a betanító motort, hogy az AI-nak meg kell tartania a szimulált környezetet egy avoid adott állapot beírásában.

Az avoid utasítás a következő elemeket tartalmazza:

  • objectiveName: egy objektív név.
  • testValue: a célkitűzést ellenőrző értéket képviselő kifejezés.
  • avoidRange: egy kifejezés, amely meghatározza az elkerülendő értékek halmazát.
avoid objectiveName: testValue in avoidRange

Például:

# if the angle ever goes outside [-MaxAngle, MaxAngle], the
# episode terminates and is marked a failure

avoid Fall: Math.Abs(S.Angle) in Goal.RangeAbove(MaxAngle)

A avoid cél akkor lesz sikeres, ha a tesztérték soha nem lép be az előírt tartományba az esemény során.

A cél meghiúsul, ha a tesztérték az esemény bármely pontján az előírt avoid tartományba lép.

A betanító motor a következő részleteket tartalmazza a avoid célkitűzésekről:

  1. Sikeresség aránya: az értékelésben az a részarány, ahol az AI eléri a célkitűzést.
  2. Cél-elégedettségi arány: a célkitűzés elérése felé tett átlagos előrehaladás az értékelésben lévő tesztekben. A 100%-os elégedettség azt jelenti, hogy az AI sikeresen befejezte a célkitűzést.

Korai sorozat befejezése

A célalapú tantervek támogatják az előd-sorozatok korai megszakítását: egy betanítási esemény befejezése az ismétlési korlát elérése előtt. A korai megszakítás az alábbi feltételek teljesülése esetén történik:

  • Korai sorozat befejezése objektív sikertelenség miatt:
    1. A avoid cél aktiválása.
    2. Egy záradékkal nem lehet több iterációra vonatkozó célkitűzést a cél drive within k k régióban.
  • Az esemény korai befejezése sikeresség miatt az alábbi feltételek mindegyikének teljesülése esetén következik be:
    1. A célkitűzések listája tartalmaz egy reach célkitűzést.
    2. A célkitűzések listája nem tartalmaz drive célkitűzést.
    3. Minden reach célkitűzés sikeres.

Céltartományok meghatározása

A Goal névtér függvényeket biztosít a céltartományok meghatározásához. A névtér jelenleg numerikus küszöbértékekkel és N-dimenziós térekkel használható függvényeket tartalmaz.

Gyorsírás Megadott tartomány
Goal.Range(X, Y) És közötti X Y értékek, a és a között, a befogadó értékekkel
Goal.RangeAbove(X) Nagyobb vagy egyenlő értékekX
Goal.RangeBelow(X) Kisebb vagy egyenlő értékekX
Goal.Box([m1, M1], [m2, M2]) A téglalapon belüli értékek oldalokkal [m1, M1] és [m2, M2]
Goal.Box([m1, M1], [m2, M2], [m3, M3]) A 3D mezőben található értékek , [m1, M1] , [m2, M2] , [m3, M3]
Goal.Box([m1, M1], [m2, M2], ..., [m6, M6]) Az n-téglalapon belüli értékek, az egyes dimenziók oldalai [m_i, M_i] i (legfeljebb 6 dimenzió)
Goal.Sphere(X, R) Egy 1D-s gömbön (vonalon) belüli értékek, a ponthoz középen R () középen X
Goal.Sphere([X, Y], R) Egy 2D-s gömbön (körön) belüli értékek a pont R ( X , ) Y középpontjával
Goal.Sphere([X, Y, Z], R) Egy 3D-s, sugarú körön belüli R értékek, középen a pont ( X , , Y Z )

A célteszt értékének dimenziójának meg kell egyeznie a megadott tartomány dimenzióval. Ha például a célkitűzés 3D-s sphere-ként van definiálva, a tesztértéknek meg kell felelnie egy 3 dimenziós térben lévő pozíciónak:

reach [a, b, c] in Goal.Sphere([x, y, z], r)

Tipp

Ha a tartomány belül eltérő lehet, győződjön meg arról, hogy a tartományparaméterek a megfigyelhető állapot részei.

Cél betanítása – paraméterek

A következő betanítás paramétereit módosíthatja a célhoz a training záradékkal:

Paraméter Értékek Alapértelmezett Description
EpisodeIterationLimit Number.UInt32 1000 A betanítási sorozatonként engedélyezett iterációk teljes száma.

Például:

concept MyConcept(input: SimState): BrainAction {
  curriculum {
    training {
      EpisodeIterationLimit: 250
      TotalIterationLimit: 100000,
      LessonSuccessThreshold: 0.7,
    }
  }
}

EpisodeIterationLimit

A betanítási motor megszakítja a betanítási sorozatot, és az iterációk után egy újat kezd el, ha nem ér el termináli EpisodeIterationLimit állapotot.