Hallo en welkom terug bij de cursus en deep learning nu we neurale netwerken in actie hebben gezien, is
het tijd voor ons om uit te zoeken hoe ze leren.
Dus laten we er meteen op ingaan.
Er zijn twee fundamenteel verschillende benaderingen om een programma te laten doen wat je wilde doen.
Een daarvan is hard gecodeerde codering waarbij je de programmaspecifieke regels vertelt en welke resultaten je wilt en je gewoon de
hele weg begeleidt en je rekenschap geeft van alle mogelijke opties waarmee het programma
te maken heeft.
Aan de andere kant heb je neurale netwerken waar je een.
Faciliteit voor het programma om te kunnen begrijpen wat het uit zichzelf moet doen om dit neurale
netwerk in wezen te creëren waar je input hebt geleverd, je vertelt het wat je wilt als output,
en dan laat je het alles zelf uitzoeken om fundamenteel verschillende benaderingen.
En dat is iets om in gedachten te houden als we door deze materialen gaan.
Ons doel is om dit netwerk te creëren, dat vervolgens vanzelf leert.
We gaan vermijden om te proberen de regels in te voeren.
En een goed voorbeeld dat ik je nu kan geven is dat dit in de cursus nog verder komt.
Maar het is maar een heel visueel voorbeeld.
Hoe maak je bijvoorbeeld onderscheid tussen een hond en een kat vier aan de linkerkant op de nadering
die links is afgebeeld?
Je zou dingen programmeren zoals de oren van de kat zo moeten zijn.
Pas op voor snorharen, pas op voor dit type neus.
Pas op voor dit type gezichtsvorm en let op deze kleuren.
U beschrijft zo'n beetje al deze dingen en u zou omstandigheden hebben zoals als
de oren puntig zijn, dan kat als de oren naar beneden hellen, dan mogelijk hond enzovoort.
Aan de andere kant, voor een neuraal netwerk, noemde je gewoon de neurale netwerken, je noemde de
architectuur, en dan wijs je het neurale netwerk naar een map met al deze katten en honden met afbeeldingen van katten
en honden die al gecategoriseerd zijn.
En jij zegt het, oké, ik heb je.
Ik heb wat afbeeldingen van katten en honden.
Ga en leer wat een kat is.
Ga en leer wat een hond is.
En het neurale netwerk zal op zichzelf alles begrijpen wat het moet begrijpen en dan verder naar beneden, als het eenmaal is getraind,
wanneer je het een nieuw beeld geeft van een kat of een hond, zal het kunnen begrijpen wat het
was.
Dus ze zijn er.
Zij zijn.
Dat zijn de twee fundamenteel verschillende benaderingen.
En vandaag gaan we langzaam beginnen in te zien hoe die tweede benadering werkt.
Oke.
Dus laten we hier meteen naar toe gaan.
We hebben een heel basaal neuraal netwerk met één laag.
Wordt dit een enkellaags feedforward neuraal netwerk genoemd?
En het wordt ook wel een Perceptron genoemd.
Nu, voordat we verder gaan, is een ding dat we moeten aanpassen, die uitvoerwaarde.
Op dit moment kun je zien dat het gewoon een manier is waarop we een Y-hoed moeten plaatsen.
En de reden daarvoor is dat Y meestal staat voor de werkelijke waarde, en dat is wat we gaan gebruiken.
Dus waarom zal de werkelijke waarde zijn die we in werkelijkheid zien?
Uitvoerwaarde is de voorspelde waarde door het algoritme, door het neurale netwerk.
Waarom?
Dat is de outputwaarde, eigenlijk is dat de benaming voor de outputwaarde.
En de Perceptron werd voor het eerst uitgevonden in 1957 door Frank Rosenblatt, en zijn hele idee was
om iets te creëren dat zichzelf kan leren en aanpassen.
En dit is waar we nu naar gaan kijken.
Dus we hebben onze Perceptron.
Laten we eens kijken hoe Perceptron leert.
Dus laten we zeggen dat we enkele invoerwaarden hebben die aan de Perceptron en of eigenlijk aan ons neurale netwerk
zijn geleverd.
Vervolgens wordt de activeringsfunctie toegepast.
We hebben een output en nu gaan we de output in een grafiek plotten.
Dus daar is het, onze output die we hadden.
Wat we nu moeten doen, is om te kunnen leren, we moeten de uitvoerwaarde vergelijken met
de werkelijke waarde die we willen dat het neurale netwerk krijgt.
Rechts.
En dat is de wat-waarde y.
Dus als we het hier plotten, zul je zien dat er een klein verschil is.
Nu gaan we een functie berekenen die de kostenfunctie wordt genoemd en wordt berekend als de helft van het
verschil van het gekwadrateerde verschil tussen de werkelijke waarde en de uitvoerwaarde.
Nu zijn er veel manieren waarop u de kostenfunctie kunt bedenken.
Er zijn veel verschillende kostenfuncties die u kunt gebruiken.
Dit is waarschijnlijk de meest gebruikte kostenfunctie en waarom we juist deze functie gebruiken.
We komen er verderop achter als we het hebben over een gradiëntafdaling.
Maar voor nu, wie is het ermee eens dat dit de kostenfunctie is en wat
de kostenfunctie ons eigenlijk vertelt, is wat de fout is die je hebt in je voorspelling?
En ons doel is om de kostenfunctie te minimaliseren, want hoe lager de kostenfunctie, hoe dichter we
bij Y waren.
Oké, dus zolang we het daarover eens zijn, laten we doorgaan.
Dus wat er vanaf hier gebeurt, is dat er een kostenfunctie is en vanaf
hier wat er gebeurt, gaan we nu, als we eenmaal hebben vergeleken, deze informatie terugvoeren naar het neurale netwerk.
Dus daar gaan we.
Daar gaat de informatie terug naar het neurale netwerk en het gaat naar de gewichten en de gewichten
worden bijgewerkt.
Kortom, het enige waar we controle over hebben in dit zeer eenvoudige neurale netwerk, hoe
dan ook, het is één W2 helemaal naar W en ons doel is om de kostenfunctie te minimaliseren, zodat we alleen het gewicht kunnen
bijwerken.
Dus we werken de gewichten bij en tweaken ze een beetje en hoe we precies zullen ontdekken voor de Don.
Maar voor nu zijn we het erover eens dat we hebben.
De gewichten en dan gaan we verder.
Maar hier heb ik deze schermafbeelding van de gegevens geplaatst om één punt heel duidelijk te maken, dat op dit moment, tijdens dit
hele experiment, alles wat we nu doen, we te maken hebben met slechts die
ene rol.
We hebben dus te maken met een dataset van één rol waarbij we bijvoorbeeld te maken hebben
met hoe lang je studeert.
Net als de variabele die ze voorspelden, is wat voor resultaten je op een examen zult krijgen.
En de afhankelijke, onafhankelijke variabelen die we hebben is voor hoeveel uur heb je gestudeerd?
Hoeveel uur heb je geslapen en wat heb je halverwege het semester op de quiz gekregen?
Dus halverwege het semester is er een quiz.
Hoeveel procent heb je daar gehaald?
Dus op basis van die variabelen proberen we te voorspellen welke score je krijgt voor het examen en examen, de
93 procent, dat is de werkelijke waarde.
Dus dat is waarom.
Dus voeren we deze drie waarden nu voor de tweede keer weer in ons neurale netwerk.
En dan gaan we de resultaten vergelijken met waarom.
Dus laten we eens kijken hoe dit werkt.
We voeren deze waarden in het neurale netwerk.
Alles wordt aangepast en gewichten worden aangepast.
Dus zoals je kunt zien, dit is, nogmaals, we gaan de waarden opnieuw voeden.
Het punt hier is dat we dezelfde waarden invoeren.
We hebben dus maar één rol.
We proberen om op één rij te trainen.
Dit komt omdat dit slechts een heel eenvoudig, eenvoudig voorbeeld is.
Dan zien we wel wat er gebeurt als er meer is.
Dus nogmaals, we voeden deze rollen in onze kostenfunctie, worden aangepast.
Zoals je kunt zien, gebeurt alles weer in die richting.
Dus zoals je kunt zien, verandert Alinejad elke keer dat ons hart verandert omdat we de gewichten hebben aangepast.
Onze kostenfunctie verandert.
Laten we nog eens kijken.
Die voeren we dus in.
We hadden een wijziging in de kosten.
Functie verandert.
We krijgen informatie terug, koppelen terug naar de gewichten zodat de gewichten weer aangepast worden.
We voeren elke keer dezelfde waarden in als alles wordt aangepast, gaat terug naar de
gewichten en nog een keer feed-in, OK, en nog een keer.
Dus we hebben het gewicht aangepast, de gewichten aangepast die we in de informatie invoeren.
Aha.
En daar gaan we.
Dus dit keer is het gewicht gelijk aan waarom functioneel nul.
Meestal krijgt u geen kostenfunctie die gelijk is aan nul.
Maar dit is een heel eenvoudig voorbeeld.
Dus hopelijk was dat allemaal logisch elke keer dat we precies dezelfde rol spelen, want in dit
geval hebben we alleen te maken met die ene rij in ons neurale netwerk waar de gewichten de waarden
vermenigvuldigen.
Is de activeringsfunctie trouwens zoals toegepast?
We snappen waarom we dit hadden in vergelijking met waarom?
Dan zien we hoe de kostenfunctie is veranderd.
Feedback op de feed die informatie terug in het neurale netwerk en de gewichten gewoon weer aanpassen
en dan herhalen we hetzelfde proces opnieuw met dezelfde exacte rol.
We proberen die kostenfunctie te minimaliseren.
Dus tot nu toe hadden we te maken met slechts die ene rol.
Laten we eens kijken wat er gebeurt als je meerdere rollen hebt.
Dus hier is de volledige dataset.
We hebben acht rijen met hoeveel uur je hebt geslapen of misschien zijn dit verschillende studenten die hetzelfde examen afleggen, hoeveel andere
uren er is bestudeerd, hoeveel uur ze slapen voor het examen, wat te krijgen op
de quiz en hun eindresultaat op de test .
En zoals je hier aan de linkerkant kunt zien, heb ik acht van deze waarnemingen.
Eigenlijk zijn ze allemaal hetzelfde.
Perceptron.
Dit is dus ook belangrijk.
Ik begrijp.
Ik heb het gewoon vermenigvuldigd of acht keer gedupliceerd, zodat we dat kunnen conceptualiseren.
Maar het belangrijkste hier is hetzelfde neurale netwerk.
We gaan deze invoeren in hetzelfde neurale netwerk.
Dus laten we gaan.
Laten we beginnen.
Dus één tijdperk, zoals je Hadland zult horen zeggen, één tijdperk is wanneer we onze hele dataset doornemen
en we ons neurale netwerk trainen op al deze rollen.
Dus laten we gaan.
Laten we beginnen.
Dus daar is onze eerste rij en daar hadden we voor de eerste rij.
Er is een tweede rij, er is er een die ik had voor de tweede rij.
Dus nogmaals, het is elke keer in hetzelfde neurale netwerk ingevoerd.
Ik heb ze zojuist meerdere keren gekopieerd, zodat we visueel kunnen zien hoe dit gebeurt.
Dan gebeurt het weer.
Dat is de derde rij.
Vierde rij.
Er is onze weg vooruit voor de vierde rij, enzovoort.
Kortom, dan krijgen we dezelfde waarden voor de resterende vier uur.
Dus elke keer dat we ons op een rij voelen in ons neurale netwerk, krijgen we een waarde.
Dan vergelijken we met de werkelijke waarde.
Er zijn dus de werkelijke waarden.
Dus voor elke rij hebben we een werkelijke waarde.
En nu gebaseerd op al deze verschillen tussen witte hoeden en waarom we de kostenfunctie
kunnen berekenen, wat de som is van al die kwadratische verschillen tussen witte hoeden en wit, en dat alles wordt
gehalveerd.
En daar is onze kostenfunctie.
En wat we eigenlijk doen nadat we de volledige kostenfunctie hebben, we gaan terug en we werken de gewichten bij,
we werken een, twee, drie bij.
En het belangrijkste om te onthouden is dat al deze Perceptron, al deze neurale netwerken eigenlijk één
neuraal netwerk zijn.
Het zijn er dus geen acht.
Er is er maar één.
En als we de gewichten bijwerken, gaan we de gewichten in dat ene neurale netwerk bijwerken.
Dus in principe zullen de gewichten hetzelfde zijn voor alle rijen.
Het is dus niet zo dat elke rij zijn eigen gewichten heeft?
Nee, alle rijen delen de gewichten.
Daarom hebben we gekeken naar de kostenfunctie, de som van de kwadratische verschillen.
En toen hebben we de gewichten bijgewerkt.
En nu vanaf hier was dat slechts één iteratie.
Vervolgens gaan we dit hele ding opnieuw uitvoeren.
We gaan elke rij in het neurale netwerk invoeren, onze kostenfunctie uitzoeken en dit hele proces
opnieuw doen.
Dus net zoals we eerder zagen waar we maar één rij hadden en we alles opnieuw en opnieuw deden, opnieuw,
opnieuw.
Hetzelfde hier.
Maar nu gaan we het doen Phaedrus of 800 honderd- of achtduizend rijen, hoeveel rijen je ook
in je dataset hebt, je doet dit proces en dan bereken je de kostenfunctie.
En het doel hier is om de kostenfunctie te minimaliseren en om zodra je het minimum van de kostenfunctie
hebt gevonden, dat is je uiteindelijke neurale netwerk.
Dat betekent dat uw gewichten zijn aangepast en dat u de optimale gewichten hebt gevonden voor deze dataset waarop u uw training uitvoert en dat u klaar bent
om door te gaan naar de testfase of naar de toepassingsfase.
En dit hele proces wordt terugpropagatie genoemd, dus wat extra lezing die je misschien wilt doen
voor de kostenfunctie, en ik weet dat we het er net over hadden en er zijn veel verschillende.
Een goed artikel staat op Cross Validated.
Het wordt een lijst met kostenfuncties genoemd die naast toepassingen in neurale netwerken worden gebruikt.
Dus de URL's daar.
Maar je kunt gewoon Googlen voor die exacte zoekterm of een zoekterm en je zult zien dat deze de eerste
is die opduikt.
Het heeft eigenlijk een aantal goede voorbeelden en toepassings- of use-cases voor verschillende kostenfuncties.
Dus als je meer wilt weten over kostenfuncties, bekijk dan dit artikel.
En wat dat betreft, ik hoop dat je genoten hebt van de kleermakerij van vandaag.
Ik kijk ernaar uit om je de volgende keer te zien.
Geniet tot die tijd van deep learning.