Syväoppivat neuroverkot. Takaisin leviämisen ja erotettavien kerrosten lisäksi. Mikä on neuroverkko

Artikkelista opit, mitä syväoppiminen on. Artikkeli sisältää myös monia resursseja, joiden avulla voit hallita tätä aluetta.

Nykymaailmassa terveydenhuollosta tuotantoon syväoppimista käytetään kaikkialla. Yritykset käyttävät tätä tekniikkaa ratkaistakseen monimutkaisia ​​ongelmia, kuten puheen ja objektintunnistuksen, konekäännös ja niin edelleen.

Yksi tämän vuoden vaikuttavimmista saavutuksista oli AlphaGo, joka voitti maailman parhaan Go-pelaajan. Go:n lisäksi koneet ovat lyöneet ihmisiä muissa peleissä: tammi, shakki, reversi ja Jeopardy.

Ehkä lautapelin voittaminen ei näytä sopivan ratkaisuun todellisia ongelmia näin ei kuitenkaan ole ollenkaan. Go suunniteltiin lyömättömäksi tekoälylle. Tätä varten hänen olisi opittava yksi tärkeä asia tälle pelille - ihmisen intuitio. Nyt tämän kehityksen avulla on mahdollista ratkaista monia ongelmia, joihin tietokone ei aiemmin voinut päästä käsiksi.

On selvää, että syväoppiminen on vielä kaukana täydellisestä, mutta se on jo lähellä kaupallista hyötyä. Esimerkiksi nämä itseajavat autot. Tunnetut yritykset, kuten Google, Tesla ja Uber, yrittävät jo tuoda autonomisia autoja kaupunkikaduille.

Ford ennustaa itseohjautuvan osuuden merkittävää kasvua ajoneuvoja vuoteen 2021 mennessä. Yhdysvaltain hallitus onnistui myös kehittämään heille turvallisuussäännöt.

Mitä syväoppiminen on?

Vastataksesi tähän kysymykseen sinun on ymmärrettävä, kuinka se on vuorovaikutuksessa koneoppimisen, hermoverkkojen ja tekoälyn kanssa. Tätä varten käytämme visualisointimenetelmää samankeskisten ympyröiden avulla:

Ulompi ympyrä on tekoäly yleensä (esim. tietokoneet). Hieman kauempana - koneoppimista, ja aivan keskellä ovat syväoppiminen ja keinotekoiset hermoverkot.

Karkeasti sanottuna syväoppiminen on yksinkertaisesti kätevämpi nimi keinotekoisille hermoverkoille. "Syvä" tässä lauseessa viittaa hermoverkon monimutkaisuusasteeseen (syvyyteen), joka voi usein olla melko pinnallista.

Ensimmäisen hermoverkon luojat saivat inspiraationsa aivokuoren rakenteesta. Verkon peruskerros, perceptroni, on olennaisesti biologisen neuronin matemaattinen analogi. Ja kuten aivoissa, toistensa kanssa leikkaavat perceptronit voivat esiintyä hermoverkossa.

Hermoverkon ensimmäistä kerrosta kutsutaan syöttökerrokseksi. Jokainen tämän kerroksen solmu vastaanottaa jonkin verran tietoa syötteenä ja lähettää sen seuraaville muiden kerrosten solmuille. Useimmiten yhden kerroksen solmujen välillä ei ole yhteyksiä, ja ketjun viimeinen solmu tulostaa neuroverkon tuloksen.

Keskellä olevia solmuja kutsutaan piilosolmuiksi, koska niillä ei ole yhteyksiä ulkomaailmaan, kuten lähtö- ja tulosolmuilla. Niitä kutsutaan vain, kun edelliset tasot on aktivoitu.

Syväoppiminen on pohjimmiltaan hermoverkkokoulutustekniikka, joka käyttää monia kerroksia monimutkaisten ongelmien (kuten puheentunnistuksen) ratkaisemiseen kuvioiden avulla. 1980-luvulla useimmat hermoverkot olivat yksikerroksisia korkeiden kustannusten ja rajallisten dataominaisuuksien vuoksi.

Jos tarkastelemme koneoppimista tekoälyn haarana tai muunnelmana, niin syväoppiminen on tällaisen haaran erikoistunut tyyppi.

Koneoppiminen käyttää tietokoneälyä, joka ei anna vastausta heti. Sen sijaan koodi ajetaan testitiedoilla ja tulosten oikeellisuuden perusteella säätää edistymistään. Tämän prosessin onnistumiseksi kuvaamiseen käytetään yleensä erilaisia ​​tekniikoita, erikoisohjelmistoja ja tietojenkäsittelytiedettä staattiset menetelmät ja lineaarinen algebra.

Syväoppimismenetelmät

Syväoppimismenetelmät jaetaan kahteen päätyyppiin:

  • Tutoroitu koulutus
  • Ohjaamaton oppiminen

Ensimmäinen menetelmä käyttää erityisesti valittuja tietoja halutun tuloksen saavuttamiseksi. Se vaatii melko paljon ihmisen väliintuloa, koska tiedot on valittava manuaalisesti. Se on kuitenkin hyödyllinen luokittelussa ja regressiossa.

Kuvittele, että olet yrityksen omistaja ja haluat määrittää bonuksien vaikutuksen alaistenne sopimusten pituuteen. Ennalta kerätyillä tiedoilla ohjattu oppimismenetelmä olisi välttämätön ja erittäin tehokas.

Toinen menetelmä ei edellytä valmiita vastauksia ja työalgoritmeja. Sen tarkoituksena on tunnistaa tiedosta piilotetut kuviot. Sitä käytetään tyypillisesti klusterointi- ja assosiointitehtäviin, kuten asiakkaiden ryhmittelyyn käyttäytymisen mukaan. "He myös valitsevat tämän" Amazonissa on muunnelma yhdistystehtävästä.

Vaikka ohjattu oppiminen on usein varsin kätevää, se on enemmän vaikea vaihtoehto vielä parempi. Syväoppiminen on osoittautunut hermoverkkoksi, joka ei vaadi ihmisen valvontaa.

Syväoppimisen merkitys

Tietokoneet ovat pitkään käyttäneet tekniikkaa tunnistamaan kuvan tiettyjä ominaisuuksia. Tulokset eivät kuitenkaan olleet onnistuneita. Tietokonenäöllä on ollut uskomaton vaikutus syvään oppimiseen. Juuri nämä kaksi tekniikkaa tällä hetkellä ratkaise kaikki tunnistusongelmat.

Erityisesti Facebook on onnistunut tunnistamaan valokuvista kasvot syväoppimisen avulla. Tämä ei ole yksinkertainen teknologian parannus, vaan käännekohta, joka muuttaa kaikki aikaisemmat uskomukset: ”Ihminen voi määrittää 97,53 %:n todennäköisyydellä, näkyykö sama henkilö kahdessa eri valokuvassa. Facebook-tiimin kehittämä ohjelma pystyy tekemään tämän 97,25 %:n todennäköisyydellä riippumatta valaistuksesta tai siitä, katsooko henkilö suoraan kameraan vai kääntyykö sitä sivuttain."

Myös puheentunnistus on kokenut merkittäviä muutoksia. Baidu-tiimi, yksi Kiinan johtavista hakukoneista, on kehittänyt puheentunnistusjärjestelmän, joka on onnistunut ohittamaan ihmiset englanninkielisen tekstin kirjoittamisen nopeudella ja tarkkuudella. mobiililaitteet. Englanniksi ja mandariiniksi.

Erityisen mielenkiintoista on, että yhteisen hermoverkon kirjoittaminen kahdelle täysin eri kielelle ei vaatinut paljon työtä: "Historiallisesti ihmiset näkivät kiinan ja englannin kahtena täysin eri kielenä, joten kumpaankin tarvittiin erilainen lähestymistapa", sanoo tutkimus Baidu Centerin johtaja Andrew Ng. ”Oppimisalgoritmit ovat nyt niin yleisiä, että voit Vain oppia."

Google käyttää syväoppimista hallitakseen energiaa yrityksen palvelinkeskuksissa. Ne pystyivät alentamaan jäähdytysresurssien kustannuksia 40 %. Se tarkoittaa noin 15 prosentin parannusta energiatehokkuudessa ja miljoonien dollarien säästöjä.

Syväoppimisen mikropalvelut

Tässä lyhyt yleiskatsaus syväoppimiseen liittyvät palvelut.

Illustration Tagger. Illustration2Vec on parantanut tämän palvelun avulla voit merkitä kuviin luokituksen "suojattu", " kyseenalainen", "vaarallinen", "tekijänoikeus" tai "yleinen" ymmärtääksesi kuvan sisällön etukäteen.

  • Googlen Theano-lisäosa
  • Muokattava Pythonissa ja Numpyssa
  • Käytetään usein tiettyjen ongelmien ratkaisemiseen
  • Ei yleiskäyttöön. Keskity konenäköön
  • Muokattu C++:lla
  • Pythonissa on käyttöliittymä

Verkkokurssit syväoppimisesta

Google ja Udacity ovat tehneet yhteistyötä luodakseen ilmaisen syväoppimiskurssin, joka on osa Udacityn koneoppimiskurssia. Tätä ohjelmaa johtavat kokeneet kehittäjät, jotka haluavat kehittää koneoppimisen ja erityisesti syväoppimisen alaa.

Toinen suosittu vaihtoehto on Andrew Ngin koneoppimiskurssi, jota tukevat Coursera ja Stanford.

  1. Koneoppiminen – Stanford, kirjoittanut Andrew Ng Courserassa (2010-2014)
  2. Koneoppiminen – Yaser Abu-Mostafan Caltech (2012-2014)
  3. Koneoppiminen – Carnegie Mellon, kirjoittanut Tom Mitchell (kevät 2011)
  4. Neuroverkot koneoppimiseen – Geoffrey Hinton Courserassa (2012)
  5. Neuroverkkojen luokka– Hugo Larochelle Université de Sherbrookesta (2013)

Kirjat syvästä oppimisesta

Kun edellisen osan resurssit perustuvat melko laajaan tietopohjaan, Grokking Deep Learning on päinvastoin suunnattu aloittelijoille. Kuten kirjoittajat sanovat: "Jos olet suorittanut 11. luokan ja sinulla on karkea käsitys Pythonin kirjoittamisesta, opetamme sinulle syvällistä oppimista."

Suosittu vaihtoehto tälle kirjalle on kirja, jonka nimi on itsestään selvä Deep Learning Book. Se on erityisen hyvä, koska se kattaa kaiken matematiikan, jota tarvitset päästäksesi tälle alueelle.

  1. Yoshua Bengion, Ian Goodfellowin ja Aaron Courvillen "Deep Learning" (2015)
  2. Michael Nielsenin "Neuraaliverkot ja syväoppiminen" (2014)
  3. "Deep Learning" Microsoft Researchilta (2013)
  4. "Deep Learning Tutorials" LISA Laboratorysta, Montrealin yliopistosta (2015)
  5. Andrej Karpathyn "neuraltalk".
  6. "Johdatus geneettisiä algoritmeja»
  7. "Moderni lähestymistapa tekoälyyn"
  8. "Yleiskatsaus syväoppimiseen ja hermoverkkoihin"

Videoita ja luentoja

Deep Learning Simplified on upea YouTube-kanava. Tässä on heidän ensimmäinen videonsa:

Nykyään graafi on yksi hyväksytyimmistä tavoista kuvata koneoppimisjärjestelmässä luotuja malleja. Nämä laskennalliset graafit koostuvat neuronipisteistä, joita yhdistävät synapsin reunat, jotka kuvaavat kärkien välisiä yhteyksiä.

Toisin kuin skalaarikeskus- tai vektorigrafiikkaprosessori, IPU, uudenlainen koneoppimiseen suunniteltu prosessori, mahdollistaa tällaisten kuvaajien rakentamisen. Tietokone, joka on suunniteltu hallitsemaan kaavioita - täydellinen auto koneoppimisen luomille laskennallisille graafimalleille.

Yksi helpoimmista tavoista kuvata koneälyn prosessia on visualisoida se. Graphcore-kehitystiimi on luonut kokoelman tällaisia ​​kuvia, jotka näytetään IPU:ssa. Se perustuu Poplar-ohjelmistoon, joka visualisoi tekoälyn työn. Tämän yrityksen tutkijat selvittivät myös, miksi syvät verkot vaativat niin paljon muistia ja mitä ratkaisuja on olemassa ongelman ratkaisemiseksi.

Poplar sisältää grafiikan kääntäjän, joka rakennettiin alusta alkaen muuttamaan standardi koneoppimistoiminnot erittäin optimoiduksi IPU-sovelluskoodiksi. Sen avulla voit kerätä nämä kaaviot yhdessä samalla periaatteella kuin POPNN:t kerätään. Kirjasto sisältää joukon erilaisia ​​kärkityyppejä yleistetyille primitiiveille.

Graafit ovat paradigma, johon kaikki ohjelmistot perustuvat. Poplarissa graafien avulla voit määrittää laskentaprosessin, jossa kärjet suorittavat operaatioita ja reunat kuvaavat niiden välistä suhdetta. Jos esimerkiksi haluat lisätä kaksi numeroa yhteen, voit määrittää kärjen, jossa on kaksi syötettä (luvut, jotka haluat lisätä), laskelmia (funktio kahden luvun lisäämiseksi) ja tulos (tulos).

Tyypillisesti operaatiot pisteillä ovat paljon monimutkaisempia kuin yllä kuvatussa esimerkissä. Ne määritetään usein pienillä ohjelmilla, joita kutsutaan koodiletiksi (koodinimille). Graafinen abstraktio on houkutteleva, koska se ei tee oletuksia laskennan rakenteesta ja jakaa laskennan komponenteiksi, joita IPU voi käyttää toimiessaan.

Poplar käyttää tätä yksinkertaista abstraktiota rakentaakseen hyvin suuret kaaviot, jotka esitetään kuvan muodossa. Graafin ohjelmiston luominen tarkoittaa, että voimme räätälöidä sen tiettyihin laskelmiin, joita tarvitaan IPU-resurssien tehokkaimman käytön varmistamiseksi.

Kääntäjä muuntaa koneoppimisjärjestelmissä käytetyt standarditoiminnot erittäin optimoiduksi sovelluskoodiksi IPU:ta varten. Kaavion kääntäjä luo välikuvan laskennallisesta graafista, joka otetaan käyttöön yhdessä tai useammassa IPU-laitteessa. Kääntäjä voi näyttää tämän laskennallisen kaavion, joten hermoverkkokehystasolla kirjoitettu sovellus näyttää kuvan IPU:ssa käynnissä olevasta laskennallisesta graafista.


Kaavio koko AlexNet-harjoitussyklistä eteenpäin ja taaksepäin

Poplar-grafiikkakääntäjä muutti AlexNet-kuvauksen laskennalliseksi graafiksi, jossa on 18,7 miljoonaa kärkeä ja 115,8 miljoonaa reunaa. Selvästi näkyvä klusterointi on tulosta prosessien välisestä vahvasta kommunikaatiosta verkon jokaisessa kerroksessa, jolloin kerrosten välillä on helpompi kommunikoida.

Toinen esimerkki on yksinkertainen verkko täysi yhteys, koulutettu MNIST:ssä - yksinkertainen tietojoukko tietokonenäön käyttöön, eräänlainen "Hei, maailma" koneoppimisessa. Yksinkertainen verkko Tämän tietojoukon tutkiminen auttaa ymmärtämään Poplar-sovellusten ohjaamia kaavioita. Integroimalla graafikirjastoja kehyksiin, kuten TensorFlow, yritys tarjoaa yhden yksinkertaisimmista tavoista käyttää IPU:ita koneoppimissovelluksissa.

Kun graafi on rakennettu kääntäjällä, se on suoritettava. Tämä on mahdollista käyttämällä Graph Engineä. ResNet-50:n esimerkki osoittaa sen toiminnan.


ResNet-50 kaavio

ResNet-50-arkkitehtuuri mahdollistaa syväverkkojen luomisen toistuvista osioista. Prosessorin tarvitsee vain määrittää nämä osat kerran ja kutsua niitä uudelleen. Esimerkiksi conv4-tason klusteri suoritetaan kuusi kertaa, mutta se kartoitetaan kaavioon vain kerran. Kuvassa näkyy myös konvoluutiokerrosten muotojen monimuotoisuus, sillä jokaisessa on luonnollisen laskentatavan mukaan rakennettu graafi.

Kone luo ja hallitsee koneoppimismallin suorittamista kääntäjän luoman kaavion avulla. Kun Graph Engine on otettu käyttöön, se tarkkailee sovellusten käyttämiä IPU:ita tai laitteita ja reagoi niihin.

ResNet-50-kuvassa näkyy koko malli. Tällä tasolla yksittäisten kärkien välisiä yhteyksiä on vaikea tunnistaa, joten kannattaa katsoa suurennettuja kuvia. Alla on esimerkkejä hermoverkkokerrosten osista.

Miksi syväverkot tarvitsevat niin paljon muistia?

Suuret muistijalanjäljet ​​ovat yksi syvän neuroverkkojen suurimmista haasteista. Tutkijat yrittävät taistella DRAM-laitteiden rajallista kaistanleveyttä vastaan, jota nykyaikaisten järjestelmien on käytettävä tallentaakseen valtavan määrän painoja ja aktivaatioita syvään hermoverkkoon.

Arkkitehtuurit on kehitetty käyttämällä prosessorin sirut, suunniteltu peräkkäiseen käsittelyyn ja DRAM-optimointiin suuritiheyksisiä muistia varten. Näiden kahden laitteen välinen rajapinta on pullonkaula, joka rajoittaa kaistanleveyttä ja lisää merkittävästi virrankulutusta.

Vaikka meillä ei vielä ole täydellistä ymmärrystä ihmisaivoista ja niiden toiminnasta, yleisesti ymmärretään, että erillistä muistivarastoa ei ole olemassa. Toiminnan uskotaan olevan pitkäaikainen ja lyhytaikainen muisti ihmisen aivoissa se on rakennettu hermosolujen + synapsien rakenteeseen. Jopa yksinkertaisilla organismeilla, kuten madoilla, joiden hermoaivorakenne koostuu hieman yli 300 hermosolusta, on jonkin verran muistitoimintoa.

Muistin rakentaminen perinteisiin prosessoreihin on yksi tapa kiertää muistin pullonkaulaongelma, vapauttamalla valtava kaistanleveys kuluttaen samalla paljon vähemmän virtaa. Sirussa oleva muisti on kuitenkin kallista, eikä sitä ole suunniteltu todella suurille muistimäärille, jotka on liitetty prosessoreihin ja grafiikkasuoritteisiin, joita tällä hetkellä käytetään syvien hermoverkkojen kouluttamiseen ja käyttöönottoon.

Joten on hyödyllistä tarkastella, kuinka muistia käytetään nykyään prosessoreissa ja GPU-pohjaisissa syväoppimisjärjestelmissä, ja kysy itseltäsi: miksi ne tarvitsevat niin suuria muistia, kun ihmisaivot toimivat hyvin ilman niitä?

Neuraaliverkot tarvitsevat muistia syöttötietojen, painojen ja aktivointitoimintojen tallentamiseen, kun syöte etenee verkon läpi. Oppimisessa tulon aktivointi on säilytettävä, kunnes sitä voidaan käyttää lähtögradienttien virheiden laskemiseen.

Esimerkiksi 50-kerroksisessa ResNet-verkossa on noin 26 miljoonaa painoparametria ja se laskee 16 miljoonaa eteenpäin aktivointia. Jos käytät 32-bittistä kelluketta jokaisen painon ja aktivoinnin tallentamiseen, se vaatii noin 168 Mt tilaa. Käyttämällä pienempiä tarkkuusarvoja näiden painojen ja aktivointien tallentamiseen, voimme puolittaa tai jopa nelinkertaistaa tämän tallennustarpeen.

Vakava ongelma Muistiongelma ilmenee, koska GPU:t luottavat dataan, joka esitetään tiheinä vektoreina. Siksi he voivat käyttää yksittäistä ohjesäiettä (SIMD) korkean laskentatiheyden saavuttamiseksi. CPU käyttää samanlaisia ​​vektoriyksiköitä korkean suorituskyvyn laskentaan.

Grafiikkasuoritinten synapsin leveys on 1024 bittiä, joten ne käyttävät 32-bittistä liukulukudataa, joten ne usein jakavat sen 32 näytteen rinnakkaiseen minierään luodakseen 1024-bittisen datan vektoreita. Tämä lähestymistapa vektorin rinnakkaisuuteen lisää aktivointien määrää 32-kertaiseksi ja yli 2 Gt:n paikallisen tallennustilan tarvetta.

Grafiikkasuorittimet ja muut matriisialgebraan suunnitellut koneet ovat myös alttiina muistin kuormitukselle painojen tai hermoverkkojen aktivointien vuoksi. GPU:t eivät pysty tehokkaasti suorittamaan pieniä konvoluutioita, joita käytetään syvässä hermoverkoissa. Siksi muunnos nimeltä "reduction" käytetään muuntamaan nämä konvoluutiot matriisi-matriisikertoiksi (GEMM), joita GPU:t voivat käsitellä tehokkaasti.

Lisämuistia tarvitaan myös syötetietojen, tilapäisten arvojen ja ohjelmaohjeiden tallentamiseen. Muistin käytön mittaus ResNet-50:n harjoittelun aikana huippuluokan GPU:lla osoitti, että se vaati yli 7,5 Gt paikallista DRAM-muistia.

Jotkut saattavat ajatella, että alempi laskennallinen tarkkuus saattaa vähentää tarvittavan muistin määrää, mutta näin ei ole. Vaihtamalla data-arvot puoleen tarkkuuteen painotuksissa ja aktivaatioissa, täytät vain puolet SIMD-vektorin leveydestä ja hukkaat puolet käytettävissä olevista laskentaresursseista. Tämän kompensoimiseksi, kun vaihdat GPU:n täydestä tarkkuudesta puoleen tarkkuuteen, sinun on kaksinkertaistettava minierän koko pakottaaksesi riittävän tiedon rinnakkaisuuden käyttämään kaikkea saatavilla olevaa laskentaa. Siten siirtyminen pienempään tarkkuuteen ja GPU:n aktivointiin vaatii edelleen yli 7,5 Gt vapaata dynaamista muistia.

Koska tallennettavaa dataa on niin paljon, on yksinkertaisesti mahdotonta sovittaa kaikkea grafiikkasuorittimeen. Jokaisen konvoluutiohermoverkkokerroksen täytyy tallentaa ulkoisen DRAM:n tila, ladata seuraava verkkokerros ja ladata sitten tiedot järjestelmään. Tämän seurauksena jo valmiiksi kaistanleveysrajoitettu ulkoinen muistiliitäntä kärsii lisätaakasta, joka aiheutuu vaakojen jatkuvasta uudelleenlatauksesta ja aktivointitoimintojen tallentamisesta ja noutamisesta. Tämä hidastaa huomattavasti harjoitusaikaa ja lisää merkittävästi energiankulutusta.

On olemassa useita tapoja ratkaista tämä ongelma. Ensinnäkin toiminnot, kuten aktivointitoiminnot, voidaan suorittaa "paikan päällä", jolloin syöttötiedot voidaan kirjoittaa uudelleen suoraan ulostuloon. Tällä tavalla olemassa olevaa muistia voidaan käyttää uudelleen. Toiseksi mahdollisuus uudelleenkäyttö muistia voidaan saada analysoimalla verkon toimintojen välistä datariippuvuutta ja varaamalla sama muisti toiminnoille, jotka eivät käytä sitä sillä hetkellä.

Toinen lähestymistapa on erityisen tehokas, kun koko hermoverkko voidaan analysoida käännöshetkellä kiinteän varatun muistin luomiseksi, koska muistinhallinnan ylimääräiset kustannukset vähenevät lähes nollaan. Kävi ilmi, että näiden menetelmien yhdistelmä voi vähentää neuroverkon muistin käyttöä kahdesta kolmeen kertaan.
Baidu Deep Speech -tiimi löysi äskettäin kolmannen merkittävän lähestymistavan. He käyttivät erilaisia ​​muistinsäästötekniikoita saavuttaakseen 16-kertaisen vähennyksen aktivointitoimintojen muistinkulutuksessa, jolloin he voivat kouluttaa 100 kerroksen verkkoja. Aikaisemmin samalla muistimäärällä he pystyivät kouluttamaan verkkoja yhdeksällä kerroksella.

Muistin ja prosessointiresurssien yhdistämisellä yhdeksi laitteeksi on merkittävää potentiaalia parantaa konvoluutiohermoverkkojen sekä muiden koneoppimisen muotojen suorituskykyä ja tehokkuutta. Muistin ja laskentaresurssien välillä voidaan tehdä kompromisseja järjestelmän ominaisuuksien ja suorituskyvyn tasapainon saavuttamiseksi.

Neuroverkkoja ja tietomalleja muissa koneoppimismenetelmissä voidaan pitää matemaattisina kaavioina. Näihin kaavioihin on keskittynyt valtava määrä samansuuntaisuutta. Rinnakkaisprosessori, joka on suunniteltu hyödyntämään rinnakkaisuutta kaavioissa, ei ole riippuvainen minierästä ja voi merkittävästi vähentää tarvittavan paikallisen tallennustilan määrää.

Nykyiset tutkimustulokset ovat osoittaneet, että kaikki nämä menetelmät voivat parantaa merkittävästi hermoverkkojen suorituskykyä. Nykyaikaisissa grafiikkasuorittimissa ja suorittimissa on hyvin rajallinen sisäinen muisti, vain muutama megatavu yhteensä. Uudet erityisesti koneoppimiseen suunnitellut prosessoriarkkitehtuurit tasapainottavat muistin ja sirun laskentaa tarjoten merkittäviä suorituskyvyn ja tehokkuuden parannuksia nykypäivän suorittimiin ja grafiikkasuorittimiin verrattuna.

Mitä on syväoppiminen ( syvä oppiminen) ? 3. maaliskuuta 2016

Nykyään puhutaan muodikkaista syväoppimistekniikoista kuin se olisi taivaan mannaa. Mutta ymmärtävätkö puhujat mitä se todella on? Mutta tällä käsitteellä ei ole muodollista määritelmää, ja se yhdistää kokonaisen joukon teknologioita. Tässä postauksessa haluan selittää mahdollisimman kansansa ja pohjimmiltaan mitä tämän termin takana on, miksi se on niin suosittu ja mitä nämä tekniikat meille antavat.


Lyhyesti sanottuna tämä uusi termi (syvä oppiminen) kertoo kuinka koota monimutkaisempi ja syvempi abstraktio (esitys) joistakin yksinkertaisista abstraktioista. huolimatta siitä, että yksinkertaisimmatkin abstraktit on koottava tietokoneen itsensä, ei henkilön, toimesta. Ne. Kyse ei ole enää vain oppimisesta, vaan meta-oppimisesta. Kuvannollisesti sanoen tietokoneen on itse opittava, miten se parhaiten oppii. Ja itse asiassa, tämä on juuri sitä, mitä termi "syvä" tarkoittaa. Tätä termiä sovelletaan lähes aina keinotekoisiin hermoverkkoihin, jotka käyttävät useampaa kuin yhtä piilokerrosta, joten muodollisesti "syvä" tarkoittaa myös syvempää hermoverkkoarkkitehtuuria.

Tässä kehitysdiassa näet selvästi, kuinka syväoppiminen eroaa tavallisesta oppimisesta. toistan, Syväoppimisessa ainutlaatuista on, että kone löytää ominaisuudet itse(jonkin tärkeimmät ominaisuudet, joiden avulla on helpointa erottaa objektiluokka toisesta) ja jäsentää nämä merkit hierarkkisesti: yksinkertaisemmat yhdistetään monimutkaisemmiksi. Alla tarkastelemme tätä esimerkin avulla.

Katsotaanpa esimerkkiä kuvantunnistusongelmasta: miten se oli ennen - laitoimme valtavan (1024 × 768 - noin 800 000 numeerista arvoa) kuvan tavalliseen neuroverkkoon yhdellä kerroksella ja katselimme tietokoneen kuolevan hitaasti, tukehtuen puutteesta. muistista ja kyvyttömyydestä ymmärtää, mitkä pikselit ovat tärkeitä tunnistuksen kannalta ja mitkä eivät. Puhumattakaan tämän menetelmän tehokkuudesta. Tässä on tällaisen tavallisen (matalan) hermoverkon arkkitehtuuri.

Sitten he kuuntelivat, kuinka aivot erottavat piirteitä, ja se tekee tämän tiukasti hierarkkisesti, ja he myös päättivät poimia kuvista hierarkkisen rakenteen. Tätä varten hermoverkkoon piti lisätä piilokerroksia (kerroksia, jotka ovat tulon ja lähdön välissä; karkeasti sanottuna tiedon muunnosvaiheita). Vaikka he päättivät tehdä tämän melkein heti, kun neuronit keksittiin, verkkoja, joissa oli vain yksi piilotettu kerros, koulutettiin onnistuneesti. Ne. Periaatteessa syvät verkostot ovat olleet olemassa suunnilleen yhtä kauan kuin tavalliset, emme vain voineet kouluttaa niitä. Mikä on muuttunut?

Vuonna 2006 useat riippumattomat tutkijat ratkaisivat tämän ongelman kerralla (lisäksi laitteiston ominaisuudet olivat jo kehittyneet tarpeeksi, melko tehokkaat näytönohjaimet ilmestyivät). Nämä tutkijat ovat: Geoffrey Hinton (ja hänen kollegansa Ruslan Salakhutidinov) tekniikalla, jolla jokainen hermoverkon kerros esiopetetaan rajoitetulla Boltzmann-koneella (anteeksi nämä termit...), Yann LeCun konvoluutiohermoverkkojen kanssa ja Yoshuay Bengio kaskadeilla automaattisilla koodereilla. Kaksi ensimmäistä rekrytoi välittömästi Googlen ja Facebookin toimesta. Tässä on kaksi luentoa: yksi - Hinton, toinen - Lyakuna, jossa he kertovat, mitä syväoppiminen on. Kukaan ei voi kertoa sinulle tästä paremmin kuin he. Toinen siisti luento Schmidhuber syvän oppimisen kehittämisestä, joka on myös yksi tämän tieteen pilareista. Ja Hintonilla on myös erinomainen kurssi neuroneista.

Mihin syvät pystyvät? neuroverkot Nyt? He pystyvät tunnistamaan ja kuvaamaan esineitä, voisi sanoa, että he "ymmärtävät" mitä se on. Kyse on noin merkityksen tunnistamisesta.

Katso tämä video kameran näkemän reaaliaikaisesta tunnistamisesta.

Kuten jo sanoin, syväoppimisteknologiat ovat koko joukko teknologioita ja ratkaisuja. Olen jo luetellut useita niistä yllä olevassa kappaleessa, toinen esimerkki on tämä toistuvia verkkoja, joita käytetään yllä olevassa videossa kuvaamaan, mitä verkko näkee. Mutta tämän teknologialuokan suosituin edustaja on edelleen LyaKunin konvoluutiohermoverkot. Ne on rakennettu analogisesti kissan aivojen visuaalisen aivokuoren toimintaperiaatteiden kanssa, joissa löydettiin niin sanottuja yksinkertaisia ​​soluja, jotka reagoivat suoriin linjoihin eri kulmissa, ja monimutkaisia ​​soluja - joiden reaktio liittyy aktivaatioon. tietyn joukon yksinkertaisia ​​soluja. Vaikka ollakseni rehellinen, LaCun itse ei keskittynyt biologiaan, hän ratkaisi tiettyä ongelmaa (katso hänen luentojaan), ja sitten kaikki sattui.

Yksinkertaisesti sanottuna konvoluutioverkot ovat verkkoja, joissa oppimisen päärakenneelementti on neuronien ryhmä (yhdistelmä) (yleensä 3x3, 10x10 neliö jne.), eikä vain yksi. Ja kullakin verkoston tasolla koulutetaan kymmeniä tällaisia ​​ryhmiä. Verkko löytää neuronien yhdistelmiä, jotka maksimoivat kuvan tiedot. Ensimmäisellä tasolla verkko poimii kuvan alkeellisimmat, rakenteellisesti yksinkertaiset elementit - voisi sanoa, rakennusyksiköt: rajat, viivat, segmentit, kontrastit. Ylempänä ovat jo vakaat yhdistelmät ensimmäisen tason elementeistä ja niin edelleen ketjussa. Haluaisin vielä kerran korostaa pääominaisuus syväoppiminen: verkostot itse muodostavat nämä elementit ja päättävät, mitkä niistä ovat tärkeämpiä ja mitkä eivät. Tämä on tärkeää, koska koneoppimisen alalla ominaisuuksien luominen on avainasemassa ja nyt ollaan siirtymässä vaiheeseen, jossa tietokone itse oppii luomaan ja valitsemaan ominaisuuksia. Kone itse tunnistaa informatiivisten ominaisuuksien hierarkian.

Niinpä konvoluutioverkko muodostaa oppimisprosessin aikana (satojen kuvien katselun) hierarkian eri syvyystasoisista piirteistä. Ensimmäisellä tasolla ne voivat korostaa esimerkiksi sellaisia ​​​​elementtejä (heijastava kontrasti, kulma, reuna jne.).


Toisella tasolla tämä on jo elementti ensimmäisen tason elementeistä. Kolmannella - toisesta. Sinun täytyy ymmärtää, että tämä kuva on vain esittely. Nyt teollisessa käytössä tällaisissa verkoissa on 10-30 kerrosta (tasoa).

Kun tällainen verkosto on koulutettu, voimme käyttää sitä luokitteluun. Annettuaan jonkin kuvan syötteeksi ensimmäisen kerroksen neuroniryhmät juoksevat kuvan poikki aktivoituen niissä paikoissa, joissa on vastaava tietty elementti kuvan elementti. Ne. tämä verkosto jäsentää kuvan osiin - ensin viivoiksi, viivoiksi, kaltevuuskulmille, sitten monimutkaisemmille osille, ja lopulta päätyy siihen tulokseen, että kuva tällaisesta peruselementtien yhdistelmästä on kasvot.

Lisää konvoluutioverkoista -

"(Miehitysjulkaisut).

Tämä artikkeli on tarkoitettu ihmisille, joilla on jo merkittävää kokemusta syväoppimisesta (esimerkiksi niille, jotka ovat jo lukeneet tämän kirjan luvut 1-8). Oletuksena on suuri määrä tietoa.

Deep Learning: Geometric View

Yllättävin asia syvässä oppimisessa on kuinka yksinkertaista se on. Kymmenen vuotta sitten kukaan ei olisi voinut kuvitella hämmästyttäviä tuloksia, joita saavutamme koneen havaitsemisongelmissa käyttämällä yksinkertaisia ​​parametrisia malleja, jotka on koulutettu gradienttilaskeutumiseen. Nyt on käynyt ilmi, että tarvitsemme vain tarpeeksi iso Parametriset mallit on koulutettu tarpeeksi iso näytteiden määrä. Kuten Feynman kerran sanoi maailmankaikkeudesta: " Se ei ole monimutkaista, sitä on vain paljon».

Syväoppimisessa kaikki on vektoria, eli piste V geometrinen tila. Mallin syöttödata (tämä voi olla tekstiä, kuvia jne.) ja sen kohteet ensin "vektorisoidaan", eli käännetään joksikin alkuvektoriavaruuteen syötteeksi ja kohdevektoriavaruuteen lähtönä. Jokainen syväoppimismallin kerros suorittaa yhden yksinkertaisen geometrisen muunnoksen sen läpi kulkevalle tiedolle. Yhdessä mallikerrosten ketju luo yhden hyvin monimutkaisen geometrisen muunnoksen, joka on jaettu useisiin yksinkertaisiin muunnoksiin. Tämä monimutkainen muunnos yrittää muuntaa syötetietoavaruuden kohdeavaruuteen jokaiselle pisteelle. Muunnosparametrit määräytyvät kerrosten painojen mukaan, joita päivitetään jatkuvasti sen mukaan, kuinka hyvin malli tällä hetkellä toimii. Keskeinen ominaisuus geometrinen muunnos - mitä sen pitäisi olla erottuva, eli meidän pitäisi pystyä selvittämään sen parametrit kautta gradienttilasku. Intuitiivisesti tämä tarkoittaa, että geometrisen muuntamisen on oltava tasaista ja jatkuvaa - tärkeä rajoitus.

Koko prosessi tämän monimutkaisen geometrisen muunnoksen soveltamiseksi syöttötietoihin voidaan visualisoida 3D-muodossa kuvaamalla henkilöä, joka yrittää purkaa paperipallon: rypistynyt paperipallo on syöttödata, jonka kanssa malli alkaa toimia. Jokainen paperipallolla olevan henkilön liike on kuin yksinkertainen geometrinen muunnos, jonka suorittaa yksi kerros. Avautuvien eleiden täydellinen sarja on monimutkainen muunnos koko mallista. Syväoppimismallit ovat matemaattisia koneita moniulotteisen datan monimutkaisen valikoiman purkamiseen.

Se on syvän oppimisen taika: arvon muuttaminen vektoreiksi, geometrisiksi tiloiksi ja sitten vähitellen monimutkaisten geometristen muutosten oppiminen, jotka muuttavat tilan toiseksi. Tarvitaan vain riittävän suuri tila välittääkseen kaikki alkuperäisestä tiedosta löytyneet suhteet.

Syväoppimisen rajoitukset

Tällä yksinkertaisella strategialla ratkaistavien ongelmien valikoima on lähes loputon. Silti monet niistä ovat edelleen nykyisten syväoppimistekniikoiden ulottumattomissa – vaikka saatavilla on valtavia määriä manuaalisesti merkittyjä tietoja. Oletetaan esimerkiksi, että voit kerätä tietojoukon satoja tuhansia - jopa miljoonia - englanninkielisiä toimintokuvauksia ohjelmisto, jonka ovat kirjoittaneet tuotepäälliköt, sekä vastaava viitevuosi, jonka suunnittelutiimit ovat kehittäneet näiden vaatimusten täyttämiseksi. Edes näillä tiedoilla et voi opettaa syväoppimismallia yksinkertaisesti lukemaan tuotekuvausta ja luomaan vastaavaa koodikantaa. Tämä on vain yksi monista esimerkeistä. Yleensä kaikki, mikä vaatii päättelyä - kuten ohjelmointi tai tieteellisen menetelmän soveltaminen, pitkän aikavälin suunnittelu, algoritmistyylinen tietojen manipulointi - on syvän oppimismallien kykyjen ulkopuolella, riippumatta siitä, kuinka paljon dataa heität niihin. Jopa neuroverkon kouluttaminen suorittamaan lajittelualgoritmi on uskomattoman vaikea tehtävä.

Syynä on se, että syväoppimismalli on "vain" yksinkertaisten, jatkuvien geometristen muunnosten ketju, jotka muuttavat yhden vektoriavaruuden toiseksi. Se voi vain muuntaa yhden datajoukon X toiseksi joukoksi Y edellyttäen, että on mahdollinen jatkuva muunnos X:stä Y:ksi, joka voidaan oppia, ja saatavuus tiheä näytejoukko X:Y-muunnokset harjoitustietoina. Joten vaikka syväoppimismallia voidaan pitää eräänlaisena ohjelmana, useimpia ohjelmia ei voida ilmaista syväoppimismalleina- Useimmissa tehtävissä ei käytännössä ole syvää neuroverkkoa sopiva koko, joka ratkaisee ongelman, tai jos se on olemassa, se voi olla oppimaton, eli vastaava geometrinen muunnos voi olla liian monimutkainen tai sen opettamiseen ei ole sopivaa dataa.

Olemassa olevien syväoppimistekniikoiden laajentaminen – kerrosten lisääminen ja harjoittelutietojen käyttö – voi vain pinnallisesti lieventää joitakin näistä ongelmista. Se ei ratkaise sitä perustavanlaatuisempaa ongelmaa, että syväoppimismallit ovat hyvin rajallisia siinä, mitä ne voivat edustaa, ja että useimpia ohjelmia ei voida ilmaista jatkuvana datamonistojen geometrisena muodonmuutoksena.

Koneoppimismallien antropomorfoimisen riski

Yksi modernin tekoälyn todellisista riskeistä on syväoppimismallien toiminnan väärintulkinta ja niiden kykyjen liioitteleminen. Ihmismielen perusominaisuus on "ihmisen psyyken malli", taipumuksemme projisoida tavoitteita, uskomuksia ja tietoa ympärillämme oleviin asioihin. Hymyilevien kasvojen piirros kiveen tekee meistä yhtäkkiä "onnellisia" - henkisesti. Syväoppimiseen sovellettaessa tämä tarkoittaa esimerkiksi sitä, että jos voimme enemmän tai vähemmän onnistuneesti kouluttaa mallin luomaan kuvien tekstikuvauksia, niin meillä on tapana ajatella, että malli "ymmärtää" kuvien sisällön sekä luodut kuvaukset. Yllätymme sitten suuresti, kun malli alkaa tuottaa aivan absurdeja kuvauksia, johtuen pienestä poikkeamasta harjoitustiedoissa esitetystä kuvajoukosta.

Erityisesti tämä näkyy selkeimmin "vastakohtaisissa esimerkeissä", jotka ovat esimerkkejä syvän oppimisen verkon syöttötiedoista, jotka on nimenomaan valittu väärin luokiteltaviksi. Tiedät jo, että voit tehdä gradienttinousua syötetietoavaruudessa luodaksesi näytteitä, jotka maksimoivat esimerkiksi tietyn kaktivoinnin - tämä on visualisointitekniikan perusta, jota käsittelimme luvussa 5 (huom: kirjat "Deep Learning with Python"), aivan kuten Deep Dream -algoritmi luvusta 8. Samalla tavalla voit muuttaa kuvaa hieman gradientin nousun avulla maksimoidaksesi luokkaennusteen tietylle luokalle. Jos otamme valokuvan pandasta ja lisäämme "gibbon"-gradientin, voimme pakottaa hermoverkon luokittelemaan pandan gibboniksi. Tämä osoittaa sekä näiden mallien haurauden että syvän eron niiden ohjaaman panos-tuotos-muunnosten ja omien inhimillisten havaintojen välillä.

Yleisesti ottaen syväoppimismalleilla ei ole ymmärrystä syöttötiedoista vähintään, ei inhimillisessä mielessä. Oma ymmärryksemme kuvista, äänistä, kielestä perustuu sensomotoriseen kokemukseemme ihmisinä - aineellisina maallisina olentoina. Koneoppimismalleilla ei ole pääsyä tällaiseen kokemukseen, eivätkä ne siksi voi "ymmärtää" syöttödataamme millään ihmisen kaltaisella tavalla. Kommentoimalla suuren määrän koulutusesimerkkejä malleillemme pakotamme ne oppimaan geometrisen muunnoksen, joka pelkistää datan ihmiskäsitteiksi kyseiselle esimerkkijoukolle, mutta tämä muunnos on vain yksinkertaistettu luonnos. alkuperäinen malli mielemme, sellaisena kuin se on kehittynyt kokemuksestamme kehollisina vaikuttajina, on kuin heikko heijastus peilissä.

Koneoppimisen harjoittajana pidä tämä aina mielessä, äläkä koskaan joudu uskomaan, että hermoverkot ymmärtävät suorittamansa tehtävän - he eivät ainakaan meistä järkevällä tavalla. Heitä on koulutettu eri, paljon tarkempaan tehtävään kuin siihen, johon haluamme kouluttaa heitä: yksinkertaisesti muuttamalla syötetyt oppimismallit kohdeoppimismalleiksi, pisteestä pisteeseen. Näytä heille mitä tahansa, mikä eroaa harjoitustiedoista, ja he rikkoutuvat mitä absurdimmilla tavoilla.

Paikallinen yleistys vs. äärimmäinen yleistys

Syväoppimismallien suoran geometrisen muuntamisen syötteestä tuotteeseen ja ihmisten ajattelun ja oppimisen välillä näyttää olevan perustavanlaatuisia eroja. Kyse ei ole vain siitä, että ihmiset oppivat itseään kehollisista kokemuksistaan, eivätkä käsittelemällä harjoitusnäytteitä. Oppimisprosessien erojen lisäksi taustalla olevien uskomusten luonteessa on perustavanlaatuisia eroja.

Ihminen pystyy muuttamaan paljon muutakin kuin muuttamaan välittömän ärsykkeen välittömäksi vasteeksi, kuten hermoverkon tai ehkä hyönteisen. Ihmiset pitävät mielessään monimutkaisia, abstrakteja malleja nykyinen tilanne, itseään, muita ihmisiä ja osaa käyttää näitä malleja ennakoimaan erilaisia ​​mahdollisia tulevaisuuksia ja toteuttamaan pitkän aikavälin suunnittelua. He pystyvät yhdistämään tunnettuja käsitteitä kuvitellakseen jotain, jota he eivät ole koskaan ennen tienneet - kuten esimerkiksi piirtämään hevosen farkkuihin tai kuvittelemaan, mitä he tekisivät, jos he voisivat lotossa. Kyky ajatella hypoteettisesti, laajentaa mentaalitilan malliamme paljon pidemmälle kuin olemme suoraan kokeneet, eli kyky tehdä abstraktioita Ja perustelut, ehkä ihmisen kognition määrittävä ominaisuus. Kutsun tätä "äärimmäiseksi yleistämiseksi": kyky sopeutua uusiin, koskaan ennen kokemattomiin tilanteisiin käyttämällä vähän tai ei ollenkaan tietoa.

Tämä on jyrkässä ristiriidassa syväoppimisverkostojen tekemisen kanssa, jota kutsuisin "paikalliseksi yleistämiseksi": syöttötiedon muuntaminen lähtötiedoiksi lakkaa nopeasti, jos uudet syöttötiedot eroavat hiemankin siitä, mitä se kohtasi harjoituksen aikana. Harkitse esimerkiksi ongelmaa oppia sopivat laukaisuparametrit raketille, jonka on tarkoitus laskeutua Kuuhun. Jos käyttäisit tähän tehtävään hermoverkkoa, ohjattua tai vahvistuskoulutettua, sinun pitäisi antaa sille tuhansia tai miljoonia lentoratoja, eli sinun pitäisi tuottaa tiivis joukko esimerkkejä syöttöarvoavaruudessa oppiaksesi muuttamaan luotettavasti syöttöarvoavaruudesta lähtöarvoavaruuteen. Sitä vastoin ihmiset voivat käyttää abstraktion voimaa luomiseen fyysisiä malleja- rakettitiedettä - ja saada tarkka ratkaisu, joka vie raketin Kuuhun vain muutamalla yrityksellä. Samalla tavalla, jos kehittäisit hermoverkon ohjaamaan ihmiskehoa ja haluat sen oppivan kävelemään turvallisesti kaupungin läpi ilman, että auto joutuu, verkon pitäisi kuolla useita tuhansia kertoja eri tilanteissa ennen kuin se päättelee, että autot ovat vaarallisia ja epäonnistuvat niiden välttämiseksi. Jos se siirrettäisiin uuteen kaupunkiin, verkoston olisi opittava uudelleen suurin osa siitä, mitä se tiesi. Toisaalta ihmiset voivat oppia turvallista käyttäytymistä ilman kuolemaa – jälleen kerran hypoteettisten tilanteiden abstraktin simuloinnin ansiosta.

Huolimatta edistyksestämme konehavainnoissa, olemme edelleen hyvin kaukana ihmistason tekoälystä: mallimme voivat vain toimia paikallinen yleistys, sopeutuminen uusiin tilanteisiin, joiden on oltava hyvin lähellä aiempia tietoja, samalla kun ihmismieli pystyy äärimmäinen yleistys, sopeutuu nopeasti täysin uusiin tilanteisiin tai suunnittelee pitkälle tulevaisuutta.

Johtopäätökset

Tässä on mitä sinun tulee muistaa: syvän oppimisen ainoa todellinen menestys tähän mennessä on kyky kääntää X-avaruus Y-avaruudeksi jatkuvalla geometrisella muunnolla, kun otetaan huomioon suuri määrä ihmisen annotoitua dataa. Tämän hyvin tekeminen edustaa vallankumouksellista edistystä koko toimialalle, mutta ihmistason tekoäly on vielä kaukana.

Jotta voimme poistaa osan näistä rajoituksista ja alkaa kilpailla ihmisaivojen kanssa, meidän on siirryttävä pois suorasta panos-tuotos-muunnoksesta ja siirryttävä perustelut Ja abstraktioita. Tietokoneohjelmat voivat olla sopiva pohja erilaisten tilanteiden ja käsitteiden abstraktille mallintamiselle. Olemme sanoneet aiemmin (huomautus: Deep Learning with Pythonilla), että koneoppimismallit voidaan määritellä "ohjelmiksi, jotka oppivat"; tällä hetkellä voimme kouluttaa vain kapeaa ja erityistä osajoukkoa kaikista mahdollisista ohjelmista. Mutta entä jos voisimme kouluttaa jokaista ohjelmaa modulaarisesti ja iteratiivisesti? Katsotaan kuinka pääsemme sinne.

Syväoppimisen tulevaisuus

Ottaen huomioon sen, mitä tiedämme syväoppimisverkostojen toiminnasta, niiden rajoituksista ja nykytilasta tieteellinen tutkimus Voimmeko ennustaa, mitä tapahtuu keskipitkällä aikavälillä? Tässä muutamia henkilökohtaisia ​​ajatuksiani aiheesta. Muista, että minulla ei ole kristallipalloa ennustamiseen, joten suuri osa siitä, mitä odotan, ei välttämättä toteudu. Tämä on täyttä spekulaatiota. En jaa näitä ennusteita siksi, että odotan niiden toteutuvan täysin tulevaisuudessa, vaan siksi, että ne ovat mielenkiintoisia ja soveltuvia nykyhetkeen.

Tässä ovat korkealla tasolla tärkeimmät alueet, joita pidän lupaavina:

  • Mallit lähestyvät tietokoneohjelmia yleiskäyttöinen, rakennettu paljon rikkaampien primitiivien päälle kuin nykyiset erotettavissa olevat kerroksemme - näin saamme perustelut Ja abstraktioita, jonka puuttuminen on nykyisten mallien perustavanlaatuinen heikkous.
  • Syntyy uusia oppimisen muotoja, jotka tekevät tämän mahdolliseksi - ja mahdollistavat mallien siirtymisen pois yksinkertaisesti erottuvista muutoksista.
  • Mallit vaativat vähemmän kehittäjien panosta – sinun ei pitäisi olla sinun tehtäväsi jatkuvasti puuhata nuppeja.
  • Opittujen ominaisuuksien ja arkkitehtuurien uudelleenkäyttö lisääntyy, systemaattisesti; uudelleenkäytettäviin ja modulaarisiin rutiineihin perustuvat meta-oppimisjärjestelmät.
Huomaa lisäksi, että nämä näkökohdat eivät koske erityisesti ohjattua oppimista, joka on edelleen koneoppimisen perusta – ne koskevat myös kaikenlaista koneoppimista, mukaan lukien ohjaamaton oppiminen, ohjattu oppiminen ja vahvistusoppiminen. Sillä ei ole pohjimmiltaan väliä mistä etiketit tulevat tai miltä oppimisjaksosi näyttää. nämä koneoppimisen eri haarat ovat yksinkertaisesti saman rakenteen eri puolia.

Joten mene eteenpäin.

Mallit ohjelmina

Kuten aiemmin totesimme, koneoppimisen alalla odotettavissa oleva välttämätön muutoskehitys on siirtyminen pois puhtaasti toimivista malleista. kuvion tunnistus ja kykenee vain paikallinen yleistys, malleihin, jotka pystyvät abstraktioita Ja perustelut joka voi saavuttaa lopullinen yleistys. Kaikki nykyiset tekoälyohjelmat, joissa on peruspäättely, ovat ohjelmoijien koodattuja: esimerkiksi ohjelmat, jotka luottavat hakualgoritmeihin, graafien manipulointiin, muodolliseen logiikkaan. Esimerkiksi DeepMindin AlphaGo-ohjelmassa suuri osa näytön "älykkyydestä" on asiantuntevien ohjelmoijien suunnittelema ja koodaama (esimerkiksi Monte Carlo -puuhaku); Uudesta tiedosta oppimista tapahtuu vain erikoistuneissa osamoduuleissa - arvoverkostoissa ja politiikkaverkostoissa. Mutta tulevaisuudessa tällaisia ​​tekoälyjärjestelmiä voitaisiin kouluttaa kokonaan ilman ihmisen puuttumista.

Miten tämä saavutetaan? Otetaan se hyvin kuuluisa tyyppi verkot: RNN. Tärkeää on, että RNN:illä on hieman vähemmän rajoituksia kuin myötäkytkentäisillä neuroverkoilla. Tämä johtuu siitä, että RNN:t ovat vähän enemmän kuin yksinkertaisia ​​geometrisia muunnoksia: ne ovat geometrisia muunnoksia, jotka suoritetaan jatkuvasti for-silmukassa. For-silmukan ajoituksen määrittää kehittäjä: se on verkon sisäänrakennettu oletus. Luonnollisesti RNN:t ovat edelleen rajallisia siinä, mitä ne voivat edustaa, pääasiassa siksi, että jokainen niiden otettu askel on edelleen erottuva geometrinen muunnos ja koska ne välittävät informaatiota askel askeleelta jatkuvan geometrisen avaruuden pisteiden läpi (tilavektorit). Kuvittele nyt hermoverkkoja, joita "laajennettaisiin" ohjelmointiprimitiivien avulla samalla tavalla kuin silmukoille- mutta ei vain yksi kovakoodattu silmukka, jossa on ommeltu geometrinen muisti, vaan suuri joukko ohjelmointiprimitiivejä, joita malli voi käyttää vapaasti laajentaakseen prosessointikykyään, kuten haaroja, kun lausunnot, luomalla muuttujia, levytallennus pitkäaikaismuistiin, lajitteluoperaattoreihin, kehittyneisiin tietorakenteisiin, kuten luetteloihin, kaavioihin, hash-taulukoihin ja paljon muuta. Ohjelmien tila, jota tällainen verkko voi edustaa, on paljon laajempi kuin voidaan ilmaista olemassa oleviin verkkoihin syväoppiminen, ja jotkin näistä ohjelmista voivat saavuttaa ylivoimaisen yleistysvoiman.

Lyhyesti sanottuna siirrymme pois tosiasiasta, että meillä on toisaalta "kovakoodattu algoritminen älykkyys" (käsinkirjoitettu ohjelmisto) ja toisaalta "koulutettu geometrinen älykkyys" (syvä oppiminen). Sen sijaan päädymme yhdistelmään muodollisia algoritmimoduuleja, jotka tarjoavat ominaisuuksia perustelut Ja abstraktioita ja geometriset moduulit, jotka tarjoavat ominaisuuksia epävirallinen intuitio ja hahmontunnistus. Koko järjestelmä koulutetaan ilman tai vain vähän ihmisen väliintuloa.

Tekoälyyn liittyvä alue, jonka uskon voivan pian ottaa suuria harppauksia, on ohjelmistosynteesi, erityisesti hermoohjelmistojen synteesi. Ohjelmistosynteesi koostuu automaattisesta luomisesta yksinkertaisia ​​ohjelmia, käyttämällä tutkimiseen hakualgoritmia (mahdollisesti geneettistä hakua, kuten geneettisessä ohjelmoinnissa). suuri tila mahdolliset ohjelmat. Haku pysähtyy, kun löydetään ohjelma, joka täyttää vaaditut spesifikaatiot, jotka usein toimitetaan sarjana tulo-lähtöpareja. Kuten näette, tämä on hyvin samankaltainen kuin koneoppiminen: "harjoitusdata" tarjotaan syöte-lähtö-pareina, löydämme "ohjelman", joka vastaa syötteiden muuntamista lähdöiksi ja pystyy yleistämään uusiin tuloihin. Erona on, että harjoitusparametriarvojen sijasta kovakoodatussa ohjelmassa (hermoverkko) luomme lähdekoodi erillisen hakuprosessin kautta.

Odotan ehdottomasti, että kiinnostusta tälle alueelle tulee jälleen tulevina vuosina. Erityisesti odotan molemminpuolista tunkeutumista liittyvät alueet syväoppiminen ja ohjelmasynteesi, jossa emme vain luo ohjelmia yleiskäyttöisillä kielillä, vaan jossa luomme hermoverkkoja (geometrisiä tietojenkäsittelyvirtoja), täydennettynä rikas joukko algoritmisia primitiivejä, kuten silmukoille - ja monia muita. Tämän pitäisi olla paljon kätevämpää ja hyödyllisempää kuin suoran lähdekoodin luomisen, ja se laajentaa merkittävästi koneoppimisen avulla ratkaistavien ongelmien laajuutta - ohjelmien tilaa, jotka voimme luoda automaattisesti, kun otetaan huomioon asianmukaiset koulutustiedot. Sekoitus symbolista tekoälyä ja geometrista tekoälyä. Nykyaikaisia ​​RNN:itä voidaan pitää tällaisten hybridi-algoritmis-geometristen mallien historiallisena esi-isänä.


Piirustus: Koulutettu ohjelma luottaa samanaikaisesti geometrisiin primitiiveihin (kuvion tunnistus, intuitio) ja algoritmisiin primitiiveihin (argumentointi, haku, muisti).

Takaisin leviämisen ja erotettavien kerrosten lisäksi

Jos koneoppimismalleista tulee enemmän ohjelmia, ne tuskin ovat enää erotettavissa – varmasti ne ohjelmat käyttävät edelleen jatkuvia geometrisia kerroksia alirutiineina, jotka säilyvät erilaistuina, mutta kokonaismalli ei. Tämän seurauksena takaisinpropagoinnin käyttö painojen arvojen säätämiseen kiinteässä, kovakoodatussa verkossa ei välttämättä jää jatkossa harjoitusmallien valintamenetelmäksi – ainakaan sen ei pitäisi rajoittua pelkästään tähän menetelmään. Meidän on selvitettävä, kuinka kouluttaa erottumattomia järjestelmiä tehokkaimmin. Nykyisiä lähestymistapoja ovat muun muassa geneettiset algoritmit, "evoluutiostrategiat", tietyt vahvistusoppimismenetelmät, ADMM (Lagrange-kertoimien vaihtosuuntainen menetelmä). Luonnollisesti gradienttilasku on tullut jäädäkseen - gradienttitiedoista on aina hyötyä differentioitavien parametristen funktioiden optimoinnissa. Mutta malleistamme tulee varmasti kunnianhimoisempia kuin pelkät differentioituvat parametrifunktiot, joten niiden automatisoitu kehittäminen ("koneoppimisen" "koulutus") vaatii muutakin kuin pelkän toiston.

Lisäksi backpropagationilla on päästä päähän -kehys, joka soveltuu hyvien ketjutettujen muunnosten oppimiseen, mutta on laskennallisesti melko tehotonta, koska se ei hyödynnä täysin syvien verkkojen modulaarisuutta. Kaiken tehokkuuden lisäämiseksi on olemassa yksi universaali resepti: ota käyttöön modulaarisuus ja hierarkia. Joten voimme tehostaa itse backpropagaatiota ottamalla käyttöön irrotettuja oppimismoduuleja, joissa on jokin synkronointimekanismi niiden välillä, järjestettynä hierarkkisesti. Tämä strategia heijastuu osittain DeepMindin viimeaikaiseen "synteettisiä gradientteja" käsittelevään työhön. Odotan paljon, paljon lisää työtä tähän suuntaan lähitulevaisuudessa.

Voidaan kuvitella tulevaisuutta, jossa globaalisti erottelemattomat mallit (mutta erotettavissa olevilla osilla) oppivat - kasvavat - käyttämällä tehokasta hakuprosessia, jossa ei käytetä gradientteja, kun taas differentioituvat osat oppivat vielä nopeammin gradienttien avulla käyttämällä joitain tehokkaampia backpropagation versioita.

Automatisoitu koneoppiminen

Arkkitehtuurin tulevaisuudessa malleja luodaan oppimalla eikä insinöörien kirjoittamia käsin. Tuloksena olevat mallit yhdistetään automaattisesti runsaamman joukon primitiivien ja ohjelmamaisten koneoppimismallien kanssa.

Nykyään suurimman osan ajasta syväoppimisjärjestelmän kehittäjä muokkaa loputtomasti tietoja Python-skripteillä ja viettää sitten pitkän aikaa syväoppimisverkon arkkitehtuurin ja hyperparametrien virittämiseen saadakseen toimivan mallin - tai jopa erinomaisen mallin, jos kehittäjä on niin kunnianhimoinen. Sanomattakin on selvää, että tämä ei ole paras tilanne. Mutta tekoäly voi auttaa myös tässä. Valitettavasti tietojenkäsittely- ja valmisteluosa on vaikea automatisoida, koska se vaatii usein toimialuetuntemusta sekä selkeää, korkeatasoista ymmärrystä siitä, mitä kehittäjä haluaa saavuttaa. Hyperparametrien viritys on kuitenkin yksinkertainen hakumenettely ja sisään tässä tapauksessa tiedämme jo, mitä kehittäjä haluaa saavuttaa: tämän määrää konfiguroitavan hermoverkon häviöfunktio. Nykyään on yleistynyt asentaa AutoML-perusjärjestelmiä, jotka hoitavat suurimman osan malliasetusten säätämisestä. Asensin sellaisen itse voittaakseni Kaggle-kilpailun.

Perustasolla tällainen järjestelmä yksinkertaisesti säätäisi pinon kerrosten määrää, niiden järjestystä ja kunkin kerroksen elementtien tai suodattimien määrää. Tämä tehdään yleensä käyttämällä Hyperoptin kaltaisia ​​kirjastoja, joista keskustelimme luvussa 7 (huomautus: kirjat "Deep Learning with Python"). Mutta voit mennä paljon pidemmälle ja yrittää oppia oikean arkkitehtuurin alusta alkaen vähimmäisrajoituksin. Tämä on mahdollista käyttämällä esimerkiksi vahvistusoppimista tai geneettisiä algoritmeja.

Toinen tärkeä suunta AutoML:n kehityksessä on malliarkkitehtuurin koulutus samanaikaisesti mallipainojen kanssa. Harjoittelemalla mallia tyhjästä kokeilemme joka kerta hieman erilaisia ​​arkkitehtuureja, mikä on äärimmäisen tehotonta, joten todella tehokas AutoML-järjestelmä hallitsee arkkitehtuurien evoluutiota, kun taas mallin ominaisuuksia viritetään harjoitusdatan backpropagation kautta, jolloin kaikki laskennalliset ylimääräiset kustannukset jäävät pois. Näitä rivejä kirjoittaessani samanlaisia ​​lähestymistapoja on jo alettu soveltaa.

Kun tämä kaikki alkaa tapahtua, koneoppimisjärjestelmien kehittäjät eivät jää ilman työtä - he siirtyvät enemmän korkea taso arvoketjussa. He alkavat laittaa paljon enemmän enemmän vaivaa luomiseen monimutkaiset toiminnot tappiot, jotka heijastavat aidosti liiketoiminnan haasteita ja heillä on syvä ymmärrys siitä, kuinka heidän mallinsa vaikuttavat digitaalisiin ekosysteemeihin, joissa ne toimivat (esimerkiksi asiakkaat, jotka käyttävät mallin ennusteita ja tuottavat dataa sen kouluttamiseen) – ongelmat, jotka ovat nyt vain suurimpia yrityksillä on varaa harkita.

Elinikäinen oppiminen ja modulaaristen rutiinien uudelleenkäyttö

Jos malleista tulee monimutkaisempia ja ne rakennetaan rikkaammille algoritmiprimitiivien varalle, tämä lisääntynyt monimutkaisuus vaatii tehokkaampaa uudelleenkäyttöä tehtävien välillä sen sijaan, että mallin opetettaisiin tyhjästä aina, kun meillä on uusi tehtävä tai tehtävä. uusi setti tiedot. Lopulta monet tietojoukot eivät sisällä tarpeeksi tietoa uuden monimutkaisen mallin kehittämiseksi tyhjästä, ja aiempien aineistojen tietojen käyttäminen on välttämätöntä. Et opi englantia uudelleen joka kerta, kun avaat sen. uusi kirja- se olisi mahdotonta. Lisäksi jokaisen uuden ongelman opettelu alusta alkaen on erittäin tehotonta johtuen nykyisten ja aiemmin kohtaamien ongelmien merkittävästä päällekkäisyydestä.

Lisäksi sisään viime vuosina Merkittävä havainto on tehty toistuvasti, että saman mallin harjoittelu useiden löyhästi kytkettyjen tehtävien suorittamiseen parantaa sen suorituskykyä. jokaisessa näistä tehtävistä. Esimerkiksi saman hermoverkon kouluttaminen kääntämään englannista saksaksi ja ranskasta italiaksi johtaa malliin, joka on parempi jokaisessa näistä kielipareista. Kun kuvien luokittelumallia koulutetaan samanaikaisesti kuvan segmentointimallin kanssa, yhdellä konvoluutiopohjalla, saadaan malli, joka on parempi molemmissa tehtävissä. Ja niin edelleen. Tämä on varsin intuitiivista: aina on jonkinlainen tiedot, jotka ovat päällekkäisiä näiden kahden näennäisesti erilaisen tehtävän välillä, ja siksi yleinen malli on pääsy lisää tietoja kustakin yksittäisestä tehtävästä kuin malli, joka on koulutettu vain kyseiseen tehtävään.

Mitä me itse asiassa teemme, kun käytämme mallia uudelleen erilaisia ​​tehtäviä ah, joten käytämme esikoulutettuja painoja suorissa malleissa yleisiä toimintoja, kuten poisto visuaalisia merkkejä. Näit tämän käytännössä luvussa 5. Odotan, että tästä tekniikasta käytetään yleisesti yleisempää versiota jatkossa: emme käytä vain aiemmin opittuja ominaisuuksia (alimallipainoja), vaan myös malliarkkitehtuureja ja harjoitusmenetelmiä. Kun malleista tulee ohjelmamaisempia, alamme käyttää uudelleen aliohjelmat, kuten funktiot ja luokat tavallisissa ohjelmointikielissä.

Ajattele, miltä ohjelmistokehitysprosessi näyttää nykyään: kun insinööri ratkaisee tietyn ongelman (esim. HTTP-pyynnöt Pythonissa), hän pakataan se abstraktiksi kirjastoksi uudelleenkäyttöä varten. Insinöörejä, jotka tapaavat tulevaisuudessa samanlainen ongelma, etsi vain olemassa olevia kirjastoja, lataa ja käytä niitä omissa projekteissaan. Samoin tulevaisuudessa meta-oppimisjärjestelmät pystyvät koottamaan uusia ohjelmia seulomalla maailmanlaajuisen korkean tason uudelleenkäytettävien lohkojen kirjaston. Jos järjestelmä alkaa kehittää samanlaisia ​​rutiineja useille eri tehtäville, se julkaisee rutiinista "abstraktin" uudelleenkäytettävän version ja tallentaa sen globaaliin kirjastoon. Tämä prosessi avaa mahdollisuuden abstraktioita, välttämätön komponentti "lopullisen yleistyksen" saavuttamiseksi: rutiini, joka on hyödyllinen monille tehtäville ja aloille, voidaan sanoa "abstrahoivan" joitakin päätöksenteon näkökohtia. Tämä "abstraktion" määritelmä ei näytä olevan abstraktion käsite ohjelmistokehityksessä. Nämä rutiinit voivat olla joko geometrisia (syvät oppimismoduulit valmiiksi koulutetuilla esityksillä) tai algoritmisia (lähempänä kirjastoja, joiden kanssa nykyaikaiset ohjelmoijat työskentelevät).

Piirustus: Meta-oppimisjärjestelmä, joka voi nopeasti kehittää tehtäväkohtaisia ​​malleja uudelleenkäytettävien primitiivien avulla (algoritminen ja geometrinen) ja saavuttaa näin "lopullisen yleistyksen".

Tulos: pitkän aikavälin visio

Lyhyesti sanottuna, tässä on pitkän aikavälin näkemykseni koneoppimisesta:
  • Malleista tulee enemmän kuin ohjelmia, ja niiden ominaisuudet ulottuvat paljon pidemmälle kuin lähdetietojen jatkuvat geometriset muunnokset, joiden kanssa työskentelemme nyt. Ehkä nämä ohjelmat ovat paljon lähempänä niitä abstrakteja mentaalimalleja, joita ihmiset pitävät ympäristöstään ja itsestään, ja ne pystyvät algoritmisen luonteensa vuoksi voimakkaampaan yleistykseen.
  • Erityisesti mallit sekoittuvat algoritmiset moduulit muodollisen päättelyn, etsinnän, abstraktiokyvyn ja -kyvyn kanssa geometriset moduulit epävirallisella intuitiolla ja hahmontunnistuksella. AlphaGo (järjestelmä, joka vaati intensiivistä manuaalista ohjelmointia ja arkkitehtuuria) tarjoaa varhaisen esimerkin siitä, miltä symbolisen ja geometrisen tekoälyn yhdistäminen voisi näyttää.
  • He tekevät kasvaa automaattisesti (sen sijaan, että ohjelmoijat kirjoittaisivat ne käsin), käyttämällä modulaarisia osia maailmanlaajuisesta uudelleenkäytettävien rutiinien kirjastosta – kirjastosta, joka on kehittynyt sulauttamalla tuhansien aikaisempien ongelmien ja tietosarjojen tehokkaita malleja. Kun metallioppimisjärjestelmä on tunnistanut yleiset ongelmanratkaisumallit, ne muunnetaan uudelleenkäytettäviksi rutiiniksi - aivan kuten funktiot ja luokat moderni ohjelmointi- ja lisätty maailmanlaajuiseen kirjastoon. Näin kyky saavutetaan abstraktioita.
  • Maailmanlaajuinen kirjasto ja siihen liittyvä mallinkasvatusjärjestelmä pystyy saavuttamaan jonkinlaisen ihmisen kaltaisen "lopullisen yleistyksen": uuden tehtävän, uuden tilanteen edessä järjestelmä pystyy kokoamaan uuden toimintamallin kyseiselle tehtävälle käyttämällä hyvin vähän dataa, kiitos: 1) rikkaiden ohjelmamaisten primitiivien, jotka yleistävät hyvin ja 2) laajan kokemuksen vastaavien ongelmien ratkaisemisesta. Samalla tavalla kuin ihmiset voivat nopeasti oppia uuden monimutkaisen videopelin, koska heillä on aikaisempaa kokemusta monista muista peleistä ja koska aikaisempaan kokemukseen perustuvat mallit ovat abstrakteja ja ohjelmamaisia. yksinkertainen muunnos kannustaa toimintaan.
  • Pohjimmiltaan tämä jatkuvasti oppiva mallikasvujärjestelmä voidaan tulkita vahvaksi tekoälyksi. Mutta älä odota jonkinlaisen yksittäisen robotti-apokalypsin alkamista: se on puhdasta fantasiaa, joka syntyi iso lista syviä väärinkäsityksiä älykkyyden ja tekniikan ymmärtämisessä. Tässä kritiikissä ei kuitenkaan ole sijaa.

Keinotekoisista hermoverkoista puhutaan ja kirjoitetaan nykyään paljon sekä big datan ja koneoppimisen kontekstissa että sen ulkopuolella. Tässä artikkelissa muistamme tämän käsitteen merkityksen, hahmottelemme jälleen sen soveltamisalueen ja puhumme myös tärkeästä lähestymistavasta, joka liittyy hermoverkkoihin - syväoppiminen, kuvailemme sen käsitettä sekä edut ja haittoja tietyissä käyttötapauksissa.

Mikä on neuroverkko?

Kuten tiedät, hermoverkon (NN) käsite tulee biologiasta ja on jonkin verran yksinkertaistettu malli rakenteesta. ihmisen aivot. Mutta älkäämme sukeltako luonnontieteen villiin - helpoin tapa on kuvitella neuroni (mukaan lukien keinotekoinen) eräänlaiseksi mustaksi laatikoksi, jossa on useita tuloreikiä ja yksi lähtö.

Matemaattisesti keinotekoinen neuroni suorittaa vektorimuunnoksen tulosignaalit(vaikuttaa) X lähtövektoriin Y käyttämällä toimintoa, jota kutsutaan aktivointifunktioksi. Yhteydessä (keinohermoverkko - ANN) toimii kolmen tyyppisiä hermosoluja: sisääntulo (tietojen vastaanottaminen ulkomaailmaan- kiinnostavien muuttujien arvot), lähtö (paluu halutut muuttujat - esimerkiksi ennusteet tai ohjaussignaalit), sekä väli - neuronit, jotka suorittavat tiettyjä sisäisiä ("piilotettuja") toimintoja. Klassinen ANN koostuu siis kolmesta tai useammasta neuronikerroksesta, ja toisessa ja sitä seuraavissa kerroksissa ("piilotettu" ja tuotettu) jokainen elementti on yhdistetty kaikkiin edellisen kerroksen elementteihin.

On tärkeää muistaa käsite palautetta, joka määrittää ANN-rakenteen tyypin: suora signaalin siirto (signaalit kulkevat peräkkäin tulokerroksesta piilokerroksen läpi ja tulevat ulostulokerrokseen) ja toistuva rakenne, kun verkko sisältää yhteyksiä, jotka menevät takaisin, kaukaisemmista hermosoluista lähempiin neuroneihin). Kaikki nämä käsitteet muodostavat välttämättömän vähimmäistiedon siirtyäkseen ANN:n ymmärtämisen seuraavalle tasolle - neuroverkon kouluttamiseen, sen menetelmien luokitteluun ja kunkin niistä toimintaperiaatteiden ymmärtämiseen.

Neuroverkkokoulutus

Emme saa unohtaa, miksi tällaisia ​​luokkia yleensä käytetään - muuten on olemassa vaara juuttua abstraktiin matematiikkaan. Itse asiassa keinotekoiset hermoverkot ymmärretään luokkana menetelmiä tiettyjen käytännön ongelmien ratkaisemiseksi, joista tärkeimmät ovat hahmontunnistuksen, päätöksenteon, approksimoinnin ja tiedon pakkaamisen ongelmat sekä meille mielenkiintoisimmat klusterin ongelmat. analyysi ja ennustaminen.

Menemättä toiseen äärimmäisyyteen ja menemättä yksityiskohtiin ANN-menetelmien toiminnasta kussakin yksittäisessä tapauksessa, muistuttakaamme, että joka tapauksessa se on hermoverkon kyky oppia (opettajan kanssa tai "itsekseen"). ”), joka on avainasema sen käyttämisessä käytännön ongelmien ratkaisemisessa.

Yleisesti ottaen ANN:n koulutus on seuraava:

  1. syöttöhermosolut vastaanottavat muuttujia ("ärsykkeitä") ulkoisesta ympäristöstä;
  2. vastaanotetun tiedon mukaan hermoverkon vapaat parametrit muuttuvat (hermosolujen välikerrokset toimivat);
  3. Neuraaliverkon rakenteen muutosten seurauksena verkko "reagoi" tietoon eri tavalla.

Tämä on yleinen algoritmi hermoverkon kouluttamiseen (muistataanpa Pavlovin koira - kyllä, kyllä, ehdollisen refleksin muodostumisen sisäinen mekanismi on juuri sellainen - ja unohdetaan heti: kontekstimme kuuluu kuitenkin operointiin teknisiä käsitteitä ja esimerkkejä).

On selvää, että universaalia oppimisalgoritmia ei ole olemassa eikä todennäköisesti voi olla olemassa; Käsitteellisesti lähestymistavat oppimiseen jaetaan ohjattuun oppimiseen ja ohjaamattomaan oppimiseen. Ensimmäinen algoritmi olettaa, että jokaiselle tulovektorille ("oppimis") on vaadittu arvo lähtövektorista ("tavoite") - siis nämä kaksi arvoa muodostavat harjoitusparin, ja koko tällaisten parien joukko on harjoitussetti. Ohjaamattoman oppimisen tapauksessa koulutussarja koostuu vain syöttövektoreista - ja tämä tilanne on realistisempi tosielämän näkökulmasta.

Syvä oppiminen

Syväoppimisen käsite viittaa toiseen luokitukseen ja tarkoittaa lähestymistapaa niin kutsuttujen syvärakenteiden koulutukseen, jotka sisältävät monitasoisia hermoverkkoja. Yksinkertainen esimerkki kuvantunnistuksen alalta: on tarpeen opettaa kone tunnistamaan yhä abstraktimpia piirteitä muiden abstraktien piirteiden suhteen, eli määrittämään koko kasvojen, silmien ja suun ilmeen suhde ja lopulta värillisten pikselien ryhmiä matemaattisesti. Siten syvässä hermoverkossa jokaisella ominaisuuksien tasolla on oma kerros; On selvää, että tällaisen "kolossin" kouluttaminen vaatii tutkijoilta asianmukaista kokemusta ja laitteiston tasoa. Olosuhteet kehittyivät syvän hermoston oppimisen puoleen vasta vuoteen 2006 mennessä - ja kahdeksan vuotta myöhemmin voimme puhua vallankumouksesta, jonka tämä lähestymistapa on tuottanut koneoppimisessa.

Joten ensinnäkin artikkelimme yhteydessä on syytä huomata seuraava: syvä oppiminen ei useimmissa tapauksissa ole henkilön valvonnassa. Toisin sanoen tämä lähestymistapa sisältää hermoverkon koulutuksen ilman opettajaa. Tämä on "syvän" lähestymistavan tärkein etu: valvottu koneoppiminen, erityisesti syvärakenteiden tapauksessa, vaatii valtavia aika- ja työkustannuksia. Syväoppiminen puolestaan ​​​​on lähestymistapa, joka mallintaa (tai ainakin yrittää lähentää) ihmisen abstraktia ajattelua sen käyttämisen sijaan.

Ajatus, kuten tavallista, on upea, mutta lähestymistavan tielle syntyy varsin luonnollisia ongelmia - ennen kaikkea sen universaalisuuden vaatimuksiin perustuen. Itse asiassa, jos syvän oppimisen lähestymistavat ovat saavuttaneet merkittävää menestystä kuvantunnistuksen alalla, niin samalla käsittelyllä luonnollinen kieli Kysymyksiä on edelleen paljon enemmän kuin vastauksia. On selvää, että seuraavien n vuoden aikana on epätodennäköistä, että on mahdollista luoda "keinotekoinen Leonardo Da Vinci" tai edes - ainakin! - "keinotekoinen homo sapiens".

Tekoälyn tutkijoiden edessä on kuitenkin jo etiikkakysymys: pelot, jotka ilmaistaan ​​jokaisessa itseään kunnioittavassa science fiction -elokuvassa, alkaen "Terminaattorista" ja päättyen "Transformersiin", eivät enää vaikuta hauskoilta (nykyaikaiset hienostuneet hermoverkot voivat jo olla hyönteisten aivojen työtä pidetään uskottavana mallina!), mutta ovat toistaiseksi selvästi tarpeettomia.

Ihanteellinen teknologinen tulevaisuus näyttää meille aikakautena, jolloin ihminen pystyy siirtämään suurimman osan toimivaltuuksistaan ​​koneelle - tai ainakin voi antaa sen helpottaa merkittävää osaa hänen henkisestä työstään. Syväoppimisen käsite on yksi askel kohti tätä unelmaa. Tie edessä on pitkä, mutta jo nyt on selvää, että hermoverkot ja niihin liittyvät kehittyvät lähestymistavat pystyvät lopulta toteuttamaan tieteiskirjailijoiden toiveet.