Q-learning is een off approach ondersteunende leerberekening die de beste zet lijkt te zijn gezien de huidige stand van zaken. Het wordt beschouwd als off-strategy op grond van het feit dat het q- nemen in het werk baat heeft bij activiteiten die buiten de huidige regeling vallen, zoals het nemen van willekeurige activiteiten, en op deze manier is een aanpak niet vereist. Des te explicieter probeert q-learning vertrouwd te raken met een aanpak die de absolute compensatie versterkt.
Wat is ‘Q’?
De ‘q’ in q-learning staat voor kwaliteit. Kwaliteit voor deze situatie spreekt voor zich hoe nuttig een bepaalde activiteit is om een toekomstige beloning te verhogen.
Maak een q-tafel
Op het moment dat q-leren wordt uitgevoerd maken we wat bekend staat als een q-tafel of raamwerk dat de staat van [staat, actie] nastreeft en zetten we onze kwaliteiten op nul. Op dat moment verversen en bewaren we onze q-waarden na een scène. Deze q-tabel wordt een referentietabel voor onze specialist om de beste activiteit te kiezen, afhankelijk van de q-waarde.
invoer numpie als np
# Introduceer q-tabel kwaliteiten naar 0
Q = np.nullen((state_size, action_size))
Q-learning en het maken van verfrissingen
De volgende fase is alleen voor de specialist om verbinding te maken met de aarde en updates te maken van de toestand activiteit wedstrijden in onze q-tabel Q[toestand, actie].
Een beweging maken: Onderzoek of avontuur
Een operator die op 1 of 2 verschillende manieren met de aarde verbonden is. De eerste is om de q-tabel te gebruiken als een bron van perspectief en elke denkbare activiteit voor een bepaalde toestand te bekijken. De operator kiest op dat moment de activiteit, afhankelijk van de maximale inschatting van die activiteiten. Dit staat bekend als misbruik omdat we de gegevens die we beschikbaar hebben gebruiken om een keuze te maken.
De volgende methode om een keuze te maken is lukraak handelen. Dit heet onderzoeken. In plaats van activiteiten te kiezen die afhankelijk zijn van de maximale toekomstige beloning, selecteren we een activiteit willekeurig. Lukraak handelen is belangrijk omdat het de specialist in staat stelt om nieuwe uitingen te onderzoeken en te vinden die over het algemeen niet gekozen mogen worden tijdens de misbruikprocedure. U kunt het onderzoek/misbruik aanpassen door gebruik te maken van epsilon (ε) en de inschatting te maken van hoe regelmatig u moet onderzoeken versus misbruik. Hier is een aantal onaangename code die zal afhangen van hoe de toestand en de activiteitenruimte zijn een regeling.
invoer willekeurig
# Stel het percentage in dat je moet onderzoeken
epsilon = 0,2
in het geval dat random.uniform(0, 1) < epsilon:
“””
Onderzoek: selecteer een willekeurige activiteit
“””
anders:
“””
Endeavor: selecteer de activiteit met maximale waardering (toekomstige beloning)
“””
Verfrissen van de q-tafel
De updates gebeuren na elke progressie of activiteit en sluitingen wanneer een scène klaar is. Voor deze situatie betekent dit dat de operator op een bepaald punt van de terminal aankomt. Een terminale toestand kan bijvoorbeeld op enigerlei wijze lijken op het aankomen op een afrekenpagina, het aankomen bij het einde van een wedstrijd, het afwerken van een ideaal doelpunt, enzovoort. De specialist zal zich niet veel aanpassen na een eenzame scène, maar onvermijdelijk met voldoende onderzoek (stappen en scènes) zal het combineren en vertrouwd raken met de ideale q-kwaliteiten of q-ster (Q∗).
Hier zijn de 3 fundamentele vorderingen:
Specialist begint in een toestand (s1) maakt een beweging (a1) en krijgt een beloning (r1)
De operator kiest de activiteit door te verwijzen naar de Q-tabel met de hoogste waarde (max) OF door een willekeurige (epsilon, ε).
Q-waarden updaten
Hier is de essentiële update-regel voor q-leren:
# Update q-esteems
Q[state, action] = Q[state, action] + lr * (compenseren + gamma * np.max(Q[new_state, :]) – Q[state, action])
In de bovenstaande update zijn er twee of drie factoren die we op dit moment niet hebben genoemd. Wat hier gebeurt is dat we onze q-waarden veranderen afhankelijk van het onderscheid tussen de beperkte nieuwe kwaliteiten en de oude kwaliteiten. We geven de nieuwe kwaliteiten een korting door gebruik te maken van het gamma en we passen onze progressiegrootte aan door gebruik te maken van de leersnelheid (lr). Hieronder volgen enkele referenties.
Leerpercentage: lr of leerpercentage, regelmatig aangeduid als alpha of α, kan in principe worden gekarakteriseerd als het bedrag dat je de nieuwe waarde erkent ten opzichte van de oude waarde. Hierboven nemen we het onderscheid tussen nieuw en oud en vervolgens verhogen we die prikkel met de leergraad. Deze waarde wordt op dat moment toegevoegd aan onze vroegere q-waarde, die in principe in de richting van onze meest recente update gaat.
Gamma: gamma of γ is een afgrenzingsfactor. Het wordt gebruikt om snelle en toekomstige beloningen aan te passen. Uit onze bovenstaande update-regel kun je zien dat we de korting toepassen op de toekomstige beloning. Normaal gesproken kan deze waarde ergens tussen 0,8 en 0,99 liggen.
Beloning: de beloning is de waarde die wordt verkregen na het beëindigen van een specifieke activiteit in een bepaalde staat. Een beloning kan plaatsvinden op een willekeurige tijdstap of gewoon op de terminale tijdstap.
Max: np.max() maakt gebruik van de numpy-bibliotheek en neemt de limiet van de dingen die vergoed moeten worden en past deze toe op de beloning voor de huidige staat. Wat dit doet is de huidige activiteit doen wankelen door de denkbare toekomstige beloning. Dit is de grootsheid van q-