Neurale netwerken en deep learning: de toekomst is nabij. Deep learning voor automatische tekstverwerking

Uit het artikel leer je wat deep learning is. Het artikel bevat ook veel bronnen die u kunt gebruiken om dit gebied onder de knie te krijgen.

In de moderne wereld, van de gezondheidszorg tot de productie, wordt deep learning overal gebruikt. Bedrijven wenden zich tot deze technologie om complexe problemen op te lossen, zoals spraak- en objectherkenning, automatische vertaling, enzovoort.

Eén van de meest indrukwekkende prestaties dit jaar was dat AlphaGo de beste Go-speler ter wereld versloeg. Naast Go hebben machines mensen verslagen in andere spellen: dammen, schaken, reversi en Jeopardy.

Het winnen van een bordspel lijkt misschien niet van toepassing op het oplossen van problemen uit het echte leven, maar dat is helemaal niet waar. Go is ontworpen om onverslaanbaar te zijn door kunstmatige intelligentie. Om dit te doen, zou hij één belangrijk ding voor dit spel moeten leren: menselijke intuïtie. Met behulp van deze ontwikkeling is het nu mogelijk om veel problemen op te lossen die voorheen niet toegankelijk waren voor een computer.

Het is duidelijk dat deep learning nog steeds verre van perfect is, maar het is al bijna commercieel bruikbaar. Deze zelfrijdende auto’s bijvoorbeeld. Bekende bedrijven als Google, Tesla en Uber proberen al autonome auto’s in de straten van de stad te introduceren.

Ford voorspelt een aanzienlijke toename van het aandeel autonome voertuigen in 2021. De Amerikaanse regering is er ook in geslaagd een reeks veiligheidsregels voor hen te ontwikkelen.

Wat is diep leren?

Om deze vraag te beantwoorden, moet je begrijpen hoe het samenwerkt met machine learning, neurale netwerken en kunstmatige intelligentie. Om dit te doen, gebruiken we de visualisatiemethode met concentrische cirkels:

De buitenste cirkel is kunstmatige intelligentie in het algemeen (bijvoorbeeld computers). Iets verder ligt machine learning, en precies in het midden bevinden zich deep learning en kunstmatige neurale netwerken.

Grof gezegd is deep learning simpelweg een handiger naam voor kunstmatige neurale netwerken. ‘Diep’ verwijst in deze zin naar de mate van complexiteit (diepte) van het neurale netwerk, die vaak behoorlijk oppervlakkig kan zijn.

De makers van het eerste neurale netwerk lieten zich inspireren door de structuur van de hersenschors. De basislaag van het netwerk, de perceptron, is in wezen het wiskundige analogon van een biologisch neuron. En net als in de hersenen kunnen perceptrons die elkaar kruisen, in een neuraal netwerk verschijnen.

De eerste laag van het neurale netwerk wordt de invoerlaag genoemd. Elk knooppunt in deze laag ontvangt bepaalde informatie als invoer en verzendt deze naar volgende knooppunten in andere lagen. Meestal zijn er geen verbindingen tussen de knooppunten van één laag en geeft het laatste knooppunt van de keten het resultaat van het neurale netwerk weer.

De knooppunten in het midden worden verborgen knooppunten genoemd omdat ze geen verbindingen hebben met de buitenwereld, zoals de uitvoer- en invoerknooppunten. Ze worden alleen aangeroepen als voorgaande lagen zijn geactiveerd.

Deep learning is in wezen een trainingstechniek voor neurale netwerken die vele lagen gebruikt om complexe problemen (zoals spraakherkenning) op te lossen met behulp van patronen. In de jaren tachtig bestonden de meeste neurale netwerken uit één laag vanwege de hoge kosten en de beperkte datamogelijkheden.

Als we machine learning beschouwen als een tak of variant van kunstmatige intelligentie, dan is deep learning een gespecialiseerd type van zo’n tak.

Machine learning maakt gebruik van computerintelligentie die niet meteen het antwoord biedt. In plaats daarvan zal de code draaien op testgegevens en, op basis van de juistheid van de resultaten, de voortgang aanpassen. Voor het succes van dit proces wordt meestal een verscheidenheid aan technieken, speciale software en computerwetenschappen gebruikt, die statische methoden en lineaire algebra beschrijven.

Diepgaande leermethoden

Methoden voor diepgaand leren zijn onderverdeeld in twee hoofdtypen:

  • Begeleide opleiding
  • Ongecontroleerd leren

De eerste methode maakt gebruik van speciaal geselecteerde gegevens om het gewenste resultaat te bereiken. Het vergt behoorlijk wat menselijk ingrijpen, omdat de data handmatig geselecteerd moeten worden. Het is echter nuttig voor classificatie en regressie.

Stel u voor dat u eigenaar bent van een bedrijf en dat u de impact van bonussen op de looptijd van contracten met uw ondergeschikten wilt bepalen. Met vooraf verzamelde gegevens zou een begeleide leermethode onmisbaar en zeer effectief zijn.

De tweede methode impliceert geen vooraf voorbereide antwoorden en werkalgoritmen. Het doel is om verborgen patronen in data te identificeren. Het wordt doorgaans gebruikt voor cluster- en associatietaken, zoals het groeperen van klanten op gedrag. “Hiermee kiezen ze ook” op Amazon is een variant van de associatietaak.

Hoewel de begeleide leermethode vaak best handig is, is een complexere versie nog steeds beter. Deep learning heeft bewezen een neuraal netwerk te zijn dat geen menselijk toezicht vereist.

Het belang van diep leren

Computers maken al lang gebruik van technologie om bepaalde kenmerken in een afbeelding te herkennen. De resultaten waren echter verre van succesvol. Computervisie heeft een ongelooflijke impact gehad op deep learning. Het zijn deze twee technieken die momenteel alle herkenningsproblemen oplossen.

Facebook is er met name in geslaagd gezichten op foto's te herkennen met behulp van deep learning. Dit is geen simpele verbetering in de technologie, maar een keerpunt dat alle eerdere overtuigingen verandert: “Een persoon kan met een waarschijnlijkheid van 97,53% bepalen of dezelfde persoon op twee verschillende foto's wordt getoond. Het door het Facebook-team ontwikkelde programma kan dit doen met een waarschijnlijkheid van 97,25%, ongeacht de verlichting en of de persoon rechtstreeks in de camera kijkt of er zijwaarts naar toe draait.”

Spraakherkenning heeft ook aanzienlijke veranderingen ondergaan. Het team van Baidu, een van China's toonaangevende zoekmachines, heeft een spraakherkenningssysteem ontwikkeld dat erin is geslaagd mensen te overtreffen in de snelheid en nauwkeurigheid van het schrijven van tekst op mobiele apparaten. In het Engels en Mandarijn.

Wat vooral interessant is, is dat het schrijven van een gemeenschappelijk neuraal netwerk voor twee totaal verschillende talen niet veel werk vergde: “Historisch gezien zagen mensen Chinees en Engels als twee totaal verschillende talen, dus voor elk van hen was een andere benadering nodig”, zegt het hoofd van het onderzoek Baidu Center, Andrew Ng. “Leeralgoritmen zijn nu zo algemeen dat je dat wel kunt Zojuist leren."

Google maakt gebruik van deep learning om de energie in de datacenters van het bedrijf te beheren. Ze konden de kosten voor koelmiddelen met 40% verlagen. Dat is een verbetering van de energie-efficiëntie met ongeveer 15% en een besparing van miljoenen dollars.

Microservices voor diepgaand leren

Hier vindt u een kort overzicht van services die verband houden met deep learning.

Illustratie Tagger. Met deze service, verbeterd door Illustration2Vec, kunt u afbeeldingen markeren met de classificatie “beschermd”, “twijfelachtig”, “gevaarlijk”, “auteursrecht” of “algemeen” om de inhoud van de afbeelding vooraf te begrijpen.

  • Theano-add-on van Google
  • Bewerkbaar in Python en Numpy
  • Vaak gebruikt om een ​​specifiek scala aan problemen op te lossen
  • Niet voor algemeen gebruik. Focus op machinevisie
  • Bewerkt in C++
  • Er is een interface in Python

Online cursussen over diep leren

Google en Udacity hebben samengewerkt om een ​​gratis cursus over deep learning te creëren, onderdeel van de Udacity Machine Learning Course. Dit programma wordt geleid door ervaren ontwikkelaars die zich willen ontwikkelen op het gebied van machine learning en in het bijzonder deep learning.

Een andere populaire optie is de machine learning-cursus van Andrew Ng, ondersteund door Coursera en Stanford.

  1. Machine Learning - Stanford door Andrew Ng op Coursera (2010-2014)
  2. Machine learning - Caltech door Yaser Abu-Mostafa (2012-2014)
  3. Machine Learning - Carnegie Mellon door Tom Mitchell (voorjaar 2011)
  4. Neurale netwerken voor machinaal leren – Geoffrey Hinton op Coursera (2012)
  5. Neurale netwerken klasse– Hugo Larochelle van de Université de Sherbrooke (2013)

Boeken over diep leren

Hoewel de bronnen in de vorige sectie voortbouwen op een vrij uitgebreide kennisbasis, is Grokking Deep Learning daarentegen gericht op beginners. Zoals de auteurs zeggen: "Als je groep 11 hebt afgerond en een globaal begrip hebt van hoe je Python moet schrijven, zullen we je diepgaand leren leren."

Een populair alternatief voor dit boek is een boek met de voor zichzelf sprekende titel Deep Learning Book. Het is vooral goed omdat het alle wiskunde omvat die je nodig hebt om op dit gebied te komen.

  1. "Deep Learning" door Yoshua Bengio, Ian Goodfellow en Aaron Courville (2015)
  2. “Neurale netwerken en diep leren” door Michael Nielsen (2014)
  3. "Deep Learning" van Microsoft Research (2013)
  4. “Deep Learning Tutorials” van LISA Laboratory, Universiteit van Montreal (2015)
  5. “neuraltalk” door Andrej Karpathy
  6. "Inleiding tot genetische algoritmen"
  7. "Moderne benadering van kunstmatige intelligentie"
  8. "Overzicht van deep learning en neurale netwerken"

Video's en lezingen

Deep Learning Simplified is een prachtig YouTube-kanaal. Hier is hun eerste video:

"(Manning-publicaties).

Dit artikel is bedoeld voor mensen die al aanzienlijke ervaring hebben met deep learning (bijvoorbeeld degenen die de hoofdstukken 1-8 van dit boek al hebben gelezen). Er wordt een grote hoeveelheid kennis verondersteld.

Diep leren: geometrische weergave

Het meest verbazingwekkende aan deep learning is hoe eenvoudig het is. Tien jaar geleden had niemand zich kunnen voorstellen welke verbazingwekkende resultaten we zouden bereiken op het gebied van machineperceptieproblemen met behulp van eenvoudige parametrische modellen die waren getraind met gradiëntafdaling. Nu blijkt dat alles wat we nodig hebben is groot genoeg parametrische modellen waarop getraind is groot genoeg aantal monsters. Zoals Feynman ooit zei over het heelal: “ Het is niet ingewikkeld, er is gewoon veel van».

Bij deep learning is alles een vector, d.w.z. punt V geometrische ruimte. De invoergegevens van het model (dit kunnen tekst, afbeeldingen, etc. zijn) en de doelen ervan worden eerst “gevectoriseerd”, dat wil zeggen vertaald naar een initiële vectorruimte als invoer en een doelvectorruimte als uitvoer. Elke laag in een deep learning-model voert één eenvoudige geometrische transformatie uit op de gegevens die er doorheen gaan. Samen creëert de keten van modellagen één zeer complexe geometrische transformatie, opgesplitst in een aantal eenvoudige. Deze complexe transformatie probeert voor elk punt de invoergegevensruimte te transformeren in de doelruimte. De transformatieparameters worden bepaald door de laaggewichten, die voortdurend worden bijgewerkt op basis van hoe goed het model op dat moment presteert. Het belangrijkste kenmerk van een geometrische transformatie is dat dit zo moet zijn differentieerbaar, dat wil zeggen dat we de parameters ervan moeten kunnen achterhalen via gradiëntafdaling. Intuïtief betekent dit dat geometrische morphing vloeiend en continu moet zijn – een belangrijke beperking.

Het hele proces van het toepassen van deze complexe geometrische transformatie op de invoergegevens kan in 3D worden gevisualiseerd door een persoon af te beelden die een papieren bal probeert uit te pakken: de verfrommelde papieren bal is de verscheidenheid aan invoergegevens waarmee het model begint te werken. Elke beweging van een persoon met een papieren bal is als een eenvoudige geometrische transformatie uitgevoerd door een enkele laag. De volledige reeks ontvouwende gebaren is een complexe transformatie van het hele model. Deep learning-modellen zijn wiskundige machines voor het ontrafelen van de ingewikkelde verscheidenheid aan multidimensionale gegevens.

Dat is de magie van deep learning: waarde omzetten in vectoren, in geometrische ruimtes, en dan geleidelijk complexe geometrische transformaties leren die de ene ruimte in de andere transformeren. Het enige dat nodig is, is een ruimte met voldoende grote afmetingen om het volledige scala aan relaties uit de oorspronkelijke gegevens over te brengen.

Beperkingen van diep leren

De reeks problemen die met deze eenvoudige strategie kunnen worden opgelost, is vrijwel eindeloos. En toch liggen veel ervan nog steeds buiten het bereik van de huidige deep learning-technieken, ook al is er een enorme hoeveelheid handmatig geannoteerde gegevens beschikbaar. Laten we bijvoorbeeld zeggen dat u een dataset kunt verzamelen van honderdduizenden – zelfs miljoenen – Engelstalige beschrijvingen van softwarefuncties, geschreven door productmanagers, evenals het overeenkomstige referentiejaar dat is ontwikkeld door teams van ingenieurs om aan die vereisten te voldoen. Zelfs met deze gegevens kun je een deep learning-model niet trainen om simpelweg een productbeschrijving te lezen en de bijbehorende codebase te genereren. Dit is slechts een van de vele voorbeelden. Over het algemeen valt alles wat redenering vereist – zoals programmeren of het toepassen van de wetenschappelijke methode, langetermijnplanning, gegevensmanipulatie in algoritmische stijl – buiten de mogelijkheden van deep learning-modellen, ongeacht hoeveel gegevens je er ook naartoe gooit. Zelfs het trainen van een neuraal netwerk om een ​​sorteeralgoritme uit te voeren is een ongelooflijk moeilijke taak.

De reden is dat het deep learning-model ‘slechts’ een keten van eenvoudige, continue geometrische transformaties, die de ene vectorruimte in de andere transformeren. Het enige wat het kan doen is de ene set gegevens X transformeren in een andere set Y, op voorwaarde dat er een mogelijke continue transformatie van X naar Y mogelijk is die kan worden geleerd, en de beschikbaarheid dichte reeks monsters X:Y-transformaties als trainingsgegevens. Dus hoewel een deep learning-model als een soort programma kan worden beschouwd, de meeste programma's kunnen niet worden uitgedrukt als deep learning-modellen- voor de meeste problemen is er óf geen diep neuraal netwerk van praktisch geschikte omvang dat het probleem oplost, óf als dat er wel is, kan dat zo zijn onleerbaar Dat wil zeggen dat de overeenkomstige geometrische transformatie mogelijk te complex is, of dat er geen geschikte gegevens zijn om deze te trainen.

Het opschalen van bestaande deep learning-technieken – door meer lagen toe te voegen en meer trainingsgegevens te gebruiken – kan een aantal van deze problemen slechts oppervlakkig verzachten. Het zal het meer fundamentele probleem niet oplossen dat deep learning-modellen zeer beperkt zijn in wat ze kunnen vertegenwoordigen, en dat de meeste programma's niet kunnen worden uitgedrukt als een continue geometrische morphing van dataspruitstukken.

Het risico van het antropomorfiseren van machine learning-modellen

Een van de zeer reële risico’s van moderne AI is het verkeerd interpreteren van de werking van deep learning-modellen en het overdrijven van hun mogelijkheden. Een fundamenteel kenmerk van de menselijke geest is het ‘model van de menselijke psyche’, onze neiging om doelen, overtuigingen en kennis te projecteren op de dingen om ons heen. Een tekening van een lachend gezicht op een steen maakt ons ineens ‘gelukkig’ – mentaal. Wanneer we dit toepassen op deep learning betekent dit bijvoorbeeld dat als we een model min of meer succesvol kunnen trainen om tekstbeschrijvingen van afbeeldingen te genereren, we geneigd zijn te denken dat het model de inhoud van de afbeeldingen ‘begrijpt’, evenals de inhoud van de afbeeldingen. de gegenereerde beschrijvingen. We zijn dan enorm verrast wanneer het model, als gevolg van een kleine afwijking van de reeks afbeeldingen die in de trainingsgegevens worden gepresenteerd, absoluut absurde beschrijvingen begint te genereren.

Dit komt met name het duidelijkst naar voren in ‘tegenstrijdige voorbeelden’, dit zijn voorbeelden van inputgegevens van deep learning-netwerken die specifiek zijn geselecteerd om verkeerd te worden geclassificeerd. Je weet al dat je een gradiëntstijging kunt uitvoeren op de invoergegevensruimte om monsters te genereren die de activering van bijvoorbeeld een bepaald convolutioneel neuraal netwerkfilter maximaliseren - dit is de basis van de visualisatietechniek die we in hoofdstuk 5 hebben besproken (opmerking: boeken "Deep Learning with Python") , net als het Deep Dream-algoritme uit hoofdstuk 8. Op een vergelijkbare manier kun je door gradiëntstijging het beeld enigszins wijzigen om de klassenvoorspelling voor een bepaalde klasse te maximaliseren. Als we een foto van een panda maken en een 'gibbon'-gradiënt toevoegen, kunnen we het neurale netwerk dwingen die panda als een gibbon te classificeren. Dit toont zowel de kwetsbaarheid van deze modellen aan als het diepgaande verschil tussen de input-naar-output-transformatie die ze begeleidt en onze eigen menselijke percepties.

Over het algemeen hebben deep learning-modellen geen inzicht in de invoergegevens, althans niet in menselijke zin. Ons eigen begrip van beelden, geluiden en taal is gebaseerd op onze sensorimotorische ervaring als mensen - als materiële aardse wezens. Machine learning-modellen hebben geen toegang tot dergelijke ervaringen en kunnen onze invoergegevens daarom niet op een mensachtige manier ‘begrijpen’. Door een groot aantal voorbeelden te annoteren zodat onze modellen kunnen trainen, dwingen we ze een geometrische transformatie te leren die de gegevens reduceert tot menselijke concepten voor die specifieke reeks voorbeelden, maar deze transformatie is slechts een vereenvoudigde schets van het oorspronkelijke model van onze geest , zoals ontwikkeld vanuit onze ervaring, aangezien lichamelijke agenten als een zwakke weerspiegeling in een spiegel zijn.

Houd dit als beoefenaar van machine learning altijd in gedachten en trap nooit in de val door te geloven dat neurale netwerken de taak begrijpen die ze uitvoeren - dat doen ze niet, althans niet op een manier die voor ons logisch is. Ze zijn getraind in een andere, veel specifiekere taak dan waarvoor we ze willen trainen: het simpelweg transformeren van input-leerpatronen in doelgerichte leerpatronen, van punt tot punt. Laat ze alles zien wat afwijkt van de trainingsgegevens en ze zullen op de meest absurde manieren kapot gaan.

Lokale generalisatie versus extreme generalisatie

Er lijken fundamentele verschillen te bestaan ​​tussen de directe geometrische verandering van input naar output die deep learning-modellen bewerkstelligen en de manier waarop mensen denken en leren. Het is niet alleen zo dat mensen zichzelf leren van hun lichamelijke ervaringen, en niet door het verwerken van een reeks trainingsvoorbeelden. Naast verschillen in leerprocessen zijn er fundamentele verschillen in de aard van de onderliggende concepten.

Mensen zijn tot veel meer in staat dan het vertalen van een onmiddellijke stimulus in een onmiddellijke reactie, zoals een neuraal netwerk of misschien een insect. Mensen houden complexe, abstracte modellen van de huidige situatie, zichzelf en andere mensen in hun hoofd, en kunnen deze modellen gebruiken om verschillende mogelijke toekomsten te voorspellen en langetermijnplanning uit te voeren. Ze zijn in staat bekende concepten te combineren om zich iets voor te stellen dat ze nog nooit eerder hebben gekend, zoals het tekenen van een paard in een spijkerbroek, of zich voorstellen wat ze zouden doen als ze de loterij zouden winnen. Het vermogen om hypothetisch te denken, om ons model van mentale ruimte uit te breiden tot veel verder dan wat we direct hebben ervaren, dat wil zeggen het vermogen om te doen abstracties En redenering, misschien wel het bepalende kenmerk van de menselijke cognitie. Ik noem dit ‘ultieme generalisatie’: het vermogen om je aan te passen aan nieuwe, nooit eerder ervaren situaties met weinig of geen gegevens.

Dit staat in schril contrast met wat deep learning-netwerken doen, wat ik ‘lokale generalisatie’ zou noemen: het transformeren van invoergegevens in uitvoergegevens heeft al snel geen zin meer als de nieuwe invoergegevens zelfs maar een klein beetje verschillen van wat ze tijdens de training tegenkwamen. Neem bijvoorbeeld het probleem van het leren van de juiste lanceerparameters voor een raket die op de maan moet landen. Als je voor deze taak een neuraal netwerk zou gebruiken, onder toezicht of met versterkingstraining, zou je het duizenden of miljoenen vliegtrajecten moeten geven, dat wil zeggen, je zou moeten produceren dichte reeks voorbeelden in de ruimte van inkomende waarden om te leren hoe je op betrouwbare wijze kunt transformeren van de ruimte van inkomende waarden naar de ruimte van uitgaande waarden. Mensen kunnen daarentegen de kracht van abstractie gebruiken om fysieke modellen te creëren – raketwetenschap – en een exacte oplossing af te leiden die in slechts een paar pogingen een raket naar de maan zal brengen. Op dezelfde manier, als je een neuraal netwerk zou ontwikkelen om het menselijk lichaam te controleren en wilt dat het leert hoe het veilig door een stad kan lopen zonder door een auto aangereden te worden, zou het netwerk vele duizenden keren in verschillende situaties moeten uitvallen voordat het kapot kan gaan. zou concluderen dat auto's gevaarlijk zijn en niet het juiste gedrag vertonen om ze te vermijden. Als het naar een nieuwe stad zou worden verplaatst, zou het netwerk het meeste van wat het wist opnieuw moeten leren. Aan de andere kant kunnen mensen veilig gedrag aanleren zonder ooit dood te gaan – opnieuw dankzij de kracht van abstracte simulatie van hypothetische situaties.

Ondanks onze vooruitgang op het gebied van machineperceptie zijn we dus nog steeds ver verwijderd van AI op menselijk niveau: onze modellen kunnen alleen maar presteren lokale generalisatie, zich aanpassen aan nieuwe situaties die heel dicht bij gegevens uit het verleden moeten liggen, terwijl de menselijke geest daartoe in staat is extreme generalisatie, snel aanpassen aan compleet nieuwe situaties of plannen maken tot ver in de toekomst.

Conclusies

Dit is wat je moet onthouden: het enige echte succes van deep learning tot nu toe is de mogelijkheid om de X-ruimte naar de Y-ruimte te vertalen met behulp van een continue geometrische transformatie, gegeven een grote hoeveelheid door mensen geannoteerde gegevens. Als we dit goed doen, betekent dit een revolutionaire vooruitgang voor een hele sector, maar AI op menselijk niveau is nog ver weg.

Om enkele van deze beperkingen weg te nemen en te gaan concurreren met het menselijk brein, moeten we afstappen van directe input-naar-output-conversie en overstappen op redenering En abstracties. Computerprogramma's kunnen een geschikte basis zijn voor het abstract modelleren van verschillende situaties en concepten. We hebben al eerder gezegd (let op: in Deep Learning met Python) dat machine learning-modellen kunnen worden gedefinieerd als "programma's die leren"; op dit moment kunnen we slechts een beperkte en specifieke subset van alle mogelijke programma's trainen. Maar wat als we elk programma modulair en iteratief zouden kunnen trainen? Laten we kijken hoe we daar kunnen komen.

De toekomst van diep leren

Kunnen we, gegeven wat we weten over deep learning-netwerken, hun beperkingen en de huidige stand van het onderzoek, voorspellen wat er op de middellange termijn zal gebeuren? Hier zijn enkele van mijn persoonlijke gedachten hierover. Houd er rekening mee dat ik geen glazen bol heb voor voorspellingen; veel van wat ik verwacht, zal misschien niet uitkomen. Dit is volledige speculatie. Ik deel deze voorspellingen niet omdat ik verwacht dat ze in de toekomst volledig zullen worden gerealiseerd, maar omdat ze interessant zijn en toepasbaar op het heden.

Op een hoog niveau zijn dit de belangrijkste gebieden die ik veelbelovend vind:

  • Modellen zullen computerprogramma's voor algemene doeleinden benaderen die zijn gebouwd bovenop veel rijkere primitieven dan onze huidige differentieerbare lagen - dus we zullen krijgen redenering En abstracties, waarvan de afwezigheid een fundamentele zwakte van de huidige modellen is.
  • Er zullen nieuwe vormen van leren ontstaan ​​die dit mogelijk zullen maken – en die modellen in staat zullen stellen afstand te nemen van louter differentieerbare transformaties.
  • Modellen vereisen minder input van ontwikkelaars - het zou niet jouw taak moeten zijn om voortdurend aan knoppen te sleutelen.
  • Er zal een groter, systematischer hergebruik van aangeleerde kenmerken en architecturen plaatsvinden; meta-leersystemen gebaseerd op herbruikbare en modulaire routines.
Houd er bovendien rekening mee dat deze overwegingen niet specifiek van toepassing zijn op leren onder toezicht, wat nog steeds de basis is van machinaal leren. Ze zijn ook van toepassing op elke vorm van machinaal leren, inclusief leren zonder toezicht, leren onder toezicht en versterkend leren. Het maakt in wezen niet uit waar uw labels vandaan komen of hoe uw leercyclus eruit ziet; deze verschillende takken van machinaal leren zijn eenvoudigweg verschillende facetten van hetzelfde construct.

Dus ga je gang.

Modellen als programma's

Zoals we eerder hebben opgemerkt, is een noodzakelijke transformationele ontwikkeling die op het gebied van machinaal leren kan worden verwacht een verschuiving van modellen die puur patroonherkenning en alleen in staat lokale generalisatie, naar modellen die daartoe in staat zijn abstracties En redenering dat kan bereiken ultieme generalisatie. Alle huidige AI-programma's met basisredenering zijn hardgecodeerd door menselijke programmeurs: bijvoorbeeld programma's die afhankelijk zijn van zoekalgoritmen, grafiekmanipulatie en formele logica. In het AlphaGo-programma van DeepMind bijvoorbeeld wordt een groot deel van de 'intelligentie' op het scherm ontworpen en hardgecodeerd door deskundige programmeurs (bijvoorbeeld het zoeken naar bomen in Monte Carlo); Leren van nieuwe gegevens gebeurt alleen in gespecialiseerde submodules: waardenetwerken en beleidsnetwerken. Maar in de toekomst zouden dergelijke AI-systemen volledig zonder menselijke tussenkomst kunnen worden getraind.

Hoe dit te bereiken? Laten we een bekend type netwerk nemen: RNN. Belangrijk is dat RNN's iets minder beperkingen hebben dan feedforward neurale netwerken. Dit komt omdat RNN's weinig meer zijn dan eenvoudige geometrische transformaties: het zijn geometrische transformaties die continu uitgevoerd in een for-lus. De timing van de for-lus wordt gespecificeerd door de ontwikkelaar: het is een ingebouwde aanname van het netwerk. Natuurlijk zijn RNN's nog steeds beperkt in wat ze kunnen vertegenwoordigen, vooral omdat elke stap die ze zetten nog steeds een differentieerbare geometrische transformatie is en vanwege de manier waarop ze stap voor stap informatie overbrengen door punten in een continue geometrische ruimte (toestandsvectoren). Stel je nu eens voor dat neurale netwerken zouden worden “uitgebreid” met programmeerprimitieven op dezelfde manier als voor lussen - maar niet slechts een enkele hardgecodeerde for-lus met gestikt geometrisch geheugen, maar een groot aantal programmeerprimitieven waartoe het model vrij toegang zou hebben. breid de verwerkingsmogelijkheden uit, zoals if-takken, while-instructies, het maken van variabelen, schijfopslag voor langetermijngeheugen, sorteeroperatoren, geavanceerde gegevensstructuren zoals lijsten, grafieken, hash-tabellen en nog veel meer. De ruimte van programma's die een dergelijk netwerk kan vertegenwoordigen zal veel groter zijn dan bestaande deep learning-netwerken kunnen uitdrukken, en sommige van deze programma's kunnen een superieure generalisatiekracht bereiken.

Kortom, we zullen afstand nemen van het feit dat we enerzijds over ‘hardgecodeerde algoritmische intelligentie’ (handgeschreven software) en aan de andere kant over ‘getrainde geometrische intelligentie’ (deep learning) beschikken. In plaats daarvan zullen we eindigen met een mix van formele algoritmische modules die mogelijkheden bieden redenering En abstracties en geometrische modules die mogelijkheden bieden informele intuïtie en patroonherkenning. Het hele systeem zal worden getraind met weinig of geen menselijke tussenkomst.

Een gerelateerd gebied van AI waarvan ik denk dat het binnenkort grote vooruitgang kan boeken is software synthese, in het bijzonder neurale softwaresynthese. Programmasynthese bestaat uit het automatisch genereren van eenvoudige programma's met behulp van een zoekalgoritme (misschien een genetische zoekopdracht, zoals bij genetisch programmeren) om een ​​grote ruimte aan mogelijke programma's te verkennen. Het zoeken stopt wanneer een programma wordt gevonden dat aan de vereiste specificaties voldoet, vaak geleverd als een set invoer-uitvoerparen. Zoals je kunt zien lijkt dit sterk op machinaal leren: ‘trainingsgegevens’ worden geleverd als input-output-paren, we vinden een ‘programma’ dat overeenkomt met de transformatie van inputs naar outputs en dat in staat is tot generalisaties naar nieuwe inputs. Het verschil is dat we in plaats van parameterwaarden te trainen in een hardgecodeerd programma (neuraal netwerk), genereren broncode via een discreet zoekproces.

Ik verwacht zeker dat er de komende jaren weer veel belangstelling voor dit gebied zal zijn. In het bijzonder verwacht ik een wederzijdse penetratie van de gerelateerde gebieden van deep learning en softwaresynthese, waar we niet alleen programma's in algemene talen zullen genereren, maar waar we neurale netwerken zullen genereren (draden voor geometrische gegevensverwerking), aangevuld een rijke reeks algoritmische primitieven, zoals for-loops - en vele andere. Dit zou veel handiger en nuttiger moeten zijn dan het direct genereren van broncode, en zal de reikwijdte van de problemen die kunnen worden opgelost met behulp van machinaal leren aanzienlijk vergroten - de ruimte van programma's die we automatisch kunnen genereren, gegeven de juiste trainingsgegevens. Een mix van symbolische AI ​​en geometrische AI. Moderne RNN's kunnen worden beschouwd als de historische voorloper van dergelijke hybride algoritmisch-geometrische modellen.


Tekening: Het getrainde programma vertrouwt tegelijkertijd op geometrische primitieven (patroonherkenning, intuïtie) en algoritmische primitieven (argumentatie, zoeken, geheugen).

Voorbij backpropagation en differentieerbare lagen

Als machine learning-modellen meer op programma's gaan lijken, zullen ze nauwelijks meer differentieerbaar zijn. Die programma's zullen zeker nog steeds continue geometrische lagen gebruiken als subroutines die differentieerbaar zullen blijven, maar het algehele model zal dat niet zijn. Als gevolg hiervan zal het gebruik van backpropagatie om de waarden van gewichten in een vast, hardgecodeerd netwerk aan te passen in de toekomst wellicht niet de voorkeursmethode voor trainingsmodellen blijven – althans, het zou niet beperkt moeten blijven tot deze methode alleen. We moeten uitzoeken hoe we niet-differentieerbare systemen het meest efficiënt kunnen trainen. De huidige benaderingen omvatten genetische algoritmen, "evolutionaire strategieën", bepaalde leermethoden voor versterking, ADMM (alternerende richtingsmethode van Lagrange-vermenigvuldigers). Uiteraard is gradiëntafdaling een blijvertje: gradiëntinformatie zal altijd nuttig zijn voor het optimaliseren van differentieerbare parametrische functies. Maar onze modellen zullen zeker ambitieuzer worden dan alleen differentieerbare parametrische functies, en dus zal hun geautomatiseerde ontwikkeling (“training” in “machine learning”) meer vereisen dan alleen maar backpropagatie.

Bovendien heeft backpropagation een end-to-end raamwerk, dat geschikt is voor het leren van goede aaneengeschakelde transformaties, maar rekenkundig inefficiënt is omdat het de modulariteit van diepe netwerken niet volledig benut. Om de efficiëntie van wat dan ook te vergroten, bestaat er één universeel recept: introduceer modulariteit en hiërarchie. We kunnen de backpropagatie zelf dus efficiënter maken door ontkoppelde leermodules te introduceren met een synchronisatiemechanisme daartussen, georganiseerd op een hiërarchische manier. Deze strategie wordt gedeeltelijk weerspiegeld in het recente werk van DeepMind over 'synthetische gradiënten'. Ik verwacht in de nabije toekomst nog veel, veel meer werk in deze richting.

Men kan zich een toekomst voorstellen waarin globaal niet-differentieerbare modellen (maar met differentieerbare delen) zullen leren - groeien - met behulp van een efficiënt zoekproces dat geen gradiënten toepast, terwijl differentieerbare delen nog sneller zullen leren met behulp van gradiënten met behulp van enkele efficiëntere backpropagation-versies

Geautomatiseerd machinaal leren

In de toekomst van de architectuur zullen modellen worden gecreëerd door te leren, in plaats van met de hand geschreven door ingenieurs. De resulterende modellen worden automatisch gekoppeld aan een rijkere reeks primitieven en programma-achtige machine learning-modellen.

Tegenwoordig wijzigt een ontwikkelaar van deep learning-systemen meestal eindeloos gegevens met Python-scripts, en besteedt vervolgens veel tijd aan het afstemmen van de architectuur en hyperparameters van het deep learning-netwerk om een ​​werkend model te krijgen - of zelfs om een ​​uitstekend model te krijgen als de ontwikkelaar is zo ambitieus. Het behoeft geen betoog dat dit niet de beste situatie is. Maar ook hier kan AI helpen. Helaas is het gegevensverwerkings- en voorbereidingsgedeelte moeilijk te automatiseren, omdat het vaak domeinkennis vereist, evenals een duidelijk, hoogstaand begrip van wat de ontwikkelaar wil bereiken. Het afstemmen van hyperparameters is echter een eenvoudige zoekprocedure, en in dit geval weten we al wat de ontwikkelaar wil bereiken: dit wordt bepaald door de verliesfunctie van het neurale netwerk dat moet worden afgestemd. Het is nu gebruikelijk geworden om standaard AutoML-systemen te installeren, die het grootste deel van het aanpassen van de modelinstellingen voor hun rekening nemen. Ik heb er zelf een geïnstalleerd om de Kaggle-wedstrijd te winnen.

Op het meest basale niveau zou een dergelijk systeem eenvoudigweg het aantal lagen in de stapel, hun volgorde en het aantal elementen of filters in elke laag aanpassen. Dit gebeurt meestal met behulp van bibliotheken zoals Hyperopt, die we in hoofdstuk 7 hebben besproken (let op: boeken "Deep Learning with Python"). Maar je kunt veel verder gaan en proberen de juiste architectuur helemaal opnieuw te leren, met een minimum aan beperkingen. Dit kan bijvoorbeeld door middel van versterkend leren of door gebruik te maken van genetische algoritmen.

Een andere belangrijke richting in de ontwikkeling van AutoML is het trainen van modelarchitectuur gelijktijdig met modelgewichten. Door een model helemaal opnieuw te trainen, proberen we elke keer iets andere architecturen, wat uiterst inefficiënt is, dus een echt krachtig AutoML-systeem zal de evolutie van architecturen beheren, terwijl modeleigenschappen worden afgestemd via backpropagation op de trainingsgegevens, waardoor alle rekenkundige overhead wordt geëlimineerd. Terwijl ik deze regels schrijf, worden soortgelijke benaderingen al toegepast.

Wanneer dit allemaal gaat gebeuren, zullen ontwikkelaars van machine learning-systemen niet zonder werk komen te zitten; ze zullen naar een hoger niveau in de waardeketen gaan. Ze zullen veel meer moeite gaan doen om complexe verliesfuncties te creëren die de bedrijfsdoelstellingen echt weerspiegelen, en zullen een diep inzicht ontwikkelen in de manier waarop hun modellen de digitale ecosystemen beïnvloeden waarin ze opereren (bijvoorbeeld klanten die modelvoorspellingen gebruiken en gegevens genereren voor haar opleiding) – problemen die alleen de grootste bedrijven zich nu kunnen veroorloven om te overwegen.

Levenslang leren en hergebruik van modulaire routines

Als modellen complexer worden en op rijkere algoritmische primitieven worden gebouwd, zal deze toegenomen complexiteit intensiever hergebruik tussen taken vereisen, in plaats van een model vanaf nul te trainen telkens wanneer we een nieuwe taak of nieuwe dataset hebben. Uiteindelijk bevatten veel datasets niet genoeg informatie om een ​​nieuw complex model helemaal opnieuw te ontwikkelen en zal het noodzakelijk worden om informatie uit eerdere datasets te gebruiken. Je leert niet elke keer dat je een nieuw boek opent opnieuw Engels - dat zou onmogelijk zijn. Bovendien is het van de grond af aan trainen van modellen voor elk nieuw probleem zeer inefficiënt vanwege de aanzienlijke overlap tussen de huidige problemen en de problemen die we eerder tegenkwamen.

Bovendien is de opmerkelijke observatie die de afgelopen jaren herhaaldelijk is gedaan, dat het trainen van hetzelfde model om meerdere losjes verwante taken uit te voeren de prestaties ervan verbetert. bij elk van deze taken. Het trainen van hetzelfde neurale netwerk om bijvoorbeeld van Engels naar Duits en van Frans naar Italiaans te vertalen, zal resulteren in een model dat beter is in elk van deze taalparen. Het gelijktijdig trainen van een beeldclassificatiemodel met een beeldsegmentatiemodel, met een enkele convolutionele basis, zal resulteren in een model dat beter is in beide taken. En zo verder. Dit is vrij intuïtief: er is altijd een soort informatie die overlapt tussen deze twee ogenschijnlijk verschillende taken, en daarom heeft het algehele model toegang tot meer informatie over elke individuele taak dan een model dat alleen voor die specifieke taak is getraind.

Wat we feitelijk doen als we een model voor verschillende taken hergebruiken, is vooraf getrainde gewichten gebruiken voor modellen die algemene functies uitvoeren, zoals extractie van visuele kenmerken. Je hebt dit in de praktijk gezien in hoofdstuk 5. Ik verwacht dat een meer algemene versie van deze techniek in de toekomst algemeen zal worden gebruikt: we zullen niet alleen eerder geleerde kenmerken (submodelgewichten) gebruiken, maar ook modelarchitecturen en trainingsprocedures. Naarmate modellen meer programma-achtig worden, zullen we ze gaan hergebruiken subroutines, zoals functies en klassen in reguliere programmeertalen.

Denk eens na over hoe het softwareontwikkelingsproces er vandaag de dag uitziet: zodra een ingenieur een bepaald probleem heeft opgelost (HTTP-verzoeken in Python bijvoorbeeld), verpakt hij het als een abstracte bibliotheek voor hergebruik. Ingenieurs die in de toekomst met een soortgelijk probleem worden geconfronteerd, zoeken eenvoudigweg naar bestaande bibliotheken, downloaden deze en gebruiken ze in hun eigen projecten. Op dezelfde manier zullen meta-leersystemen in de toekomst nieuwe programma’s kunnen samenstellen door een mondiale bibliotheek van herbruikbare blokken van hoog niveau te doorzoeken. Als het systeem soortgelijke routines voor verschillende taken begint te ontwikkelen, zal het een "abstracte" herbruikbare versie van de routine vrijgeven en deze opslaan in een globale bibliotheek. Dit proces opent de mogelijkheid voor abstracties, een noodzakelijke component voor het bereiken van "ultieme generalisatie": van een routine die voor veel problemen en domeinen nuttig zal zijn, kan worden gezegd dat deze een bepaald aspect van de besluitvorming "abstracteert". Deze definitie van "abstractie" lijkt niet het concept van abstractie in softwareontwikkeling te zijn. Deze routines kunnen geometrisch zijn (deep learning-modules met vooraf getrainde representaties) of algoritmisch (dichter bij de bibliotheken waarmee moderne programmeurs werken).

Tekening: Een meta-leersysteem dat snel taakspecifieke modellen kan ontwikkelen met behulp van herbruikbare primitieven (algoritmisch en geometrisch), waardoor ‘ultieme generalisatie’ wordt bereikt.

Het resultaat: een langetermijnvisie

In het kort is hier mijn langetermijnvisie voor machine learning:
  • Modellen zullen meer op programma’s gaan lijken en zullen mogelijkheden hebben die veel verder reiken dan de continue geometrische transformaties van brongegevens waarmee we nu werken. Misschien zullen deze programma's veel dichter bij de abstracte mentale modellen staan ​​die mensen over hun omgeving en zichzelf hebben, en zullen ze in staat zijn tot sterkere generalisatie vanwege hun algoritmische aard.
  • Vooral modellen zullen mixen algoritmische modules met formeel redeneren, zoeken, abstractievermogen - en geometrische modules met informele intuïtie en patroonherkenning. AlphaGo (een systeem dat intensieve handmatige programmering en architectuur vereiste) biedt een vroeg voorbeeld van hoe het samenvoegen van symbolische en geometrische AI ​​eruit zou kunnen zien.
  • Dat zullen ze groeien automatisch (in plaats van met de hand geschreven door menselijke programmeurs), met behulp van modulaire onderdelen uit een wereldwijde bibliotheek van herbruikbare routines - een bibliotheek die is geëvolueerd door de assimilatie van krachtige modellen uit duizenden eerdere problemen en datasets. Zodra het metalearningsysteem algemene probleemoplossende patronen heeft geïdentificeerd, worden deze omgezet in herbruikbare routines – net zoals functies en klassen in modern programmeren – en toegevoegd aan een mondiale bibliotheek. Dit is hoe het vermogen wordt bereikt abstracties.
  • Een mondiale bibliotheek en een bijbehorend modelgroeisysteem zullen in staat zijn een vorm van mensachtige ‘ultieme generalisatie’ te bereiken: wanneer het systeem wordt geconfronteerd met een nieuwe taak, een nieuwe situatie, zal het in staat zijn een nieuw werkmodel voor die taak samen te stellen met behulp van zeer weinig gegevens, dankzij: 1) rijke programma-achtige primitieven, die goed generaliseren en 2) uitgebreide ervaring met het oplossen van soortgelijke problemen. Op dezelfde manier waarop mensen snel een nieuw complex videospel kunnen leren, omdat ze eerdere ervaring hebben met veel andere spellen en omdat de modellen uit eerdere ervaringen abstract en programma-achtig zijn in plaats van simpelweg prikkels in actie om te zetten.
  • In wezen kan dit voortdurend lerende, modelgroeiende systeem worden geïnterpreteerd als sterke kunstmatige intelligentie. Maar verwacht niet dat er een bijzondere robotapocalyps zal plaatsvinden: het is pure fantasie, geboren uit een lange lijst van diepe misverstanden in het begrip van intelligentie en technologie. Deze kritiek hoort hier echter niet thuis.

Ik leerde over zakelijke trends op een grootschalige conferentie in Kiev. De zaterdag was gevuld met inzichten, waarin we in de loop van de uren nieuwe kennis en kennissen hebben opgedaan. Op de conferentie waren er 4 informatiestromen voor bedrijfsleiders, topmanagers, marketeers, sales, HR en andere specialisten. Een van de sprekers was de minister van Infrastructuur Volodymyr Omelyan, die sprak over de ontwikkeling van Galuzië, de renovatie van wegen en luchthavens.

Goede dag allemaal, beste mede-iOS-gebruikers, waarschijnlijk heeft ieder van jullie met het netwerk gewerkt en gegevens uit JSON geparseerd. Voor dit proces zijn er veel bibliotheken, allerlei tools die je kunt gebruiken. Sommigen van hen zijn complex en sommige zijn eenvoudig. Om eerlijk te zijn, heb ik JSON zelf heel lang met de hand geparseerd, zonder dit proces aan bibliotheken van derden toe te vertrouwen, en dit had zo zijn voordelen.

Op 9 september 2014 introduceerde Apple tijdens de volgende presentatie zijn eigen mobiele betalingssysteem: Apple Pay.

Met Apple Pay kunnen iPhone 6- en iPhone 6+-gebruikers en bezitters van de nieuwste Apple Watch online winkelen, genieten van extra Apple Pay-voordelen voor mobiele apps en betalingen doen met behulp van NFC-technologie (Near Field Communication). Touch ID- of Face ID-technologieën worden gebruikt om betalingen te autoriseren.

Technologieën staan ​​niet stil en ontwikkelingsprocessen bewegen mee. Werkten bedrijven voorheen volgens het ‘Waterfall’-model, nu streeft bijvoorbeeld iedereen ernaar om ‘Scrum’ te implementeren. Er vindt ook evolutie plaats in het aanbieden van softwareontwikkelingsdiensten. Voorheen boden bedrijven klanten hoogwaardige ontwikkeling binnen het budget en stopten daar, maar nu streven ze ernaar om de klant en zijn bedrijf maximaal voordeel te bieden door hun expertise in te zetten.

De afgelopen jaren zijn er zoveel goede lettertypen verschenen, inclusief gratis, dat we besloten een voortzetting van de onze voor ontwerpers te schrijven.

Elke ontwerper heeft een aantal favoriete lettertypen om mee te werken, waarmee hij of zij gewend is te werken en die hun grafische stijl weerspiegelen. Ontwerpers zeggen: "Je kunt nooit genoeg goede lettertypen hebben", maar nu kun je je gerust een situatie voorstellen waarin deze set alleen uit gratis lettertypen bestaat.

Hoe vaak bevinden projectmanagers zich tussen een rots en een harde plek wanneer ze een balans proberen te vinden tussen alle eisen en deadlines van de klant en de mentale gezondheid van het hele team? Met hoeveel nuances moet rekening worden gehouden, zodat er vrede en orde ontstaat aan beide kanten van de verantwoordelijkheid? Hoe weet je of je een goede manager bent of dat je dringend op alle fronten moet verbeteren? Hoe bepaal je op welke aspecten je als PM precies achterloopt en waar je goed en slim bent? Dit is precies waar de volgende Code’n’Coffee-conferentie over ging.

Patroonherkenningstechnologie wordt steeds meer onderdeel van ons dagelijks leven. Bedrijven en instellingen gebruiken het voor uiteenlopende taken, van beveiliging tot klanttevredenheidsonderzoeken. Investeringen in producten die op deze functie zijn gebaseerd, beloven tegen 2021 te groeien tot 39 miljard dollar. Hier zijn slechts enkele voorbeelden van hoe patroonherkenning op verschillende gebieden wordt gebruikt.

Wat is diep leren? 3 maart 2016

Tegenwoordig praten ze over modieuze deep learning-technologieën alsof het manna uit de hemel is. Maar begrijpen de sprekers wat het werkelijk is? Maar dit concept heeft geen formele definitie en combineert een hele reeks technologieën. In dit bericht wil ik zo populair mogelijk en in essentie uitleggen wat er achter deze term zit, waarom het zo populair is en wat deze technologieën ons opleveren.


Kortom, deze nieuwerwetse term (deep learning) gaat over hoe je een complexere en diepere abstractie (representatie) kunt samenstellen uit enkele eenvoudige abstracties. ondanks het feit dat zelfs de eenvoudigste abstracties door de computer zelf moeten worden samengesteld, en niet door een persoon. Die. Het gaat niet langer alleen om leren, maar om meta-leren. Figuurlijk gesproken moet de computer zelf leren hoe hij het beste kan leren. En in feite is dit precies wat de term ‘diep’ impliceert. Bijna altijd wordt deze term toegepast op kunstmatige neurale netwerken die meer dan één verborgen laag gebruiken, dus formeel betekent ‘diep’ ook een diepere neurale netwerkarchitectuur.

Hier op de ontwikkelingsdia kun je duidelijk zien hoe deep learning verschilt van regulier leren. ik herhaal, Het unieke aan deep learning is dat de machine de functies zelf vindt(de belangrijkste kenmerken van iets waardoor het het gemakkelijkst is om de ene klasse objecten van de andere te scheiden) en structureert deze tekens hiërarchisch: eenvoudigere tekens worden gecombineerd tot complexere tekens. Hieronder zullen we dit bekijken met een voorbeeld.

Laten we eens kijken naar een voorbeeld van een beeldherkenningsprobleem: hoe het vroeger was: we stopten een enorm beeld (1024×768 - ongeveer 800.000 numerieke waarden) in een regulier neuraal netwerk met één laag en keken toe hoe de computer langzaam uitviel, verstikkend door gebrek geheugen en het onvermogen om te begrijpen welke pixels belangrijk zijn voor herkenning en welke niet. Om nog maar te zwijgen over de effectiviteit van deze methode. Hier is de architectuur van zo’n regulier (oppervlakkig) neuraal netwerk.

Vervolgens luisterden ze naar hoe de hersenen kenmerken onderscheiden, en dat doen ze op een strikt hiërarchische manier, en ze besloten ook een hiërarchische structuur uit de afbeeldingen te halen. Om dit te doen was het nodig om meer verborgen lagen (lagen die zich tussen de input en de output bevinden; ruwweg de fasen van informatietransformatie) aan het neurale netwerk toe te voegen. Hoewel ze besloten dit vrijwel onmiddellijk te doen toen neuronen werden uitgevonden, werden netwerken met slechts één verborgen laag met succes getraind. Die. In principe bestaan ​​diepe netwerken al ongeveer net zo lang als reguliere netwerken, maar we konden ze gewoon niet trainen. Wat is er veranderd?

In 2006 hebben verschillende onafhankelijke onderzoekers dit probleem in één keer opgelost (bovendien waren de hardwaremogelijkheden al voldoende ontwikkeld, er verschenen behoorlijk krachtige videokaarten). Deze onderzoekers zijn: Geoffrey Hinton (en zijn collega Ruslan Salakhutidinov) met de techniek om elke laag van een neuraal netwerk vooraf te trainen met een beperkte Boltzmann-machine (vergeef me voor deze termen...), Yann LeCun met convolutionele neurale netwerken, en Yoshuay Bengio met gecascadeerde auto-encoders. De eerste twee werden onmiddellijk gerekruteerd door respectievelijk Google en Facebook. Hier zijn twee lezingen: één - Hinton, de andere - Ljakuna, waarin ze vertellen wat deep learning is. Niemand kan je hier beter over vertellen dan zij. Nog een coole lezing Schmidhuber over de ontwikkeling van deep learning, eveneens een van de pijlers van deze wetenschap. En Hinton heeft ook een uitstekende cursus over neuronen.

Wat kunnen diepe neurale netwerken nu doen? Ze zijn in staat objecten te herkennen en te beschrijven, je zou kunnen zeggen dat ze ‘begrijpen’ wat het is. Het gaat om het herkennen van betekenissen.

Bekijk gewoon deze video over realtime herkenning van wat de camera ziet.

Zoals ik al zei, zijn deep learning-technologieën een hele groep technologieën en oplossingen. Ik heb er in de bovenstaande paragraaf al een aantal opgesomd. Een ander voorbeeld zijn terugkerende netwerken, die in de video hierboven worden gebruikt om te beschrijven wat het netwerk ziet. Maar de meest populaire vertegenwoordiger van deze klasse van technologieën zijn nog steeds de convolutionele neurale netwerken van LyaKun. Ze zijn gebouwd naar analogie met de werkingsprincipes van de visuele cortex van de hersenen van katten, waarbij zogenaamde eenvoudige cellen werden ontdekt die reageren op rechte lijnen onder verschillende hoeken, en complexe cellen - waarvan de reactie verband houdt met de activering van een bepaalde reeks eenvoudige cellen. Hoewel LaCun, eerlijk gezegd, zelf niet op biologie was gericht, was hij een specifiek probleem aan het oplossen (zie zijn lezingen), en toen viel het allemaal samen.

Om het heel simpel te zeggen: convolutionele netwerken zijn netwerken waarbij het belangrijkste structurele element van leren een groep (combinatie) neuronen is (meestal een vierkant van 3x3, 10x10, enz.), en niet slechts één. En op elk niveau van het netwerk worden tientallen van dergelijke groepen getraind. Het netwerk vindt combinaties van neuronen die de informatie over het beeld maximaliseren. Op het eerste niveau haalt het netwerk de meest fundamentele, structureel eenvoudige elementen uit het beeld - je zou kunnen zeggen: het bouwen van eenheden: grenzen, lijnen, segmenten, contrasten. Hogerop zijn al stabiele combinaties van elementen van het eerste niveau, enzovoort in de keten. Ik zou het belangrijkste kenmerk van deep learning nogmaals afzonderlijk willen benadrukken: de netwerken zelf vormen deze elementen en beslissen welke van hen belangrijker zijn en welke niet. Dit is belangrijk omdat op het gebied van machinaal leren het creëren van functies van cruciaal belang is, en nu gaan we naar het stadium waarin de computer zelf leert functies te creëren en te selecteren. De machine zelf identificeert een hiërarchie van informatieve kenmerken.

Tijdens het leerproces (het bekijken van honderden afbeeldingen) vormt het convolutionele netwerk dus een hiërarchie van kenmerken van verschillende diepteniveaus. Op het eerste niveau kunnen ze bijvoorbeeld dergelijke elementen benadrukken (reflecterend contrast, hoek, rand, enz.).


Op het tweede niveau zal dit al een element zijn uit de elementen van het eerste niveau. Op de derde - vanaf de tweede. Je moet begrijpen dat deze foto slechts een demonstratie is. Bij industrieel gebruik hebben dergelijke netwerken nu 10 tot 30 lagen (niveaus).

Nadat zo’n netwerk getraind is, kunnen we het gebruiken voor classificatie. Nadat ze een afbeelding als invoer hebben gegeven, lopen groepen neuronen in de eerste laag door het beeld en worden geactiveerd op die plaatsen waar een element van de afbeelding voorkomt dat overeenkomt met een specifiek element. Die. dit netwerk ontleedt de afbeelding in delen - eerst in lijnen, lijnen, hellingshoeken en vervolgens in complexere delen, en komt uiteindelijk tot de conclusie dat een afbeelding uit dit soort combinaties van basiselementen een gezicht is.

Meer over convolutionele netwerken -

De komende revolutie van slimme robots wordt sinds de jaren vijftig elk decennium voorspeld. Het is echter nooit gebeurd. Vooruitgang in het veld kunstmatige intelligentie vond onzeker en soms saai plaats, wat voor veel enthousiastelingen teleurstelling veroorzaakte. Zichtbare successen – de Deep Blue-computer, die halverwege de jaren negentig door IBM werd ontwikkeld en die in 1997 Garry Kasparov versloeg met schaken, of de opkomst van een elektronische vertaler eind jaren negentig – waren waarschijnlijker het resultaat van ‘ruwe’ berekeningen dan de overdracht van menselijke perceptiemechanismen naar computerberekeningen.

Het verhaal van teleurstelling en mislukking verandert nu echter dramatisch. Nog maar tien jaar geleden konden computervisie- en objectherkenningsalgoritmen een bol of doos tegen een effen achtergrond identificeren. Ze kunnen nu net zo goed menselijke gezichten onderscheiden als mensen, zelfs tegen complexe, natuurlijke achtergronden. Zes maanden geleden heeft Google een applicatie voor smartphones uitgebracht die tekst uit meer dan 20 vreemde talen kan vertalen en woorden van foto's, verkeersborden of handgeschreven tekst kan lezen!

Dit alles werd mogelijk nadat duidelijk werd dat sommige oude ideeën op het gebied van neurale netwerken, als ze enigszins werden gewijzigd door ‘leven’ toe te voegen, dat wil zeggen: het projecteren van de details van de menselijke en dierlijke perceptie kan een verbluffend resultaat opleveren dat niemand had verwacht. Deze keer lijkt de revolutie op het gebied van kunstmatige intelligentie echt reëel.

Onderzoek naar neurale netwerken op het gebied van machinaal leren is in de meeste gevallen altijd gewijd geweest aan het zoeken naar nieuwe technieken voor het herkennen van verschillende soorten gegevens. Zo moet een computer die op de camera is aangesloten, met behulp van een beeldherkenningsalgoritme een menselijk gezicht, een kopje thee of een hond kunnen onderscheiden in een beeld van slechte kwaliteit. Historisch gezien is het gebruik van neurale netwerken voor deze doeleinden echter met aanzienlijke problemen gepaard gegaan. Zelfs een klein succes vereiste menselijke tussenkomst: mensen die het programma hielpen bij het identificeren van belangrijke kenmerken van het beeld, zoals beeldgrenzen of eenvoudige geometrische vormen. Bestaande algoritmen konden dit niet zelf leren.

De situatie is dramatisch veranderd dankzij de oprichting van de zogenaamde neurale netwerken met deep learning, die nu een beeld bijna net zo efficiënt kan analyseren als een mens. Dergelijke neurale netwerken gebruiken een beeld van slechte kwaliteit als input voor de ‘neuronen’ van het eerste niveau, die het ‘beeld’ vervolgens via niet-lineaire verbindingen naar de neuronen van het volgende niveau verzenden. Na enige training kunnen ‘neuronen’ op een hoger niveau meer abstracte aspecten van een beeld gebruiken om ze te herkennen. Ze kunnen bijvoorbeeld details gebruiken zoals de randen van de afbeelding of kenmerken van de locatie in de ruimte. Verbazingwekkend genoeg kunnen dergelijke netwerken zonder menselijke hulp de belangrijkste kenmerken van een afbeelding leren inschatten!

Een mooi voorbeeld van het gebruik van deep learning neurale netwerken is de herkenning van identieke objecten die vanuit verschillende hoeken of in verschillende poses zijn gefotografeerd (als we het over een persoon of een dier hebben). Algoritmen die pixel-voor-pixel scannen gebruiken ‘denken’ dat ze naar twee verschillende beelden kijken, terwijl ‘slimme’ neurale netwerken ‘begrijpen’ dat ze naar hetzelfde object kijken. En omgekeerd: afbeeldingen van twee honden van verschillende rassen, gefotografeerd in dezelfde pose, konden door eerdere algoritmen worden waargenomen als foto's van dezelfde hond. Diepgaande neurale netwerken kunnen details in afbeeldingen identificeren, waardoor ze onderscheid kunnen maken tussen dieren.

De combinatie van deep learning-technieken, geavanceerde kennis van de neurowetenschappen en de kracht van moderne computers opent perspectieven voor kunstmatige intelligentie die we nog niet eens kunnen evalueren. De waarheid is al duidelijk dat de geest niet alleen een biologische aard kan hebben.