Niet in mijn implementatie. Dat hangt heel erg af van het algoritme. Je hebt supervised learning en unsupervised learning, dat laatste heb ik gebruikt.
Dat betekent feitelijk dat je er zo min mogelijk informatie instopt. De uitvoer bestaat uit een selectie van een commando: naar links, naar rechts, naar beneden, rennen of niet, schieten, springen.
De invoer bestaat uit de inhoud van het zichtbare scherm: welk blokje staat waar. En welk beestje zie je waar. "Welk beestje" is hierbij geabstraheerd als 0, 1, 2, ... Wat voor beestjes dat dat zijn en hoe hij daarmee om moet gaan mag hij zelf uitzoeken.
Vervolgens laat je hem gegeven de invoer (dus een grid van blokjes met inhoud, de score en de overgebleven tijd), een actie selecteren. Het resultaat daarvan is ofwel dood, ofwel in leven blijven. Een bijgevolg daarvan is het ophogen van de score-counter en het afnemen van de tijd, en eventueel het beindigen van het level.
Doodgaan wordt vervolgens beschouwd als straf: het nemen van de gekozen actie in die situatie wordt ontmoedigd door het veranderen van de gewichten tussen de neuronen in het neurale netwerk die voor deze actie gezorgd hebben. Het toenemen van de score resulteert in het licht verstevigen van die actie en het afronden van het level resulteert in een hoge versteviging van die verbindingen.
Heel simpel kwam het er bij mij op neer dat de eerste actie is het omzetten van de state (zoals gedefinieerd in de blokjes, de score en de tijd) in één getal: de waardering van die state. Hierbij heeft het bereiken van de vlag op het eind de hoogste waardering en het doodgaan de laagste. Alle states daarvoor worden op basis daarvan ingevuld, op basis van het spelen van het spel. Hierdoor zal de hoogste waardering zich als een vlek verspreiden over de states die leiden tot winst, terwijl de laagste waardering zich als een vlek verspreid over de states die leiden tot verlies.
Hiermee abstraheer je in één getal alle mogelijk rewards en failures, wat het makkelijker maakt om de actor (die de acties selecteert) te trainen.
Als alles in elkaar zit zet je het systeem aan het spelen en na vele (duizenden) oefenpotjes begint hij steeds beter te spelen.
[Reactie gewijzigd door MadEgg op 27 juli 2024 13:44]