Fonctions de récompense et terminales dans Inkling

Attention

Les fonctions de récompense et terminales sont considérées comme des utilisations avancées pour des cas particuliers. La plupart des utilisateurs doivent utiliser des buts à la place.

Fonctions de récompense

Les fonctions de récompense prennent un ou deux paramètres en entrée. Le premier paramètre fournit le nouvel état retourné par le simulateur. Le deuxième paramètre (qui peut être omis) est l’action fournie par l’intelligence artificielle pendant un épisode d’apprentissage. La fonction de récompense doit retourner une valeur numérique indiquant la récompense associée à cet état et à cette action.

La fonction de récompense est spécifiée dans l’instruction de curriculum à l’aide du mot clé reward et d’une fonction inline ou nommée globalement.

concept Balance(input: SimState): Action {
    curriculum {
        source MySimulator
        reward GetReward
    }
}

function IsUpright(Angle: number) {
  return Angle > 85 and Angle < 95
}

function GetReward(State: SimState) {
  if IsUpright(State.Angle) {
      return 1.0
  }
  return -0.01
}

Avertissement

Il n’est pas possible d’utiliser des fonctions de récompense conjointement avec des buts. L’inclusion des deux génère une erreur.

Fonctions de terminales

Comme les fonctions de récompense, des fonctions terminales peuvent être écrites dans Inkling. Lorsque vous spécifiez une fonction terminale dans Inkling, le moteur d’apprentissage ignore les valeurs terminales transmises par le simulateur. Il n’est pas possible d’utiliser des fonctions terminales conjointement avec des buts.

Une fonction terminale dans Inkling prend un ou deux paramètres en entrée. Le premier est le nouvel état retourné par le simulateur. Le deuxième paramètre (qui peut être omis) est l’action fournie par le modèle. La fonction terminale doit retourner la valeur true (1) si l’état est un état terminal, ou false (0) dans le cas contraire.

La fonction terminale est spécifiée dans l’instruction de curriculum à l’aide du mot clé terminal et d’une fonction inline ou nommée globalement.

concept Balance(input: SimState): Action {
    curriculum {
        source MySimulator
        terminal function (State: SimState) {
          return State.Position > 20
        }
    }
}

Des fonctions terminales ne sont pas requises lors de l’utilisation de fonctions de récompense. Si aucune fonction terminale n’est fournie, l’épisode d’apprentissage se termine automatiquement une fois atteinte la limite d’itération configurée (EpisodeIterationLimit).

Avertissement

Il n’est pas possible d’utiliser des fonctions terminales conjointement avec des buts. L’inclusion des deux génère une erreur.