Ψ Die Informatikseite

Menü

SARO (Sensor Driven Random Optimisation)

Wir haben unter Umständen sehr komplizierte Controller (Agenten) mit vielen Parametern. Dieser Agent ist in diesem Falle ein neuronales Netz, z.B. zwei-Schicht Perzeptron. Ein neuronales Netz, das Trainingsnetz, stellt die Parameter des Controllers ein. Problem ist, dass wir für das Trainingsnetz gar keinen Teacher haben und so gar kein Backpropagation machen können. Wir lernen mit einem Critic. Dieser vergleicht die beiden letzten Rewards und sagt dem Trainingsnetz, dass es die neue Änderung lernen soll, wenn der Reward größer wurde. Eine Änderung erstellen wir dadurch, indem wir ganz einfach Würfeln (SARO).

\includegraphics[scale=0.5]{saro.eps}
  1. Output des Netzes $\underline{Y}$ erstellen
  2. $\Delta w$ durch die aktuellen Gewichtswerte des Trainingsnetzes berechnen
  3. Diese Gewichtswerte auf die Gewichtswerte des Controllers aufaddieren:

    \begin{displaymath}w=w+\Delta w\end{displaymath}

  4. Einen weiteren Output erstellen $\underline{Y}'$
  5. Critic vergleicht die beiden Outputs und bewertet: Ist die Gewichtsänderung $\Delta w$ gut, dann $r=1$, schlecht, dann $r=-1$
    • $r>0$: Es war die richtige Richtung. $T$ lernt mit modifizierter $\delta$-Regel, indem wir alle Gewichte in die vom $\Delta w$ vorgeschlagene Richtung drehen.
    • $r<0$: Es wird verworfen. Wir drehen an allen Gewichten etwas zurück. Das reicht uns jedoch noch nicht, sondern wir addieren auf die Gewichtsmatrix eine zufällige Gewichtsmatrix mit kleinen Werten auf, um durch Würfeln rechtwinklig in dem Raum der Gewichte für den Controller abzubiegen.
  6. Vergessen, d.h. Gewichte Richtung $0$ drücken $\underline{\underline{G}}=(1-\theta)\cdot\underline{\underline{G}}$