Hallo en welkom terug bij de cursus over Deep Learning vandaag, we hebben het over
Max pooling en er komen een aantal zeer opwindende dia's aan en zelfs een speciale verrassing helemaal aan het einde van de tutorial.
Dus laten we beginnen.
De eerste vraag is: wat is pooling en waarom hebben we het nodig?
Om die vraag te beantwoorden, laten we eens kijken naar deze afbeeldingen op deze drie afbeeldingen.
We hebben een jachtluipaard.
In feite is het exact dezelfde cheeta op de eerste afbeelding.
De afbeelding is goed gepositioneerd en de cheeta kijkt je recht aan op de tweede afbeelding.
Het is een beetje gedraaid en de derde afbeelding is een beetje platgedrukt.
Het punt hier is dat we willen dat het neurale netwerk de cheeta in elk van deze afbeeldingen
kan herkennen.
In feite is dit slechts één cheeta.
Wat als we veel verschillende cheeta's hebben?
Hier is een jachtluipaard.
Hier is nog een jachtluipaard, zijn ashira, zijn jachtluipaard, en hier is een jachtluipaard.
En we willen dat het neurale netwerk al die jaren als scheerders herkent.
En hoe kan het dat doen als ze allemaal in verschillende richtingen kijken?
Ze bevinden zich allemaal in verschillende delen van de afbeelding.
Het is alsof hun gezichten zich in verschillende delen van de afbeelding bevinden.
Iemand aan de rechterkant, iemand in de linkerhoek, iemand in het midden, ze zijn allemaal
een beetje anders.
De textuur is een beetje anders.
De verlichting is wat anders.
Er zijn veel kleine verschillen.
En als het neurale netwerk bijvoorbeeld naar precies een bepaald kenmerk zoekt, is een onderscheidend kenmerk
van de cheeta de tranen die op zijn gezicht uit de ogen of de sjiieten komen, de schaduwen die op tranen lijken, de
textuur van het patroon dat gaat van zijn ogen naar beneden.
Het zit aan de zijkanten van zijn neus.
Het lijken tranen.
Dat is een onderscheidend kenmerk van de cheeta.
Maar als het op zoek is naar dat kenmerk, dat het leert van bepaalde cheeta's op een exacte locatie of een exacte
vorm of vorm of textuur, zal het deze andere cheeta's nooit vinden.
We moeten er dus voor zorgen dat ons neurale netwerk een zogenaamde ruimtelijke invariantie heeft, wat betekent
dat het niet uitmaakt waar de kenmerken zich bevinden.
Niet zozeer in welk deel van de afbeelding, want daar hebben we een beetje rekening mee gehouden met
onze kaart, met onze armen, met onze convolutionele daar.
Maar het maakt niet uit of de features een beetje gekanteld zijn, als de features een beetje anders
van structuur zijn, als de features wat dichterbij zijn, features wat verder uit elkaar staan ten opzichte van elkaar.
Dus als de functie zelf een beetje vervormd is, moet ons neurale netwerk een zekere mate van flexibiliteit hebben om die
functie nog steeds te kunnen vinden.
En dat is waar poolen om draait.
Laten we dus eens kijken hoe pooling werkt.
Hier is onze functiekaart.
Dus we hebben onze convolutie al gedaan en we hebben dat deel voltooid en nu werken we met de convolutie daar.
Nu gaan we pooling toepassen.
Dus hoe werkt het?
We gaan max pooling toepassen.
Er zijn verschillende soorten politieke spelers, gemiddelde pooling, maximale pooling, wat pooling.
En die zullen we tegen het einde van de citral becommentariëren.
Maar voor nu passen we alleen max pooling toe.
Dus we nemen zo'n doos van twee bij twee pixels.
En nogmaals, het hoeft niet twee aan twee te zijn.
U kunt elk formaat doos kiezen.
En nogmaals, we zullen daar commentaar op geven in de richting van een redactioneel commentaar en je plaatst het in de
linkerbovenhoek en je vindt de maximale waarde in dat vak.
En dan noteer je alleen die waarde en negeer je de andere drie.
Dus in je box heb je vier waarden.
Je negeert er drie, je houdt er maar één van het maximum, dat is in dit geval één.
Dan verplaats je je box een stap naar rechts.
Je selecteert de pas nogmaals.
Dus hier selecteren we een straight van twee en dat is wat je normaal gesproken selecteert.
U kunt een rechte kiezen, u kunt selecteren.
Er zijn dus overlappende dozen.
Je kunt elke soort zwerver selecteren die je leuk vindt, zelfs drie als je wilt.
Maar we selecteren hier Australië van twee en dat is wat vaak wordt gebruikt.
En dan herhaal je het proces herhalen.
Je hebt hier het maximum genoteerd.
Als je oversteekt en het maakt niet uit, ga je gewoon door met waar je mee bezig bent.
Hier noteer je dus nog steeds het maximum.
Nul hier.
Het maximum was hier vier.
Het maximum was tot hier.
Het maximum was één nul één nul twee en toen één.
Dus zoals je kunt zien, zijn er een paar dingen gebeurd.
Allereerst hebben we de kenmerken toch goed kunnen behouden.
Tot de maximale aantallen die ze vertegenwoordigen omdat we weten hoe de convolutionele ER werkt.
We weten dat de maximale of de grote getallen in uw functiekaart aangeven waar u
de meeste overeenkomst met een functie hebt gevonden.
Maar door deze functies vervolgens te bundelen, zijn we in de eerste plaats 75 procent van de informatie kwijt.
Dat is niet de functie, en dat zijn niet de belangrijkste dingen waar we naar uitkijken, omdat we drie van
de vier pixels buiten beschouwing laten.
Dus we houden maar vijfentwintig procent.
En dan ook nog omdat we het maximum nemen van de pixels die we of de waarden die we hebben.
We houden dus rekening met eventuele verstoringen.
Dus bijvoorbeeld twee afbeeldingen waarin bijvoorbeeld de tranen van de bedrieger op de ogen in één afbeelding staan, een beetje naar links of een beetje naar links gedraaid en nog een,
ze zijn een beetje en er zijn hoe ze zouden moeten zijn of hoe we
het leuk vinden als we de ene als basis nemen en dan de andere, ze zijn --
naar links draaien.
De gepoolde functie zal precies hetzelfde zijn.
Dus je kunt hier zien, als we het hebben over de tranen van de bedrieger, laten we zeggen dat dit de vier is en
dit is waar het hier was, dan als het een beetje gedraaid was.
Zo kwamen de vier bijvoorbeeld hier terecht.
Als we de pooling doen, krijgen we nog steeds dezelfde pull-functiekaart.
En dat is een beetje het principe erachter.
Het is een heel grove uitleg.
Nogmaals, intuïtieve verklaring, maar dat is het punt van trekken dat we nog steeds
in staat zijn om de functies te behouden en bovendien rekening te houden met hun mogelijke ruimtelijke of textuur- of andere soorten vervormingen.
En naast dat alles verkleinen we de omvang.
Er is dus nog een voordeel.
Dus we hebben de functies behouden.
We introduceren ruimtelijke invariantie.
We verkleinen de omvang met 75 procent, wat enorm is, wat ons echt gaat helpen op het gebied van
verwerking.
Een ander voordeel van pooling is dat we het aantal parameters verminderen.
Dus we verminderen weer met 75 procent.
We verminderen het aantal parameters dat naar onze laatste lagen van het neurale
netwerk gaat en daarom voorkomen we overfitting.
Het is een heel belangrijk voordeel van pooling dat we informatie verwijderen en dat is een goede zaak.
Dat is maar goed ook, want op die manier kan ons model die informatie niet overfitten, vooral omdat die informatie
dat niet is.
En onthoud, zoals in het allereerste begin waar we het over hadden, zelfs voor mensen als mensen,
is het belangrijk om precies de kenmerken te zien in plaats van al dat andere geluid dat in onze ogen komt.
Hetzelfde geldt voor neurale netwerken door de onnodige, niet belangrijke informatie te negeren die we
helpen bij het voorkomen van overfitting.
Dus daar gaan we.
Dat is waar pooling over gaat.
En de vraag is natuurlijk waarom WiMAX-pooling?
Rechts.
Er zijn veel verschillende soorten poolen.
En je weet waarom we door twee worden berecht.
Waarom een grootte van twee bij twee pixels, veel van al deze dingen.
En wat dat betreft wil ik u kennis laten maken met dit mooie onderzoeksartikel genaamd Evaluation of Pooling
Operations in Convolutional Architectures for Object Recognition door Dominic Ashara van de Universiteit van Bonn.
Daar is de link.
En het mooie van dit papier is dat het heel, heel eenvoudig, heel duidelijk is.
Dus als je nog nooit een onderzoekspaper hebt gelezen die je graag eens zou willen proberen, dan is dit een geweldige plek
om te beginnen.
Het is erg kort.
Slechts 10 pagina's, zeer gemakkelijk te lezen.
En plus, het extra voordeel is dat nu we convolutie en pooling hebben besproken, je helemaal op je gemak zult
zijn met alles waar ze het over hebben in dit artikel.
En jij, dit is een geweldige manier om je kennis daadwerkelijk te versterken.
Dus ik raad je ten zeerste aan om dit papier te lezen.
Ik neem 20 minuten om het te lezen en je kunt zelfs deel twee overslaan, dat gerelateerd werk wordt genoemd.
Als het een beetje vergezocht of vervreemdend aanvoelt, lees dan niet dat deel rechtstreeks van Padawan naar deel
drie gaat.
En het enige dat u over dit artikel moet weten, is dat ze praten over een concept dat subsampling wordt genoemd.
Will sub-sampling is in feite een gemiddelde pooling.
Dus onthoud hoe we hier aan het praten waren, we namen het maximale.
Dus in ons vierkant namen we de maximale waarde.
Er is een concept dat gemiddelde pooling of wat pooling wordt genoemd, wat pooling omdat je slechts enkele van deze
waarden de gemiddelde pooling of gemiddelde pooling verhoogt.
Je haalt de gemiddelde waarde uit al deze en subsamples is een soort generalisatie van mean
pooling.
Het is een meer algemene benadering om het gemiddelde van deze waarden te nemen.
En je kunt er wat meer over lezen in de krant, maar beschouw het anders maar als gemiddelde pooling als
je die krant leest.
En dus kunt u daar wat aanvullende informatie over dit onderwerp krijgen.
En laten we nu een beetje samenvatten hoe we erin zijn beland.
Dus daar is onze invoerafbeelding.
Toen pasten we de convolutiebewerking toe en daar kregen we de convolutie.
En nu naar elk van die functiekaarten die we krijgen.
Daar hebben we de pooling toegepast.
Dus we hebben deze twee stappen gedaan, convolutie en pooling.
En nu gaan we iets heel leuks doen, iets spannends.
We gaan hiermee experimenteren.
Dit is dus een screenshot die ik heb gemaakt van een tool gemaakt door Adam Hartley van lang geleden toen hij aan de Ryerson University
of Computer Science zat.
En nu is hij bij Carnegie Mellon, denk ik, bezig met zijn Ph. D. en geweldig hulpmiddel.
Dus laten we openen, laten we eens kijken, zodat je het kunt vinden.
Je kunt het niet echt vinden via Google.
Je moet de Yooralla kennen.
Het is gewoon moeilijk te vinden.
Zijn.
Google, want hier is geen belasting.
Kijk, we zijn gewoon de assistent Ryerson Dossie van dit jaar en dan dit spul daar en eigenlijk is dit precies
wat we doen.
Maar visualiseren.
Dus hier moet je een nummer tekenen.
Dus laten we zeggen dat ik nummer vier trek en deze tool zal het nummer vier hier plaatsen.
Dat is uw afbeelding in onze eerste stap.
Dan is dit de convolutiestap.
Rechts.
En dit is de stap van het poolen.
En ook trekken wordt trouwens ook wel downsampling genoemd.
Dus een downsampling van dezelfde dingen trekken, zodat je de toegepaste convolutie kunt zien, dan is het toegepaste pooling
en kun je zien hoe het precies werkt.
U kunt dus zien wat voor soort windingen het heeft toegepast of wat voor soort filters het heeft toegepast, hoe ze eruit
zien.
Je kunt zien naar welke functies op zoek is en dan is het van toepassing, pooling.
Het wordt dus kleiner.
En je kunt hier zien dat dit belangrijk is.
Rechts?
U kunt dus zien dat dit de betrokken afbeelding is en dat dit de gepoolde afbeelding is.
En je kunt nog steeds dezelfde functies zien.
Het is gewoon minder informatie, maar dezelfde functies.
Rechts.
De kenmerken blijven behouden.
Dat is het belangrijkste.
En bovendien, als, weet je, als ze alle vier een beetje naar de zijkant waren
gedraaid, zou het nog steeds zeer vergelijkbare gepoolde lagen kunnen oppikken.
En daarna heeft het meer lagen.
Daar hebben we het nog niet over gehad.
Dus dan heeft het hier nog een convolutionele, convolutionele laag, die we eigenlijk niet zullen hebben.
En dan heeft het nog een poollaag, maar in feite herhaalt het gewoon hetzelfde proces.
En daarna, dit is waar we het verderop in de cursus over zullen hebben: de volledig
verbonden lagen enzovoort.
Maar daar kun je zeker mee spelen.
Dus als ik verwijder wat je leuk vindt als ik een zeven trek, zul je zien dat het je eigenlijk de gissingen vertelt.
Het gokt dat dit een zeven is.
En de tweede gok, de tweede kans is een drie.
Dus je kunt een aantal uitdagende dingen tekenen en kijken of het ze kan oppakken.
Dus laten we zeggen dat als ik iets teken dat op een nul lijkt, maar het is geen voltooide nul, het dan wordt
opgepakt?
Nee, deze keer niet opgepikt.
Het lijkt op een negen, op de afbeelding.
Wat als ik het leuk vind om zo te eindigen?
Ze denkt nu dat het een nul of een negen is.
En je kunt daar zien wat de nul of de negen oplicht.
Maar we zullen het hebben over dat deel van de dart.
Er is er nog één, laten we zeggen als acht.
Ik denk dat het hier best moeilijk voor is.
Geen acht gehaald.
Dus je kunt zien dat dat in een acht gaat.
En dan, zoals daarna, is het niet meer herkenbaar, het houdt op met logisch te zijn voor ons mensen.
Rechts.
Deze functies waarmee het werkt.
Maar tegelijkertijd erkent het correct dat het een acht is.
Ja.
Speel daar dus zeker mee.
Je kunt een smiley tekenen, kijken wat er dan gebeurt.
Het lijkt op een drie voor deze tool, omdat de tool duidelijk alleen is getraind op cijfers
van nul tot negen, dus het moet iets herkennen.
Er zijn er van en het herkent dat een drie is zoals in het leven wanneer je iets ziet als
een soort fruit dat je nog nooit eerder hebt gezien, zoals een custardappel of zoiets.
En je denkt dat het is alsof het een peer is, omdat je er nog nooit eerder een hebt gezien.
Je weet niet hoe je het moet classificeren.
Hetzelfde hier.
Dus het heeft niet echt getraind op de smileygezichten.
En daarom stinkt het als een boom, als een drie.
Dus ze denken dat het een zeer krachtig, krachtig hulpmiddel is.
Het zal je helpen om ermee te spelen.
Als je met je muis over een pixelpixel gaat, zie je waar de feature-detector was om die pixel op te pikken,
zodat je kunt zien waar deze pixels vandaan komen.
En ook zodat je kunt zien hoe het filter eruitzag alsof het door de afbeelding ging.
Precies hoe we erover spraken, natuurlijk.
En hier kun je zien dat je de pooling kunt zien.
Je kunt zien dat het trekken gebeurt met het trekken met een kleine vierkante maat van twee bij twee.
En je kunt zien dat het ook een rechttoe rechtaan is, net zoals we in de tutorial van vandaag hebben besproken.
Daar ga je dan.
Speel daar eens mee.
En ik hoop dat je genoten hebt van de sessie van vandaag.
Ik kijk ernaar uit om je de volgende keer te zien.
En tot die tijd, geniet van deep learning.