Vissvarīgākais par neironu tīkliem. Lekcija Yandex. Mākslīgais intelekts meklējumos. Kā Yandex iemācījās izmantot neironu tīklus, lai meklētu pēc nozīmes, nevis pēc vārdiem Naīvās meklēšanas laikmets

Saskaņā ar uzņēmuma Yandex preses dienesta datiem, izmantojot neironu tīklu, viņai izdevās ievērojami palielināt izšķirtspēju un uzlabot attēla kvalitāti desmit padomju karikatūrām, kas ir vienas no slavenākajām.

Pēdējo dažu gadu laikā zinātnieki ir radījuši dažādus neironu tīklus, pateicoties datoru skaitļošanas jaudas pieaugumam un matemātikas attīstībai. Neironu tīkli ir mākslīgā intelekta sistēmas, kas var atrisināt nenozīmīgas problēmas. Daži šādi sarežģīti neironu tīkli var pat domāt ārpus rāmjiem, tādējādi neatkarīgi radot jaunus mākslas darbus un attīstot novatoriskas tehnoloģijas.

Yandex neironu tīklu sauc par DeepHD. Iepriekš tas jau bija sevi labi parādījis, kad to izmantoja filmu kvalitātes uzlabošanai, kas stāsta par Lielo Tēvijas karu. Pēc tam septiņas filmas tika mainītas. Tagad kārta padomju animācijai: Sniega karaliene, Scarlet Flower, Kaķēns vārdā Vū, Umka meklē draugu, Īkstīte utt.

Īpaša mākslīgā intelekta sistēma nodarbojas tikai ar kvalitātes uzlabošanu un neveic nekādas izmaiņas multfilmu kadros. Viņas uzdevums ir atjaunot detaļas, kuras bija iecerējis mākslinieks, bet kas tika pazaudētas, pārceļot karikatūras no filmas uz digitālo formātu. Lapā, kurā ir DeepHD neironu tīkla apraksts, ir runāts par tā funkcijām. Pavisam ir četras šādas iespējas: defektu un trokšņu noņemšana, detaļu saglabāšana, palielinot, lielisks darbs ar video straumēm un atsevišķiem attēliem, iespēja strādāt reāllaikā.

DeepHD tehnoloģijas pamatā ir ģeneratīvi pretrunīgi neironu tīkli. Sākotnējā posmā viens neironu tīkls nodarbojas ar defektu novēršanu, kas parādās video saspiešanas laikā. Otro posmu veic cits neironu tīkls, kas ir atbildīgs par attēla palielināšanu, kā arī detaļu skaidrības saglabāšanu šādu izmaiņu laikā. Ar detalizētu DeepHD neironu tīkla darbu varat iepazīties tā veidotāju oficiālajā emuārā.

Ir vērts atzīmēt, ka DeepHD skatītājiem mūsdienās ir pieejamas ne tikai vecās filmas un multfilmas, bet arī jaunas mākslas un animācijas filmas. Jūs varat tos atrast, izmantojot meklēšanas vaicājumu, pievienojot “DeepHD”. Šodien jūs pat varat skatīties televīzijas kanālus augstākā kvalitātē, tas ir kļuvis pieejams, pateicoties neironu tīkla spējai darboties reāllaikā.

Vai jums patika šī ziņa? Tad nospiediet.

Yandex ir ieviesis jaunu meklēšanas algoritmu, kura pamatā ir neironu tīkli. Pēc ekspertu domām, tam vajadzētu palīdzēt uzņēmumam palielināt pārsvaru Krievijas tirgū no galvenā konkurenta - Google

Krievijas interneta holdings Yandex ieviesis jaunu meklēšanas algoritmu, kura pamatā ir neironu tīkli. Par to paziņojis dienesta atbilstības dienesta vadītājs Aleksandrs Safronovs. Jaunais algoritms ar nosaukumu “Koroļovs” veic meklēšanu ne tikai pēc atslēgvārdiem, bet arī pēc nozīmes, un uz sarežģītiem jautājumiem tiek sniegtas precīzākas atbildes, skaidroja Yandex pārstāvis.

2016. gadā Yandex ieviesa Palekh algoritmu, kas reāllaikā salīdzina reta un unikāla pieprasījuma nozīmi un tīmekļa lapas nosaukumu, pat ja tiem nav kopīgu atslēgvārdu. Piemēram, jautājot “glezna, kurā griežas debesis”, meklētājprogramma varēs atgriezt Van Goga darbu “Zvaigžņotā nakts”. Atšķirībā no Palekh, Korolev spēj analizēt visu lapu, kā arī to vaicājumu nozīmi, kas ved uz to citus lietotājus.

Yandex meklēšanas nodaļas vadītājs Andrejs Styskins sniedza vēl vienu sarežģīta pieprasījuma piemēru: "filma par kosmosu, kurā tēvs sazinās ar meitu caur otrām rokām." Šajā gadījumā pieprasījums nesatur atslēgvārdus, bet meklēšanas algoritms spēj saprast, ka mēs runājam par filmu “Starpzvaigžņu”, saka Styskins.

Kā norāda servisa pārstāvji, neironu tīkls spēj pašmācīties, tāpēc, jo vairāk lietotāju meklēs meklētājā, jo precīzāki būs rezultāti. Testēšanai tiks izmantota 2014. gadā palaistā atvērtā pūļa pakalpojumu platforma Yandex.Toloka. Būtībā šis ir pakalpojums, kurā ikviens var piedalīties Yandex produktu testēšanā, dot tiem vērtējumus un atstāt komentārus. Tas ļauj uzņēmumam uzlabot savus pakalpojumus, un lietotāji par to saņem naudas atlīdzību. Pašlaik vietnē Yandex.Toloka ir reģistrēti vairāk nekā 1 miljons lietotāju.

"Neironu tīklu problēma bija tā, ka tie darbojās ļoti lēni un tos nevarēja izmantot, lai strādātu ar milzīgu teksta daudzumu reāllaikā," saka Igors Ašmanovs, Ashmanov and Partners dibinātājs un vadošais partneris. "Ja Yandex patiešām spēja iesaistīt neironu tīklus visa Runet apjoma indeksēšanā, tas ir interesanti, tas ir diezgan nopietns sasniegums no tehnoloģiskā viedokļa." Cik ļoti jaunais algoritms uzlabos meklēšanas kvalitāti un vai tas principā uzlabos, vēl jāanalizē, atzīmēja Ašmanovs.

Galvenais Yandex konkurents Google, pēc Ashmanov and Partners vadītāja teiktā, vēl nav oficiāli paziņojis par neironu tīklu ieviešanu savos meklēšanas algoritmos. "Google var atļauties iestatīt ranžēšanas faktorus atšķirīgi un ilgāk eksperimentēt šajā jomā, neieviešot jaunas tehnoloģijas meklēšanā, jo uzņēmumam ir vairāk programmētāju un resursu," atzīmēja eksperts.


Panākt un apdzīt

Pēc VTB Capital analītiķa Vladimira Bespalova teiktā, jaunā Krievijas meklētājprogrammas versija ir solis, lai saglabātu Yandex daļu tirgū. "Atjauninātā Search mobilā lietojumprogramma, jaunais meklētājprogrammas algoritms - tam visam vajadzētu palīdzēt Yandex stabilizēties un palielināt savu daļu meklēšanas tirgū," saka eksperts. — Ietekme nebūs jūtama uzreiz, taču meklēšanas vaicājumu samazināšanās ilgtermiņā var nelabvēlīgāk ietekmēt turpmāko veiktspēju. Meklēšana ir galvenais Yandex produkts, uzņēmuma galvenie ienākumi ir reklāma, kas ir saistīta ar meklēšanu.

FAS lēmums var palīdzēt Yandex saglabāt savas pozīcijas mobilajā meklēšanā, atgādina Bespalovs. Šā gada aprīlī departaments noslēdza izlīguma līgumu ar Krievijas uzņēmuma galveno konkurentu meklēšanas tirgū Google. Saskaņā ar to amerikāņu interneta gigants pārskatīs līgumus ar Android viedtālruņu ražotājiem Krievijā un ļaus lietotājiem kā galvenos savās ierīcēs izvēlēties alternatīvos Google meklēšanas pakalpojumus.

Šā gada otrā ceturkšņa beigās Yandex daļa meklēšanas tirgū Krievijā sasniedza 54,3%, ziņo Yandex N.V. (Yandex mātesuzņēmums) savā finanšu pārskatā, atsaucoties uz savu analītikas pakalpojumu Yandex.Radar. Saskaņā ar Yandex.Radar datiem 31. jūlijā Google ieņēma 40,36% meklētājprogrammu vidū Krievijā. Saskaņā ar LiveInternet datiem, vidēji pēdējo trīs mēnešu laikā starp meklētājprogrammām Yandex bija vadībā ar 51,1%, Google bija 43,9%. Yandex N.V. neatklāj ieņēmumus no meklēšanas, taču virziens “meklēšana un portāls” uzņēmumam ienesa 20,135 miljardus rubļu, kas ir par 22% vairāk nekā tajā pašā periodā 2016. gadā.

“Iepriekšējā Matrixnet meklēšanas revolucionārā versija ļāva Yandex atdalīties no Google un palielināt savu daļu par gandrīz 10 procentpunktiem. Uz pusgadu. Šis ir spilgts piemērs tam, kā izrāvienu tehnoloģiju izmantošana rada acīmredzamus biznesa rezultātus pat tik sarežģītā tirgū kā meklēšanas tirgus,” saka Aleksandrs Larjanovskis, Skyeng tiešsaistes skolas vadošais partneris un bijušais Yandex starptautiskās attīstības direktors.

Kā norāda uzņēmumu grupas ABBYY direktora vietniece pētniecības un attīstības jautājumos Tatjana Danieljana, jaunu meklēšanas algoritmu ieviešana var mainīt arī rangu (secību, kādā vietnes tiek parādītas meklēšanas rezultātos). Tomēr tas būs plus pašām vietnēm, viņa saka: “Lietotāji, visticamāk, apmeklēs lapas, kas patiešām atbilst viņu vajadzībām, un vietņu reklāmguvumi var ievērojami palielināties.”

Saņēmis kārtējo “laimes vēstuli”, mūsdienu auto īpašnieks vienmēr cenšas rūpīgi izpētīt melnbalto fotogrāfiju un ļoti detalizēti atcerēties stabu, uz kura tika piekārta nākamā kamera. Tomēr ne vienmēr ir iespējams izvairīties no jauniem sodiem. Kādi spēki un līdzekļi tad ir “lielā brāļa” dienestā, kā tos aprēķināt un ātri veikt nepieciešamos pasākumus, lai nesaņemtu kārtējo sodu? Izvestija noskaidroja, kā dzimst lēmums par pārkāpumu, kāda veida ceļu foto-video ierakstīšanas sistēmas pastāv, kā arī mēģināja izdomāt, kā rīkoties, ja naudas sods uzlikts kļūdas dēļ.

Viņu vārds ir leģions

Līdz šim Maskavā kopumā ir uzstādīti aptuveni 167 tūkstoši kameru, no kurām gandrīz 2 tūkstoši sistēmu satiksmes noteikumu automātiskai fiksēšanai uzrauga satiksmes situāciju, un to skaits nepārtraukti pieaug. Šobrīd sabiedriskajā sauszemes transportā uzstādīti 1,5 tūkstoši stacionāro, vairāk nekā 30 mobilo, gandrīz 400 mobilo un vēl 110 kompleksi, kas palīdz sodīt pārkāpējus. Ceļu satiksmes drošības situācijas uzlabošanā neapšaubāmi tiek veikts apjomīgs darbs: 2017. gadā vien, izmantojot foto un video ierakstīšanas rīkus, konstatēti vairāk nekā 83 miljoni pārkāpumu (gadu iepriekš - nedaudz virs 60 miljoniem), tomēr nereti gadās, ka automātiskās sistēmas sabojājas un cieš no sliktas darbības, kas ir nevainīgi autovadītāji.

Pirmās stacionārās foto-video ierakstīšanas sistēmas uz galvaspilsētas izbraucošajiem autoceļiem parādījās jau 2006.–2007. gadā federālās mērķprogrammas “Ceļu satiksmes drošības uzlabošana 2006.–2010. gadā” ietvaros. Tā kā kopš tā laika situācija uz ceļiem ir ievērojami uzlabojusies, satiksmes kameras tiks uzstādītas arī turpmāk.

Mūsdienu sistēmas spēj ne tikai noteikt ātruma pārsniegšanu, braukšanu ceļa malās vai iebraukšanu sabiedriskā transporta joslās, bet arī identificēt pārkāpējus, kuri pārvietojas pa pilsētu bez obligātās transportlīdzekļu apdrošināšanas, apstājas vai stāv vietās, kur bez sava auto ir grūti izbraukt, vai vietās, kur invalīdi neievēro ceļa zīmju un marķējumu prasības u.c. Pavisam nesen galvaspilsētā parādījās satiksmes kameras, kas uzrauga stop līniju. Un jau 2019. gadā Valsts sabiedriskajā iestādē “Satiksmes organizācijas centrs” (TsODD) tiks uzstādītas 200 sistēmas mazāk aizsargāto satiksmes dalībnieku drošības uzraudzībai - kameras būs vērstas uz autovadītājiem, kuri neļauj gājējiem braukt pa zebrām. Atgādinām, ka naudas sods par šādu pārkāpumu saskaņā ar Administratīvo pārkāpumu kodeksa 12.18 pantu ir robežās no 1,5 tūkstošiem līdz 2,5 tūkstošiem rubļu.

Pilnīgi jauna soda parādīšanās autobraucējiem ir tepat aiz stūra – par to 12.novembrī paziņoja ceļu policijas priekšnieks Mihails Čerņikovs. Par bīstamu braukšanu inspekcija iecerējusi piemērot sankcijas. Foto un video ierakstīšanas sistēmām, visticamāk, tiks uzticēts arī pārraudzīt neapdomīgo uzvedību un pieņemt lēmumus dambretes spēles cienītājiem.

Iešauts mugurā

Kā daļu no Maskavas pārveides par “gudro pilsētu” koncepcijas ietvaros galvaspilsēta kopš 2011. gada aktīvi ievieš viedo transporta sistēmu (ITS), kas apkopo un analizē informāciju par ceļu tīkla slodzi un stāvokli. ITS “rokas un acis” ir ceļu kameras un cita programmatūra un aparatūra, kas nodrošina datu vākšanu, apstrādi, uzglabāšanu un atjaunināšanu.

Krievijā tiek izmantotas trīs veidu sistēmas: radars, lāzers un video ierakstīšana. Tie var būt gan stacionāri, gan mobili. Radara sistēmas var atšķirt pēc izskata (tām ir divas “acis” - radara sensoram un kameras objektīvam) un video ierakstīšanu, uzstādot vairākas kameras uz stieņa (viena katrai sloksnei).

Vidēji fokusa attālums, kurā kamera “noķer” iebrucēju, svārstās no 50 m līdz 500 m, taču ir ievērojami palielināts maksimālā ātruma slieksnis, ko ierīce var ierakstīt: mūsdienu sistēmu diapazons ir 0–. 250 km/h, nevis 0–180 km/h, kā tas bija agrāk.

Mūsdienu sistēmas ir iemācījušās atpazīt pat netīras vai deformētas numura zīmes un ir kļuvušas mazākas par kļūdu iespējamību. Piemēram, Maskavā populāro Avtouragan kompleksu kļūda atkarībā no transportlīdzekļa ātruma ir tikai 1–2 km/h, un dažādas Strelkas kompleksa modifikācijas nepārsniedz 2 km/h. Pēdējie, starp citu, ir aprīkoti ar īpašu "sētnieku" - ierīci, kas var patstāvīgi notīrīt kameras aci, ja uz tās nokļūst netīrumi.

Turklāt tagad ierīce var ne tikai fotografēt automašīnu no priekšpuses, bet arī noteikt ātrumu, ar kādu objekts attālinās no kameras, izsekot kustības trajektorijai, izmērīt transportlīdzekļa vidējo ātrumu noteiktā apvidū, vai pat darboties pēc “pit stop” principa. Pēdējā gadījumā likumpārkāpēja dati tiks pārsūtīti tuvākajai ceļu policijas dežūrdaļai ar lūgumu apstāties.

Kopš 2018. gada septembra Maskavā testa režīmā tiek palaists neironu tīkls, kas ir savienots ar Iekšlietu ministrijas datu bāzi, kurā tiek glabāta informācija par visām reģistrētajām automašīnām. Tā sauktā transportlīdzekļa maska ​​tiek glabāta publiskajā domēnā un satur datus par automašīnas marku un modeli, virsbūves krāsu un numura zīmes numuru.

Pēc galvaspilsētas Transporta departamenta vadītāja Maksima Liksutova teiktā, neironu tīkla ieviešana pilsētā ļaus atklāt krāpšanas gadījumus, tas ir, numura zīmju nomaiņu vai transportlīdzekļa zādzību. Sistēma spēj automātiski konstatēt neatbilstību starp automašīnu un tai uzstādītajām numura zīmēm un signalizēt policistam, ka automašīna ir jāpārbauda.

Kā izvairīties no iekļūšanas kamerā?

Pirmkārt, lai izvairītos no soda saņemšanas, protams, nedrīkst pārkāpt: ievērot ceļu satiksmes noteikumus, ievērot ātruma ierobežojumu, sekot zīmēm un marķējumiem uz asfalta. Turklāt jūs varat vēl vairāk aizsargāt sevi ar radara detektora vai videoreģistratora ar radara detektoru palīdzību: šīs ierīces reāllaikā uzrauga situāciju, saņemot signālus no ceļu policijas kamerām, un informē vadītāju ar audio signālu.

Android vai Apple ierīču tirgos ir milzīgs skaits lietojumprogrammu ar līdzīgu funkcionalitāti. Šādu lietojumprogrammu cena atkarībā no to iespējām un precizitātes svārstās no 100 līdz 1650 rubļiem. Vai arī varat izmantot bezmaksas navigatoru, iepriekš iestatījumos aktivizējot skaņas paziņojumu funkciju par kamerām un citiem ceļa notikumiem. Taču ir vērts padomāt, ka datus, piemēram, par jaunām kamerām vai mobilajiem ceļu policijas posteņiem tur ievada tie paši lietotāji, kas jūs.

Kā pierādīt, ka tev ir taisnība?

Par kameru fiksētiem ceļu satiksmes noteikumu pārkāpumiem ir iespējams un nepieciešams apstrīdēt kļūdaini izrakstītus sodus. Tomēr tas jādara tikai tad, ja esat pilnīgi pārliecināts, ka neesat pārkāpis, un varat to pamatot ar būtiskiem pierādījumiem.

Lēmumu pārsūdzēšanas mehānisms ir šāds:

Jums ir 10 dienas, lai iesniegtu sūdzību no soda saņemšanas brīža (Administratīvā kodeksa 30.3 pants);

Sūdzību var iesniegt vai nu personīgi (Maskavas transporta servisa centros vai MADI reģistratūrā), vai elektroniski (caur Autocode portālu vai Maskavas valdības elektronisko reģistratūru);

Dokumentu komplektā jābūt gan pašai sūdzībai, kas parakstīta ar savu roku, gan papildu materiāliem (fotogrāfijas, video vai citi dokumenti), kas apstiprina jūsu apelācijā ietverto informāciju;

Ja līdz sūdzības iesniegšanas brīdim Administratīvo pārkāpumu kodeksā noteiktās 10 dienas jau ir pagājušas, dokumentu paketei jāpievieno lūgums atjaunot nokavēto administratīvā pārkāpuma lēmuma pārsūdzēšanas termiņu, kuram ir jābūt arī jāparaksta personīgi;

Sūdzībā jānorāda institūcijas nosaukums, kurai tā iesniegta, datums, lēmuma numurs un argumenti, kas pierāda apsūdzības prettiesiskumu. Detalizētākas instrukcijas ar sūdzību tekstu piemēriem ir publicētas Maskavas mēra oficiālajā tīmekļa vietnē.

Sūdzības izskatīšanai ir atvēlētas 10 dienas, tāpēc soda nauda joprojām ir jāsamaksā, pat ja tā ir noformēta kļūdaini. Ir arī vērts sagatavoties tam, ka lēmums būs jāapstrīd augstākās instancēs - vispirms ceļu policijā, bet pēc tam tiesā. Un ievērojiet noteikumu, ka pēc brauciena vismaz pāris nedēļas glabājiet videokameras ierakstus.

Šodien mēs paziņojām par jaunu meklēšanas algoritmu “Paleh”. Tas ietver visus uzlabojumus, pie kuriem esam strādājuši pēdējā laikā.

Piemēram, tagad meklēšanā pirmo reizi tiek izmantoti neironu tīkli, lai atrastu dokumentus nevis pēc vārdiem, kas tiek lietoti vaicājumā un pašā dokumentā, bet gan pēc vaicājuma nozīmes un virsraksta.

Daudzus gadu desmitus pētnieki ir cīnījušies ar semantiskās meklēšanas problēmu, kurā dokumentus sarindo, pamatojoties uz semantisko atbilstību vaicājumam. Un tagad tas kļūst par realitāti.

Šajā ierakstā es mēģināšu nedaudz pastāstīt par to, kā mums tas izdevās un kāpēc tas nav tikai vēl viens mašīnmācīšanās algoritms, bet gan svarīgs solis nākotnē.

Mākslīgais intelekts vai mašīnmācība?

Gandrīz visi zina, ka mūsdienu meklētājprogrammas darbojas, izmantojot mašīnmācīšanos. Kāpēc mums atsevišķi jārunā par neironu tīklu izmantošanu tā uzdevumiem? Un kāpēc tikai tagad, jo ažiotāža ap šo tēmu nav rimusies jau vairākus gadus? Mēģināšu pastāstīt par problēmas vēsturi.

Interneta meklēšana ir sarežģīta sistēma, kas parādījās jau sen. Sākumā tā bija tikai lapu meklēšana, pēc tam pārtapa par problēmu risinātāju, un tagad kļūst par pilntiesīgu palīgu. Jo lielāks internets un vairāk cilvēku, jo augstākas ir viņu prasības, jo grūtāk jākļūst meklēšanai.

Naivo meklējumu laikmets

Sākumā bija tikai vārdu meklēšana – apgriezts rādītājs. Tad lapu bija pārāk daudz, tās vajadzēja sakārtot. Sāka ņemt vērā dažādas komplikācijas - vārdu biežums, tf-idf.

Saišu laikmets

Tad bija pārāk daudz lapu par jebkuru tēmu, notika svarīgs izrāviens - viņi sāka ņemt vērā saites, parādījās PageRank.

Mašīnmācīšanās laikmets

Internets kļuva komerciāli nozīmīgs, un parādījās daudzi krāpnieki, cenšoties apmānīt vienkāršos tajā laikā pastāvošos algoritmus. Notika otrs svarīgs izrāviens – meklētājprogrammas sāka izmantot savas zināšanas par lietotāju uzvedību, lai saprastu, kuras lapas ir labas un kuras ne.

Kaut kur šajā posmā cilvēka prāts vairs nebija pietiekams, lai izdomātu, kā sakārtot dokumentus. Ir notikusi nākamā pāreja - meklētājprogrammas sāka aktīvi izmantot mašīnmācīšanos.

Viens no labākajiem mašīnmācīšanās algoritmiem tika izgudrots Yandex - Matrixnet. Var teikt, ka ranžēšanu palīdz lietotāju kolektīvā inteliģence un “pūļa gudrība”. Informācija par vietnēm un cilvēku uzvedību tiek pārvērsta daudzos faktoros, no kuriem katru Matrixnet izmanto, lai izveidotu ranžēšanas formulu. Faktiski ranžēšanas formulu raksta mašīna (izrādījās, ka tā ir aptuveni 300 megabaiti).

Taču “klasiskajai” mašīnmācībai ir ierobežojums: tā darbojas tikai tur, kur ir daudz datu. Neliels piemērs. Miljoniem lietotāju ievada vaicājumu [VKontakte], lai atrastu to pašu vietni. Šajā gadījumā viņu uzvedība ir tik spēcīgs signāls, ka meklēšana nepiespiež cilvēkus aplūkot rezultātus, bet uzreiz, ievadot vaicājumu, norāda adresi.

Taču cilvēki ir sarežģītāki, un viņi vēlas vairāk un vairāk no saviem meklējumiem. Tagad līdz pat 40% no visiem pieprasījumiem ir unikāli, tas ir, tie netiek atkārtoti vismaz divas reizes visā novērošanas periodā. Tas nozīmē, ka meklēšanai nav pietiekami daudz datu par lietotāju uzvedību, un Matrixnet ir liegti vērtīgi faktori. Šādi vaicājumi pakalpojumā Yandex tiek saukti par “garo asti”, jo kopā tie veido ievērojamu mūsu meklēšanas trāpījumu daļu.

Mākslīgā intelekta laikmets

Un tagad ir pienācis laiks runāt par jaunāko sasniegumu: pirms dažiem gadiem datori kļuva pietiekami ātri, un bija pietiekami daudz datu, lai izmantotu neironu tīklus. Uz tām balstītās tehnoloģijas tiek sauktas arī par mašīninteliģenci vai mākslīgo intelektu – jo neironu tīkli mūsu smadzenēs ir uzbūvēti neironu tēlā un cenšas līdzināties dažu tā daļu darbam.

Mašīnu inteliģence ir daudz labāka par vecākām metodēm, veicot uzdevumus, ko var veikt cilvēki, piemēram, runas atpazīšanu vai modeļu atpazīšanu attēlos. Bet kā tas palīdz meklēšanā?

Parasti zemas frekvences un unikālus vaicājumus ir diezgan grūti meklēt, un ir daudz grūtāk atrast tiem labu atbildi. Kā to izdarīt? Mums nav nekādu mājienu no lietotājiem (kurš dokuments ir labāks un kurš sliktāks), tāpēc, lai atrisinātu meklēšanas problēmu, mums jāiemācās labāk izprast divu tekstu – vaicājuma un dokumenta – semantisko atbilstību.

To ir viegli pateikt

Stingri sakot, mākslīgie neironu tīkli ir viena no mašīnmācības metodēm. Pavisam nesen viņiem bija veltīta lekcija Small ShaD ietvaros. Neironu tīkli uzrāda iespaidīgus rezultātus dabas informācijas – skaņas un attēlu – analīzes jomā. Tas notiek jau vairākus gadus. Bet kāpēc tie vēl nav tik aktīvi izmantoti meklējumos?

Vienkārša atbilde ir tāpēc, ka runāt par nozīmi ir daudz grūtāk nekā runāt par attēlu attēlā vai to, kā skaņas pārvērst dekodētos vārdos. Tomēr jēgas meklējumos mākslīgais intelekts patiešām ir sācis nākt no apgabala, kurā tas jau sen ir bijis karalis – attēlu meklēšana.

Daži vārdi par to, kā tas darbojas attēlu meklēšanā. Jūs uzņemat attēlu un izmantojat neironu tīklus, lai pārveidotu to par vektoru N-dimensiju telpā. Paņemiet pieprasījumu (kas var būt vai nu teksta formā, vai cita attēla formā) un dariet ar to to pašu. Un tad jūs salīdzināt šos vektorus. Jo tuvāk tie atrodas viens otram, jo ​​vairāk attēls atbilst pieprasījumam.

Labi, ja tas darbojas attēlos, kāpēc gan nepiemērot to pašu loģiku tīmekļa meklēšanai?

Velns ir tehnoloģijās

Formulēsim problēmu šādi. Mums ir lietotāja pieprasījums un lapas nosaukums ievadē. Jums ir jāsaprot, kā tie atbilst viens otram pēc nozīmes. Lai to izdarītu, nepieciešams pieprasījuma tekstu un virsraksta tekstu attēlot tādu vektoru veidā, kuru skalārais reizinājums būtu lielāks, jo atbilstošāks pieprasījumam ir dokuments ar doto nosaukumu. Citiem vārdiem sakot, mēs vēlamies apmācīt neironu tīklu tā, lai tekstiem, kuriem ir tuva nozīme, tas ģenerētu līdzīgus vektorus, bet semantiski nesaistītiem vaicājumiem un virsrakstiem vektoriem jābūt atšķirīgiem.

Šī uzdevuma sarežģītība ir pareizas arhitektūras un metodes izvēle neironu tīkla apmācībai. No zinātniskām publikācijām ir zināmas diezgan daudzas problēmas risināšanas pieejas. Iespējams, vienkāršākā metode šeit ir attēlot tekstus kā vektorus, izmantojot algoritmu word2vec (diemžēl praktiskā pieredze liecina, ka tas ir diezgan slikts problēmas risinājums).

DSSM

2013. gadā Microsoft Research pētnieki aprakstīja savu pieeju, ko sauca par dziļi strukturēto semantisko modeli.

Modeļa ievade ir vaicājumu un galvenes teksti. Modeļa izmēra samazināšanai ar tiem tiek veikta operācija, ko autori sauc par vārdu jaukšanu. Tekstam tiek pievienoti sākuma un beigu marķieri, pēc tam tas tiek sadalīts burtu trigrammās. Piemēram, vaicājumam [palekh] mēs iegūsim trigrammas [pa, ale, lekh, ex]. Tā kā dažādu trigrammu skaits ir ierobežots, mēs varam attēlot pieprasījuma tekstu kā vairāku desmitu tūkstošu elementu vektoru (mūsu alfabēta lielums līdz 3. pakāpei). Pieprasījuma trigrammām atbilstošā vektora elementi būs vienādi ar 1, pārējie - 0. Pēc būtības mēs tādējādi atzīmējam trigrammu ievadīšanu no teksta vārdnīcā, kas sastāv no visām zināmajām trigrammām. Ja jūs salīdzināt šādus vektorus, jūs varat uzzināt tikai par identisku trigrammu klātbūtni pieprasījumā un galvenē, kas nav īpaši interesanta. Tāpēc tagad tie ir jāpārvērš citos vektoros, kuriem jau būs mums nepieciešamās semantiskās tuvuma īpašības.

Pēc ievades slāņa, kā paredzēts dziļās arhitektūrās, ir vairāki slēpti slāņi gan pieprasījumam, gan galvenei. Pēdējais slānis ir 128 elementu lielums un kalpo kā vektors, ko izmanto salīdzināšanai. Modeļa izvade ir pēdējās galvenes un pieprasījuma vektoru skalārās reizināšanas rezultāts (precīzāk, tiek aprēķināts leņķa kosinuss starp vektoriem). Modelis ir apmācīts tā, ka pozitīvajiem apmācības piemēriem izvades vērtība ir liela, bet negatīviem - maza. Citiem vārdiem sakot, salīdzinot pēdējā slāņa vektorus, mēs varam aprēķināt prognozēšanas kļūdu un modificēt modeli tā, lai kļūda samazinātos.

Mēs Yandex arī aktīvi pētām modeļus, kuru pamatā ir mākslīgie neironu tīkli, tāpēc mēs sākām interesēties par DSSM modeli. Tālāk mēs runāsim par mūsu eksperimentiem šajā jomā.

Teorija un prakse

Raksturīga zinātniskajā literatūrā aprakstīto algoritmu īpašība ir tāda, ka tie ne vienmēr darbojas ārpus kastes. Fakts ir tāds, ka “akadēmiskais” pētnieks un rūpnieciskais pētnieks atrodas ievērojami atšķirīgos apstākļos. Sākumpunktam (bāzes līmenim), ar kuru zinātniskās publikācijas autors salīdzina savu risinājumu, ir jābūt kādam labi zināmam algoritmam – tas nodrošina rezultātu reproducējamību. Pētnieki izmanto iepriekš publicētās pieejas rezultātus un parāda, kā tos var pārspēt. Piemēram, sākotnējā DSSM autori salīdzina savu modeli, izmantojot NDCG metriku, ar BM25 un LSA algoritmiem. Lietišķā pētnieka gadījumā, kurš pēta meklēšanas kvalitāti reālā meklētājprogrammā, sākumpunkts nav viens konkrēts algoritms, bet viss rangs kopumā. Yandex izstrādātāja mērķis nav apsteigt BM25, bet gan panākt uzlabojumus uz visa iepriekš ieviesto faktoru un modeļu kopuma fona. Tādējādi Yandex pētnieka bāzes līnija ir ārkārtīgi augsta, un daudzi algoritmi, kuriem ir zinātnisks jaunums un uzrāda labus rezultātus ar “akadēmisku” pieeju, praksē izrādās bezjēdzīgi, jo tie īsti neuzlabo meklēšanas kvalitāti.

DSSM gadījumā mēs saskārāmies ar to pašu problēmu. Kā tas bieži notiek, “kaujas” apstākļos precīza modeļa ieviešana no raksta uzrādīja diezgan pieticīgus rezultātus. Lai iegūtu rezultātus, kas bija interesanti no praktiskā viedokļa, bija nepieciešamas vairākas būtiskas “failu modifikācijas”. Šeit mēs runāsim par galvenajām sākotnējā modeļa modifikācijām, kas ļāva mums padarīt to jaudīgāku.

Liels ievades slānis

Sākotnējā DSSM modelī ievades slānis ir burtu trigrammu kopa. Tās izmērs ir 30 000 Trigramu pieejai ir vairākas priekšrocības. Pirmkārt, to ir salīdzinoši maz, tāpēc darbs ar tiem neprasa lielus resursus. Otrkārt, to izmantošana ļauj vieglāk noteikt drukas kļūdas un nepareizi uzrakstītus vārdus. Tomēr mūsu eksperimenti parādīja, ka tekstu attēlošana kā trigrammu “maiss” ievērojami samazina tīkla izteiksmes spēku. Tāpēc mēs radikāli palielinājām ievades slāņa izmēru, papildus burtu trigrammām iekļaujot vēl aptuveni 2 miljonus vārdu un frāžu. Tādējādi mēs attēlojam vaicājuma un galvenes tekstus kā vārdu, vārdu bigrammu un burtu trigrammu kopīgu “maisu”.

Liela ievades slāņa izmantošana palielina modeļa izmēru, apmācības laiku un prasa ievērojami vairāk skaitļošanas resursu.

Grūti iemācīties: kā neironu tīkls cīnījās ar sevi un mācījās no savām kļūdām

Sākotnējā DSSM apmācība sastāv no tīkla pakļaušanas lielam skaitam pozitīvu un negatīvu piemēru. Šie piemēri ir ņemti no meklēšanas rezultātiem (acīmredzot, šim nolūkam tika izmantota meklētājprogramma Bing). Pozitīvie piemēri ir noklikšķināto meklēšanas dokumentu nosaukumi, negatīvie piemēri ir to dokumentu nosaukumi, uz kuriem netika noklikšķināts. Šai pieejai ir daži trūkumi. Fakts ir tāds, ka klikšķa neesamība ne vienmēr norāda, ka dokumentam nav nozīmes. Patiess ir arī pretējais apgalvojums – klikšķa klātbūtne negarantē dokumenta atbilstību. Būtībā, mācoties oriģinālajā rakstā aprakstītajā veidā, mēs cenšamies paredzēt virsrakstu pievilcību, ar nosacījumu, ka tie būs redzami meklēšanas rezultātos. Tas, protams, arī nav slikti, taču tam ir diezgan netieša saistība ar mūsu galveno mērķi – iemācīties izprast semantisko tuvumu.

Eksperimentu laikā mēs atklājām, ka rezultātu varētu ievērojami uzlabot, ja negatīvo piemēru atlasei izmantotu citu stratēģiju. Lai sasniegtu mūsu mērķi, labi negatīvie piemēri ir tie dokumenti, kas garantēti nav saistīti ar vaicājumu, bet tajā pašā laikā palīdz neironu tīklam labāk izprast vārdu nozīmi. No kurienes es varu tos dabūt?

Pirmais mēģinājums

Pirmkārt, ņemsim tikai nejauša dokumenta nosaukumu kā negatīvu piemēru. Piemēram, pieprasījumam [Paleha glezna] nejaušs nosaukums varētu būt “Krievijas Federācijas ceļu satiksmes noteikumi 2016”. Protams, nav iespējams pilnībā izslēgt iespēju, ka no miljardiem nejauši izvēlēts dokuments būs atbilstošs pieprasījumam, taču tā iespējamība ir tik maza, ka to var atstāt novārtā. Tādā veidā mēs ļoti viegli varam iegūt lielu skaitu negatīvu piemēru. Šķiet, ka tagad mēs varam iemācīt savam tīklam tieši to, ko mēs vēlamies - atšķirt labus dokumentus, kas interesē lietotājus, no dokumentiem, kuriem nav nekāda sakara ar pieprasījumu. Diemžēl uz šādiem piemēriem apmācītais modelis izrādījās visai vājš. Neironu tīkls ir gudra lieta, un tas vienmēr atradīs veidu, kā vienkāršot savu darbu. Šajā gadījumā viņa vienkārši sāka meklēt vienus un tos pašus vārdus vaicājumos un virsrakstos: jā - labs pāris, nē - slikts. Bet mēs to varam izdarīt paši. Mums ir svarīgi, lai tīkls iemācītos atšķirt nepārprotamus modeļus.

Kārtējais mēģinājums

Nākamais eksperiments bija pievienot vārdus no vaicājuma negatīvo piemēru nosaukumiem. Piemēram, pieprasījumam [Paleha glezna] nejaušais nosaukums izskatījās kā [Krievijas Federācijas gleznas 2016. gada ceļu satiksmes noteikumi]. Neironu tīklam bija nedaudz grūtāk, taču tas ātri iemācījās labi atšķirt dabiskos pārus no manuāli apkopotajiem. Kļuva skaidrs, ka ar šādām metodēm panākumus nesasniegsim.

Panākumi

Daudzi acīmredzami risinājumi kļūst acīmredzami tikai pēc to atklāšanas. Tā notika arī šoreiz: pēc kāda laika atklājās, ka labākais veids, kā ģenerēt negatīvus piemērus, ir piespiest tīklu “cīnīties” pret sevi, mācīties no savām kļūdām. No simtiem nejaušu virsrakstu mēs izvēlējāmies to, ko pašreizējais neironu tīkls uzskatīja par labāko. Taču, tā kā šī galvene joprojām ir nejauša, ļoti iespējams, ka tā neatbilst pieprasījumam. Un šie ir virsraksti, kurus mēs sākām izmantot kā negatīvus piemērus. Citiem vārdiem sakot, jūs varat parādīt tīklam labākās izlases galvenes, apmācīt to, atrast jaunas labākās izlases galvenes, vēlreiz parādīt tīklu un tā tālāk. Atkārtoti atkārtojot šo procedūru, mēs redzējām, kā modeļa kvalitāte manāmi uzlabojās, un arvien biežāk labākie no nejaušajiem pāriem kļuva līdzīgi reāliem pozitīviem piemēriem. Problēma tika atrisināta.

Līdzīgu apmācības shēmu zinātniskajā literatūrā parasti sauc par cieto negatīvo ieguvi. Jāatzīmē arī, ka līdzīgi risinājumi ir kļuvuši plaši izplatīti zinātniskajā aprindās, lai radītu reālistiskus attēlus.

Dažādi mērķi

Microsoft Research pētnieki izmantoja dokumentu klikšķus kā pozitīvus piemērus. Tomēr, kā jau minēts, tas ir diezgan neuzticams signāls par galvenes semantisko atbilstību pieprasījumam. Galu galā mūsu mērķis nav sakārtot visvairāk apmeklētās vietnes meklēšanas rezultātos, bet gan atrast patiesi noderīgu informāciju. Tāpēc mēs mēģinājām izmantot citus lietotāja uzvedības raksturlielumus kā apmācības mērķi. Piemēram, viens no modeļiem paredzēja, vai lietotājs paliks vietnē vai aizies. Cits jautājums ir par to, cik ilgi viņš paliks vietnē. Kā izrādās, jūs varat ievērojami uzlabot rezultātus, ja optimizējat šādu mērķa rādītāju, kas norāda, ka lietotājs ir atradis vajadzīgo.

Peļņa

Labi, ko tas mums dod praksē? Salīdzināsim mūsu neironu modeļa uzvedību un vienkāršu teksta faktoru, pamatojoties uz vaicājuma vārdu un teksta atbilstību - BM25. Tas nonāca pie mums no tiem laikiem, kad ranžēšana bija vienkārša, un tagad to ir ērti izmantot kā pamata līmeni.

Ņemsim vaicājumu [Book of Kells] kā piemēru un redzēsim, kāda nozīme faktoriem ir dažādās virsrakstos. Lai to kontrolētu, galveņu sarakstam pievienosim nepārprotami neatbilstošu rezultātu.

Visi Yandex faktori tiek normalizēti pēc intervāla. Paredzams, ka BM25 ir augstas vērtības nosaukumiem, kas satur vaicājuma vārdus. Un ir diezgan paredzams, ka šis faktors saņem nulles vērtību nosaukumos, kuriem nav kopīgu vārdu ar pieprasījumu. Tagad ievērojiet, kā darbojas neironu modelis. Tas vienlīdz labi atpazīst saikni starp pieprasījumu gan ar attiecīgās Vikipēdijas lapas krievisko nosaukumu, gan ar raksta nosaukumu angļu valodā! Turklāt šķiet, ka modelis “saredzēja” saikni starp vaicājumu un nosaukumu, kurā nav pieminēta Kellsa grāmata, bet ir līdzīga frāze (“Īru evaņģēliji”). Modeļa vērtība neatbilstošajam nosaukumam ir ievērojami zemāka.

Tagad redzēsim, kā izturēsies mūsu faktori, ja pārformulēsim pieprasījumu, nemainot tā nozīmi: [Kells evaņģēlijs].

Attiecībā uz BM25 vaicājuma pārformulēšana izvērtās par īstu katastrofu — faktors attiecīgajos virsrakstos kļuva par nulli. Un mūsu modelis demonstrē izcilu izturību pret pārformulēšanu: atbilstošiem virsrakstiem joprojām ir augsta faktoru vērtība, savukārt neatbilstošajam virsrakstam joprojām ir zema faktoru vērtība. Šķiet, ka tieši šādu uzvedību gaidījām no lietas, kas apgalvo, ka spēj “saprast” teksta semantiku.

Vēl viens piemērs. Pieprasījums [stāsts, kurā tika saspiests tauriņš].

Kā redzam, neironu modelis spēja augstu novērtēt nosaukumu ar pareizo atbildi, neskatoties uz to, ka vaicājumā nebija vispārpieņemtu vārdu. Turklāt ir skaidri redzams, ka virsraksti, kas neatbild uz vaicājumu, bet joprojām ir saistīti pēc nozīmes, saņem diezgan augstu faktora vērtību. It kā mūsu modele “lasītu” Bredberija stāstu un “zina”, ka tieši par to viņš runā pieprasījumā!

Ko tālāk?

Esam gara un ļoti interesanta ceļojuma pašā sākumā. Acīmredzot neironu tīkliem ir liels potenciāls, lai uzlabotu klasifikāciju. Galvenās jomas, kurās nepieciešama aktīva attīstība, jau ir skaidras.

Piemēram, ir acīmredzams, ka virsrakstā ir nepilnīga informācija par dokumentu, un būtu labi iemācīties izveidot modeli, izmantojot pilnu tekstu (kā izrādījās, tas nav gluži triviāls uzdevums). Tālāk varam iedomāties modeļus, kuriem ir ievērojami sarežģītāka arhitektūra nekā DSSM – ir pamats domāt, ka tādā veidā mēs spēsim labāk tikt galā ar dažām dabiskās valodas konstrukcijām. Mēs uzskatām, ka mūsu ilgtermiņa mērķis ir izveidot modeļus, kas var “saprast” semantisko atbilstību starp vaicājumiem un dokumentiem tādā līmenī, kas ir salīdzināms ar cilvēka līmeni. Ceļā uz šo mērķi būs daudz grūtību – jo interesantāk būs to iziet. Mēs apsolām runāt par mūsu darbu šajā jomā. Sekojiet nākamajām publikācijām.

Mūsu kolēģa Konstantīna Lakhmana stāstītā materiālā ir apkopota neironu tīklu attīstības vēsture, to galvenās iezīmes un fundamentālās atšķirības no citiem mašīnmācībā izmantotajiem modeļiem. Runāsim arī par konkrētiem neironu tīklu tehnoloģiju izmantošanas piemēriem un to tuvākajām perspektīvām. Lekcija noderēs tiem, kuri vēlas savās galvās sistematizēt visas svarīgākās mūsdienu zināšanas par neironu tīkliem.

Konstantīns klakhmans Lakhmans absolvējis MEPhI, strādājis par pētnieku Nacionālā pētniecības centra “Kurčatovas institūts” neirozinātņu nodaļā. Uzņēmumā Yandex viņš strādā pie neironu tīklu tehnoloģijām, ko izmanto datorredzēšanā.

Zem griezuma ir detalizēts atšifrējums ar slaidiem.

Neironu tīkli

Sveiki visiem. Mani sauc Kostja Lakhmana, un šodienas lekcijas tēma ir “Neironu tīkli”. Es strādāju Yandex neironu tīklu tehnoloģiju grupā, un mēs izstrādājam dažādas lieliskas lietas, kuru pamatā ir mašīnmācīšanās, izmantojot neironu tīklus. Neironu tīkli ir viena no mašīnmācīšanās metodēm, kas šobrīd piesaista diezgan lielu uzmanību ne tikai no datu analīzes jomas speciālistiem vai matemātiķiem, bet arī no cilvēkiem, kas ar šo profesiju nekādi nav saistīti. Un tas ir saistīts ar to, ka uz neironu tīkliem balstīti risinājumi uzrāda labākos rezultātus dažādās cilvēka zināšanu jomās, piemēram, runas atpazīšanā, teksta analīzē, attēlu analīzē, par ko mēģināšu runāt šajā lekcijā. Es saprotu, ka, iespējams, visiem šajā auditorijā un tiem, kas mūs klausās, ir nedaudz atšķirīgs sagatavotības līmenis - daži zina nedaudz vairāk, daži nedaudz mazāk -, bet jūs varat pacelt rokas, ja esat kaut ko lasījis par neironu tīkliem? Šī ir ļoti stabila auditorijas daļa. Centīšos padarīt to interesantu gan tiem, kas vispār neko nav dzirdējuši, gan tiem, kas kaut ko ir lasījuši, jo lielākā daļa no pētījumiem, par kuriem es runāšu, ir pētījumi no šī vai iepriekšējā gada, jo ir tik daudz kas notiek, un burtiski paiet seši mēneši, un tie raksti, kas tika publicēti pirms sešiem mēnešiem, jau ir nedaudz novecojuši.


Sāksim. Es jums ļoti ātri pastāstīšu, kāds vispār ir mašīnmācības izaicinājums. Esmu pārliecināts, ka daudzi no jums to zina, bet, lai virzītos uz priekšu, es vēlētos, lai visi to saprastu. Izmantojot klasifikācijas problēmas piemēru kā saprotamāko un vienkāršāko.

Ļaujiet mums izveidot U — objektu kopu reālajā pasaulē, un katram no šiem objektiem mēs piedēvējam dažas šo objektu īpašības. Un arī katram no šiem objektiem ir sava veida klase, kuru mēs vēlētos, lai varētu paredzēt, ņemot vērā objekta īpašības. Apskatīsim šo situāciju, izmantojot attēlus kā piemēru.


Objekti ir visi pasaules attēli, kas mūs varētu interesēt.


Vienkāršākās attēlu funkcijas ir pikseļi. Pēdējā pusgadsimta laikā, kura laikā cilvēce ir nodarbojusies ar modeļu atpazīšanu, ir izgudrotas daudz sarežģītākas attēla iezīmes, taču tās ir visvienkāršākās.


Un klase, kuru mēs varam piešķirt katram attēlam, ir, piemēram, cilvēks (šī ir, piemēram, Alana Tjūringa fotogrāfija), putns, māja utt.


Mašīnmācīšanās uzdevums šajā gadījumā ir konstruēt lēmuma funkciju, kas, pamatojoties uz objekta pazīmju vektoru, noteiks, kurai klasei tas pieder. Jums, cik es zinu, bija Konstantīna Voroncova lekcija, kurš par to visu runāja daudz dziļāk nekā es, tāpēc es runāju tikai par pašu virsotni.


Vairumā gadījumu ir nepieciešams tā sauktais treniņu komplekts. Šis ir piemēru kopums, par kuru mēs noteikti zinām, ka šim objektam ir šāda klase. Un, pamatojoties uz šo apmācības paraugu, mēs varam izveidot šo lēmuma funkciju, kas pieļauj pēc iespējas mazāk kļūdu apmācības kopas objektos un tādējādi aprēķina, ka objektiem, kas nav iekļauti apmācību komplektā, mums būs arī laba klasifikāciju kvalitāte.


Lai to izdarītu, mums ir jāievieš kāda kļūdas funkcija. Šeit D ir apmācības kopa, F ir lēmuma funkcija. Un vienkāršākajā gadījumā kļūdas funkcija ir vienkārši to piemēru skaits, kuros mēs pieļaujam kļūdas. Un, lai atrastu optimālo lēmumu pieņemšanas funkciju, mums ir jāsaprot. Parasti mēs izvēlamies funkciju no kāda veida parametru kopas, tas ir, tas ir tikai kaut kāds, piemēram, vienādojuma polinoms, kuram ir daži koeficienti, un mums tie ir kaut kā jāatlasa. Un šīs funkcijas parametri, kas samazina šo kļūdu funkciju, zaudējumu funkciju, ir mūsu mērķis, tas ir, mēs vēlamies atrast šos parametrus.

Ir daudzas metodes, kā meklēt šos parametrus. Es tagad neiedziļināšos šajā jautājumā. Viena metode ir tāda, ka mēs ņemam vienu šīs funkcijas piemēru, pārbaudām, vai mēs to klasificējām pareizi vai nepareizi, un iegūstam atvasinājumu attiecībā uz mūsu funkcijas parametriem. Kā jūs zināt, ja mēs ejam uz šī atvasinājuma apgriezto vērtību, mēs tādējādi samazināsim kļūdu šajā piemērā. Tādējādi, izejot cauri visiem piemēriem, mēs samazināsim kļūdu, pielāgojot funkcijas parametrus.

Tas, par ko es tikko runāju, attiecas uz visiem mašīnmācīšanās algoritmiem un tādā pašā mērā attiecas uz neironu tīkliem, lai gan neironu tīkli vienmēr ir bijuši nedaudz nošķirti no visiem citiem algoritmiem.


Pašlaik ir pieaugusi interese par neironu tīkliem, taču tas ir viens no vecākajiem mašīnmācīšanās algoritmiem, kādu vien varat iedomāties. Pirmo formālo neironu, šūnu neironu tīklu, tā pirmo versiju 1943. gadā ierosināja Vorens Makkuloks un Valters Pits. Jau 1958. gadā Frenks Rozenblats ierosināja pirmo ļoti vienkāršo neironu tīklu, kas jau varēja atdalīt, piemēram, objektus divdimensiju telpā. Un neironu tīkli šajā vairāk nekā pusgadsimta vēsturē ir piedzīvojuši kāpumus un kritumus. Interese par neironu tīkliem bija ļoti liela 20. gadsimta 50. un 60. gados, kad tika iegūti pirmie iespaidīgie rezultāti. Pēc tam neironu tīkli padevās citiem mašīnmācīšanās algoritmiem, kas tajā laikā bija jaudīgāki. Interese atkal atsākās 90. gados, pēc tam atkal samazinājās.


Un tagad, pēdējo 5–7 gadu laikā, izrādījās, ka daudzos uzdevumos, kas saistīti ar dabiskās informācijas analīzi, un viss, kas mūs ieskauj, ir dabiska informācija, tā ir valoda, tā ir runa, tas ir attēls, video, daudz citas ļoti atšķirīgas informācijas - neironu tīkli ir labāki par citiem algoritmiem. Vismaz pagaidām. Iespējams, renesanse atkal beigsies un kaut kas nāks tos aizstāt, taču tagad tie vairumā gadījumu uzrāda labākos rezultātus.

Kas noveda pie tā? Fakts, ka neironu tīkli ir kā mašīnmācīšanās algoritms, tie ir jāapmāca. Bet atšķirībā no vairuma algoritmu neironu tīkli ir ļoti svarīgi datu apjomam, apmācības parauga apjomam, kas nepieciešams to apmācīšanai. Un tīkli vienkārši nedarbojas labi ar nelielu datu apjomu. Viņi slikti vispārina un slikti strādā pie piemēriem, kurus viņi neredzēja mācību procesā. Taču pēdējo 15 gadu laikā datu pieaugums pasaulē, iespējams, ir kļuvis eksponenciāls, un tagad tā vairs nav tik liela problēma. Mums ir daudz datu.

Otrs stūrakmens tam, kāpēc tagad ir tīkla renesanse, ir skaitļošanas resursi. Neironu tīkli ir viens no vissmagākajiem mašīnmācīšanās algoritmiem. Lai apmācītu neironu tīklu un pat to izmantotu, ir nepieciešami milzīgi skaitļošanas resursi. Un tagad mums ir tādi resursi. Un, protams, tika izgudroti jauni algoritmi. Zinātne nestāv uz vietas, inženierija nestāv uz vietas, un tagad mēs vairāk saprotam, kā apmācīt šāda veida struktūras.


Kas ir formāls neirons? Šis ir ļoti vienkāršs elements, kuram ir ierobežots ievades skaits, katrai no šīm ieejām ir pievienots zināms svars, un neirons vienkārši ņem un veic savu ievades svērto summēšanu. Ievade var, piemēram, būt tie paši attēla pikseļi, par kuriem es runāju iepriekš. Iedomāsimies to X 1 un līdz X n– tie vienkārši ir visi attēla pikseļi. Un katram pikselim ir pievienots kāds svars. Viņš tos apkopo un veic dažas nelineāras transformācijas. Bet pat tad, ja mēs neskaram lineāro transformāciju, tad tikai viens šāds neirons ir diezgan spēcīgs klasifikators. Jūs varat aizstāt šo neironu un teikt, ka tas ir tikai lineārs klasifikators, un tāds ir formālais neirons, tas ir tikai lineārs klasifikators. Ja, piemēram, divdimensiju telpā mums ir noteikta divu klašu punktu kopa, un tās ir to īpašības X 1 Un X 2, tas ir, izvēloties šos svarus V 1 Un V 2, šajā telpā varam izveidot sadalošo virsmu. Un tādējādi, ja mums šī summa, piemēram, ir lielāka par nulli, tad objekts pieder pie pirmās klases. Ja šī summa ir mazāka par nulli, tad objekts pieder pie otrās klases.

Un viss būtu labi, bet vienīgais ir tas, ka šī bilde ir ļoti optimistiska, ir tikai divas pazīmes, klases ir, kā saka, lineāri atdalāmas. Tas nozīmē, ka mēs varam vienkārši novilkt līniju, kas pareizi klasificē visus mācību komplekta objektus. Patiesībā tas ne vienmēr tā ir un gandrīz nekad nenotiek. Un tāpēc ar vienu neironu nepietiek, lai atrisinātu lielāko daļu praktisko problēmu.


Šī nelineārā transformācija, ko katrs neirons veic virs šīs summas, ir ļoti svarīga, jo, kā mēs zinām, ja mēs, piemēram, veicam tik vienkāršu summēšanu un sakām, ka tā, piemēram, ir kāda jauna iezīme. Y 1 (W 1 x 1 + W 2 x 2 = y 1), un tad mums ir, piemēram, otrs neirons, kas arī apkopo tās pašas pazīmes, tikai tas būs, piemēram, W 1 "x 1 + W 2" x 2 = y 2. Ja pēc tam šo pazīmju telpā gribam pielietot lineāro klasifikāciju vēlreiz, tad tam nebūs nekādas jēgas, jo divas pēc kārtas lietotās lineārās klasifikācijas var viegli aizstāt ar vienu, tā vienkārši ir operāciju linearitātes īpašība. Un, ja mēs veicam kādu nelineāru transformāciju uz šiem raksturlielumiem, piemēram, visvienkāršāko... Iepriekš mēs izmantojām sarežģītākas nelineāras transformācijas, piemēram, šo loģistikas funkciju, to ierobežo nulle un viens, un mēs redzam, ka ir linearitātes jomas šeit. Tas ir, ap 0 x tas darbojas diezgan lineāri, piemēram, parasta taisna līnija, un tad tas darbojas nelineāri. Bet, kā izrādījās, lai efektīvi apmācītu šāda veida klasifikatorus, pietiek ar visvienkāršāko nelinearitāti pasaulē - tikai nogrieztu taisni, kad pozitīvajā posmā tā ir taisne, bet negatīvajā posmā tā ir. vienmēr 0. Tā ir visvienkāršākā nelinearitāte, un izrādās, ka pat ar to pietiek, lai efektīvi apmācītu klasifikāciju.


Kas ir neironu tīkls? Neironu tīkls ir šādu transformāciju secība. F 1– Šis ir tā sauktais neironu tīkla slānis. Neironu tīkla slānis ir vienkārši neironu kolekcija, kas darbojas ar tām pašām funkcijām. Iedomāsimies, ka mums ir sākotnējās īpašības x 1 , x 2 , x 3, un mums ir trīs neironi, no kuriem katrs ir saistīts ar visām šīm iezīmēm. Bet katram no neironiem ir savi svari, uz kuriem tas sver šādas pazīmes, un tīkla apmācības uzdevums ir katram neironam izvēlēties tādus svarus, kas optimizē šo mūsu kļūdas funkciju. Un funkcija F 1– tas ir viens šādu neironu slānis, un pēc funkcijas pielietošanas mēs iegūstam jaunu funkciju telpu. Pēc tam šai funkciju telpai uzklājam vēl vienu šādu slāni. Var būt atšķirīgs neironu skaits, kāda cita nelinearitāte kā transformējošā funkcija, bet tie ir tie paši neironi, bet ar vienādu svaru. Tādējādi, secīgi piemērojot šīs transformācijas, mēs iegūstam vispārējo funkciju F– neironu tīkla transformācijas funkcija, kas sastāv no vairāku funkciju secīgas pielietošanas.


Kā tiek apmācīti neironu tīkli? Būtībā, tāpat kā jebkurš cits mācību algoritms. Mums ir kāds izejas vektors, kas tiek iegūts tīkla izejā, piemēram, klase, sava veida klases etiķete. Ir daži atsauces izvadi, par kuriem mēs zinām, ka šīm funkcijām vajadzētu būt, piemēram, šādam objektam vai kādam numuram tam vajadzētu pievienot.


Un mums ir kaut kāda delta, tas ir, atšķirība starp izejas vektoru un atsauces vektoru, un tad, pamatojoties uz šo delta, ir liela formula, bet tās būtība ir tāda, ka, ja mēs saprotam, ka šī delta ir atkarīga no Fn, tas ir, no tīkla pēdējā slāņa izejas, ja mēs ņemam šīs delta atvasinājumu pēc svariem, tas ir, pēc tiem elementiem, kurus mēs vēlamies apmācīt, un piemērojam arī tā saukto ķēdes noteikumu, tas ir , ja mums ir sarežģītas funkcijas atvasinājumi - tas ir atvasinājuma reizinājums ar funkciju ar funkcijas reizinājumu pēc parametra, izrādās, ka šādā vienkāršā veidā mēs varam atrast atvasinājumus visiem mūsu svariem un pielāgot tos atkarībā no par kļūdu, ko mēs novērojam. Tas ir, ja mums nav kļūdas konkrētā apmācības piemērā, tad attiecīgi atvasinājumi būs vienādi ar nulli, un tas nozīmē, ka mēs to klasificējam pareizi un mums nekas nav jādara. Ja treniņa piemērā kļūda ir ļoti liela, tad mums kaut kas jādara lietas labā, kaut kā jāmaina svari, lai kļūdu samazinātu.

Konvolucionālie tīkli

Tagad bija nedaudz matemātikas, ļoti virspusēja. Tālāk lielākā daļa ziņojuma būs veltīta foršām lietām, ko var paveikt, izmantojot neironu tīklus un ko šobrīd dara daudzi cilvēki pasaulē, tostarp Yandex.


Viena no metodēm, kas pirmā parādīja praktisko pielietojumu, ir tā sauktie konvolucionālie neironu tīkli. Kas ir konvolucionālie neironu tīkli? Pieņemsim, ka mums ir Alberta Einšteina tēls. Droši vien daudzi no jums ir redzējuši arī šo attēlu. Un šie apļi ir neironi. Mēs varam savienot neironu ar visiem ievades attēla pikseļiem. Bet šeit ir liela problēma, ka, ja mēs savienosim katru neironu ar visiem pikseļiem, tad, pirmkārt, mēs iegūsim daudz atsvaru, un šī būs ļoti skaitļošanas ietilpīga darbība, būs nepieciešams ļoti ilgs laiks, lai aprēķinātu šādus punktus. summa par katru no neironiem, un, otrkārt, svaru būs tik daudz, ka šī metode būs ļoti nestabila pret pārspīlēšanu, tas ir, līdz ar to, kad treniņu komplektā mēs visu prognozējam labi, bet piemēru komplektā kas nav iekļauti treniņu komplektā, mēs strādājam ļoti slikti, vienkārši tāpēc, ka mēs pārgājām uz treniņu komplektu. Mums ir pārāk daudz svaru, pārāk daudz brīvības, mēs varam ļoti labi izskaidrot jebkuras variācijas treniņu komplektā. Tāpēc viņi nāca klajā ar atšķirīgu arhitektūru, kurā katrs no neironiem ir savienots tikai ar nelielu attēla apkārtni. Cita starpā visiem šiem neironiem ir vienāds svars, un šo dizainu sauc par attēla konvolūciju.


Kā tas tiek īstenots? Šeit centrā mums ir tā sauktais konvolūcijas kodols - tas ir šī neirona svaru kopums. Un mēs šo konvolūcijas kodolu piemērojam visiem attēla pikseļiem secīgi. Pieteikties - tas nozīmē, ka mēs vienkārši nosveram pikseļus šajā kvadrātā ar svariem un iegūstam jaunu vērtību. Var teikt, ka mēs pārveidojām attēlu un izgājām tam cauri ar filtru. Tāpat kā, piemēram, Photoshop, ir daži filtri. Tas ir, vienkāršākais filtrs ir veids, kā krāsainu attēlu pārvērst melnbaltā. Un tā mēs izgājām cauri šim filtram un ieguvām pārveidotu attēlu.

Kāda šeit ir priekšrocība? Pirmā priekšrocība ir tā, ka ir mazāk svaru, ātrāk saskaitāms un mazāk pakļauti pārkvalifikācijai. No otras puses, katru no šiem neironiem iegūst kāds detektors, kā es parādīšu vēlāk. Pieņemsim, ja mums kaut kur attēlā ir acs, tad mēs izmantosim to pašu svaru komplektu, ejot pa attēlu, lai noteiktu, kur attēlā atrodas acs.


Šeit vajadzētu būt video.
Un viena no pirmajām lietām, kam šāda arhitektūra tika piemērota, bija skaitļu atzīšana par vienkāršākajiem objektiem.

To kaut kur 1993. gadā Parīzē pielietoja Jans Lekuns, un šeit tagad būs praktiski arhīva ieraksts. Kvalitāte tik tāda. Šeit tagad viņi nodrošina ar roku rakstītus numurus, nospiež kādu pogu, un tīkls atpazīst šos ar roku rakstītos numurus. Principā tā atpazīst nekļūdīgi. Šie skaitļi, protams, ir vienkāršāki, jo tie ir drukāti. Bet, piemēram, šajā attēlā skaitļi ir daudz sarežģītāki. Un, godīgi sakot, pat es nevaru īsti atšķirt šos skaitļus. Šķiet, ka kreisajā pusē ir četrinieks, bet tīkls uzminē. Viņa pat atpazīst šāda veida skaitļus. Šis bija pirmais konvolucionālo neironu tīklu panākums un parādīja, ka tie faktiski ir piemērojami praksē.


Kāda ir šo konvolucionālo neironu tīklu specifika? Šī konvolūcijas darbība ir elementāra, un mēs veidojam šo līkumu slāņus virs attēla, arvien vairāk pārveidojot par attēlu. Tātad mēs faktiski iegūstam jaunas funkcijas. Mūsu galvenās funkcijas bija pikseļi, un pēc tam mēs pārveidojam attēlu un iegūstam jaunas funkcijas jaunā vietā, kas var ļaut mums efektīvāk klasificēt šo attēlu. Ja jūs iztēlojaties suņu attēlu, tie var būt dažādās pozās, dažādos apgaismojumos, uz dažādiem foniem, un ir ļoti grūti tos klasificēt tieši, pamatojoties tikai uz pikseļiem. Un, pastāvīgi iegūstot jaunu telpu iezīmju hierarhiju, mēs to varam izdarīt.
Šī ir galvenā atšķirība starp neironu tīkliem un citiem mašīnmācīšanās algoritmiem. Piemēram, datorredzes jomā attēlu atpazīšanā pirms neironu tīkliem ir izmantota šāda pieeja.

Ja paņemat, piemēram, mācību priekšmetu, mums starp desmit klasēm ir jānosaka, kurai no klasēm pieder objekts - māja, putns, cilvēks, cilvēki sēdēja ļoti ilgu laiku un domāja par to, kādas zīmes varētu atrast. lai atšķirtu šos attēlus. Piemēram, mājas attēlu ir viegli atšķirt, ja mums ir daudz ģeometrisku līniju, kas kaut kā krustojas. Piemēram, putniem ir ļoti spilgtas krāsas, tāpēc, ja mums ir zaļa, sarkana un citas pazīmes, tas, iespējams, izskatās vairāk kā putns. Visa pieeja bija izdomāt pēc iespējas vairāk šādu funkciju un pēc tam iesniegt tās diezgan vienkāršam lineāram klasifikatoram, piemēram, šim, kas faktiski sastāv no viena slāņa. Ir arī sarežģītākas metodes, taču, neskatoties uz to, tās strādāja pie šīm zīmēm, kuras izgudroja cilvēks. Un, izmantojot neironu tīklus, izrādījās, ka jūs varat vienkārši izveidot apmācības paraugu, neatlasīt nekādus līdzekļus, vienkārši barot tam attēlus kā ievadi, un tas pats iemācīsies, atlasīs tos līdzekļus, kas ir būtiski šo attēlu klasificēšanai sakarā ar to. hierarhija.


Apskatīsim, kādas funkcijas identificē neironu tīkls. Šāda tīkla pirmajos slāņos izrādās, ka tīkls izvēlas ļoti vienkāršas funkcijas. Piemēram, gradienta pārejas vai dažas līnijas dažādos leņķos. Tas nozīmē, ka tas izceļ pazīmes - tas nozīmē, ka neirons reaģē, ja redz aptuveni šādu attēla gabalu sava konvolūcijas kodola logā, redzamības zonā. Šīs zīmes nav īpaši interesantas, mēs tās varētu izdomāt paši.


Pārejot dziļāk, mēs redzam, ka tīkls sāk izcelt sarežģītākus elementus, piemēram, apļveida elementus un pat apļveida elementus kopā ar dažām svītrām.


Un jo tālāk mēs ejam gar neironu tīklu, jo tālāk esam no ievades, jo sarežģītākas kļūst funkcijas. Tas ir, piemēram, šis neirons jau var reaģēt uz suņa seju, tas ir, tas iedegas, ieraugot suņa seju, burciņu, pulksteni vai ko citu attēla daļā.


Priekš kam tas viss? Pēc mūsdienu standartiem tā nav īpaši liela, taču trīs gadus tā bija lielākā marķēto attēlu datubāze pasaulē Image.net. Tajā ir nedaudz vairāk nekā miljons attēlu, kas ir sadalīti tūkstoš klasēs. Un šajā paraugā ir jāsasniedz visaugstākā atpazīšanas precizitāte.


Šī izvēle nepavisam nav viegla. Jums tikai jāsaprot, ka, piemēram, haskijs un Sibīrijas haskijs tur ir divas dažādas klases. Ja parādīsiet man šos divus attēlus, es nevarēšu pateikt, kurš ir haskijs un kurš ir Sibīrijas haskijs, taču tīkls var atšķirt. Tur, manuprāt, ir vairāk nekā 300 dažādu klašu suņu šķirņu un pāris desmiti terjeru veidu vien. Tas ir, cilvēkam droši vien ir kādas specifiskas zināšanas kinoloģijas jomā, bet parastam cilvēkam nav.


Šim attēlu paraugam mēs izmantojām neironu tīklu, un izrādījās, ka tas ir paveicis ļoti labu darbu. Piemēram, šeit tiek parādīts attēls, zem attēla ir parādīta pareizā klase, un tīkla prognozes šeit tiek rādītas joslās. Un jo lielāka ir josla, jo pārliecinātāks tīkls ir, ka šī prognoze ir pareiza. Un mēs redzam, ka tas pareizi prognozē leopardu, paredz skrejriteni, neskatoties uz to, ka attēlā bez skrejriteņa ir arī cilvēki. Bet viņa redz, ka skrejritenis ir dominējošais objekts attēlā, un to paredz. Pieņemsim, ka tas pat prognozē ķeksīti, neskatoties uz to, ka viss attēls sastāv tikai no viendabīga fona, un ķeksītis atrodas tikai kaut kur pašā, pašā stūrī. Taču viņa saprot, ka ķeksītis ir šīs ainas pamatā. Tajā pašā laikā arī neironu tīkla kļūdu analīze ir ļoti interesanta un ļauj identificēt, piemēram, kļūdas apmācības komplektā, jo šo kopu atzīmēja cilvēki, un cilvēki vienmēr kļūdās. Pieņemsim, ka ir attēls ar dalmācieti un ķiršu, uz kuru neironu tīkls atbild ar lielu pārliecību, ka tas ir dalmācietis. Nu, tiešām, mēs skatāmies uz šo attēlu un redzam, ka galvenais subjekts ir dalmācietis. Bet patiesībā priekšplānā ir ķiršu koks, un persona, kas atzīmēja šo attēlu izlases procesā, kaut kādā veidā nolēma, ka ķirsis ir dominējošais objekts šajā attēlā. Un izrādās, ka neironu tīkls bija nepareizs saskaņā ar mūsu metriku.

No otras puses, piemēram, šeit apakšējā labajā stūrī ir kāds dzīvnieks. Es nezināju, kas tas par dzīvnieku. Marķējumi norāda, ka tas ir Madagaskaras kaķis. Uzticēsimies marķējumiem. Bet tīkls ļoti saprātīgi min, kas tas varētu būt. Viņa saka, ka tas ir kaut kāds mērkaķis. Man šķiet, ka šīs kļūdas ir ļoti pamatotas. Tas ir, es varētu arī pieņemt, ka tas ir kaut kāds pērtiķis, ļoti neparasts un eksotisks.


Galvenā kļūdu metrika, pamatojoties uz to, ir tā sauktā Top 5 kļūda. Šajā gadījumā mēs ņemam vērā 5 populārākās prognozes, pirmās piecas prognozes, par kurām mūsu tīkls ir visdrošākais, un, ja šajās piecās prognozēs ir pareizā klase no uzcenojuma, mēs sakām, ka tīklam ir taisnība. Un kļūda ir tad, ja mūsu pirmajās piecās prognozēs nebija iekļauta pareizā klase. Un pirms neironu tīkla ēras (tas ir 2010-2011, tas ir pirms konvolucionālo neironu tīklu ēras) mēs redzam, ka kļūda, protams, samazinājās, bija nedaudz zem 30%, un 2011. gadā tā bija pat nedaudz zemāks, bet, piemēram, 2012. gadā, kad pirmo reizi pielietojām konvolucionālo neironu tīklu šai problēmai, izrādījās, ka mēs varam radikāli samazināt kļūdu, tas ir, visas pārējās metodes to nespēja, bet neironu tīkls bija spējīgs. no tā, un tad, pieaugot interesei par neironu tīkliem, izrādījās, ka mēs varam samazināt šo kļūdu - tas tagad būs dažas spekulācijas - līdz līmenim, ko cilvēks var sasniegt uz šīs bāzes. Tika veikti daži pētījumi, tie nebija īpaši globāli, bija pieci cilvēki, kuri vairākas dienas gatavojās atpazīt šāda veida attēlus, un viņi ieguva kļūdu kaut kur ap 4,5% šajā paraugā un neironu tīklā pavasara laikā. vai 2015. gada vasarā šis pavērsiens tika izjaukts, kas visus pārsteidza, par šo bija daudz ziņu utt.


Es teicu iepriekš, ka šī tīkla dziļumam, tas ir, šo funkciju skaitam, ko mēs secīgi lietojam ievades attēlam, ir nozīme. Piemēram, 2013. gadā uzvarēja tīkls, kurā, manuprāt, bija aptuveni 8 vai 9 secīgas attēla transformācijas slāņi. Un, piemēram, 2014. gadā uzvarēja tīkls, kurā ir daudz slāņu un arhitektūra kopumā ir daudz sarežģītāka, bet galvenais, ka tas ir dziļāks, tas nozīmē, ka mēs pielietojam vairāk nelinearitātes mūsu ievades attēlam, un tāpēc mēs iegūstam izrāvienu kvalitātē.


Priekš kam tas viss? Ne tikai attēlu atpazīšana, bet arī kā mēs varam to pielietot praksē? Piemēram, tā kā jūs un es jau zinām, ka katrā slānī mēs iegūstam dažas jaunas funkcijas, mēs varam ņemt izejas no viena no pēdējiem neironu tīkla slāņiem un kaut ko nolasīt, pieņemsim, ka šīs ir dažas jaunas attēla funkcijas, un meklējiet līdzīgus attēlus, pamatojoties uz šīm funkcijām, tas ir, rupji runājot, mēģiniet atrast attēlus ar tādām pašām funkcijām kā ievades. Piemēram, ir tāda bilde, puiši spēlē basketbolu, NBA, viss notiek, un mēs vēlamies atrast līdzīgus attēlus.


Mēs ievietojam šo attēlu līdzīgu attēlu servisā un patiešām atrodam citus attēlus. Tie ir dažādi spēlētāji, dažādas komandas. Bet mēs redzam, ka tie visi ir saistīti ar to, kā spēlētājs driblē bumbu laukumā.


Patiesībā tam, par ko es tagad runāju – datorredzes algoritmiem – ir ļoti daudz aplikāciju, bet arī reālajā pasaulē ir daudz aplikāciju, piemēram, šādu attēlu meklēšana, atpazīšana. Bet ir arī daudz anekdotisku pielietojumu. Piemēram, pētnieku grupa mēģināja uzņemt diezgan vienkāršu attēlu, kas atrodas attēla augšējā rindā pa kreisi, un iemācīja tīklam stilizēt šo attēlu kā dažādu izcilu mākslinieku gleznas, piemēram, Pablo Pikaso, Kandinskis, Vincents Van Gogs. Tas, ko viņi darīja, bija, ievadot parastu attēlu un gleznu un sakot: "Mēs vēlamies, lai izvades attēls būtu līdzīgs oriģinālajam attēlam, taču tajā būtu arī kāds šī mākslinieka stils." Un, kā redzam, tas diezgan interesantā veidā pārveido attēlus. Un, no vienas puses, mēs varam atpazīt oriģinālo attēlu, kā arī autora iezīmes. Kā redzat, lielākā daļa rakstu, par kuriem es runāju, ir aptuveni no 2014. līdz 2015. gadam, un jūs varat arī iedziļināties un apskatīt sīkāk.

Atkārtoti neironu tīkli

Pēdējā gada laikā populāri ir kļuvuši citi neironu tīklu modeļi: nevis konvolucionālie, ko mēs izmantojam attēliem, bet gan tā sauktie atkārtoto neironu tīklu modeļi. Kas tas ir?


Parasti šādam tīklam - pārejas tīklam - nav atmiņas. Tas ir, pieņemsim, ka mēs iesniedzām attēlu šim tīklam, tas kaut ko atpazina, mēs iesniedzām nākamo attēlu, un tas vairs neko neatceras par iepriekšējo attēlu. Tas ir, tas nekādā veidā nesavieno attēlu secību savā starpā. Daudzās problēmās šī pieeja nav īpaši pielietojama, jo, ja mēs, piemēram, ņemam kādu tekstu, teiksim, tekstu dabiskā valodā, kādu grāmatas nodaļu, tad šis teksts sastāv no vārdiem, un šie vārdi veido noteiktu. secība. Un mēs vēlētos, piemēram, ievadīt šo vārdu tīklā, pēc tam padot to nākamajam vārdam, bet tā, lai tas neaizmirstu par iepriekšējo vārdu, lai tas par to atcerētos, atcerētos, ka tas bija, un analizētu katrs nākamais vārds, ņemot vērā iepriekšējo stāstu. Un šim nolūkam ir atkārtoti neironu tīkli. Kā jūs varat redzēt šeit, papildus tam, ka mums ir ceļš no ievades funkcijām uz kādu neironu tīkla izvadi, mēs ņemam vērā arī signālus no šiem iekšējiem slāņiem no iepriekšējām laika soļiem, tas ir, mēs, šķiet, atceramies informāciju un padodam to atpakaļ mums kā ievadi. Un šādu atkārtotu neironu tīklu var izvietot.

Labajā pusē ir tikai laika slaucīšana. x 0 , x 1 , x 2 un tā tālāk. Un tīkls joprojām atceras savu iepriekšējo stāvokli. Un tas, kā tas parsē katru ievades objektu, ir atkarīgs ne tikai no šī objekta, bet arī no iepriekšējās vēstures.


Kam tas tiek izmantots? Viena no interesantajām lietojumprogrammām ir, piemēram, mēs vēlamies ģenerēt tekstus vienkārši pēc burta. Pieņemsim, ka mēs vispirms inicializējam šo tīklu ar kādu secību, piemēram, vārdu, un pēc tam mēs vēlamies, lai tas katrā nākamajā solī mums izspļautu tikai vēstuli, tas ir, kādu nākamo burtu tas vēlas rakstīt. Šis ir LaTeX raksts, kas ļauj rakstīt vienlaikus, tas ir, tā ir programmēšanas valoda rakstu rakstīšanai kopumā. Ja jūs šādā veidā apmācāt tīklu un ļaujat tam ģenerēt tekstu, tad jūs saņemat vismaz jēgpilnus vārdus. Tas ir, viņa nejauc vārdus. Šķiet, ka pat teikumu sintakse arī ir jēga. Tas ir, mums ir darbības vārds, priekšmets, predikāts angļu valodā, bet šo teikumu semantika, tas ir, to nozīme, ne vienmēr ir klāt. Šķiet, ka no būvniecības viedokļa viss izskatās labi, bet reizēm tur ir maz jēgas. Bet šis ir ļoti vienkāršs modelis, tas ģenerē vienu simbolu katrā caurlaidē. Un, piemēram, viņa pat mēģina uzzīmēt dažas diagrammas šeit, augšējā labajā stūrī. Tā kā LaTeX iezīmēšanas valoda ļauj ne tikai rakstīt, bet arī zīmēt, viņa cenšas zīmēt ko citu.


Vai, piemēram, mēs varam tieši ģenerēt programmu pirmkodu. Šis tīkls tika apmācīts, izmantojot Linux kodola pirmkodu, un mēs redzam, ka tas ģenerē vismaz to, kas izskatās pēc jēgpilna koda. Tas ir, mums ir, piemēram, funkcijas, ir dažādas nosacījuma izteiksmes, cilpas utt. Šķiet, ka tam ir jēga. Šķiet, ka drīz paši tīkli mums rakstīs programmas, bet es domāju, ka tas vēl ir tālu, un mums joprojām būs vajadzīgi programmētāji, ne tikai tīkli.


Izrādās, ka šādus atkārtotus tīklus apmācīt, ja mēs tos vienkārši attēlojam kā neironu slāņus, ir diezgan grūti. Tas ir grūti, jo viņi ļoti ātri aizmirst informāciju par iepriekšējiem objektiem, ko mēs viņiem sniedzām pirms pašreizējā. Un dažreiz mums tie ir vajadzīgi, lai atcerētos attiecības starp objektiem, kas atrodas ļoti tālu attālumā. Teiksim, ja iedomājamies “Karu un mieru”, brīnišķīgu Ļeva Tolstoja darbu, tad daži teikumi tajā aizņem vairākas rindiņas. Un atceros, ka tos lasot, teikuma beigās jau biju aizmirsusi, kas tur bija sākumā. Un tā pati problēma tiek novērota ar atkārtotiem tīkliem, viņi arī aizmirst, kas notika secības sākumā, kas nav tas, ko mēs vēlētos. Un šim nolūkam viņi nāca klajā ar sarežģītāku arhitektūru. Šeit galvenais ir tas, ka mūsu centrā ir viens neirons, kas piegādā savu izvadi savai ievadei. Mēs redzam šādu atkārtotu saikni. Cita starpā mums ir arī atsevišķi neironi, kas kontrolē, tie ir vārti, tas ir, nosaka, vai mums ir jāuztver aktuālā ienākošā informācija. Pie ieejas ir vārti, tas ir, mums ir kāds ievads, un mēs nosakām, vai tas ir jāiziet tālāk vai nē. Vai arī mums vajadzētu to ignorēt un vienkārši saglabāt savas atmiņas. Tādā pašā veidā ir atmiņu vārsts: vai mums vajadzētu saglabāt savas atmiņas pašreizējā laika brīdī par iepriekšējām, vai arī tās atiestatīt un teikt, ka mēs dzēšam savu atmiņu.

No kurienes nāk neironu skaits un kādi tie ir?
- Neirons ir vienkārši summators, kuram ir daži ievades dati un svari, ar kuriem tas tos summē svērtā veidā. Tas ir ļoti vienkāršs elements.

Un kvantitāte ir labs jautājums, jautājums par eksperimentālu pieeju. Dažādos uzdevumos mums var būt nepieciešams atšķirīgs šo neironu slāņu skaits un atšķirīgs neironu skaits slāņos. Tas ir ļoti atkarīgs no uzdevuma. Katru reizi, kad saskaraties ar kādu problēmu, kuru vēlaties atrisināt ar neironu tīklu palīdzību, jums ir jāveic noteikts skaits eksperimentu, lai saprastu, ka, ja jums ir 100 neironi, ar to nepietiek. Tas slikti mācās, apmācības komplektā ir liela kļūda, ir nepieciešams vairāk neironu. Piemēram, 100 tūkstoši neironu ir par daudz, mums nav tādu skaitļošanas resursu, lai visu aprēķinātu un apmācītu. Viņa pārkvalificējas filmēšanas laukumā. Tātad patiesība ir kaut kur pa vidu. Ņemsim, piemēram, 50 tūkstošus un iegūsim optimālo atpazīšanas kvalitāti.
Līdzīgi tīkli, kas ar vārtiem var kontrolēt, vai ir nepieciešams uztvert pašreizējo ievadi un vai ir nepieciešams aizmirst kādu atmiņu, kas mums šobrīd ir, tagad tiek izmantoti. Un šāda tīkla tipiskā arhitektūra izskatās šādi.


Mums ir ievades secība, piemēram, daži teikumi, šī tīkla ieejā, un izejā mēs varam arī ģenerēt vārdus, izmantojot to pašu atkārtoto tīklu. Tas ir, mēs sakļaujam ievades secību un ģenerējam izvades secību.

Kam tas paredzēts? Lietojumprogrammu ir daudz, tāpēc nerunāšu par visām. Viena lietojumprogramma, kas tiek aktīvi pētīta, ir, piemēram, tulkošana. Tas ir, pie ievades mums ir teikums no vienas valodas, piemēram, no krievu valodas, un izejā mēs cenšamies ģenerēt šī teikuma tulkojumu citā valodā, piemēram, angļu valodā. Vēl viens pieteikums ir nedaudz fantastisks - tas ir tad, kad mums ir kāds raksts, ko mums uzrakstīja kāds žurnālists, un mēs vēlamies kaut kādu īsu kopsavilkumu no šī raksta, abstraktu. Un mēs padodam visu šo rakstu šī tīkla ievadei, un pēc tam tas izdod mums īsu šī raksta saturu.

Vai, piemēram, mēs varam apmācīt kādu sistēmu, kas vadīs dialogu un sarunāsies ar to. Piemēram, mēs varam paņemt lielus saziņas žurnālus starp cilvēkiem un tehniskā atbalsta komandu, tas ir, cilvēkiem, kas risina kādas ar IT saistītas lietotāja problēmas, apmācīt šādu tīklu un mēģināt ar to sazināties. Piemēram, šeit lietotājam ir problēma, ka viņš nevar izveidot savienojumu tīklā ar attālo termināli, un lietotājs jautā, kas viņam jādara, un iekārta mēģina atrisināt viņa problēmu. Vispirms tas mēģina saprast dažus ievades datus, tas ir, kāda operētājsistēma ir lietotājam, ko viņš redz ekrānā, mēģina veikt dažādus diagnostikas testus un iesaka dažus risinājumus. Un tas viss tiek darīts, izmantojot šo vienkāršo tīklu, kas vienkārši sastāv no dažādu tam piešķirto datu svēršanas. Šeit nav slepenu zināšanu, vai arī cilvēki ilgi, ilgi nesēdēja un domāja, ka “Pamēģināsim kaut kā, ja mums ir viens vārds teikuma sākumā, cits vārds beigās, kā mēs varam tos savienot. , analizēt tos?” Nē, tas viss tika ievadīts neironu tīklā, tas tika apmācīts un ģenerē tik brīnišķīgus dialogus ar cilvēku.

Galu galā neironu tīkls atrisina cilvēka problēmu. Viņa pasaka, ka jāsaņem vēl viens sertifikāts, kaut kas cits, jāievada parole, un cilvēks ir apmierināts.

Konvolucionālie + atkārtotie tīkli

Mēs varam mēģināt savienot konvolūcijas tīklus ar atkārtotiem. Par dažiem runāju atsevišķi, par citiem atsevišķi, bet mēs varam mēģināt tos savienot.


Piemēram, uzdevums “no attēla uz tekstu”. Pieņemsim, ka mums ir attēls kā ievade, un mēs izmantojam konvolucionālo neironu tīklu, lai iegūtu saspiestu šī attēla attēlojumu un dažas funkcijas. Tālāk mēs ievadām šīs zīmes uz atkārtotā tīkla ievadi, un tas mums ģenerē šī attēla aprakstu. Teiksim, pirms trim gadiem tas šķita vienkārši neiespējami, bet tagad neironu tīkli vienkārši apraksta attēlu, kas uz tiem attēlots, kādi objekti. Un viņi ne tikai saka, ka attēlā ir šāds objekts, bet apraksta to sakarīgā teikumā.

Šeit vajadzētu būt vēl vienam video. To sauc par staigāšanu ar neironu tīklu. Tas tika publicēts tikai pirms divām vai trim nedēļām. Viens no neironu tīklu cienītājiem, sauksim viņu tā, nolēma izmantot tehnoloģiju “attēls-teksts”, vienkārši pastaigājoties pa savu dzimto Amsterdamu ar telefonu ar telefonu un kaut ko filmējot ar kameru, un mēģināja saprast, ko tīkls varētu radīt. teikt apkārtējās pasaules objektiem. Tas ir, nevis skatoties uz tām bildēm akadēmiskajās kolekcijās, kuras varbūt nav īpaši tuvas realitātei, bet vienkārši filmējot apkārt notiekošo. Šeit tas nebūs īpaši redzams, bet es ceru, ka mēs redzēsim.

Šeit augšējā kreisajā stūrī ir tīkla reakcija uz to, ko tas redz. Viņa ir tā, kas saka "kāds vīrietis jakā". Ģenerē dažas frāzes. Te viņa saka, ka tā ir kaut kāda zīme, viņa nesaprot, kas uz tās rakstīts, bet saprot, ka tā ir zīme. Viņa saka, ka tas ir cilvēks, kas iet pa ielu, apkārt ir ēkas, logs vai durvis, aleja, viņa saka, ka ir daudz velosipēdu (bet šī ir Amsterdama, tur ir daudz velosipēdu, tāpēc viņa bieži saka, ka visur ir velosipēdi). Viņš saka, ka stāv balta laiva. Un tā tālāk. Es neteiktu, ka tas ir īpaši sagatavots attēls, cilvēks vienkārši staigā un bildē, un reālajā laikā izrādās, ka neironu tīkls tiek galā ar atpazīšanu, ko cilvēks filmē.

Cik ātri viņa to atpazīst? Un, ja cilvēks skrien un nestaigā, cik ātri viņa saprot?
– Man šķiet, ka kadru ātrums ir tikko iestatīts.
- Jā. Patiesībā es jūs nedaudz maldināju, jo, cik atceros, šis video tika uzņemts ar pēcapstrādi, tas ir, viņš to nofilmēja un pēc tam lokāli palaistīja datorā caur šī tīkla atpazīšanu. Bet tagad daudziem mobilajiem tālruņiem ir grafiskās kartes, kas atrodas datorā, tikai tās ir mazākas, mazāk jaudīgas, bet jaudīgākas par procesoriem. Un vispār ar gandrīz kaut kādu kadru iztveršanu reāllaikā var kaut ko atpazīt ar kaut kādu mazu tīklu, pat skrienot, proti, mēģināt to izdarīt. Kopumā tas ir iespējams, un es domāju, ka šis jautājums būs mazāk aktuāls vēl pēc dažiem gadiem, jo, kā mēs zinām, skaitļošanas iespējas pieaug, un, iespējams, kādreiz tas būs iespējams reālajā laikā ar lielākajiem tīkliem kaut ko atpazīt.

– Kāda ir šīs attēlu atpazīšanas tehnoloģijas patiesā jēga? Tas ir, es pats to redzu.
- Šeit viņi man saka - cilvēkiem ar invaliditāti tas ir ļoti loģiski. Otrkārt, iedomājieties, kā attēlu meklēšana darbojas internetā. Kā?
– Tu man stāstīji tieši par šīm lietām.
- Šī ir līdzīgu attēlu meklēšana. Un, piemēram, ja dodaties uz kādu serveri, piemēram, “Yandex.Pictures”...
- Pēc atslēgvārdiem.
- Jā. Un šajā brīdī, ja mēs varam ģenerēt šos atslēgvārdus no attēla, tad meklēšana vienkārši būs labāka. Tas ir, mēs varam atrast bildes... Mūsdienās attēlu meklēšana lielākoties notiek pēc bildēm pievienotajiem tekstiem. Tas ir, ap attēlu ir teksts. Kad mēs ievietojam attēlu savā rādītājā, mēs sakām, ka attēlam ir šāds teksts. Kad lietotājs ievada vaicājumu, mēs cenšamies saskaņot vārdus un vaicājumus ar vārdiem tekstā. Bet attēla teksts ir ļoti sarežģīta lieta, kas ne vienmēr attiecas uz attēlu, pie kura tas atrodas. Daudzi cilvēki cenšas optimizēt savus ienākumus, piemēram, internetā vai tamlīdzīgi, un tāpēc šī informācija ne vienmēr ir uzticama.

Un, ja mēs varam droši pateikt, kas ir attēlā, tad tas būs ļoti noderīgi.

Tajā video bija diezgan sausi un īsi apraksti, tas ir, mēs teicām, ka "Te ir kaut kur novietota laiva" vai "Te ir velosipēdu kaudze guļ uz asfalta", bet mēs varam apmācīt tīklu ar nedaudz citu paraugu. , piemēram, piedzīvojumu romānu paraugā, un tad tas radīs ļoti dzīvīgus aprakstus jebkuram attēlam. Tie nebūs līdz galam atbilstoši šīm bildēm, proti, ne līdz galam, bet vismaz būs ļoti smieklīgi. Piemēram, šeit kāds vīrietis tikai slēpo lejā, un tīkls saka, ka bija vīrietis, kurš dzīvoja viens pats, un viņš nezināja, cik tālu var iet, un viņš vajāja, neizrādīja vājuma pazīmes. Tas ir, piedzīvojumu romāns, kas balstīts uz vienu attēlu. To izdarīja arī pētnieku grupa, atbildot uz viņu teikto: "Pamatojoties uz attēlu, jums ir dažas ļoti sausas prognozes, kaut kā tīkls nedeg." Bet viņi lika tīklam radīt interesantus aprakstus.

Arī šeit, ja palasa, ir vesela drāma par to, kā cilvēks iekāpa autobusā, mēģināja kaut kur nokļūt un tad mainīja maršrutu, iekāpa mašīnā, nokļuva Londonā utt.

Faktiski mēs varam mainīt šos divus blokus mūsu arhitektūrā un teikt: “Vispirms noliksim atkārtotu tīklu, kas uztvers vārdus, un pēc tam kaut kādu konvolucionālu tīklu, kas nesaspiedīs mūsu attēlu, bet otrādi, atslēgs to. ”. Tas nozīmē, ka kādā telpā ir sava veida iezīmju vektors, un mēs vēlamies ģenerēt attēlu, izmantojot šo funkciju vektoru. Un viens no maniem kolēģiem Yandex teica: "Nākotne ir klāt, tikai pagaidām nedaudz neskaidra." Un nākotne patiešām ir klāt, bet nedaudz neskaidra. Šeit jūs varat redzēt, ka mēs ģenerējam attēlu, pamatojoties uz aprakstu. Piemēram, augšējā kreisajā stūrī stāvvietā ir novietots dzeltens autobuss. Šeit krāsas diemžēl ir grūti uztveramas, bet tomēr, ja tajā pašā teikumā aizstāsim, piemēram, vārdu “dzeltens” ar vārdu “sarkans”, tad šī plankuma, kas ir autobuss, krāsa patiešām būs. mainīt, tas ir, tas kļūs sarkans. Un tas pats, ja mēs precizēsim, ka tas ir zaļš autobuss, tad šī vieta kļūs zaļa. Tas tiešām izskatās pēc autobusa.
Šeit tiek parādīts tas pats: ja mainām ne tikai krāsu, bet arī pašus objektus, piemēram, “uz galda ir šokolādes tāfelīte” vai “uz galda ir banāns”, tad mēs tieši nenosakām objekta krāsa, taču ir skaidrs, ka šokolādes tāfelīte parasti ir brūna, bet banāns parasti ir dzeltens, un tāpēc, pat nenorādot tieši objekta krāsu, mūsu tīkls maina daļu attēla krāsas.

Tas ir gandrīz tas pats, par ko es runāju iepriekš. Piemēram, ziloņu bars iet pa izdegušu lauku, pa lauku ar sausu zāli. Un sausa zāle parasti ir oranža, un zaļā zāle parasti ir zaļa. Un šeit var redzēt, ka daži radījumi, kas nav īpaši atšķirami, staigā pa kaut ko zaļu, bet te pa kaut ko oranžu. Parasti ir vairāk nekā viens no šiem radījumiem. Ja tiksimies ar jums pēc gada vai sešiem mēnešiem, mēs panāksim lielu progresu šajā jomā.

Neironu tīkli + pastiprināšanas mācības

Noslēgumā es vēlētos runāt par ļoti interesanto tēmu “Neironu tīklu apvienošana ar pastiprināšanas mācīšanos”. Vai kāds no jums ir lasījis, kas ir pastiprināšanas mācības?

– Psiholoģijā ir tāda lieta.
– Patiesībā tas ir saistīts ar psiholoģiju. "Neironu tīklu savienošana ar pastiprināšanas mācīšanos" ir bioloģiski un psiholoģiski vissvarīgākā neironu tīklu izpētes joma.

Iedomāsimies, ka mums ir pele un ir labirints. Un mēs zinām, ka šī labirinta galos ir siers, ūdens, burkāni un nekas vienā labirinta galā. Un mēs zinām, ka katram no šiem vienumiem ir kāda noderība mūsu pelei. Piemēram, pele ļoti mīl sieru, bet mazāk mīl burkānus un ūdeni, bet mīl tos vienādi, bet viņai nepatīk nekas. Tas ir, ja viņa nonāks labirinta galā un neko neredzēs, viņa būs ļoti satraukta.

Iedomājieties, ka šajā vienkāršajā labirintā mums ir tikai trīs stāvokļi, kuros var atrasties pele - šis S 1. Spējīgs S 1 viņa var izdarīt izvēli – iet pa kreisi vai pa labi. Un spēj S 2 Un S 3 arī viņa var izvēlēties iet pa kreisi vai pa labi.


Mēs varam izveidot brīnišķīgu koku, kas mums norāda, ka, ja pele divreiz aiziet pa kreisi, tā saņems kādu vērtību, kas vienāda ar četrām parastajām vienībām. Ja viņa iet pa labi un tad nav svarīgi, vai viņa iet pa kreisi vai pa labi, pēc pirmās reizes, kad viņa iet pa labi, viņa saņem vērtību divi.

Un pastiprināšanas mācīšanās uzdevums šajā vienkāršākajā gadījumā ir izveidot tādu funkciju Q katram stāvoklim S mūsu labirintā vai kādā no mūsu vidēm būs rakstīts: "Ja jūs veicat šo darbību, piemēram, ej pa kreisi, tad jūs varat saņemt šādu un tādu atlīdzību." Mums ir svarīgi, lai mēs varētu S 1 kad mēs vēl nezinām, kas ir priekšā, lai šī funkcija saka: "Ja jūs dodaties pa kreisi šādā stāvoklī, jūs varat saņemt atlīdzību 4." Lai gan, ja esam no S 1 ejam uz S 2, tad mēs varam saņemt atlīdzību 0. Taču maksimālā atlīdzība, ko varam iegūt, izmantojot pareizu uzvedības stratēģiju, ir 4.


Tas ir atspoguļots šajā formulā. Iedomāsimies, ka dažiem stāvokļiem, kurus mēs zinām par visiem tālāk norādītajiem stāvokļiem, kurus var sasniegt no šī, ir optimālā atlīdzība, tas ir, mēs zinām optimālās uzvedības politiku. Tad par pašreizējo stāvokli mēs ļoti viegli varam pateikt, kāda darbība mums ir jāveic. Mēs varam vienkārši aplūkot visus turpmākos stāvokļus, pateikt, kurā no šiem stāvokļiem mēs iegūstam vislielāko atlīdzību - izlikties, ka mēs to zinām, lai gan patiesībā tas tā nav - un teikt, ka mums ir jāiet uz stāvokli, kurā gaidītā atlīdzība vairāk.


Šai funkcijai ir algoritms, jo mēs nezinām optimālo uzvedības politiku šādiem stāvokļiem.


Un šis algoritms ir diezgan vienkāršs, tas ir iteratīvs. Iedomāsimies, ka mums ir šī funkcija Q(s, a).


Mums ir tā vecā nozīme, un mēs vēlamies to kaut kādā veidā atjaunināt, lai tā pareizāk novērtētu pašreizējo reālo pasauli.

Ko mums vajadzētu darīt? Visiem tālāk norādītajiem stāvokļiem mums ir jānovērtē, kur mēs varam nopelnīt visvairāk, kurā no tālāk norādītajiem stāvokļiem. Jūs redzat, ka tas vēl nav optimāls aprēķins, tas ir tikai kaut kāds šīs aplēses tuvinājums. Un šī ir atšķirība starp atlīdzības novērtējumu pašreizējā stāvoklī un nākamajā. Ko tas nozīmē?

Iedomāsimies, ka atrodamies kādā mūsu vides stāvoklī, piemēram, pieņemsim, ka tas ir kaut kāds labirints ar šādām šūnām, tas ir, mēs esam šeit šajā stāvoklī un vēlamies atrast šo funkciju. Q (S, uz augšu), tas ir, noskaidrojiet, cik daudz mēs varam iegūt no šīs lietderības, ja ejam uz augšu.

Un pieņemsim, ka pašreizējā laika brīdī šī funkcija ir vienāda ar trīs. Un šajā stāvoklī S, kurā mēs nonākam pēc aiziešanas S, iedomājieties, ka, ja mēs ņemam max a" Q(S",a"), tas ir, ņemsim maksimumu, ko varam iegūt no šī stāvokļa S, tas ir vienāds ar, piemēram, 5. Mums acīmredzami ir zināma nekonsekvence. Tas ir, mēs zinām, ka no šī stāvokļa mēs varam saņemt atlīdzību 5, bet šajā stāvoklī mēs to nez kāpēc vēl nezinām, lai gan, ja mēs ejam uz augšu, mēs varam iegūt šo atlīdzību 5. Un šajā gadījumā mēs cenšamies novērst šo neatbilstību, tas ir, ņemt atšķirību starp Q (S, uz augšu)=3 Un max (a") ⁡ Q(S",a")=5 un tādējādi nākamajā iterācijā mēs palielinām šīs darbības vērtību šajā stāvoklī. Un tā mēs mācāmies iteratīvi.


Priekš kam tas viss? Šajā uzdevumā, kuram neironu tīkliem sākotnēji nebija nekāda sakara, tā bija pastiprināšanas mācīšanās, kur tika izmantotas arī klasiskās mācību metodes, kuras var arī pielietot.


Mums ir Atari spēles. Es neesmu pārliecināts, vai kāds no jums ir tos spēlējis, jo pat es tos neesmu spēlējis. Es tos spēlēju, bet kā pieaugušais. Tās ir ļoti dažādas. Slavenākais no tiem, kas atrodas apakšējā kreisajā stūrī, saucas Space Invaders, tas ir tad, kad mums ir kāds atspole, mums tuvojas dzelteno citplanētiešu iebrucēju grupa, un mēs esam tik vientuļš zaļš lielgabals, un mēs cenšamies. nošaut visus šos dzeltenos iebrucējus un tādējādi uzvarēt.
Ir ļoti vienkāršas spēles, piemēram, pingpongs, kur jācenšas nezaudēt bumbu savā laukumā un jāpārliecinās, ka pretinieks pazaudē bumbu savā laukumā.


Ko mēs varam darīt? Mēs atkal varam ņemt konvolucionālos neironu tīklus, ievadīt spēles attēlu kā ievadi šiem konvolucionālajiem neironu tīkliem un mēģināt iegūt kā izvadi nevis šī attēla klasi, bet gan to, kas mums būtu jādara šajā spēles situācijā, tas ir, kas mums jādara. : ej pa kreisi, šauj, neko nedari un tā tālāk.

Un, ja mēs izveidojam šādu diezgan standarta tīklu, tas ir, ir konvolucionālie slāņi, slāņi vienkārši ar neironiem, un mēs to apmācām, palaižam to šajā vidē - un šajā vidē mums ir pareizi jāsaprot, ka mums ir konts, un tas konts ir tieši ir atlīdzība - ja mēs palaižam šo spēli un ļausim tai mazliet mācīties, tad mēs iegūsim sistēmu, kas var, kā es vēlāk parādīšu, pat pārspēt cilvēku.

Tas nozīmē, ka viņi tagad ir ievērojami augstāki par labāko spēlētāju, kas spēlē šo spēli. Un mēs redzam, ka šī spēle nav ļoti vienkārša, šeit jums ir jāslēpjas aiz šīm mazajām sarkanajām lietām. Viņi mūs aizsargā. Un, kad mēs redzam spridzinātāju, kas lido uz mums, labāk izvairīties, paslēpties aiz tiem, tad izkāpt atpakaļ un turpināt uzņemt šos dzeltenos pikseļus augšpusē. Man liekas, neizskatās īpaši iespaidīgi. Bet patiesībā, lai panāktu šādu izrāvienu, bija jāstrādā diezgan daudz. Un es mēģināšu jums pastāstīt, kāpēc tas ir patiešām iespaidīgi.

Jau pirms neironu tīklu izmantošanas šajā uzdevumā bija daudzas metodes, kas tika izveidotas īpaši katrai no šīm spēlēm, un tās darbojās ļoti labi. Viņi arī dažreiz sit cilvēku un tā tālāk. Taču, tāpat kā attēlu atpazīšanas jomā, cilvēkiem bija ļoti smagi jāstrādā, lai šajā spēlē izstrādātu noteiktas uzvaras stratēģijas.

Viņi paņēma katru spēli, piemēram, Space Invaders vai Ping Pong, ilgi domāja, kā pārvietoties, izdomāja dažas zīmes, teica, ka, ja bumba lido tādā leņķī un tādā ātrumā, tad mums ir jāattīstās. tādu ātrumu, saņemt to pretējā pusē un tā, lai tas joprojām ienaidniekam neērti atlec. Un tā tālāk. Un katrai spēlei tas bija jāizgudro atsevišķi. Un tagad viņi paņēma vienu un to pašu neironu tīkla arhitektūru, palaida to dažādās spēlēs, un visās šajās spēlēs šī pati arhitektūra, kaut arī ar dažādu svaru - katrā spēlē bija dažādi svari, bet tā pati arhitektūra - tai izdevās pārspēt gandrīz visas šīs metodes ir izgudrotas 10–20 gadu laikā.

Šeit zilā krāsa ir, rupji runājot, cik punktus iegūst neironu tīkls, pelēks ir jaunākais sasniegums, ko var sasniegt neironu tīkli, un kolonnās norādītie procenti norāda, cik procentus neironu tīkls spēlē labāk nekā cilvēks. Tas ir, mēs varam redzēt, piemēram, ka neironu tīkls spēlē pinball 2500% labāk nekā cilvēks. Neironu tīkls spēlē boksu, dažādas spēles, sacīkstes, tenisu, galda tenisu, pat Space Invaders labāk nekā cilvēks. Turklāt jums ir jāsaprot, ka Space Invaders ir ļoti sarežģīta spēle. Ja mēs paskatāmies šeit, tas ir šeit, un šī pelēkā lieta ir tas mākslas stāvoklis, kāds bija iepriekš, rupji sakot. Teiksim tā, ka viņš bija ļoti slikts. Tas nozīmē, ka šī spēle ir ļoti grūta, un ar neironu tīklu palīdzību ir iespējams ne tikai viņu pārspēt, bet arī cilvēku.

Patiesībā es rādu tikai šīs diagrammas augšējo daļu, joprojām ir daļa šīs diagrammas apakšā, kur neironu tīkla panākumi iet dilstošā secībā, bet tagad lielākajā daļā Atari spēļu ar jauniem rezultātiem tīkls uzvar pār cilvēku.
Protams, tīklam ir ļoti sarežģītas spēles, kur ir jābūt atmiņai, par kuru es runāju, un tur var pielietot arī atkārtotus tīklus, un tad rezultāti ievērojami uzlabosies.

Paldies par jūsu uzmanību. Ceru, ka jums joprojām ir jautājumi.

Vienīgais, ko gribēju pateikt, ka internetā ir ārprātīgi daudz dažādu materiālu par neironu tīkliem, daudz materiālu zinātnisku rakstu veidā, kurus droši vien būs grūti aptvert no nulles. Bet tomēr ir ļoti labas pamācības. Vairumā gadījumu tie ir angļu valodā. Ir ļoti labs Viktora Lempitska kurss pieaugušo SHAD. Ir, piemēram, otra saite - tā sauktais Hackers Guide to Neural Networks. Šī ir apmācība bez matemātikas, tikai ar programmēšanu. Tas ir, tur, piemēram, Python valodā ir parādīts, kā izveidot visvienkāršākos tīklus, kā tos apmācīt, kā savākt paraugus utt. Ir daudz programmatūras rīku, kas ievieš neironu tīklus, un tos ir ļoti viegli lietot. Tas ir, jūs, rupji runājot, vienkārši izveidojat neironus, izveidojat slāņus, saliekat neironu tīklu no ķieģeļiem un pēc tam to izmantojat. Un es jums apliecinu, ka katrs no jums var to izdarīt - mēģiniet eksperimentēt. Tas ir ļoti interesanti, jautri un noderīgi. Paldies par jūsu uzmanību.

Birkas: pievienojiet atzīmes