Neural Networks for Dummies: en snabb introduktion till detta fascinerande fält

Har du någonsin undrat vad är alla dessa neurala nätverk som alla pratar om och var för rädda att fråga? Frukta inte mer! I slutet av detta inlägg kommer du att kunna gå in på vilken konferens som helst och blända lunchbordet med dina nyförvärvade buzzwords!

Om du har öppnat din webbläsare under de senaste åren måste du ha sett uttrycket ”Neural Networks” ett par (hundra) gånger.

I den här korta läsningen kommer jag att ge dig lite sammanhang på domänen och på själva saken. Du kommer inte att bli världens expert inom området de närmaste 5 minuterna, men du kommer igenom det icke-triviala ombordsteget. Du kommer också att lära dig några slagord för att imponera på familjen vid middagsbordet, särskilt om du följer läslistan i slutet.

Vad är maskininlärning?

För att förstå neurala nätverk måste vi först förstå maskininlärning. Och för att förstå maskininlärning, låt oss först prata om mänskligt lärande eller "klassisk programmering".

I klassisk programmering måste jag, utvecklaren, förstå aspekterna av det problem jag försöker lösa och att veta exakt vad alla regler är för att göra det till lösningen.

Låt oss till exempel säga att jag vill att mitt program ska känna till skillnaden mellan en kvadrat och en cirkel. Då är ett sätt att hantera det att skriva ett program som kan upptäcka hörn och sedan använda det för att räkna hörnen. Om mitt program ser fyra hörn är den här formen en fyrkant och om den inte ser några hörn är den här formen en cirkel.

Och maskininlärning? Mycket generellt sett är maskininlärning = lärande från exempel.

I maskininlärning, när vi möter exakt samma problem med att skilja mellan cirklar och kvadrater, skulle vi utforma ett inlärningssystem som skulle ta som input många exempel på former och deras klass (kvadrat eller cirkel). Vi hoppas att maskinen själv lär sig de egenskaper som skiljer dem åt.

Och sedan, mina vänner, när maskinen väl har lärt sig alla dessa egenskaper kan jag ge den en ny bild av en cirkel eller en fyrkant, en som den inte har sett tidigare , och den kommer förhoppningsvis att klassificera den korrekt.

Vad är en neuron?

En neuron, i samband med Neural Networks, är ett snyggt namn som smarta människor använder när de är för lustiga att säga funktion . En funktion , inom ramen för matematik och datavetenskap, är ett snyggt namn på något som tar lite input, tillämpar lite logik och matar ut resultatet.

Mer till punkten kan en neuron betraktas som en inlärningsenhet .

Därför måste vi förstå vad som är en inlärningsenhet , i samband med maskininlärning. Då kommer vi också att förstå den mest grundläggande byggstenen i ett neuralt nätverk, som är neuron.

För att illustrera, låt oss säga att jag försöker förstå förhållandet mellan antalet ord i ett blogginlägg och antalet ord som människor faktiskt läser från det blogginlägget. Kom ihåg - vi befinner oss i maskininlärningsdomänen, där vi lär oss av exempel.

Så jag samlar många exempel på ordantal i blogginlägg, betecknade med x , och hur många ord människor faktiskt läser i dessa inlägg, y , och jag antar att det finns något samband mellan dem, betecknat med f .

Tricket är dock att jag bara behöver berätta för maskinen (programmet) vilken typ av förhållande jag förväntar mig (till exempel en rak linje), och maskinen kommer att förstå den faktiska linje den behöver rita.

Vad fick jag här?

Nästa gång jag vill skriva ett blogginlägg som innehåller x ord kan maskinen tillämpa relationen f den hittade och berätta hur många ord jag kan förvänta mig att folk faktiskt läser, y .

Så ett neuralt nätverk är ...

Om en neuron är en funktion, är ett neuralt nätverk ett nätverk av funktioner! Det betyder att vi har många (många många) sådana funktioner, sådana inlärningsenheter och alla deras in- och utgångar är sammanflätade och de matar varandra.

Som designer av detta nätverk är det mitt jobb att svara på några frågor:

  • Hur modellerar jag in- och utgångar ? (till exempel, om ingången är lite text, kan jag modellera den i bokstäver? siffror? vektorer?….)
  • Vilka är funktionerna i varje neuron? (är de linjära? exponentiella? ...)
  • Vad är nätverkets arkitektur ? (det vill säga vilken funktionens utgång är vilken funktionens inmatning?)
  • Vad är motordetJag kan använda för att beskriva mitt nätverk?

När jag väl har svarat på dessa frågor kan jag "visa" nätverket många (många många) exempel på korrekta in- och utgångar, i hopp om att när jag "visar" det en ny exempelingång det aldrig har sett förut, kommer det att veta för att ge rätt resultat.

Hur den här inlärningsprocessen fungerar ligger utanför detta inläggs räckvidd, men för att lära dig mer kan du titta på detta. Du kan också gå till denna vansinnigt coola Neural Network Playground för att få en bättre uppfattning om vad det betyder.

Neural Networks - The Never-ending Story

Eftersom detta fält exploderar bokstavligen är mängden nytt innehåll (och hög kvalitet!) Som kommer ut varje minut omöjligt för någon människa att följa. (OMG tror du att det kommer en tid då människor kan bygga en AI som kommer att kunna hålla reda på mänskliga framsteg inom AI-domänen ??)

När vi kommer in i det här fältet är det första att veta att INGEN vet allt. Så känn dig bekväm där du är, och håll bara nyfiken :)

Därför vill jag att mina sista ord i det här inlägget ska vara en hänvisning till några av mina personliga favoritresurser att lära av:

  • Gal Yona - en av mina favoritbloggare i fältet. Hennes inlägg sträcker sig från hårda tekniska förklaringar till halvfilosofiska recensioner.
  • Siraj Raval - en youtuber med en enorm samling av videor, allt från teoretiska förklaringar till hand-on tutorials, allt super kul också!
  • Christopher Olah - en passionerad och insiktsfull forskare, har en visuellt inbjudande blogg med inlägg från grundläggande begrepp till djupdyk.
  • Mot datavetenskap är den största Medium-publikationen som är specifik för området, och det jag älskar är att redaktörerna är utmärkta kuratorer. När du har några minuter / timmar kvar, gå bara till deras hemsida och börja utforska allt , från praktiska verktyg till djupt algoritmiskt innehåll.