Benieuwd hoever dat teruggaat, misschien minder dan seconden voor zo'n simpele taak.
Ik heb nog geen tijd gehad om het artikel te lezen, maar ik vermoed dat "hoever dat teruggaat" de verkeerde manier is om ernaar te kijken. Dat suggereert dat er (bijvoorbeeld) een minuut aan data nog beschikbaar is en alles dat ouder is verwijderd wordt. Een veel betere manier om te leren is echter om niet elke losse poging vast te leggen, maar alleen de resultaten te onthouden.
Zeer sterk versimpeld voorbeeld. Laten we zeggen dat een robot drie verschillende strategieën kan gebruiken: X, Y en Z. Voor allemaal houdt je een score bij: aantal successen en aantal pogingen. Let op, dat zijn geen integers maar floats; waarom dat zo is zie je verderop. Als de robot net geboot is heeft ie nog niets geprobeerd, dus zowel X, Y als Z staan op { 0,5 ; 1 } (het lijkt logischer om te beginnen met { 0 ; 0 }, maar dat veroorzaakt randgevallen die je speciaal moet behandelen). Dan begint ie met een super simpel loopje: kies een strategie, voer die uit en verwerk de resultaten.
- Kies een strategie om te proberen. Je wilt dit willekeurig bepalen, maar wel rekening houden met de opgebouwde kennis. Aanvankelijk hebben alle drie de strategieën een "betrouwbaarheid" van 0,5 / 1,0 = 0,5 en 0,5 + 0,5 + 0,5 = 1,5 dus kies een willekeurig getal tussen 0,0 en 1,5. Als dat getal tussen 0 en 0,5 ligt kies je strategie X, voor [ 0,5 ; 1,0 ) kies je Y en bij [ 1,0 ; 1,5 ) probeer je Z.
- Gebruik de gekozen strategie om de volgende beweging uit te voeren.
- Stel vast hoe succesvol deze poging was. De mate van succes is een getal tussen 0 en 1. Een 0 betekent volkomen hopeloos, een 1 staat voor perfectie.
- Nu pas je de resultaten aan: voor de gekozen strategie tel je het succes (het getal uit de vorige stap) op bij het aantal successen en het aantal pogingen verhoog je met 1.
Bovenstaande aanpak geeft, met een geheugen van slechts zes getallen, een erg goede indicatie van hoe goed de verschillende strategieën presteren. In een volkomen statische omgeving zou dit een goede oplossing zijn. Als de omgeving echter verandert (bijvoorbeeld omdat het gedrag van de andere robots verandert!), dan moet je zorgen dat oude "herinneringen" in de loop der tijd vervagen. Dit is verbazingwekkend eenvoudig: na een aantal iteraties van het stappenplan hierboven deel je alle getallen door 2. Het mooie is dat de score van elke strategie hetzelfde blijft (om maar iets te noemen: { 10 ; 40 } heeft een score van 0,25 maar na het "vervagen van de herinnering" krijg je { 5 ; 20 } en dat is nog steeds 0,25). De impact van een nieuwe poging wordt echter dubbel zo groot. Een nieuwe, erg succesvolle poging van bijvoorbeeld 0,75 geeft in het eerste geval { 10,75 ; 41 } (dat is ongeveer 0,2622) terwijl de tweede situatie uitkomt op { 5,75 ; 21 } oftewel 0,2738.
Het mooie is dat deze aanpak nooit "vastroest" in wat ie eenmaal geleerd heeft. Omdat de betrouwbaarheid tussen 0 en 1 begint en elke nieuwe meting ook tussen 0 en 1 ligt, zal geen enkele strategie ooit op 0,00 betrouwbaarheid uitkomen (en ook niet op 1,00 trouwens). Dat betekent dat elke strategie, heel af en toe, toch nog een keertje geprobeerd wordt. Als de situatie veranderd is en die strategie opeens wél erg goed werkt, dan neemt de score relatief snel toe, wordt die strategie vaker geprobeerd en (als het inderdaad goed werkt) neemt de score snel toe tot de betrouwbaarheid in de nieuwe situatie.
Nogmaals, dit is niet precies hoe het genoemde onderzoek werkt, al was het maar omdat in dat geval geen vast lijstje van mogelijke strategieën bestaat. Maar ik vermoed dat ze wel iets gedaan hebben wat in grote lijnen op bovenstaande omschrijving lijkt:
- Niet proberen elk probeersel te loggen, maar alleen een geaggregeerde score bij te houden.
- Zorgen dat de "herinnering" wat het beste werkt in de loop der tijd vervaagd, zodat recente pogingen een grotere invloed hebben dan wat lang geleden geprobeerd is.
Dus om antwoord te geven op je vraag: bij het langzaam laten vervagen van oude kennis is er geen moment waarop die oude kennis daadwerkelijk "afgekapt" wordt. Zelfs het resultaat van de allereerste poging blijft invloed houden
*). Die invloed wordt steeds kleiner en kleiner, maar in theorie nooit echt nul. In de praktijk kun je wel zeggen dat hele oude tests nauwelijks meer van invloed zijn, maar er is geen manier om aan te geven op welk punt de invloed verwaarloosbaar wordt, omdat de invloed langzaam en geleidelijk afneemt.
*) Wiskundig gezien. In computers hebben variabelen natuurlijk een eindige precisie; zodra het effect kleiner is dan de ulp (unit in last place), dan is het effect nul
[Reactie gewijzigd door robvanwijk op 24 juli 2024 18:07]