190 likes | 261 Views
Learning an individual skill. Pass interception. Problemstellung. Ziel: Ein Spieler soll sich in die Flugbahn des sich nähernden Balls stellen können. Er soll den Ball stoppen können, wenn er nahe genug ist. Ansatz mittels NN. Aktion des Empfängers: Erkennen der Flugbahn des Balls
E N D
Learning an individual skill Pass interception
Problemstellung Ziel: • Ein Spieler soll sich in die Flugbahn des sich nähernden Balls stellen können. • Er soll den Ball stoppen können, wenn er nahe genug ist.
Ansatz mittels NN Aktion des Empfängers: • Erkennen der Flugbahn des Balls • Um einen Winkel drehen • Dash forward Die Möglichkeiten des Spielers die Bahn des Balls zu schneiden werden dadurch eingeschränkt.
Input - Vektor Welche Merkmale bestimmen die Flugbahn des Balls eindeutig? • Geschwindikeitesvektor bei einem bestimmten Abstand dist(Receiver,Ball) • dist(Receiver,Ball) zur Zeit t-1 angle(Receiver, Ball) zur Zeit t-1 dist(Receiver, Ball) zur Zeit t angle(Receiver, Ball) zur Zeit t
Lösung CMUnitedAufnahme der Trainingsdaten • Der Passer kickt den Ball genau in Richtung des Empfängers durch Rauschen verursachte, kleine Abweichung des Schußwinkels (ball_rand > 0) • dist(Receiver, Ball) > 14 Der Empfänger dreht sich in Richtung des Balls • dist(Receiver, Ball) < 14 randAngle: randomisierter Winkel zwische –45° und 45° Trainingsdaten dist(t), angle(t), dist(t-1), randAngle werden aufgenommen Anmerkung: angle(t-1) = 0 • Empfänger dreht sich um (randAngle + angle(t)) • Empfänger führt 1 „Dash forward“ aus es werden nur Bälle mit einem geringen Abstand vom Empfänger erreicht • Der Versuch wird klassifiziert erfolgreiche Versuche werden den Trainingsdaten hinzugefügt
Eigener Ansatz • Verwendung der libMRB der Mainz Rolling Brains (C++) • Perception und Action synchronisiert send_step = 100 msec (default: 150) • Einsatz des Offline - Coach
Aufnahme der Trainingsdaten • 1. Ansatz: Aufnahme der Trainingsdaten durch den Empfänger / rand_ball = 0.05 Die Trainingsdaten waren nicht geeignet, da die zum einen durch die Wahrnehmung des Empfängers und zum anderen durch ball_rand verfälscht wurden. • 2. Ansatz: Aufnahme der Trainingdaten durch den Empfänger / rand_ball = 0 Die Daten waren noch immer verrauscht, da die DirChng- Infomation unverläßlich ist. • 3. Ansatz: Aufnahme der Trainingsdaten durch den Offline-Coach • Wichtige Merkmale der Server- Nachicht „see“ • (ObjName Distance Direction DistChng DirChng BodyDir HeadDir) • Auflösung Distance wird durch „quantize step“ festgelegt • Auflösung Direction: 1° • DistChng, DirChng: bruchstückhafte Information
Trainingssituation • Der Passer kickt den Ball in Richtung des Empfängers 5° Die Abweichung des Schußwinkels von angle(Passer, Receiver) wird randomisiert. • dist(Receiver, Ball) > 15 Der Empfänger dreht sich in Richtung des Balls • dist(Receiver, Ball) < 15 randAngle: randomisierter Winkel zwische –45° und 45° Trainingsdaten dist(t), angle(t), dist(t+2), angle(t+2) und randAngle werden aufgenommen • Empfänger dreht sich um „randAngle“ • Empfänger führt 2 „Dash forward“ aus es werden auch weiter entfernte Bälle erreicht • Der Versuch wird com Coach klassifiziert erfolgreiche Versuche werden den Trainingsdaten hinzugefügt
Anmerkungen zur Trainingssituation • Der Ball wird dem Empfänger mit tlw. großen Abweichungen zugespielt. • Der Coach nimmt dist(t), angle(t), dist(t+2), angle(t+2) sowie den randomisierten Drehwinkel des Empfängers auf. • Der Empfänger führt 2 Dashes aus, wodurch auch Bälle mit „größerer Abweichung“ erreicht werden können. • Der Empfänger versucht nur durch „Erraten“ des richtigen Drehwinkels eine Kollision mit dem Ball herbeizuführen. (kein Kick!)
Synchronisation example
Trainieren des NN • Netzwerk: 4 input units 8 sigmoid hidden units 1 linear output unit • fully- connected • learning Rate: 10-5 • kein „weight decay“ • Training über 3000 Durchgänge Verwendete Software: SNNS Release 4.1 (Teil der SuSE 7.0 Distribution) example
Wie viele Trainingsbeispiele sind notwendig um das NN hinreichend gut trainieren zu können? Lösung: Training von mehreren NNs mit verschieden großen Mengen an Traininssets und anschließender Auswertung durch Simulation hinreigend vieler Pass- Annahmen. (zeitaufwendig) Wie intensiv kann das NN trainiert werden, ohne an Aussagekraft über „ungesehene“ Beispiele zu verlieren? Lösung: Auswertung verschieden trainierter NNs durch Simulation hinreichend vieler Pass- Annahmen. (zeitaufwendig) Offene Fragen
Stoppen des Balls (1/3) • Der Geschwindigkeitsvektor des Balls kann aus den Distanz- und winkelinformationen berechnet werden. • Objektgeschwindigkeit (vx,vy)t+1 = (vx,vy)t + (ax,ay) • Ballbeschleunigung durch kick(kick_power, kick_angle) (ax,ay) = kick_power * kick_power_rate * (1 – (0.25*dir_diff / 180) – 0.25*(dist_ball – player_size – ball_size) / kickable_area) dir_diff... Betrag des Winkels zum Ball relativ zus Position des Spielers dist_ball... Abstand des Balls vom Mittelpunkt des Spielers.
Stoppen des Balls (2/3) • Hat der Empfänger die Flugbahn des Balls erreicht, wird zu jedem Zyklus die Position des Balls vorherberechnet. • Wird sich der Ball im nächsten Zyklus in der kickable_area befinden, dreht sich der Spieler zu dessen berechneter Position • Es wird ein Beschleunigungsvektor und daraus kick_power und kick_angle berechnet, so daß der Ball im nächsten Zyklus unmittelbar vor dem Spieler liegt. Anmerkung: Da die Berechnung des Geschwindigkeitsvektors nicht immer verläßlich ist, sind in den meisten Fällen mehrere kicks nötig um den Ball zu stoppen (Bedingung |v| < 0.05).
Stoppen des Balls (3/3) example
Ergebnis (1/3) • Die Auswertung erfolgte über eine größere Menge an Versuchen unter Einsatz des NN bei Schußwinkeln von –10 bis +10 Grad. • Die Auswertung ohne Rauschen (ball_rand = 0) wurde mit je 1000 Versuchen durchgeführt. • Die Auswertung mit Rauschen mit jeweils 200 Versuchen.