Programovanie

Čo je to hlboké učenie? Algoritmy, ktoré napodobňujú ľudský mozog

Je definované hlboké učenie

Hlboké učenie je forma strojového učenia, ktorá modeluje vzory v dátach ako zložité viacvrstvové siete. Pretože hlboké učenie je najvšeobecnejším spôsobom modelovania problému, má potenciál na riešenie zložitých problémov - ako je počítačové videnie a spracovanie prirodzeného jazyka -, ktoré prekonávajú konvenčné programovanie aj ďalšie techniky strojového učenia.

Hlboké učenie môže nielen priniesť užitočné výsledky tam, kde iné metódy zlyhajú, ale tiež môže vytvoriť presnejšie modely ako iné metódy a môže skrátiť čas potrebný na zostavenie užitočného modelu. Výcvik modelov hlbokého učenia si však vyžaduje veľkú výpočtovú silu. Ďalším nedostatkom hlbokého učenia je zložitosť interpretácie modelov hlbokého učenia.

Charakteristickou črtou hlbokého učenia je, že trénovaný model má viac ako jeden skrytá vrstva medzi vstupom a výstupom. Vo väčšine diskusií znamená hlboké učenie využitie hlbokých neurónových sietí. Existuje však niekoľko algoritmov, ktoré implementujú hlboké učenie pomocou iných druhov skrytých vrstiev okrem neurónových sietí.

Hlboké učenie vs. strojové učenie

Spomenul som, že hlboké učenie je forma strojové učenie. Nehĺbkové strojové učenie budem označovať ako klasické strojové učenie, aby vyhovovali bežnému používaniu.

Klasické algoritmy strojového učenia všeobecne fungujú oveľa rýchlejšie ako algoritmy hlbokého učenia; na vycvičenie klasického modelu často postačuje jeden alebo viac CPU. Modely hlbokého učenia často potrebujú hardvérové ​​akcelerátory, ako sú GPU, TPU alebo FPGA, na školenie a tiež na rozsiahle nasadenie. Bez nich by trénovanie modelov trvalo mesiace.

Pri mnohých problémoch nejaký klasický algoritmus strojového učenia vyprodukuje model „dosť dobrého“. Pokiaľ ide o ďalšie problémy, klasické algoritmy strojového učenia v minulosti príliš dobre nefungovali.

Aplikácie hlbokého učenia

Existuje veľa príkladov problémov, ktoré si v súčasnosti vyžadujú hlboké znalosti, aby bolo možné vyrobiť tie najlepšie modely. Spracovanie prirodzeného jazyka (NLP) je dobré.

Na jeseň 2016 sa kvalita výstupu služby Google Translate pre anglické, francúzske, anglicko-čínske a anglicko-japonské jazykové páry náhle dramaticky zlepšila, od vytvárania slovného šalátu po vytváranie viet podobných kvalite profesionálneho prekladu človeka. V zákulisí sa stalo to, že tímy Google Brain a Google Translate vylepšili Prekladač Google z používania jeho starých frázových štatistických algoritmov strojového prekladu (jeden druh klasického strojového učenia) na použitie hlbokej neurónovej siete trénovanej pomocou vkladania slov pomocou rámca TensorFlow spoločnosti Google .

Nebol to ľahký projekt. Mnoho výskumných pracovníkov na doktorandskej úrovni trvalo mesiace práce na modeloch a tisíce GPU týždňov na ich trénovanie. To tiež podnietilo spoločnosť Google k vytvoreniu nového druhu čipu, jednotky tenzorového spracovania (Tensor Processing Unit, TPU), ktorá bude prevádzkovať neurónové siete v rozsahu pre Google Translate.

Okrem problému s prekladom jazykov, ktorý rieši Google Translate, patrí medzi hlavné úlohy NLP automatická sumarizácia, riešenie referencií, analýza diskurzu, morfologická segmentácia, rozpoznávanie pomenovaných entít, generovanie prirodzeného jazyka, porozumenie prirodzenému jazyku, označovanie časti reči, sentiment analýza a rozpoznávanie reči.

Ďalším dobrým príkladom aplikácie hlbokého učenia je klasifikácia obrázkov. Pretože živé organizmy spracúvajú obrazy svojou vizuálnou kôrou, mnohí vedci vzali architektúru vizuálnej kôry cicavcov ako model neurónových sietí určených na vykonávanie rozpoznávania obrazu. Biologický výskum siaha do 50. rokov 20. storočia.

Prelomom v oblasti neurónovej siete pre videnie bol YNN LeCun z roku 1998 LeNet-5, sedemúrovňový konvolučná neurónová sieť (CNN) na rozpoznávanie ručne písaných číslic digitalizovaných v obrázkoch s rozmermi 32 x 32 pixelov. Na analýzu obrázkov s vyšším rozlíšením by bolo potrebné rozšíriť sieť LeNet-5 na viac neurónov a viac vrstiev.

Najlepšie dnešné modely klasifikácie hlbokých obrazov dokážu identifikovať rozmanité katalógy objektov pri farebnom rozlíšení HD. Okrem čistých hlbokých neurónových sietí (DNN) niekedy ľudia používajú modely hybridného videnia, ktoré kombinujú hlboké učenie s klasickými algoritmami strojového učenia, ktoré vykonávajú konkrétne čiastkové úlohy.

Medzi ďalšie problémy so zrakom patria okrem základnej klasifikácie obrázkov, ktoré boli vyriešené pomocou hlbokého učenia, aj klasifikácia obrázkov s lokalizáciou, detekcia objektov, segmentácia objektov, prenos štýlov obrázkov, vyfarbenie obrazu, rekonštrukcia obrazu, super-rozlíšenie obrazu a syntéza obrazu.

Klasifikáciu obrázkov je možné rozšíriť na klasifikáciu videa extrakciou jednotlivých snímok z videa a klasifikáciou jednotlivých snímok. Zistené objekty vo videoklipoch je možné sledovať po jednotlivých snímkach.

Podľa Goodfellow, Bengio a Courville, napísaných v roku 2016, sa hlboké učenie úspešne použilo na predpovedanie interakcie molekúl, aby pomohli farmaceutickým spoločnostiam navrhovať nové lieky, hľadať subatomárne častice a automaticky analyzovať obrázky mikroskopu použité na konštrukciu. 3-D mapa ľudského mozgu.

Neurónové siete s hlbokým učením

Nápady pre „umelé“ neurónové siete siahajú do 40. rokov 20. storočia. Základným konceptom je, že sieť umelých neurónov vytvorených zo vzájomne prepojených prahových spínačov sa môže naučiť rozpoznávať vzorce rovnakým spôsobom, ako to robí mozog a nervový systém zvieraťa (vrátane sietnice).

Spätné šírenie

K učeniu v hlbokých neurónových sieťach dochádza posilňovaním spojenia medzi dvoma neurónmi, keď sú oba počas tréningu aktívne súčasne. V modernom softvéri neurónových sietí ide najčastejšie o zvýšenie váhových hodnôt pre spojenie medzi neurónmi pomocou pravidla s názvom spätné šírenie chyby, backprop alebo BP.

Neuróny

Ako sa modelujú neuróny? Každý z nich má funkciu propagácie, ktorá transformuje výstupy spojených neurónov, často s váženým súčtom. Výstup funkcie šírenia prechádza do aktivačnej funkcie, ktorá sa spustí, keď jej vstup prekročí prahovú hodnotu.

Aktivačné funkcie

V 40. a 50. rokoch 20. storočia umelé neuróny využívali funkciu krokovej aktivácie a boli volané perceptróny. Moderné neurónové siete môžu povedať používajú perceptróny, ale v skutočnosti majú plynulé aktivačné funkcie, napríklad logistickú alebo sigmoidnú funkciu, hyperbolickú tangensu a usmernenú lineárnu jednotku (ReLU). ReLU je zvyčajne najlepšou voľbou pre rýchlu konvergenciu, aj keď má problém s „umieraním“ neurónov počas tréningu, ak je nastavená príliš vysoká rýchlosť učenia.

Výstup aktivačnej funkcie môže prejsť na výstupnú funkciu na ďalšie tvarovanie. Často je však výstupnou funkciou funkcia identity, čo znamená, že výstup aktivačnej funkcie sa prenáša do nadväzujúcich pripojených neurónov.

Topológie neurónovej siete

Teraz, keď vieme o neurónoch, musíme sa dozvedieť o bežných topológiách neurónových sietí. V doprednej sieti sú neuróny usporiadané do samostatných vrstiev: jedna vstupná vrstva, ľubovoľný počet skrytých spracovateľských vrstiev a jedna výstupná vrstva a výstupy z každej vrstvy prechádzajú iba do nasledujúcej vrstvy.

V sieti poskytujúcej spätné väzby so skratovými spojeniami môžu niektoré spojenia preskočiť jednu alebo viac medzivrstiev. V rekurentných neurónových sieťach môžu neuróny ovplyvňovať samy seba, a to buď priamo, alebo nepriamo cez ďalšiu vrstvu.

Školenie

Dozorované učenie neurónovej siete sa vykonáva rovnako ako akékoľvek iné strojové učenie. Prezentujete sieť so skupinami tréningových údajov, porovnáte sieťový výstup s požadovaným výstupom, vygenerujete chybový vektor a na základe chybového vektora vykonáte opravy v sieti. Dávky tréningových údajov, ktoré sa pred aplikáciou opráv spustia spoločne, sa nazývajú epochy.

Pre tých, ktorí sa zaujímajú o podrobnosti, spätné šírenie využíva gradient funkcie chyby (alebo ceny) vzhľadom na váhy a predpätia modelu na zistenie správneho smeru na minimalizáciu chyby. Uplatňovanie korekcií riadia dve veci: optimalizačný algoritmus a premenná rýchlosti učenia, ktorá musí byť zvyčajne malá, aby bola zaručená konvergencia a zabránilo sa vzniku mŕtvych neurónov ReLU.

Optimalizátory

Optimalizátory pre neurónové siete zvyčajne používajú na podporu spätného šírenia určitú formu algoritmu gradientného zostupu, často s mechanizmom, ktorý pomáha vyhnúť sa zaseknutiu v miestnych minimách, ako je napríklad optimalizácia náhodne vybraných mini dávok (Stochastic Gradient Descent) a použitie spád korekcie gradientu. Niektoré optimalizačné algoritmy tiež upravujú rýchlosť učenia parametrov modelu pozeraním na históriu gradientov (AdaGrad, RMSProp a Adam).

Rovnako ako pri všetkom strojovom učení, musíte skontrolovať predpovede neurónovej siete proti samostatnej množine overovacích údajov. Bez toho by ste riskovali vytvorenie neurónových sietí, ktoré si iba pamätajú svoje vstupy, namiesto toho, aby sa naučili byť zovšeobecnenými prediktormi.

Skutočné DNN

Hlboká neurónová sieť pre skutočný problém môže mať viac ako 10 skrytých vrstiev. Jeho topológia môže byť jednoduchá alebo dosť zložitá.

Čím viac vrstiev v sieti, tým viac charakteristík dokáže rozpoznať. Bohužiaľ, čím viac vrstiev v sieti, tým dlhšie bude trvať výpočet, a tým ťažšie sa bude trénovať.

Algoritmy hlbokého učenia

Ako som už spomínal, väčšina hlbokého učenia sa uskutočňuje pomocou hlbokých neurónových sietí. Konvolučné neurónové siete (CNN) sa často používajú na strojové videnie. Rekurentné neurónové siete (RNN) sa často používajú na spracovanie prirodzeného jazyka a ďalšie sekvenčné spracovanie, rovnako ako siete s dlhodobou krátkodobou pamäťou (LSTM) a neurónové siete založené na pozornosti. Náhodné lesy, tiež známe ako náhodné rozhodovacie lesy, ktoré nie sú neurónovými sieťami, sú užitočné pri rôznych problémoch s klasifikáciou a regresiou.

Neurónové siete CNN

Konvolučné neurónové siete zvyčajne používajú na simuláciu vizuálnej kôry vrstvy konvolúcie, združovania, ReLU, plne pripojené a stratové vrstvy. Konvolučná vrstva v podstate berie integrály mnohých malých prekrývajúcich sa oblastí. Spoločná vrstva vykonáva formu nelineárneho prevzorkovania. Vrstvy ReLU používajú nesaturačnú aktivačnú funkciu f (x) = max (0, x). V úplne spojenej vrstve majú neuróny spojenie so všetkými aktiváciami v predchádzajúcej vrstve. Stratová vrstva vypočítava, ako sieťové školenie penalizuje odchýlku medzi predpovedanými a skutočnými štítkami, a to pomocou funkcie klasifikácie straty Softmax alebo krížovej entropie alebo funkcie euklidovskej straty pre regresiu.

RNN, LSTM a neurónové siete založené na pozornosti

V dopredných neurónových sieťach informácie prúdia zo vstupu cez skryté vrstvy na výstup. To obmedzuje sieť na prácu s jedným štátom naraz.

V rekurentných neurónových sieťach informácie cyklujú cez slučku, ktorá umožňuje sieti pamätať si posledné predchádzajúce výstupy. To umožňuje analýzu sekvencií a časových radov. RNN majú dva spoločné problémy: explodujúce prechody (ľahko fixovateľné upnutím prechodov) a miznúce prechody (nie je tak ľahké opraviť).

V LSTM je sieť schopná zabudnúť (uzavrieť) predchádzajúce informácie alebo si ich zapamätať, v obidvoch prípadoch zmenou váh. Toto efektívne poskytuje LSTM dlhodobú aj krátkodobú pamäť a rieši problém miznúceho gradientu. LSTM si môžu poradiť so sekvenciami stoviek minulých vstupov.

Moduly pozornosti sú zovšeobecnené brány, ktoré používajú váhy na vektor vstupov. Hierarchický kodér neurálnej pozornosti využíva na zvládnutie desiatok tisíc minulých vstupov viac vrstiev modulov pozornosti.

Náhodné lesy

Ďalším druhom algoritmu hlbokého učenia - nie hlbokou neurónovou sieťou - je Náhodný les alebo Náhodný rozhodovací les. Náhodný les je zostrojený z mnohých vrstiev, ale namiesto neurónov je zostrojený z rozhodovacích stromov a na výstupe je štatistický priemer (režim pre klasifikáciu alebo stredná hodnota pre regresiu) predpovedí jednotlivých stromov. Randomizovanými aspektmi Náhodných lesov je použitie bootstrapovej agregácie (a.k.a. vrecovanie) pre jednotlivé stromy a pri náhodnom výbere podmnožiny funkcií.

Rámce hlbokého učenia

Programy hlbokého učenia sa dajú písať od prvých princípov, je však oveľa efektívnejšie používať rámce hlbokého učenia, najmä za predpokladu, že boli optimalizované na použitie s GPU a inými akcelerátormi. Najvýznamnejším rámcom je TensorFlow, ktorý pochádza od spoločnosti Google. Najobľúbenejším vysokoúrovňovým API pre TensorFlow je Keras, ktorý sa dá použiť aj s inými back-endovými rámcami.

PyTorch z Facebooku a ďalších je silnou alternatívou k TensorFlow a vyznačuje sa podporou dynamických neurónových sietí, v ktorých sa topológia siete môže meniť z epochy na epochu. Fastai je API tretích strán na vysokej úrovni, ktoré ako koncový server používa PyTorch.

MXNet od spoločnosti Amazon a ďalších je ďalšou silnou alternatívou k TensorFlow s požiadavkou na lepšiu škálovateľnosť. Gluon je preferované vysoko imperatívne rozhranie API pre MXNet.

Chainer od spoločností IBM, Intel a ďalších bol v niektorých ohľadoch inšpiráciou pre PyTorch, pretože definuje neurónovú sieť behom a podporuje dynamické neurónové siete.

Zatiaľ čo všetky vyššie spomenuté rámce sú primárne Python, Deeplearning4j (DL4J), pôvodom od Skymindu a teraz projektu Apache, sú primárne Java a Scala. DL4J je kompatibilný s Apache Spark a Hadoop.

ONNX bol pôvodne navrhnutý ako otvorený ekosystém pre vymeniteľné modely AI. ONNX má teraz okrem formátu výmenného súboru aj runtime.

$config[zx-auto] not found$config[zx-overlay] not found