Čo je hlboké učenie. Neurónové siete a hlboké učenie: budúcnosť je blízko

Čo je hlboké učenie? 3. marca 2016

Teraz hovoria o trendových technológiách hlbokého učenia, ako keby to bola manna z neba. Rozumejú však rečníci, o čo v skutočnosti ide? Ale tento pojem nemá formálna definícia a kombinuje celý rad technológií. V tomto príspevku chcem čo najpopulárnejšie vysvetliť a vlastne, čo sa za týmto pojmom skrýva, prečo je taký populárny a čo nám tieto technológie dávajú.


Stručne povedané, tento nový výraz (hlboké učenie) je o tom, ako zostaviť zložitejšiu a hlbšiu abstrakciu (reprezentáciu) z niekoľkých jednoduchých abstrakcií. napriek tomu, že aj tie najjednoduchšie abstrakcie by mal zbierať samotný počítač a nie človek. Tie. Nie je to len o učení, je to o metaučení. Obrazne povedané, počítač sa sám musí naučiť, ako sa to najlepšie naučiť. A v skutočnosti výraz „hlboký“ presne znamená. Takmer vždy sa tento termín používa pre umelé neurónové siete, kde sa používa viac ako jedna skrytá vrstva, preto formálne „hlboká“ znamená aj hlbšiu architektúru neurónovej siete.

Tu na snímke vývoja môžete jasne vidieť, ako sa hlboké učenie líši od konvenčného. opakujem jedinečné pre hlboké učenie je, že samotný stroj nájde funkcie(kľúčové vlastnosti niečoho, pomocou ktorých je najjednoduchšie rozlíšiť jednu triedu objektov od druhej) a tieto znaky sú hierarchicky štruktúrované: zložitejšie sa skladajú z jednoduchších.. Nižšie to preskúmame na príklade.

Pozrime sa na príklad problému s rozpoznávaním obrázkov: predtým, ako - napchali obrovský (1024 × 768 - asi 800 000 číselné hodnoty) a sledovali, ako počítač pomaly umiera, dusil sa nedostatkom pamäte a neschopnosťou pochopiť, ktoré pixely sú dôležité na rozpoznanie a ktoré nie. Nehovoriac o účinnosti tejto metódy. Tu je architektúra takejto konvenčnej (plytkej) neurónovej siete.

Potom si však vypočuli, ako mozog zvýrazňuje znamenia a robí to prísne hierarchicky, a rozhodli sa tiež vytiahnuť z obrázkov hierarchickú štruktúru. Na to bolo potrebné pridať do neurónovej siete ďalšie skryté vrstvy (vrstvy, ktoré sú medzi vstupom a výstupom; zhruba povedané kroky transformácie informácií). Síce sa k tomu odhodlali takmer okamžite, keďže boli vynájdené neuróny, no potom sa úspešne trénovali siete len s jednou skrytou vrstvou. Tie. v princípe hlboké siete existujú približne tak dlho ako bežné siete, len sme ich nedokázali trénovať. čo sa zmenilo?

V roku 2006 tento problém vyriešilo niekoľko nezávislých výskumníkov naraz (okrem toho sa hardvérové ​​kapacity už dostatočne rozvinuli, objavili sa dostatočne výkonné grafické karty). Týmito výskumníkmi sú: Jeffrey Hinton (a jeho kolega Ruslan Salakhutidinov) s technikou predbežného trénovania každej vrstvy neurónovej siete s obmedzeným Boltzmannovým strojom (prepáčte mi tieto výrazy...), Jan Lekun s konvolučnými neurónovými sieťami a Yoshuaia Bengio s kaskádovými automatickými kódovačmi. Prvých dvoch okamžite naverboval Google a Facebook. Tu sú dve prednášky: jedna - Hinton, ostatný - Lyakuna kde vysvetľujú, čo je hlboké učenie. Nikto ti to nepovie lepšie ako oni. Ďalší skvelý prednáška Schmidhubera o rozvoji hlbokého učenia, tiež jedného z pilierov tejto vedy. A Hinton má tiež skvelý kurz na kurze o neurónoch.

Čoho sú teraz hlboké neurónové siete schopné? Sú schopní rozpoznať a popísať predmety, môžete povedať "rozumieť", čo to je. Ide o pochopenie významu.

Stačí si pozrieť toto video s rozpoznávaním toho, čo kamera vidí v reálnom čase.

Ako som už povedal, technológie hlbokého vzdelávania predstavujú celú skupinu technológií a riešení. Niekoľko z nich som už uviedol v odseku vyššie, ďalším príkladom sú rekurentné siete, ktoré sú práve použité vo videu vyššie na popis toho, čo sieť vidí. Ale najpopulárnejší zástupca technológie túto triedu sú koniec koncov LaKunove konvolučné neurónové siete. Sú postavené analogicky s princípmi zrakovej kôry mačacieho mozgu, v ktorej boli objavené takzvané jednoduché bunky, ktoré reagujú na priame čiary pod rôzne uhly a komplexné - ktorých reakcia je spojená s aktiváciou určitého súboru jednoduchých buniek. Aj keď, úprimne povedané, LaCun sám nebol orientovaný na biológiu, rozhodol sa konkrétnu úlohu(pozri jeho prednášky) a potom sa to stalo.

Jednoducho povedané, konvolučné siete sú siete, kde hlavným štrukturálnym prvkom učenia je skupina (kombinácia) neurónov (zvyčajne štvorec 3 × 3,10 × 10 atď.), a nie jeden. A na každej úrovni siete sa trénujú desiatky takýchto skupín. Sieť nájde kombinácie neurónov, ktoré maximalizujú informácie o obrázku. Na prvej úrovni sieť extrahuje najzákladnejšie, štrukturálne jednoduché prvky obrazu - možno povedať stavebné kamene: okraje, ťahy, segmenty, kontrasty. Vyššie - už stabilné kombinácie prvkov prvej úrovne a tak ďalej v reťazci. Chcem ešte raz zdôrazniť hlavnú črtu hlbokého učenia: samotné siete tvoria tieto prvky a rozhodujú, ktoré z nich sú dôležitejšie a ktoré nie. Je to dôležité, pretože v oblasti strojového učenia je tvorba funkcií kľúčová a teraz sa dostávame do štádia, kedy sa samotný počítač učí vytvárať a vyberať funkcie. Samotný stroj prideľuje hierarchiu informačných funkcií.

Takže v procese učenia (prezeranie stoviek obrázkov) tvorí konvolučná sieť hierarchiu vlastností rôznych úrovní hĺbky. Tu na prvej úrovni môžu zvýrazniť napríklad také prvky (odrážajúci kontrast, uhol, orámovanie atď.).


Na druhej úrovni to už bude prvok z prvkov prvej úrovne. Na treťom - od druhého. Malo by byť zrejmé, že tento obrázok je len ukážkou. Práve teraz v priemyselná aplikácia, takéto siete majú od 10 do 30 vrstiev (úrovní).

Po natrénovaní takejto siete ju môžeme použiť na klasifikáciu. Po zadaní nejakého obrázka ako vstupu prebehnú cez obrázok skupiny neurónov prvej vrstvy, ktoré sa aktivujú na tých miestach, kde je prvok obrázka zodpovedajúci konkrétnemu prvku. Tie. táto sieť analyzuje obrázok na časti - najprv na čiarky, ťahy, uhly, potom na zložitejšie časti a nakoniec dôjde k záveru, že obrázok je z tohto druhu kombinácie základné prvky- túto tvár.

Viac o konvolučných sieťach -

O umelých neurónových sieťach sa dnes veľa hovorí a píše, a to ako v kontexte veľkých dát a strojového učenia, tak aj mimo neho. V tomto článku si pripomíname význam tohto pojmu, ešte raz načrtneme rozsah jeho použitia a tiež o ňom hovoríme dôležitý prístup, ktorý je spojený s neurónovými sieťami – deep learning, popíšeme si jeho koncepciu, ako aj výhody a nevýhody na konkrétnych prípadoch použitia.

Čo je to neurónová sieť?

Ako viete, koncept neurónovej siete (NN) pochádza z biológie a je trochu zjednodušeným modelom štruktúry ľudského mozgu. Ale nezabárame sa do divočiny prírodnej vedy – najjednoduchšie je predstaviť si neurón (vrátane umelého) ako akúsi čiernu skrinku s mnohými vstupmi a jedným výstupom.

Matematicky umelý neurón prevádza vektor vstupných signálov (nárazov) X na vektor výstupných signálov Y pomocou funkcie nazývanej aktivačná funkcia. V rámci spojenia (umelá neurónová sieť - ANN) fungujú tri typy neurónov: vstup (prijímanie informácií z vonkajší svet- hodnoty premenných, ktoré nás zaujímajú), výstup (vracajúci požadované premenné - napríklad predpovede alebo riadiace signály), ako aj stredné - neuróny, ktoré vykonávajú niektoré vnútorné („skryté“) funkcie. Klasická ANN sa teda skladá z troch alebo viacerých vrstiev neurónov a na druhej a ďalších vrstvách („skrytej“ a výstupnej) je každý z prvkov spojený so všetkými prvkami predchádzajúcej vrstvy.

Je dôležité zapamätať si koncept spätná väzba, ktorá určuje typ štruktúry ANN: priamy prenos signálu (signály idú sekvenčne zo vstupnej vrstvy cez skrytú vrstvu a vstupujú do výstupnej vrstvy) a rekurentná štruktúra, kedy sieť obsahuje spojenia smerujúce dozadu, zo vzdialenejších neurónov k bližším). Všetky tieto koncepty predstavujú nevyhnutné minimum informácií pre posun na ďalšiu úroveň chápania ANN – trénovanie neurónovej siete, klasifikáciu jej metód a pochopenie princípov fungovania každej z nich.

Tréning neurónovej siete

Netreba zabúdať, na čo takéto kategórie vôbec slúžia – inak hrozí, že zabŕdame do abstraktnej matematiky. V skutočnosti sú umelé neurónové siete chápané ako trieda metód na riešenie určitých problémov. praktické úlohy, medzi ktorými sú hlavné problémy rozpoznávanie vzorov, rozhodovanie, aproximácia a kompresia údajov, ako aj pre nás najzaujímavejšie problémy klastrovej analýzy a prognózovania.

Bez toho, aby sme zachádzali do druhého extrému a bez toho, aby sme zachádzali do podrobností o práci metód ANN v každom konkrétnom prípade, pripomeňme, že za každých okolností je to schopnosť neurónovej siete učiť sa (s učiteľom alebo „sama“ ), teda kľúčový bod používať ho na riešenie praktických problémov.

Vo všeobecnosti je školenie ANN nasledovné:

  1. vstupné neuróny prijímajú premenné ("podnety") z vonkajšieho prostredia;
  2. v súlade s prijatými informáciami sa menia voľné parametre NS (pracujú medzivrstvy neurónov);
  3. v dôsledku zmien v štruktúre neurónovej siete sieť „reaguje“ na informácie iným spôsobom.

Takéto všeobecný algoritmus tréning neurónovej siete (pamätajte na Pavlovovho psa - áno, áno, vnútorný mechanizmus vzdelávania podmienený reflex je to presne tak – a hneď zabudneme: náš kontext však zahŕňa prácu s technickými konceptmi a príkladmi).

Je jasné, že univerzálny algoritmus učenia neexistuje a s najväčšou pravdepodobnosťou ani nemôže existovať; Koncepčne sa prístupy k učeniu delia na učenie sa s učiteľom a učenie sa bez učiteľa. Prvý algoritmus predpokladá, že pre každý vstupný ("učiaci") vektor existuje požadovaná hodnota výstupného ("cieľového") vektora - teda tieto dve hodnoty tvoria tréningový pár a celá množina takýchto párov je tréningová súprava. V prípade učenia bez dozoru pozostáva tréningová množina len zo vstupných vektorov – a táto situácia je z pohľadu reálneho života prijateľnejšia.

Hlboké učenie

Pojem hlboké učenie (deep learning) označuje inú klasifikáciu a označuje prístup k učeniu sa takzvaných hlbokých štruktúr, ktoré zahŕňajú viacúrovňové neurónové siete. Jednoduchý príklad z oblasti rozpoznávania obrazu: musíte naučiť stroj extrahovať čoraz abstraktnejšie črty z hľadiska iných abstraktných čŕt, teda určiť vzťah medzi výrazom celej tváre, očí a úst, a v konečnom dôsledku , zhluky farebných pixelov matematicky. V hlbokej neurónovej sieti je teda každá úroveň funkcií zodpovedná za svoju vlastnú vrstvu; je jasné, že natrénovať takýto „kolos“ si vyžaduje patričné ​​skúsenosti výskumníkov a úroveň hardvér. Podmienky v prospech hlbokého učenia NN až v roku 2006 - a o osem rokov neskôr môžeme hovoriť o revolúcii, ktorú tento prístup spôsobil v strojovom učení.

V prvom rade teda v kontexte nášho článku stojí za zmienku nasledovné: vo väčšine prípadov hlboké učenie neriadi človek. To znamená, že tento prístup zahŕňa tréning neurónovej siete bez učiteľa. Toto je hlavná výhoda „hĺbkového“ prístupu: strojové učenie pod dohľadom, najmä v prípade hlbokých štruktúr, si vyžaduje obrovské časové a pracovné náklady. Hlboké učenie je na druhej strane prístup, ktorý modeluje človeka abstraktné myslenie(alebo prinajmenšom predstavuje pokus priblížiť sa k nemu), skôr než ho použiť.

Myšlienka je, ako obvykle, skvelá, ale celkom prirodzené problémy vznikajú v spôsobe prístupu - predovšetkým v jeho nároku na univerzálnosť. V skutočnosti, ak prístupy hlbokého učenia dosiahli hmatateľný úspech v oblasti rozpoznávania obrazu, potom pri rovnakom spracovaní prirodzeného jazyka stále existuje oveľa viac otázok ako odpovedí. Je zrejmé, že v najbližších n rokoch bude sotva možné vytvoriť "umelého Leonarda Da Vinciho" alebo dokonca - aspoň! - "umelý homo sapiens".

Napriek tomu už výskumníci umelej inteligencie čelia otázke etiky: obavy vyjadrené v každom sebavedomom sci-fi filme, od Terminátora po Transformers, sa už nezdajú smiešne (moderné sofistikované neurónové siete už možno považovať za hodnoverné modelové dielo mozgu hmyzu!), ale zatiaľ sú zjavne nadbytočné.

Ideálna technogénna budúcnosť sa nám javí ako éra, keď človek bude môcť delegovať väčšinu svojich právomocí na stroj – alebo aspoň bude môcť umožniť, aby mu uľahčil významnú časť jeho intelektuálnej práce. Koncept hlbokého učenia je jedným krokom k tomuto snu. Je pred nami ešte dlhá cesta – ale už teraz je jasné, že neurónové siete a všetky rozvíjajúce sa prístupy s nimi spojené sú schopné časom realizovať túžby autorov sci-fi.

Prichádzajúca revolúcia inteligentné roboty predpovedané každých desať rokov od 50. rokov 20. storočia. Nikdy sa to však nestalo. Pokrok v odbore umela inteligencia prebiehal neisto, miestami až nudne, prinášajúc sklamanie mnohým nadšencom. Viditeľný pokrok – počítač tmavo modrá, vytvorený v polovici 90. rokov IBM a porazený Garryho Kasparova v roku 1997 v šachu, či objavenie sa elektronického prekladača koncom 90. rokov – boli skôr výsledkom „hrubých“ výpočtov ako presunu mechanizmov. ľudské vnímanie o počítačových výpočtových procesoch.

História sklamaní a neúspechov sa však teraz dramaticky mení. Len pred desiatimi rokmi dokázali algoritmy počítačového videnia a rozpoznávania objektov identifikovať loptu alebo krabicu na jednoduchom pozadí. Teraz dokážu rozlíšiť ľudské tváre tak dobre, ako to dokážu ľudia, dokonca aj pri zložitých prirodzené pozadie. Pred šiestimi mesiacmi spoločnosť Google vydala aplikáciu pre smartfóny, ktorá dokáže preložiť text z viac ako 20 cudzie jazykyčítaním slov z fotografií, dopravných značiek alebo ručne písaného textu!

Toto všetko sa stalo možným po tom, čo sa ukázalo, že niektoré staré nápady v oblasti neurónových sietí, ak by boli mierne upravené pridaním „života“, t.j. premietaním detailov ľudského a zvieracieho vnímania môžu poskytnúť ohromujúci výsledok, ktorý nikto nečakal. Tentokrát sa zdá, že revolúcia AI je skutočne skutočná.

Výskumy neurónových sietí v oblasti strojového učenia sa vo väčšine prípadov vždy venovali hľadaniu nových rozpoznávacích techník rôzne druhyúdajov. Počítač pripojený ku kamere by teda mal pomocou algoritmu na rozpoznávanie obrazu medzi nimi rozlišovať Zlá kvalita ľudská tvár, šálka čaju alebo pes. Historicky však používanie neurónových sietí na tieto účely sprevádzali značné ťažkosti. Aj malý úspech si vyžadoval ľudský zásah – ľudia pomohli programu určiť dôležité vlastnosti obrázky, ako sú okraje obrázkov alebo jednoduché geometrické tvary. Existujúce algoritmy nevedeli sa to naučiť robiť sami.

Situácia sa dramaticky zmenila vytvorením tzv hlboké učenie neurónových sietí, ktorý teraz dokáže analyzovať obraz takmer rovnako efektívne ako človek. Takéto neurónové siete využívajú nekvalitný obraz ako vstup pre „neuróny“ prvej úrovne, ktoré potom „obraz“ odovzdávajú cez nelineárne spojenia do neurónov ďalšej úrovne. Po určitom tréningu je „neurónov“ viac vysoké úrovne môže na rozpoznanie použiť abstraktnejšie aspekty obrazu. Môžu napríklad použiť detaily, ako sú okraje obrázka alebo jeho umiestnenie v priestore. Je úžasné, že takéto siete sa dokážu naučiť hodnotiť najdôležitejšie vlastnosti obrazu bez ľudskej pomoci!

Skvelým príkladom využitia neurónových sietí hlbokého učenia je rozpoznávanie rovnakých objektov fotografovaných z rôznych uhlov alebo v rôznych pozíciách (ak rozprávame sa o osobe alebo zvierati). Algoritmy využívajúce skenovanie pixel po pixeli si „myslia“, že majú pred sebou dva rôzne obrázky, zatiaľ čo „inteligentné“ neurónové siete „rozumejú“, že majú pred sebou rovnaký objekt. A naopak - obrázky dvoch psov rôznych plemien, vyfotografovaných v rovnakej póze, mohli predchádzajúce algoritmy vnímať ako fotografie toho istého psa. Neurálne siete s hlbokým učením dokáže odhaliť detaily v obrázkoch, ktoré im pomôžu rozlišovať medzi zvieratami.

Kombinácia techník hlbokého učenia, pokročilých neurovedeckých znalostí a sily moderné počítače otvára perspektívy pre umelú inteligenciu, ktorú zatiaľ ani nevieme posúdiť. Pravda, už teraz je zrejmé, že myseľ môže mať nielen biologickú povahu.

Dnes je graf jedným z najprijateľnejších spôsobov, ako opísať modely vytvorené v systéme strojového učenia. Tieto výpočtové grafy sa skladajú z vrcholov neurónov spojených hranami synapsií, ktoré opisujú spojenia medzi vrcholmi.

Na rozdiel od skalárneho CPU alebo vektorového GPU, IPU, nový typ procesora určeného na strojové učenie, umožňuje zostavenie takýchto grafov. Počítač, ktorý je určený na správu grafov, je ideálny stroj na výpočtové modely grafov vytvorené v rámci strojového učenia.

Jeden z najviac jednoduchými spôsobmi opísať proces strojovej inteligencie znamená vizualizovať ho. Vývojový tím Graphcore vytvoril zbierku takýchto obrázkov, ktoré sa majú zobraziť na IPU. Základom bolo softvér Topoľ, ktorý vizualizuje prácu umelej inteligencie. Výskumníci z tejto spoločnosti tiež zistili, prečo hlboké siete vyžadujú toľko pamäte a aké riešenia existujú na vyriešenie problému.

Poplar obsahuje grafický kompilátor, ktorý bol od základov vytvorený tak, aby preložil bežné operácie strojového učenia do vysoko optimalizovaného aplikačného kódu IPU. Umožňuje vám poskladať tieto grafy rovnakým spôsobom, akým sa zostavujú POPNN. Knižnica obsahuje množinu rôznych typov vrcholov pre generické primitíva.

Grafy sú paradigmou, na ktorej je založený celý softvér. V Topoli vám grafy umožňujú definovať proces výpočtu, kde vrcholy vykonávajú operácie a hrany popisujú vzťah medzi nimi. Napríklad, ak chcete sčítať dve čísla, môžete definovať vrchol s dvoma vstupmi (čísla, ktoré chcete pridať), niektorými výpočtami (funkcia na sčítanie dvoch čísel) a výstupom (výsledok).

Operácie s vrcholmi sú zvyčajne oveľa komplikovanejšie ako vo vyššie uvedenom príklade. Často sú definované malými programami nazývanými kódety (kódové názvy). Grafická abstrakcia je atraktívna, pretože nerobí žiadne predpoklady o štruktúre výpočtu a rozdeľuje výpočet na komponenty, s ktorými môže IPU pracovať.

Topoľ používa túto jednoduchú abstrakciu na vytvorenie veľmi veľkých grafov, ktoré sú reprezentované ako obrázok. Programové generovanie grafu znamená, že ho môžeme prispôsobiť konkrétnym výpočtom, ktoré sú potrebné na to, aby sme poskytli maximum efektívne využitie zdroje IPU.

Kompilátor prekladá štandardné operácie používané v systémoch strojového učenia do vysoko optimalizovaného aplikačného kódu IPU. Kompilátor grafov vytvára prechodný obraz výpočtového grafu, ktorý je nasadený na jednom alebo viacerých IPU. Kompilátor dokáže zobraziť tento výpočtový graf, takže aplikácia napísaná na úrovni štruktúry neurónovej siete zobrazí obrázok výpočtového grafu, ktorý beží na IPU.


Graf plného cyklu tréningu AlexNet v smere dopredu a dozadu

Grafický kompilátor Poplar premenil popis AlexNet na výpočtový graf s 18,7 miliónmi vrcholov a 115,8 miliónmi hrán. Jasne viditeľné zhlukovanie je výsledkom silnej komunikácie medzi procesmi v každej vrstve siete s jednoduchšou komunikáciou medzi vrstvami.

Ďalším príkladom je jednoduchá plne prepojená sieť, vyškolený na MNIST – jednoduchý súbor údajov pre počítačové videnie, akýsi „Ahoj, svet“ v strojovom učení. Jednoduchá sieť na preskúmanie tohto súboru údajov pomáha pochopiť grafy riadené aplikáciami Poplar. Integráciou knižníc grafov s rámcami, ako je TensorFlow, spoločnosť poskytuje jednoduchý spôsob použitia IPU v aplikáciách strojového učenia.

Po vytvorení grafu pomocou kompilátora je potrebné ho spustiť. To je možné s Graph Engine. Príklad ResNet-50 demonštruje jeho fungovanie.


Graf ResNet-50

Architektúra ResNet-50 vám umožňuje vytvárať hlboké siete z opakovaných sekcií. Spracovateľovi zostáva len raz definovať tieto sekcie a znova ich vyvolať. Napríklad klaster na úrovni conv4 sa vykoná šesťkrát, ale iba raz sa vykreslí do grafu. Obrázok tiež demonštruje rozmanitosť tvarov konvolučných vrstiev, pretože každá z nich má graf zostavený podľa prirodzená forma výpočty.

Motor vytvára a riadi vykonávanie modelu strojového učenia pomocou grafu vygenerovaného kompilátorom. Po nasadení Graph Engine monitoruje a reaguje na IPU alebo zariadenia používané aplikáciami.

Obrázok ResNet-50 zobrazuje celý model. Na tejto úrovni je ťažké rozlíšiť súvislosti medzi jednotlivými vrcholmi, preto sa oplatí pozrieť si zväčšené obrázky. Nižšie je niekoľko príkladov sekcií v rámci vrstiev neurónovej siete.

Prečo hlboké siete potrebujú toľko pamäte?

Veľké množstvo obsadenej pamäte je jednou z najviac veľké problémy hlboké neurónové siete. Výskumníci sa snažia bojovať s obmedzenou šírkou pásma zariadení DRAM, ktoré musia moderné systémy využívať na uloženie obrovského množstva váh a aktivácií v hlbokej neurónovej sieti.

Architektúry boli navrhnuté s použitím procesorových čipov navrhnutých na serializáciu a optimalizáciu DRAM pre pamäť s vysokou hustotou. Rozhranie medzi týmito dvoma zariadeniami je prekážkou, ktorá zavádza obmedzenia šírky pásma a zvyšuje značnú réžiu v spotrebe energie.

Aj keď ešte úplne nerozumieme ľudskému mozgu a jeho fungovaniu, všeobecne sa chápe, že neexistuje veľké samostatné úložisko pamäte. Predpokladá sa, že funkcia dlhodobej a krátkodobej pamäte v ľudskom mozgu je zabudovaná do štruktúry neurónov + synapsií. Dokonca jednoduché organizmy ako červy s nervovou štruktúrou mozgu, pozostávajúcou z niečo vyše 300 neurónov, do istej miery funkciou pamäte.

Budovanie pamäte v konvenčných procesoroch je jedným zo spôsobov, ako tento problém vyriešiť úzke miesta pamäť, čím sa otvára obrovská šírka pásma pri oveľa nižšej spotrebe energie. Pamäť na čipe je však drahá vec, ktorá nie je navrhnutá pre skutočne veľké množstvá pamäte, ktoré sú pripojené k CPU a GPU, ktoré sa v súčasnosti používajú na trénovanie a nasadzovanie hlbokých neurónových sietí.

Je teda užitočné pozrieť sa na to, ako sa dnes pamäť používa v CPU založených na GPU a systémoch hlbokého učenia, a položiť si otázku: prečo potrebujú také veľké pamäťové zariadenia, keď ľudský mozog funguje dobre aj bez nich?

Neurónové siete potrebujú pamäť na ukladanie vstupných údajov, váhových parametrov a aktivačných funkcií, keď sa vstup šíri sieťou. Pri trénovaní musí byť aktivácia na vstupe zachovaná, kým sa nedá použiť na výpočet chýb v gradientoch na výstupe.

Napríklad 50-vrstvová sieť ResNet má približne 26 miliónov váh a počíta 16 miliónov aktivácií za smer dopredu. Ak na uloženie každej hmotnosti a aktivácie použijete 32-bitové číslo s pohyblivou rádovou čiarkou, bude to vyžadovať asi 168 MB miesta. Použitím nižšej hodnoty presnosti na uloženie týchto váh a aktivácií by sme mohli túto požiadavku na uloženie znížiť na polovicu alebo dokonca štvornásobne.

Vážny problém s pamäťou vzniká zo skutočnosti, že GPU sa spoliehajú na dáta reprezentované ako husté vektory. Preto môžu použiť jeden inštrukčný prúd (SIMD) na dosiahnutie vysoká hustota výpočtový. CPU používa podobné vektorové bloky pre vysokovýkonné výpočty.

GPU majú šírku synapsie 1024 bitov, takže používajú 32-bitové údaje s pohyblivou rádovou čiarkou, takže ich často rozdeľujú na paralelne prebiehajúce mini-dávky 32 vzoriek, aby vytvorili 1024-bitové vektory údajov. Tento prístup k vektorovému paralelizmu zvyšuje počet aktivácií 32-krát a potrebu viac ako 2 GB lokálneho úložiska.

GPU a ďalšie stroje navrhnuté pre maticovú algebru tiež podliehajú pamäťovému stresu spôsobenému váhami alebo aktiváciami neurónovej siete. GPU nedokážu efektívne vykonávať malé konvolúcie používané v hlbokých neurónových sieťach. Preto sa na transformáciu týchto konvolúcií používa transformácia nazývaná „downgrade“. maticovo-maticové násobenia(GEMM), ktoré grafické akcelerátory dokážu efektívne zvládnuť.

Dodatočná pamäť je potrebná aj na ukladanie vstupných údajov, dočasných hodnôt a programových pokynov. Meranie využitia pamäte pri trénovaní ResNet-50 na špičkovom GPU ukázalo, že vyžaduje viac ako 7,5 GB lokálnej DRAM.

Niekto by si mohol myslieť, že nižšia výpočtová presnosť môže znížiť potrebné množstvo pamäte, ale nie je to tak. Prepnutím hodnôt údajov na polovičnú presnosť pre váhy a aktivácie vyplníte iba polovicu šírky vektora SIMD s použitím polovice dostupných výpočtových zdrojov. Aby ste to kompenzovali, keď na GPU prepnete z plnej presnosti na polovičnú presnosť, potom musíte zdvojnásobiť veľkosť mini-dávky, aby ste si vynútili dostatok paralelizmu údajov na využitie všetkých dostupných výpočtov. Prechod na nižšiu presnosť váh a aktivácií na GPU teda stále vyžaduje viac ako 7,5 GB voľnej dynamickej pamäte.

S takými veľká kvantita dáta, ktoré je potrebné uložiť, toto všetko je jednoducho nemožné zmestiť do GPU. Na každej vrstve konvolučnej neurónovej siete je potrebné uložiť stav externej DRAM, načítať ďalšiu vrstvu siete a následne načítať dáta do systému. Výsledkom je, že rozhranie latencie pamäte s obmedzenou šírkou pásma trpí dodatočnou záťažou neustáleho opätovného načítania zostatku a ukladania a získavania aktivačných funkcií. To výrazne spomalí tréningový čas a výrazne zvýši spotrebu energie.

Existuje niekoľko spôsobov, ako tento problém vyriešiť. Po prvé, operácie, ako sú aktivačné funkcie, môžu byť vykonávané priamo na mieste, čo umožňuje prepísanie vstupu priamo na výstupe. Existujúca pamäť tak môže byť znovu použitá. Po druhé, príležitosť pre opätovné použitie pamäť možno získať analýzou dátovej závislosti medzi operáciami v sieti a pridelením rovnakej pamäte pre operácie, ktoré ju v danom momente nevyužívajú.

Druhý prístup je obzvlášť efektívny, keď je možné celú neurónovú sieť analyzovať v čase kompilácie, aby sa vytvorila pevná alokovaná pamäť, pretože réžia správy pamäte je znížená takmer na nulu. Ukázalo sa, že kombináciou týchto metód je možné dvoj- až trojnásobne znížiť využitie pamäte neurónovou sieťou.
Tretí významný prístup nedávno objavil tím Baidu Deep Speech. Použili rôzne techniky šetrenia pamäte, aby dosiahli 16-násobné zníženie spotreby pamäte aktivačnými funkciami, čo im umožnilo trénovať siete so 100 vrstvami. Predtým s rovnakým množstvom pamäte mohli trénovať siete s deviatimi vrstvami.

Kombinácia pamäťových a spracovateľských zdrojov v jednom zariadení má významný potenciál na zlepšenie výkonu a efektívnosti konvolučných neurónových sietí, ako aj iných foriem strojového učenia. Na dosiahnutie rovnováhy medzi schopnosťou a výkonom v systéme je možné urobiť kompromis medzi pamäťou a výpočtovými zdrojmi.

Neurónové siete a znalostné modely v iných metódach strojového učenia si možno predstaviť ako matematické grafy. V týchto grafoch je obrovské množstvo paralelizmu. Paralelný procesor navrhnutý tak, aby využíval paralelizmus grafov, sa nespolieha na mini-dávku a môže výrazne znížiť množstvo potrebného lokálneho úložiska.

Výsledky moderného výskumu ukázali, že všetky tieto metódy môžu výrazne zlepšiť výkon neurónových sietí. Moderné GPU a CPU majú veľmi obmedzenú vstavanú pamäť, celkovo len niekoľko megabajtov. Nové architektúry procesorov špeciálne navrhnuté pre strojové učenie dosahujú rovnováhu medzi pamäťou a výpočtovou technikou na čipe, čím poskytujú výrazné zlepšenie výkonu a efektívnosti oproti súčasným centrálne procesory a grafické akcelerátory.

Hlboké učenie mení paradigmu práce s textami, ale spôsobuje skepticizmus medzi počítačovými lingvistami a dátovými vedcami. Neurónové siete sú výkonný, no triviálny nástroj strojového učenia.

03.05.2017 Dmitrij Ilvovskij, Jekaterina Černyak

Neurónové siete vám umožňujú nájsť skryté súvislosti a vzory v textoch, ale tieto spojenia nie je možné prezentovať explicitne. Neurónové siete sú mocným, ale dosť triviálnym nástrojom, ktorý vyvoláva skepsu medzi spoločnosťami vyvíjajúcimi priemyselné riešenia v oblasti analýzy údajov a medzi poprednými počítačovými lingvistami.

Všeobecná fascinácia technológiami neurónových sietí a deep learning neobišla ani počítačovú lingvistiku – automatické spracovanie textov v prirodzenom jazyku. Na nedávnych konferenciách Asociácie pre počítačovú lingvistiku ACL, hlavného vedeckého fóra v tejto oblasti, bola prevažná väčšina správ venovaná aplikácii neurónových sietí ako riešenia už známe úlohy a na štúdium nových, ktoré neboli vyriešené pomocou štandardných nástrojov strojového učenia. zvýšená pozornosť lingvistov k neurónovým sieťam z niekoľkých dôvodov. Použitie neurónových sietí po prvé výrazne zlepšuje kvalitu riešenia niektorých štandardné úlohy klasifikácia textov a sekvencií, po druhé, znižuje náročnosť pri priamej práci s textami a po tretie umožňuje riešiť nové problémy (napríklad vytváranie chat botov). Neurónové siete zároveň nemožno považovať za úplne nezávislý mechanizmus riešenia lingvistických problémov.

Prvá práca na hlboké učenie(deep learning) siahajú do polovice 20. storočia. Začiatkom 40. rokov 20. storočia navrhli Warren McCulloch a Walter Pitts formálny model ľudského mozgu – umelú neurónovú sieť a o niečo neskôr Frank Rosenblatt zovšeobecnil ich prácu a vytvoril model neurónovej siete na počítači. Skorá práca na trénovaní neurónových sietí pomocou algoritmu spätné šírenie chyby pochádzajú zo 60. rokov 20. storočia (algoritmus vypočítava chybu predikcie a minimalizuje ju pomocou metód stochastickej optimalizácie). Ukázalo sa však, že napriek kráse a elegancii myšlienky simulácie mozgu trvá trénovanie „tradičných“ neurónových sietí veľa času a výsledky klasifikácie na malých súboroch údajov sú porovnateľné so získanými výsledkami. jednoduchšími metódami, ako sú podporné vektorové stroje (Support Vector Machine, SVM). V dôsledku toho sa na neurónové siete na 40 rokov zabudlo, no dnes sa opäť stali žiadanými pri práci s nimi veľké objemy neštruktúrované dáta, obrázky a texty.

Z formálneho hľadiska je neurónová sieť orientovaný graf danej architektúry, ktorej vrcholy alebo uzly sú tzv. neuróny. Na prvej úrovni grafu sú vstupné uzly, na poslednej úrovni výstupné uzly, ktorých počet závisí od úlohy. Napríklad pre klasifikáciu do dvoch tried možno jeden alebo dva neuróny umiestniť na výstupnú úroveň siete, pre klasifikáciu do k tried - k neurónov. Všetky ostatné úrovne v grafe neurónovej siete sa nazývajú skryté vrstvy. Všetky neuróny na rovnakej úrovni sú spojené hranami so všetkými neurónmi ďalšej úrovne, každá hrana má váhu. Každému neurónu je priradená aktivačná funkcia, ktorá simuluje prácu biologických neurónov: sú „tiché“, keď je vstupný signál slabý, a keď jeho hodnota prekročí určitú hranicu, vystrelia a prenesú vstupnú hodnotu ďalej cez sieť. Úlohou trénovania neurónovej siete na príkladoch (teda na dvojiciach "objekt - správna odpoveď") je nájsť váhy hrán, najlepšia cesta predpovedanie správnych odpovedí. Je jasné, že práve architektúra – topológia štruktúry grafu neurónovej siete – je jej najdôležitejším parametrom. Hoci zatiaľ neexistuje žiadna formálna definícia pre „hlboké siete“, je zvykom brať do úvahy všetky neurónové siete pozostávajúce z Vysoké číslo vrstvy alebo majúce „neštandardné“ vrstvy (napríklad obsahujúce iba vybrané odkazy alebo využívajúce rekurziu s inými vrstvami).

Príkladom doteraz najúspešnejšej aplikácie neurónových sietí je analýza obrazu, technológie neurónových sietí však radikálne zmenili aj prácu s textovými dátami. Ak skôr každý prvok textu (písmeno, slovo alebo veta) musel byť opísaný pomocou rôznych funkcií odlišná povaha(morfologické, syntaktické, sémantické atď.), teraz v mnohých problémoch odpadá potreba zložitých opisov. Teoretici a praktici technológií neurónových sietí často hovoria o „učení sa reprezentácie“ – v surovom texte, rozdelenom len na slová a vety, je neurónová sieť schopná nájsť závislosti a vzory a samostatne zostaviť priestor funkcií. Žiaľ, v takomto priestore človek ničomu neporozumie - počas tréningu neurónová sieť priraďuje každému prvku textu jeden hustý vektor pozostávajúci z určitých čísel reprezentujúcich objavené „hlboké“ vzťahy. Dôraz pri práci s textom sa presúva z konštrukcie podmnožiny funkcií a hľadania externých znalostných báz k výberu dátových zdrojov a označovaniu textov pre následné trénovanie neurónovej siete, ktorá si vyžaduje podstatne viac dát v porovnaní s štandardné metódy. Práve kvôli potrebe používať veľké množstvo údajov a kvôli slabej interpretovateľnosti a nepredvídateľnosti nie sú neurónové siete žiadané v skutočných aplikáciách v priemyselnom meradle, na rozdiel od iných dobre zavedených algoritmov učenia, ako je náhodný les a podporný vektor. stroje. Napriek tomu sa neurónové siete využívajú v množstve úloh automatického spracovania textu (obr. 1).

Jednou z najpopulárnejších aplikácií neurónových sietí je konštrukcia vektorov slov súvisiacich s oblasťou distributívnej sémantiky: verí sa, že význam slova možno pochopiť z významu jeho kontextu, z okolitých slov. Skutočne, ak nám nie je známe nejaké slovo v texte na známy jazyk, potom vo väčšine prípadov viete odhadnúť jeho hodnotu. Matematickým modelom významu slova sú slovné vektory: riadky vo veľkej matici „slovného kontextu“, postavenej na pomerne veľkom korpuse textov. „Kontexty“ pre konkrétne slovo môžu byť susedné slová, slová zahrnuté v rovnakej syntaktickej alebo sémantickej konštrukcii s daným slovom atď. V bunkách takejto matice možno zaznamenať frekvencie (koľkokrát sa slovo vyskytlo v tento kontext), ale častejšie používajú koeficient pozitívnych párových vzájomných informácií (Positive Pointwise Mutual Information, PPMI), ktorý ukazuje, ako nenáhodný bol výskyt slova v konkrétnom kontexte. Takéto matice sa dajú celkom úspešne použiť na zhlukovanie slov alebo na vyhľadávanie slov, ktoré sú významovo blízke hľadanému slovu.

V roku 2013 Tomasz Mikolov publikoval prácu, v ktorej navrhol použiť neurónové siete na učenie slovných vektorov, ale pre menší rozmer: neurónová sieť najjednoduchšej architektúry bola natrénovaná na niciach (slovo, kontexty), na výstupe bolo každé slovo priradený vektor 300 prvkov. Ukázalo sa, že takéto vektory lepšie vyjadrujú sémantickú blízkosť slov. Napríklad ich možno použiť na definovanie aritmetických operácií sčítania a odčítania významov a získať nasledujúce rovnice: "Paríž - Francúzsko + Rusko = Moskva"; "kráľ - muž + žena = kráľovná." Alebo nájsť nadbytočné slovo v riadku "jablko, hruška, čerešňa, mačiatko". V diele boli prezentované dve architektúry, skip-gram a CBOW (Continuous Bag of Words), pod všeobecným názvom word2vec. Ako sa neskôr ukázalo v , word2vec nie je nič iné ako faktorizácia matice kontextu slova s ​​váhami PPMI. Teraz je zvykom pripisovať word2vec distributívnej sémantike a nie hlbokému učeniu, avšak ako prvotný impulz na vytvorenie tohto modelu poslúžilo použitie neurónovej siete. Okrem toho sa ukázalo, že vektory word2vec slúžia ako pohodlná reprezentácia významu slova, ktorá môže byť napájaná do hlbokých neurónových sietí používaných na klasifikáciu textu.

Úloha klasifikácie textov je pre obchodníkov jednou z najdôležitejších, najmä pokiaľ ide o analýzu názorov alebo postojov spotrebiteľa k určitému produktu alebo službe, takže výskumníci neustále pracujú na zlepšovaní kvality ich riešenia. Analýza názorov je však úlohou skôr klasifikovať vety ako texty – do pozitívnej recenzie môže používateľ napísať jednu alebo dve negatívne zafarbené vety, dôležité je tiež vedieť ich identifikovať a analyzovať. Známy problém pri klasifikácii viet spočíva v premenlivej dĺžke vstupu – keďže vety v textoch majú ľubovoľnú dĺžku, nie je jasné, ako ich napájať na vstup neurónovej siete. Jedným z prístupov, vypožičaných z oblasti analýzy obrazu, je použitie konvolučných neurónových sietí (CNN) (obr. 2).

Vstupom konvolučnej neurónovej siete je veta, v ktorej je každé slovo už reprezentované vektorom (vektorom vektorov). Na reprezentáciu slov ako vektorov sa spravidla používajú vopred trénované modely word2vec. Konvolučná neurónová sieť pozostáva z dvoch vrstiev: „hlbokej“ konvolučnej vrstvy a bežnej skrytej vrstvy. Konvolučná vrstva sa zase skladá z filtrov a vrstvy „podvzorkovania“. Filter je neurón, ktorého vstup sa tvorí pomocou okien, ktoré sa pohybujú v texte a vyberajú určitý počet slov za sebou (napríklad okno s dĺžkou „tri“ vyberie prvé tri slová, slová od druhého po štvrté , od tretieho do piateho atď.) . Na výstupe filtra sa vytvorí jeden vektor, ktorý agreguje všetky vektory slov, ktoré sú v ňom obsiahnuté. Potom sa na podvzorkovacej vrstve vytvorí jeden vektor zodpovedajúci celej vete, ktorý sa vypočíta ako komponent po komponente maximum zo všetkých vektorov výstupného filtra. Konvolučné neurónové siete sa dajú ľahko trénovať a implementovať. Na ich trénovanie sa používa štandardný algoritmus spätného šírenia chýb a vzhľadom na to, že váhy filtrov sú rovnomerne rozdelené (váha i-tého slova z okna je rovnaká pre akýkoľvek filter), počet parametrov pretože konvolučná neurónová sieť je malá. Z hľadiska výpočtovej lingvistiky sú konvolučné neurónové siete mocný nástroj na klasifikáciu, za ktorou však nie je jazyková intuícia, čo značne komplikuje analýzu chýb algoritmov.

Sekvenčná klasifikácia je úloha, pri ktorej je potrebné každému slovu priradiť jedno označenie: morfologická analýza (každému slovu je priradený slovný druh), extrakcia pomenovaných entít (určenie, či je každé slovo súčasťou mena osoby, zemepisného názvu atď.) atď. Pri klasifikácii sekvencií sa používajú metódy, ktoré berú do úvahy kontext slova: ak je predchádzajúce slovo súčasťou mena osoby, potom súčasné slovo môže byť tiež súčasťou mena, ale je nepravdepodobné, že bude súčasťou mena názov organizácie. Rekurentné neurónové siete pomáhajú implementovať túto požiadavku v praxi a rozširujú myšlienku jazykových modelov (jazykový model) navrhnutých na konci minulého storočia. Klasický jazykový model predpovedá pravdepodobnosť, že slovo i sa objaví po slove i-1. Jazykové modely možno použiť aj na predpovedanie ďalšieho slova: ktorým slovom pravdepodobne stretnúť sa po tomto?

Na trénovanie jazykových modelov sú potrebné veľké korpusy – čím väčší je trénovací korpus, tým viac párov slov model „pozná“. Používanie neurónových sietí na vývoj jazykových modelov znižuje množstvo uložených údajov. Predstavte si jednoduchú sieťovú architektúru, v ktorej sú vstupom slová i-2 a i-1 a neurónová sieť predpovedá slovo i ako výstup. V závislosti od počtu skrytých vrstiev a počtu neurónov na nich môže byť trénovaná sieť uložená ako množstvo hustých matíc relatívne malých rozmerov. Inými slovami, namiesto cvičného korpusu a všetkých párov slov môže uložiť len niekoľko matíc a zoznam jedinečné slová. Takýto neurónový jazykový model však neumožňuje dlhé spojenia medzi slovami. Tento problém riešia rekurentné neurónové siete (obr. 3), v ktorých sa vnútorný stav skrytej vrstvy nielen aktualizuje po príchode nového slova na vstup, ale sa prenáša aj do ďalšieho kroku. Skrytá vrstva rekurentnej siete teda prijíma dva typy vstupov: stav skrytej vrstvy v predchádzajúcom kroku a nové slovo. Ak rekurentná neurónová sieť spracováva vetu, skryté stavy vám umožňujú zapamätať si a prenášať dlhé spojenia vo vetách. Experimentálne bolo opakovane overené, že rekurentné neurónové siete si pamätajú pohlavie subjektu vo vete a vyberajú správne zámená (ona - jej, on - jeho) pri generovaní vety, ale aby explicitne ukázali, ako presne je tento druh informácií uložené v neurónovej sieti alebo ako sa používa, stále zlyhal.

Na klasifikáciu textu sa využívajú aj rekurentné neurónové siete. V tomto prípade sa výstupy v medzikrokoch nepoužívajú a posledný výstup neurónovej siete vracia predpovedanú triedu. Obojsmerné (prenášajúce skrytý stav nielen „doprava“, ale aj „doľava“) rekurentné siete s niekoľkými desiatkami neurónov na skrytej vrstve sa dnes stali štandardným nástrojom na riešenie problémov klasifikácie textu a sekvencií, ako aj ako generovanie textu a v podstate nahradili iné algoritmy.

Vývoj rekurentných neurónových sietí sa stal architektúrami typu Seq2seq, ktoré pozostávajú z dvoch prepojených rekurentných sietí, z ktorých jedna je zodpovedná za reprezentáciu a analýzu vstupu (napríklad otázka alebo veta v jednom jazyku) a druhá za generovanie výstup (odpoveď alebo veta v inom jazyku). Siete Seq2seq podporujú moderné systémy Otázky a odpovede, chatboty a systémy strojového prekladu.

Okrem konvolučných neurónových sietí sa na analýzu textu používajú aj takzvané auto-kódery, ktoré sa používajú napríklad na vytváranie efektov na obrázkoch vo Photoshope alebo Instagrame a v lingvistike sa uplatnili pri probléme redukcie rozmerov (hľadaj premietanie vektora reprezentujúceho text do priestoru známej nižšej dimenzie). Projekcia do dvojrozmerného priestoru umožňuje znázorniť text ako bod v rovine a umožňuje vizuálne zobraziť zbierku textov ako súbor bodov, to znamená, že slúži ako prostriedok. predbežná analýza pred zoskupovaním alebo klasifikáciou textov. Na rozdiel od problému klasifikácie neexistujú v probléme redukcie rozmerov jasné kritériá kvality, ale obrázky získané pomocou autoenkóderov vyzerajú celkom „presvedčivo“. OD matematický bod Autoenkodér je neurónová sieť bez dozoru, ktorá sa učí lineárnu funkciu f(x) = x a skladá sa z dvoch častí: kodéra a dekodéra. Kódovač je sieť s niekoľkými skrytými vrstvami s klesajúcim počtom neurónov. Dekodér je podobná sieť s rastúcim počtom neurónov. Sú spojené skrytou vrstvou, na ktorej je toľko neurónov, koľko má byť dimenzií v novom priestore nižšej dimenzie a je to on, kto je zodpovedný za zmenšenie dimenzie. Rovnako ako konvolučné neurónové siete, ani autokóder nemá žiadnu lingvistickú interpretáciu, takže ho možno považovať skôr za inžiniersky ako analytický nástroj.

Napriek pôsobivým výsledkom nemožno neurónovú sieť považovať za samostatný nástroj na analýzu textu (hľadanie vzorcov v jazyku), a o to viac na porozumenie textu. Áno, neurónové siete umožňujú nájsť skryté spojenia medzi slovami a odhaliť vzory v textoch, ale kým tieto spojenia nebudú prezentované v interpretovateľnej forme, neurónové siete zostanú pomerne triviálnymi nástrojmi strojového učenia. Okrem toho v priemyselných analytické riešenia hlboké učenie zatiaľ nie je žiadané, pretože si vyžaduje neopodstatnené náklady na prípravu údajov s nepredvídateľnými výsledkami. Dokonca aj vo výskumnej komunite sa objavuje kritika pokusov urobiť z neurónových sietí univerzálny nástroj. V roku 2015 Chris Manning, vedúci skupiny počítačovej lingvistiky v Stanforde a prezident ACL, jasne načrtol rozsah neurónových sietí. Zahrnul do nej úlohy klasifikácie textu, klasifikácie sekvencií a redukcie dimenzií. Vďaka marketingu a popularizácii hlbokého učenia sa však pozornosť zvýšila aj na samotnú počítačovú lingvistiku a jej nové aplikácie.

Literatúra

  1. Tomáš Mikolov et. al. Efektívny odhad slovných reprezentácií vo vektorovom priestore, arxiv.org. URL: http://arxiv.org/pdf/1301.3781.pdf
  2. Levy Omer, Yoav Goldberg, Ido Dagan. Zlepšenie distribučnej podobnosti s lekciami získanými z vkladania slov. Transakcie Asociácie pre počítačovú lingvistiku 3. - 2015. - S. 211–225. URL: https://www.transacl.org/ojs/index.php/tacl/article/view/570/124 (prístup 18.05.2017).
  3. Pavel Velikhov. Strojové učenie na pochopenie prirodzeného jazyka // Open Systems.DBMS. - 2016. - č. 1. - S.18–21. URL: (dátum prístupu: 18.05.2017).
  4. Christopher Manning. Počítačová lingvistika a hlboké učenie. Počítačová lingvistika. - 2016. URL: http://www.mitpressjournals.org/doi/full/10.1162/COLI_a_00239#.WQH8MBhh2qA (Dátum prístupu: 18.05.2017).

Dmitrij Ilvovský ([chránený e-mailom]) - zamestnanec medzinárodného laboratória inteligentných systémov a štrukturálna analýza, Jekaterina Chernyak ([chránený e-mailom]) - učiteľ centra sústavné vzdelávanie, Fakulta informatiky, Vysoká škola ekonomická na Národnej výskumnej univerzite (Moskva). Práca bola vykonaná v rámci programu základného výskumu NRU HSE.





Páčil sa vám článok? Zdieľaj s priateľmi!