Hallo en welkom bij deze Python-tutorial.
Oké, in deze tutorial gaan we de functie maken die op elk moment de juiste actie
selecteert.
Dus eigenlijk gaan we de onderdelen implementeren die ervoor zorgen dat de kaarten de juiste beweging maken op elk moment
dat naar links, recht of rechts gaat om het doel te bereiken en de obstakels te vermijden.
Dat is de.
Dus laten we dit nu doen.
We beginnen, zoals gewoonlijk, met een dove om een functie te definiëren, en dan geven we een naam aan
onze functie, die we select gaan noemen.
Actie, dan enkele haakjes en deze functie selecteren voor actie hebben twee argumenten nodig, de eerste is zoals gewoonlijk
zelf, om naar het object te verwijzen.
En het tweede argument, dat volgens jou, welk argument zal zijn?
Nou, wat zou het kunnen zijn?
Als je erover nadenkt, komt de actie die we selecteren uit de outputs van het neurale netwerk omdat
de outputs van het neurale netwerk de kernwaarden zijn voor elk van de drie mogelijke acties en
dus de actie die we spelen, de actie die de output van het neurale netwerk hangt
af van de input-status en de input-status is precies het tweede argument dat we nodig hebben voor de select action-functie.
Het is omdat we letterlijk de output van het neurale netwerk gaan nemen.
En natuurlijk is de output van het neurale netwerk direct afhankelijk van de input van het neurale netwerk.
Dus dat wordt een argument.
En nu kunnen we het elke naam geven.
We zullen het eigenlijk toestand noemen omdat de invoer van de neurale netwerken de invoerstatussen zijn die worden
gecodeerd door de vector van vijf dimensies, de drie signalen oriëntatie en minus oriëntatie.
En dus wordt het nu gemakkelijk.
We gaan de invoerstatussen invoeren in het neurale netwerk, degene die we hierboven hebben gebouwd, hier
met de netwerkklasse.
En dan krijgen we de outputs, de belangrijkste waarden voor elk van de drie mogelijke
acties.
En dan met behulp van de softmax-methode, die ik in deze tutorial ga uitleggen, gaan we
de laatste actie spelen.
Dus laten we dit doen.
Laten we naar de functie gaan en dit allemaal implementeren.
Dus het eerste waar we mee moeten beginnen, is wat ik zojuist heb genoemd, softmax.
Het idee van de softmax is dat we gaan proberen om op elk moment de beste actie te spelen.
Maar tegelijkertijd verkennen we de verschillende acties.
En hoe kunnen we dat doen?
Hoe kunnen we de beste actie krijgen om te spelen terwijl we de andere acties nog steeds verkennen?
Welnu, we gebruiken dit idee van softmax, dat bestaat uit het genereren van een kansverdeling voor elk
van de kernwaarden van actie.
We hebben één sleutelwaarde voor elke actie.
Ga naar links, ga rechtdoor of ga naar rechts.
Maar deze waarde is ook afhankelijk van de invoerstatus.
Dat is precies de CU-functie op intuïtie.
Deze functie van de docent is een functie van de staat en de actie.
Dus omdat we hier één invoerstatus hebben, wat de status hier is en drie mogelijke acties, hebben
we drie sleutelwaarden voor actie.
Eén, cue state actie twee en twee toestanden, actie drie.
En we gaan een kansverdeling genereren met betrekking tot deze drie sleutelwaarden.
Dat wil zeggen, we hebben één kans voor de eerste sleutelwaarde, één kans voor de tweede
sleutelwaarde en een derde kans voor het derde kwartaal.
En al deze drie kansen zullen optellen tot één.
En dus gaan we dit allemaal doen met softmax en softmax zal een grote waarschijnlijkheid toekennen aan de
hoogste waarde.
Daarom is een alternatief voor Softmax een simpele amax, je weet wel, die direct het maximum van de Q-waarden
neemt.
Maar in dat geval onderzoeken we de andere acties niet.
Dankzij deze kansen kunnen we ergens anders verkennen met een temperatuurparameter die we heel snel
gaan zien.
We kunnen ze nog steeds verkennen door deze temperatuurparameter te configureren.
Daarom raad ik in het algemeen voor ontharingsmiddelen ten zeerste aan om een softmax te gebruiken in plaats van een eenvoudige amax.
Oké, dus laten we Softmax implementeren.
En daarom, zoals je hebt begrepen, aangezien Softmax de kansen van elk van de drie Q-waarden voor
de drie mogelijke acties retourneert, nou ja, de eerste variabele die we gaan creëren is probs,
uiteraard verwijzend naar deze kansen.
Dus rekwisieten zijn gelijk aan.
En nu gaan we onze softmax-functie nemen.
En waar halen we het volgens jou vandaan?
Nou, natuurlijk, onthoud dat we het daar naartoe hebben geïmporteerd.
En dan de functionele module, die ik eraan herinner, de module is die de meeste acties bevat om een neuraal netwerk
te implementeren.
We hebben het de sneltoets F gegeven en dat is dus eigenlijk van deze functionele module dat we
onze softmax-functie gaan gebruiken.
Maar omdat we het de sneltoets f hebben gegeven, beginnen we hier met een F die functioneel voorstelt,
waarvan we onze softmax-functie nemen.
Hier is het.
Dat is de eerste tussen haakjes.
Oke.
En wat moeten we nu invoeren in de functie van deze Suffolk?
Nou, dat zijn natuurlijk de entiteiten waarvoor we een kansverdeling willen genereren.
En wat zijn deze entiteiten?
Nou, dat zijn natuurlijk de kernwaarden.
Dus nu is de vraag, hoe kunnen we de belangrijkste waarden krijgen?
De kernwaarden zijn natuurlijk de output van het neurale netwerk.
En om deze uitgangen van het neurale netwerk te krijgen.
Nou, daar gaan we.
We moeten ons neurale netwerk nemen.
Maar in feite hebben we het al, want dat is wat het is.
Geïnitialiseerd in de energiefunctie, weet je, we hebben Selvig gemaakt, dat model, dat niets anders is dan ons
normale netwerk omdat het een object is van de netwerkklasse.
En dat is dus perfect.
We kunnen gewoon ons model hier nemen en softmax dit model toepassen op de invoerstatus, wat hier het argument is,
en dat zal de uitvoer retourneren waarnaar we op zoek zijn.
Dat zijn de kernwaarden.
En dus nu je intuïtie, waarom we het model hier moesten nemen om het in de invoerfunctie te introduceren, zou
beter kunnen worden.
Voor degenen onder u die beginnen met objectgeoriënteerd programmeren, u zult zien dat dit allemaal vanzelfsprekend
wordt.
Dus softmax dan.
Dus we nemen ons model zelf dat model, want dit moet het model zijn van het object dat we hier hebben gemaakt.
Maar dan moeten we de uitvoer van ons neurale netwerkmodel krijgen en daarom gaan we hier
een haakje toevoegen waarin we goed gaan invoeren, de invoerstatus genaamd staat hier.
Dus wat we eerst willen doen, is de staat binnengaan, maar nu moeten we ergens voorzichtig mee zijn.
Staat ziet er op dit moment uit als een simpele staat, maar onthoud dat die staat eigenlijk
een fakkel Tenzer zal zijn, want later gaan we deze zeldzamere staat gebruiken om het als het argument van de deselecteer-actiefunctie
te gebruiken.
Het argument van de staat dat hier staat, zal later in feite deze autodidact worden, die staat.
En aangezien dit een fakkel is TANCER Nou, het model zal het accepteren, dus dat is prima.
Maar nu kunnen we het algoritme verbeteren.
Dus als jij als de staat een fakkel Tenzer is en zoals we eerder zeiden, zijn de meeste antwoorden verpakt in een
variabele die ook een verloop zal bevatten.
Dus wat we nu eerst gaan doen, is deze invoerstatus die intenser is, in een toortsvariabele
wikkelen.
Maar aangezien dit de invoerstatus is, zal er geen differentiatie zijn.
We zullen de gradiënt van deze toestand naar variabel niet gebruiken in de berekeningen.
En daarom, wat we nu gaan doen, is dit naar Tensas State omzetten in een fakkelvariabele.
Zoals zo, maar dan om te specificeren dat we niet de gradiënt in de grafiek willen van alle berekeningen van
de energiemodule.
Welnu, we zullen hier een vluchtig gelijk krijgen.
Zodat we nu onze toestand naar Tenzer hebben, erin, naar variabel.
Maar dankzij deze vluchtige is gelijk aan echte parameter.
Welnu, we zullen de gradiënt die is gekoppeld aan deze invoerstatus niet opnemen in de grafiek van alle berekeningen van
de datummodule.
Dus dat is nog een technische truc.
Dit zal ons wat geheugen besparen en dus de prestaties verbeteren.
Dus ik raad het ten zeerste aan om dit te doen.
En nu gaan we iets leukers toevoegen.
Het gaat over deze temperatuurparameter die ik zojuist heb genoemd.
Deze temperatuurparameter is dus de parameter waarmee we kunnen moduleren hoe het neurale
netwerk zeker weet welke actie het moet uitvoeren.
Dus deze temperatuurparameter zal een positief getal zijn, en hoe dichter het bij nul is, hoe minder zeker het neurale netwerk zal
zijn wanneer het in actie speelt.
En hoe hoger de temperatuurparameter is, des te zekerder is het neurale netwerk bij de actie die het besluit
te spelen.
En om deze parameter toe te voegen, ga ik de output, die de kernwaarden zijn, vermenigvuldigen met deze
temperatuurparameter.
Dus laten we bijvoorbeeld beginnen met zeven.
En ik ga hier specificeren dat de kleine opmerking T gelijk is aan zeven.
Dus dat is de temperatuurparameter die ik op zeven stel.
We gaan wat andere proberen.
Maar ik wil gewoon beginnen met een kleintje, want dat ga je zien bij een kleintje.
Onze auto zal zich nog steeds gedragen als een soort insect, maar door de temperatuurparameter te verhogen, zal onze
auto meer op een auto lijken en besluiten te verkopen.
Het rijden zal veel, veel beter zijn.
En dat is dus logisch, want hoe hoger de temperatuurparameter, hoe groter de kans op de
winnende waarde.
Want als we bijvoorbeeld softmax van de kernwaarden hebben, laten we dan een paar simpele getallen nemen.
Een twee drie.
Als softmax van één tot drie bijvoorbeeld gelijk is aan, of punt van vier, komma elf en vier komma vijfentachtig, dan door
de temperatuur te verhogen, weet je, door nu hoge temperatuur te nemen, is de temperatuur gelijk aan
één door een hoge temperatuur te nemen, zoals, bijvoorbeeld twee.
Dus softmax.
Laten we dit kopiëren en vermenigvuldigen met bijvoorbeeld twee of drie softmax van dezelfde waarden, maar vermenigvuldigd met deze
temperatuurparameter van drie.
Welnu, we krijgen zoiets als nul voor de eerste waarde omdat dit een zeer lage waarschijnlijkheid had.
Dus dat is iets rond nul en dan iets heel kleins voor de tweede kans, want dit was nog
steeds een kleine kans.
Dus laten we zeggen, bijvoorbeeld vier komma twee, maar dan de derde kans omdat het de grootste was en
een behoorlijk hoge.
Welnu, door de temperatuur te verhogen, wordt deze kans nog groter, omdat we er nog zekerder
van zullen zijn dat dit de juiste waarde is die overeenkomt met de actie die we moeten spelen.
En daarom wordt dit nu ongeveer vier komma achtennegentig door deze temperatuurparameter te
verhogen.
Welnu, we zijn er nu nog zekerder van dat de derde actie hier de actie moet zijn die moet worden gespeeld,
omdat de kans op de waarde van deze actie niet alleen de grootste is, maar ook erg hoog.
Dat is dus waar deze temperatuurparameter over gaat.
Het gaat om de zekerheid van welke actie we moeten beslissen om te spelen.
Oke.
Ik ga deze reactie dan ook verwijderen.
Dit was gewoon om het uit te leggen.
En laten we nu onze actie ondernemen.
Dus hoe ga je dat doen?
Welnu, het principe van de softmax-methode is niet alleen het genereren van een kansverdeling voor elk van de
sleutelwaarden, maar ook en dat is de tweede stap van de volgende methode.
We nemen een willekeurige trekking uit deze verdeling om onze laatste actie te krijgen.
En natuurlijk hebben we een grote kans om de actie te krijgen die overeenkomt met de sleutelwaarde
met de grootste kans, want dat is precies hoe een verdeling werkt.
Dus daar gaan we.
Laten we onze actie ondernemen.
Dus we gaan een nieuwe regel invoeren die we actie gaan noemen.
En deze actie wordt een willekeurige trekking van de kansverdeling die we zojuist op dit moment eerder hebben
gemaakt.
En hoe krijgen we zo'n willekeurige trekking?
Welnu, we nemen onze rekwisietenwaarschijnlijkheden van elk van de belangrijkste waarden.
We nemen rekwisieten en dan punt en dan gaan we de multi nominale functie gebruiken en dat geeft
ons een willekeurige trekking uit dit distributieproces.
Dus dat is alles wat ons de actie zal geven.
Perfect.
En nu gaan we natuurlijk de actie teruggeven.
Er is een beetje lastiger.
Nou, het is het feit dat deze rekwisieten dat multinomiale rekwisieten de taart naar variabel terugstuurt met een nep-badge, je weet
wel, deze nep-dimensie die overeenkomt met de badge en daarom om het juiste resultaat te krijgen dat we
willen.
Dat is eigenlijk nul één of twee.
We hoeven alleen maar gegevens toe te voegen en dan enkele haakjes en de actie nul één of twee die
we zoeken in de index is nul en nul.
Oke.
En daar gaan we.
Nu hebben we onze actie dankzij deze select action-functie, de A. L. weet nu welke actie elke keer moet
worden gespeeld.
Geweldig.
Dus nu kunnen we doorgaan naar de volgende functie, de LERN-functie, en daar zullen we het
hele neurale netwerk trainen, weet je, met alle voorwaartse voortplanting en dan de achterwaartse voortplanting
met behulp van stochastische gradiëntafdaling.
Nou, eigenlijk zullen we de hele training van het deep learning-model implementeren dat de kern vormt
van onze kunstmatige intelligentie.
Dus ik kan niet wachten om dat te doen.
Dit wordt een spannende tutorial.
En dus zie ik je in de volgende tutorial.
Tot die tijd, geniet van I.