Yandex deschide tehnologia de învățare automată CatBoost. Compararea bibliotecilor de deep learning folosind exemplul problemei de clasificare a cifrelor scrise de mână

  • Piton,
  • Învățare automată,
  • Tehnologii de căutare
  • Astăzi, Yandex a postat în sursa deschisa biblioteca proprie CatBoost, dezvoltat ținând cont de mulți ani de experiență în domeniu a companiei învățare automată. Cu ajutorul acestuia, puteți antrena în mod eficient modele pe date eterogene, inclusiv pe cele greu de reprezentat sub formă de numere (de exemplu, tipuri de nori sau categorii de produse). Sursă, documentație, benchmark-uri și instrumentele necesare deja publicat pe GitHub sub licența Apache 2.0.

    CatBoost este metoda nouaînvățarea automată bazată pe creșterea gradientului. Este implementat în Yandex pentru a rezolva problemele de clasare, predicție și recomandări de construire. În plus, este deja utilizat în cadrul cooperării cu Organizația Europeană pentru Cercetare Nucleară (CERN) și industria industrială. Clienții Yandex Fabrica de date. Deci, prin ce diferă CatBoost de alți analogi open-source? De ce amplificarea și nu metoda rețelei neuronale? Cum este această tehnologie legată de deja cunoscutul Matrixnet? Și ce legătură au pisicile cu asta? Astăzi vom răspunde la toate aceste întrebări.

    Termenul de „învățare automată” a apărut în anii 50. Acest termen se referă la o încercare de a învăța un computer să rezolve probleme care sunt ușor pentru oameni, dar este dificil să oficializezi modalitatea de a le rezolva. Ca rezultat al învățării automate, un computer poate prezenta un comportament care nu a fost conceput în mod explicit în el. ÎN lumea modernăÎntâlnim roadele învățării automate de multe ori în fiecare zi, mulți dintre noi fără să știm. Este folosit pentru a construi panglici în în rețelele sociale, liste " produse similare» in magazinele online, la acordarea creditelor de la banci si determinarea costului asigurarii. Tehnologiile de învățare automată sunt folosite pentru a căuta chipuri în fotografii sau numeroase filtre foto. Pentru cei din urmă, apropo, se folosesc de obicei rețelele neuronale și despre ele sunt scrise atât de des încât poate exista o părere greșită că acesta este un „glonț de argint” pentru rezolvarea problemelor de orice complexitate. Dar asta nu este adevărat.

    Rețele neuronale sau creșterea gradientului

    De fapt, învățarea automată este foarte diferită: există un numar mare de diferite metode, iar rețelele neuronale sunt doar una dintre ele. Acest lucru este ilustrat de rezultatele competițiilor de pe platforma Kaggle, unde oamenii câștigă diverse competiții metode diferiteși câștiguri pentru creșterea gradientului pentru mulți.

    Rețelele neuronale sunt excelente în rezolvarea anumitor probleme – de exemplu, cele în care trebuie să lucrați cu date omogene. Datele omogene constau, de exemplu, din imagini, sunet sau text. În Yandex, ele ne ajută să înțelegem mai bine interogări de căutare, căuta poze similare pe Internet, recunoașteți-vă vocea în Navigator și multe altele. Dar acestea nu sunt toate sarcinile pentru învățarea automată. Există un întreg strat de provocări serioase care nu pot fi rezolvate numai prin rețelele neuronale - au nevoie de creșterea gradientului. Această metodă este indispensabilă acolo unde există multe date și structura ei este eterogenă.

    De exemplu, dacă aveți nevoie de o prognoză meteo precisă, care să ia în considerare o cantitate mare factori (temperatură, umiditate, date radar, observații ale utilizatorilor și mulți alții). Sau dacă trebuie să clasați calitativ rezultatele cautarii- acesta este ceea ce a determinat Yandex să-și dezvolte propria metodă de învățare automată.

    Matrixnet

    Primul motoare de căutare nu erau la fel de complexe ca acum. De fapt, la început a fost doar o căutare de cuvinte - erau atât de puține site-uri încât nu exista prea multă concurență între ele. Apoi au fost mai multe pagini și a devenit necesară clasarea lor. Au început să fie luate în considerare diverse complicații - frecvența cuvintelor, tf-idf. Apoi au fost prea multe pagini pe orice subiect, a avut loc prima descoperire importantă - au început să ia în considerare link-urile.

    În curând, Internetul a devenit important din punct de vedere comercial și au apărut mulți escroci care încercau să păcălească algoritmii simpli care existau la acea vreme. Și a avut loc o a doua descoperire importantă - motoarele de căutare au început să-și folosească cunoștințele despre comportamentul utilizatorilor pentru a înțelege care pagini sunt bune și care nu.

    În urmă cu aproximativ zece ani, mintea umană nu mai era suficientă pentru a-și da seama cum să ierarhească documentele. Probabil ați observat că numărul de rezultate găsite pentru aproape orice interogare este uriaș: sute de mii, adesea milioane de rezultate. Cele mai multe dintre ele sunt neinteresante, inutile, menționează doar aleatoriu cuvintele de interogare sau sunt în general spam. Pentru a răspunde solicitării dvs., trebuie să selectați instantaneu primele zece dintre toate rezultatele găsite. Scrieți un program care să facă asta cu calitate acceptabilă, a devenit dincolo de puterea unui programator uman. Următoarea tranziție a avut loc - motoarele de căutare au început să folosească în mod activ învățarea automată.

    În 2009, Yandex și-a introdus propria metodă Matrixnet, bazată pe creșterea gradientului. Putem spune că clasamentul este ajutat de inteligența colectivă a utilizatorilor și de „înțelepciunea mulțimii”. Informațiile despre site-uri și comportamentul oamenilor sunt convertite în mulți factori, fiecare dintre aceștia fiind folosit de Matrixnet pentru a construi o formulă de clasare. De fapt, formula de clasare este acum scrisă de o mașină. Apropo, folosim și rezultatele rețelelor neuronale ca factori individuali (de exemplu, așa funcționează algoritmul Palekh, despre care am vorbit anul trecut).

    O caracteristică importantă a Matrixnet este că este rezistent la supraajustare. Acest lucru vă permite să luați în considerare o mulțime de factori de clasare și, în același timp, să învățați din relativ cantitate mica date fără teama că aparatul va găsi modele inexistente. Alte metode de învățare automată pot construi mai multe formule simple cu mai puțini factori sau necesită un eșantion de formare mai mare.

    Încă unul caracteristică importantă Matrixnet este că formula de clasare poate fi configurată separat pentru clase destul de restrânse de interogări. De exemplu, îmbunătățiți calitatea căutării numai pentru interogări despre muzică. În același timp, clasarea pentru alte clase de interogări nu se va deteriora.

    Matrixnet și avantajele sale au stat la baza CatBoost. Dar de ce a trebuit să inventăm ceva nou?

    Aproape orice metoda modernă Bazat pe creșterea gradientului, funcționează cu numere. Chiar dacă introducerea dvs. este genuri de muzică, tipuri de nori sau culori, aceste date trebuie totuși descrise în limbajul numerelor. Acest lucru duce la o denaturare a esenței lor și la o potențială scădere a preciziei modelului.

    Să demonstrăm acest lucru folosind un exemplu primitiv cu un catalog de produse într-un magazin. Produsele au o relație redusă între ele și nu există niciun model între ele care să le permită să fie comandate și atribuit un număr semnificativ fiecărui produs. Prin urmare, în această situație, fiecărui produs i se atribuie pur și simplu un ID de serie (de exemplu, în conformitate cu programul de contabilitate al magazinului). Ordinea acestor numere nu înseamnă nimic, dar algoritmul va folosi această ordine și va trage concluzii false din ea.

    Un specialist experimentat în învățarea automată poate veni cu o modalitate mai inteligentă de a transforma caracteristicile categorice în numere, dar o astfel de preprocesare va duce la pierderea unor informații și va duce la o deteriorare a calității soluției finale.

    De aceea a fost important să învățăm mașina să lucreze nu numai cu numere, ci și cu categorii direct, tipare între care se va identifica independent, fără „ajutorul” nostru manual. Și CatBoost a fost proiectat de noi pentru a funcționa la fel de bine din cutie, atât cu caracteristici numerice, cât și categoriale. Datorită acestui lucru, arată mai mult calitate superioară antrenament atunci când se lucrează cu date eterogene decât solutii alternative. Poate fi folosit cel mai mult zone diferite- de la sectorul bancar către industrie.

    Apropo, numele tehnologiei vine de la Categorical Boosting. Și nici o pisică nu a fost rănită în timpul dezvoltării.

    Benchmark-uri

    Putem vorbi mult timp despre diferențele teoretice ale bibliotecii, dar este mai bine să o arătăm în practică o dată. Pentru claritate, am comparat activitatea bibliotecii CatBoost cu analogi deschisi XGBoost, LightGBM și H20 pe un set de seturi de date publice. Și iată rezultatele (cu cât mai mici, cu atât mai bine): https://catboost.yandex/#benchmark

    Nu vrem să fim neîntemeiați, prin urmare, împreună cu bibliotecă, o descriere a procesului de comparare, codul pentru lansarea comparării metodelor și un container cu versiunile folosite ale tuturor bibliotecilor sunt postate în sursă deschisă. Orice utilizator poate repeta experimentul acasă sau pe propriile date.

    CatBoost în practică

    Noua metodă a fost deja testată pe serviciile Yandex. A fost folosit pentru a îmbunătăți rezultatele căutării, a clasifică feedul de recomandări Yandex.Zen și pentru a calcula prognoza meteo în tehnologia Meteum - și în toate cazurile s-a dovedit a fi mai bună decât Matrixnet. În viitor, CatBoost va lucra la alte servicii. Nu ne vom opri aici – este mai bine să vă spunem imediat despre Large Hadron Collider (LHC).

    CatBoost și-a găsit aplicație și în cadrul cooperării cu Organizația Europeană pentru Cercetare Nucleară. LHC operează detectorul LHCb, care este folosit pentru a studia asimetria materiei și a antimateriei în interacțiunile cu quarcurile destul de grele. Pentru a urmări cu precizie diferitele particule detectate într-un experiment, există mai multe părți specifice în detector, fiecare dintre acestea determinând proprietățile speciale ale particulelor. Cel mai sarcina dificila aceasta presupune combinarea informatiilor cu diverse părți detector în cele mai precise cunoștințe agregate despre particule. Aici este locul în care învățarea automată vine în ajutor. Folosind CatBoost pentru a combina datele, oamenii de știință au reușit să îmbunătățească caracteristicile de calitate ale soluției finale. Rezultatele CatBoost au fost rezultate mai bune obţinute prin alte metode.

    Cum să începeți să utilizați CatBoost?

    Pentru a lucra cu CatBoost, trebuie doar să îl instalați pe computer. Biblioteca suportă OS Linux, Windows și macOS și disponibil în limbi Programare Python iar R. Yandex a dezvoltat, de asemenea, un program de vizualizare

    Salutare tuturor!

    În acest articol voi vorbi despre un nou mod confortabil de a programa în Python.

    Este mai puțin ca programarea și mai mult ca crearea de articole (rapoarte/demonstrații/cercetare/exemple): puteți insera text explicativ obișnuit printre blocurile de cod Python. Rezultatul executării codului nu sunt doar numere și text (cum este cazul consolei când lucrați cu Python), ci și grafice, diagrame, imagini...

    Exemple de documente pe care le puteți crea:

    Arata bine? Doriți să creați aceleași documente? Atunci acest articol este pentru tine!

    Rețelele neuronale sunt create și antrenate în principal în Python. Prin urmare, este foarte important să aveți o înțelegere de bază despre cum să scrieți programe în el. În acest articol voi vorbi pe scurt și clar despre conceptele de bază ale acestui limbaj: variabile, funcții, clase și module.

    Materialul este destinat persoanelor care nu sunt familiarizate cu limbajele de programare.

    Mai întâi trebuie să instalați Python. Apoi, trebuie să instalați un mediu convenabil pentru scrierea programelor în Python. Portalul este dedicat acestor doi pași.

    Dacă totul este instalat și configurat, puteți începe.

    Rețele neuronale trebuie să-l scrii într-un limbaj de programare. Sunt foarte multe, dar recomand (și folosesc în manual și articole) exact Limbajul Python. De ce?

    1. Este foarte ușor de învățat
    2. Un număr mare de biblioteci gata făcute
    3. Când te uiți la un program, vezi imediat algoritmul pe care îl implementează
    4. Majoritatea specialiștilor în învățarea automată folosesc Python și majoritatea bibliotecilor sunt create special pentru acest limbaj de programare

    În partea anterioară, am învățat cum să calculăm modificările semnalului atunci când trecem printr-o rețea neuronală. Ne-am familiarizat cu matricele, produsele lor și formulele simple derivate pentru calcule.

    În partea 6 a traducerii postez 4 secțiuni ale cărții deodată. Toate sunt dedicate uneia dintre cele mai multe subiecte importanteîn domeniul rețelelor neuronale – metoda backpropagation. Veți învăța să calculați eroarea tuturor neuronilor dintr-o rețea neuronală pe baza erorii finale ale rețelei și a greutăților conexiunii.

    Materialul este complex, așa că nu ezitați să vă adresați întrebările pe forum.

    Puteți transfera.

    Bucură-te de lectură!

    În partea 5 a traducerii prezint 3 secțiuni legate de sens.

    În primul rând, vom calcula personal rezultatele unei rețele neuronale cu două straturi. Apoi ne vom familiariza cu matricele și produsele lor. Folosind cunoștințele acumulate, vom obține formule simple pentru calcularea conversiei semnalului într-o rețea neuronală. Și în ultima secțiune vom verifica formulele obținute în practică, calculând ieșirile unei rețele neuronale cu trei straturi.

    Puteți transfera.

    Bucură-te de lectură!

    Partea 4 a traducerii este gata!

    Să încetăm să batem în jurul tufișului și să trecem direct la subiectul cărții - rețelele neuronale.

    În această parte a traducerii, ne vom uita la rețelele neuronale biologice și le vom compara cu computerele tradiționale. Apoi vom construi modelul neuron artificial iar în final ne vom trece direct la rețelele neuronale artificiale.

    Puteți transfera.

    Bucură-te de lectură!

    A treia parte a traducerii!

    Articolul nu este foarte lung. Acoperă doar o secțiune a cărții. Scopul este de a arăta că fiecare metodă are limitările sale. Articolul discută limitările clasificatorului liniar. Sunt introduse și conceptele funcții logiceși probleme XOR.

    Puteți transfera.

    Bucură-te de lectură!

    În acest articol voi vorbi despre un generator de muzică interesant care funcționează pe rețele neuronale. Generatorul se numește Amper. Cu ajutorul ei, orice persoană, chiar și cineva care este departe de a compune compoziții, poate crea independent o melodie unică și o poate folosi în propriile scopuri.

    Iată, de exemplu, ceea ce a dezvoltat rețeaua neuronală pentru mine.

    Din punct de vedere istoric, rețelele neuronale artificiale, de-a lungul istoriei lor de peste jumătate de secol, au cunoscut atât perioade de creștere rapidă și atenție publică sporită, cât și perioade de scepticism și indiferență care le-au urmat. ÎN Vremuri bune Oamenilor de știință și inginerilor li se pare că au găsit în sfârșit o tehnologie universală care poate înlocui oamenii în orice sarcină cognitivă. Asemenea ciupercilor după ploaie, apar diverse modele noi de rețele neuronale și există dezbateri intense între autorii acestora, matematicieni profesioniști, despre gradul mai mare sau mai mic de biologicitate al modelelor pe care le propun. Biologii profesioniști observă aceste discuții de pe margine, întrerupând periodic și exclamând „Da, acest lucru nu se întâmplă în natura reală!” – și fără prea mult efect, deoarece matematicienii rețelelor neuronale îi ascultă pe biologi, de regulă, doar atunci când faptele biologilor sunt în concordanță cu propriile lor teorii. Cu toate acestea, de-a lungul timpului, se acumulează treptat un grup de sarcini pentru care rețelele neuronale funcționează sincer prost, iar entuziasmul oamenilor se răcește.

    În zilele noastre, rețelele neuronale revin la apogeul faimei lor datorită inventării metodei de pre-antrenament nesupravegheat bazată pe mașini Bolzmann restricționate (RBM), care face posibilă antrenarea rețelelor neuronale profunde (adică cu extra-large, pe ordinul zecilor de mii, numărul de neuroni) și succesul rețelelor neuronale profunde în problemele practice de recunoaștere a vorbirii și a imaginilor. De exemplu, recunoașterea vorbirii în Android este implementată folosind rețele neuronale profunde. Nu se știe cât de mult va dura acest lucru și cât de bine se vor ridica rețelele neuronale profunde la nivelul așteptărilor puse asupra lor.
    Între timp, în paralel cu toate disputele, curentele și tendințele științifice, o comunitate de utilizatori ai rețelelor neuronale iese în evidență în mod clar - ingineri software practicanți care sunt interesați de aspectul aplicat al rețelelor neuronale, de capacitatea lor de a învăța din datele colectate și de a rezolva problemele de recunoaștere. Cu multe probleme practice Clasificarea și predicția funcționează bine cu modele de perceptron multistrat (MLP) bine concepute, relativ mici și rețele de funcție de bază radială (RBF). Aceste rețele neuronale au fost descrise de multe ori; aș recomanda următoarele cărți, în ordinea simpatiei mele personale pentru ele: Osovsky, Bishop, Khaikin; Există, de asemenea, cursuri bune despre Coursera și resurse similare.

    Totuși, în ceea ce privește abordare comună utilizarea rețelelor neuronale în practică, este radical diferită de abordarea obișnuită de dezvoltare deterministă „programat, funcționează, ceea ce înseamnă că funcționează întotdeauna”. Rețelele neuronale sunt prin natura lor modele probabilistice, iar abordarea lor ar trebui să fie complet diferită. Din păcate, mulți programatori noi de tehnologii de învățare automată în general și rețelele neuronale în special o fac erori de sistem când lucrează cu ei, devin dezamăgiți și abandonează problema. Ideea de a scrie acest tratat despre Habr a apărut după comunicarea cu utilizatori atât de dezamăgiți ai rețelelor neuronale - programatori excelenți, experimentați și încrezători în sine.

    Iată lista mea de reguli și greșeli tipice utilizarea rețelelor neuronale.

    1. Dacă este posibil să nu folosiți rețelele neuronale, nu le folosiți.
    Rețelele neuronale vă permit să rezolvați o problemă dacă este imposibil să propuneți un algoritm vizualizând în mod repetat (sau foarte repetat) datele cu ochii. De exemplu, dacă există o mulțime de date, acestea sunt neliniare, zgomotoase și/sau de dimensiuni mari.

    2. Complexitatea rețelelor neuronale trebuie să fie adecvată complexității sarcinii.
    Modern calculatoare personale(de exemplu, Core i5, 8 GB RAM) vă permit să antrenați rețele neuronale într-un timp confortabil folosind mostre de zeci de mii de exemple, cu dimensiuni ale datelor de intrare de până la sute. Eșantioanele mari reprezintă o provocare pentru rețelele neuronale profunde menționate mai sus, care sunt antrenate pe GPU-uri cu mai multe procesoare. Aceste modele sunt foarte interesante, dar sunt dincolo de subiectul acestui articol habr.

    3. Datele de instruire trebuie să fie reprezentative.
    Eșantionul de instruire ar trebui să reprezinte pe deplin și cuprinzător fenomenul descris și să includă diferite situații posibile. Este bine să ai o mulțime de date, dar asta în sine nu ajută întotdeauna. Există o glumă larg răspândită în cercuri înguste atunci când un geolog vine la un detector, îi pune o bucată de mineral în fața lui și îi cere să dezvolte un sistem de recunoaștere a unei astfel de substanțe folosindu-l. „Pot avea mai multe exemple de date?” - întreabă recunoaștetorul. "Cu siguranță!" - răspunde geologul, scoate un târnăcop și își desparte bucata de mineral în mai multe bucăți. După cum înțelegeți, nu va fi de niciun folos dintr-o astfel de operațiune - nu informație nouă o astfel de probă mărită nu poartă în sine.

    4. Amestecați selecția.
    După ce vectorii de date de intrare și de ieșire au fost colectați, dacă măsurătorile sunt independente unele de altele, schimbați ordinea vectorilor la întâmplare. Acest lucru este esențial pentru împărțirea corectă a eșantionului în Train/Test/Validare și toate metodele de antrenament eșantion cu eșantion.

    5. Normalizați și centrați datele.
    Pentru perceptronii multistrat și pentru multe alte modele, valorile datelor de intrare trebuie să se situeze în intervalul [-1;1]. Înainte de a le alimenta în rețeaua neuronală, scădeți media din date și împărțiți toate valorile la valoarea maximă.

    6. Împărțiți proba în Train, Test și Validare.
    Principala greșeală a începătorilor este de a oferi eroare minimă munca unei rețele neuronale pe un eșantion de antrenament, în același timp reantrenând-o infernal, și apoi dorința de aceeași calitate bună a datelor reale noi. Acest lucru este deosebit de ușor de făcut dacă există puține date (sau toate sunt dintr-o singură bucată). Rezultatul poate fi foarte dezamăgitor: rețeaua neuronală se va adapta pe cât posibil la eșantion și își va pierde funcționalitatea pe datele reale. Pentru a controla abilitățile de generalizare ale modelului dvs., împărțiți toate datele în trei mostre într-un raport de 70: 20: 10. Train on Train, verificând periodic calitatea modelului pe Test. Pentru evaluarea finală imparțială – Validare.
    Tehnica de validare încrucișată, când Train și Test sunt generate de mai multe ori în mod aleatoriu din aceleași date, poate fi insidioasă și poate da o impresie falsă de calitate bună funcționarea sistemului - de exemplu, dacă datele sunt preluate de la surse diferite iar acest lucru este critic. Utilizați validarea corectă!

    7. Aplicați regularizarea.
    Regularizarea este o tehnică care vă permite să evitați supraantrenarea unei rețele neuronale în timpul antrenamentului, chiar dacă există puține date. Dacă găsiți o casetă de selectare cu acest cuvânt, asigurați-vă că o bifați. Semnul unei rețele neuronale supraantrenate – valori mari greutăți, de ordinul a sute și mii, o astfel de rețea neuronală nu va funcționa normal pe date noi, nevăzute anterior

    8. Nu este nevoie să reinstruiți rețeaua neuronală online.
    Ideea de reinstruire permanentă a rețelei neuronale pe baza noilor date primite este corectă în sine; în sistemele biologice reale, exact așa se întâmplă. Învățăm în fiecare zi și rareori înnebunim. Cu toate acestea, pentru rețelele neuronale artificiale convenționale aflate în stadiul actual de dezvoltare tehnică, această practică este riscantă: rețeaua se poate supraantrena sau se poate adapta la ultimele date primite - și își poate pierde abilitățile de generalizare. Pentru ca sistemul să poată fi utilizat în practică, rețeaua neuronală trebuie să: 1) să antreneze, 2) să testeze calitatea probelor de testare și validare, 3) să selecteze o opțiune de rețea de succes, să-i stabilească greutățile și 4) să folosească neuronul antrenat. în practică, ponderile procesului nu schimbă utilizarea.

    9. Folosiți algoritmi noi de învățare: Levenberg-Marquardt, BFGS, Gradienți conjugați etc.
    Sunt profund convins că implementarea învățării cu propagare inversă este datoria sacră a tuturor celor care lucrează cu rețele neuronale. Această metodă este cea mai simplă, relativ ușor de programat și vă permite să studiați în detaliu procesul de învățare al rețelelor neuronale. Între timp, retropropagarea a fost inventată la începutul anilor 70 și a devenit populară la mijlocul anilor 80 ai secolului trecut; de atunci, au apărut metode mai avansate care pot îmbunătăți semnificativ calitatea învățării. Mai bine le folosești.

    10. Antrenează rețele neuronale în MATLAB și în medii similare prietenoase cu utilizatorul.
    Dacă nu sunteți un om de știință care dezvoltă noi metode pentru antrenarea rețelelor neuronale, ci un programator practicant, nu v-aș recomanda să codificați singur procedura de antrenare a rețelelor neuronale. Există un număr mare pachete software, în principal în MATLAB și Python, care vă permit să antrenați rețele neuronale, controlând în același timp procesul de instruire și testare folosind mijloace convenabile vizualizare și depanare. Bucurați-vă de moștenirea umanității! Personal îmi place abordarea „antrenează în MATLAB cu o bibliotecă bună - implementează modelul antrenat manual”; este destul de puternică și flexibilă. O excepție este pachetul STATISTICA, care conține metode avansate de antrenament a rețelelor neuronale și vă permite să le generați sub forma codul programuluiîn C, convenabil pentru implementare.

    În următorul articol îmi propun să descriu în detaliu întregul ciclu industrial de pregătire a unei rețele neuronale implementate pe baza principiilor descrise mai sus, utilizate pentru sarcini de recunoaștere în domeniul comercial. produs software.

    Noroc!

    Literatură

    Hinton G., Deng L., Yu D., Dahl G., Mohamed A., Jaitly N., Senior A., ​​​​Vanhoucke V., Nguyen P., Sainath T. și Kingsbury B. Deep Neural Networks for Acoustic Modelarea în recunoașterea vorbirii, IEEE Signal Processing Magazine, Vol. 29, nr. 6, 2012, pp. 82 – 97.
    Ciresan D., Meier U., Masci J și Schmidhuber J. Multi-column Deep Neural Network for Traffic Sign Classification. Rețele neuronale, voi. 34, august 2012, pp. 333 – 338
    S. Osovski. Rețele neuronale pentru prelucrarea informațiilor - trans. din poloneză. M.: Finanțe și Statistică, 2002. – 344 p.
    Episcopul C.M. Recunoașterea modelelor și învățarea automată. Springer, 2006 – 738 p.
    S. Khaikin. Rețele neuronale: curs complet. Williams, 2006.