Rețele neuronale. Rețele neuronale cu puls: creierul în computer. Implementarea programatică a clasei

De data aceasta am decis să studiez rețelele neuronale. Am reușit să obțin abilități de bază în această chestiune în vara și toamna lui 2015. Prin abilități de bază, vreau să spun că pot crea o rețea neuronală simplă de la zero. Puteți găsi exemple în depozitele mele GitHub. În acest articol, voi oferi câteva clarificări și voi împărtăși resurse pe care le puteți găsi utile pentru studiu.

Pasul 1: Neuronii și propagarea feedforward

Deci, ce este o „rețea neuronală”? Să așteptăm cu asta și să ne ocupăm mai întâi de un neuron.

Un neuron este ca o funcție: acceptă mai multe intrări și returnează una.

Cercul de mai jos reprezintă un neuron artificial. Primește 5 și returnează 1. Intrarea este suma celor trei sinapse conectate la neuron (trei săgeți în stânga).

În partea stângă a imaginii vedem 2 valori de intrare (în verde) și un offset (evidențiat cu maro).

Datele de intrare pot fi reprezentări numerice a două proprietăți diferite. De exemplu, atunci când creați un filtru de spam, acestea ar putea însemna să aveți mai mult de un cuvânt scris cu MAJUSCULE și să aveți cuvântul „Viagra”.

Valorile de intrare sunt înmulțite cu așa-numitele „greutăți”, 7 și 3 (evidențiate cu albastru).

Acum adăugăm valorile rezultate cu offset și obținem un număr, în cazul nostru 5 (evidențiat cu roșu). Aceasta este intrarea neuronului nostru artificial.

Apoi neuronul efectuează un fel de calcul și produce o valoare de ieșire. Avem 1 pentru că valoarea rotunjită a sigmoidului la punctul 5 este 1 (mai multe despre această funcție mai târziu).

Dacă acesta ar fi un filtru de spam, faptul că rezultatul este 1 ar însemna că textul a fost marcat ca spam de către neuron.

Ilustrație rețelei neuronale de pe Wikipedia.

Dacă combinați acești neuroni, obțineți o rețea neuronală care se propagă înainte - procesul trece de la intrare la ieșire, prin neuroni conectați prin sinapse, ca în imaginea din stânga.

Pasul 2. Sigmoid

După ce ați urmărit tutorialele Welch Labs, este o idee bună să consultați a patra săptămână a cursului de învățare automată Coursera despre rețelele neuronale, pentru a vă ajuta să înțelegeți cum funcționează acestea. Cursul intră adânc în matematică și se bazează pe Octave, în timp ce preferința mea este Python. Din acest motiv, am sărit peste exerciții și am obținut toate cunoștințele necesare din videoclip.

Sigmoid pur și simplu mapează valoarea ta (pe axa orizontală) la un segment de la 0 la 1.

Prima prioritate pentru mine a fost să studiez sigmoidul, așa cum figura în multe aspecte ale rețelelor neuronale. Știam deja ceva despre ea din a treia săptămână a cursului de mai sus, așa că am revăzut videoclipul de acolo.

Dar videoclipurile singure nu te vor duce departe. Pentru o înțelegere completă, am decis să-l codez eu. Așa că am început să scriu o implementare a algoritmului de regresie logistică (care folosește sigmoid).

A durat o zi întreagă, iar rezultatul este puțin probabil să fie satisfăcător. Dar nu contează, pentru că mi-am dat seama cum funcționează totul. Codul poate fi văzut.

Nu trebuie să o faceți singur, deoarece necesită cunoștințe speciale - principalul lucru este că înțelegeți cum funcționează sigmoidul.

Pasul 3 Metoda de propagare înapoi

Înțelegerea modului în care funcționează o rețea neuronală de la intrare la ieșire nu este atât de dificilă. Este mult mai dificil de înțeles cum este antrenată o rețea neuronală pe seturi de date. Principiul pe care l-am folosit se numește

18.07.2017, mar, ora 15:53, ora Moscovei, Text: Vladimir Bakhur

Publicat în acces deschis Biblioteca CatBoost de învățare automată diferă de metodele tradiționale cu un algoritm de creștere a gradientului pentru învățarea flexibilă pe date eterogene, inclusiv pe cele nenumerice.

Utilizarea flexibilă a datelor numerice și nenumerice

Yandex a introdus o nouă metodă de învățare automată numită CatBoost și a făcut biblioteca CatBoost disponibilă pentru toată lumea de pe GitHub sub licența Apache 2.0. Tehnica vă permite să antrenați în mod eficient modele pe date eterogene, cum ar fi locația utilizatorului, istoricul tranzacțiilor și tipul de dispozitiv.

Potrivit Yandex însuși, bibliotecile CatBoost sunt o alternativă la rețelele neuronale, care sunt departe de a fi potrivite pentru toate tipurile de sarcini reale de producție. În astfel de condiții, algoritmul CatBoost oferă mai mult performanta ridicatași un rezultat mai stabil în procesul de recalificare și predictibilitate ridicată în ceea ce privește calitatea rezultatului final.

„Yandex este implicată în învățarea automată de mulți ani, iar CatBoost a fost creat de cei mai buni specialiști în acest domeniu. Făcând biblioteca CatBoost disponibilă publicului, dorim să contribuim la dezvoltarea învățării automate, - a spus Mihail Bilenko, șeful departamentului de inteligență și cercetare a mașinilor la Yandex. - Trebuie să spun că CatBoost este prima metodă rusă de învățare automată care a devenit disponibilă în Open Source. Sperăm că comunitatea de specialiști îl va aprecia și va ajuta să-l îmbunătățească și mai mult.”

După cum a explicat Yandex pentru CNews, metoda CatBoost este moștenitorul metodei de învățare automată Matrixnet, care este utilizată în aproape toate serviciile Yandex. Prin analogie cu Matrixnet, CatBoost folosește un mecanism de creștere a gradientului care este potrivit pentru lucrul cu date eterogene.

Tehnica CatBoost este interesantă pentru timpul redus de recalificare datorită utilizării unui algoritm de construire a modelului proprietar, care, la rândul său, diferă de schema standard creșterea gradientului.

Logo-ul proiectului CatBoost

Spre deosebire de Matrixnet, care antrenează modele pe date numerice, CatBoost ia în considerare și date nenumerice, cum ar fi tipurile de nori sau tipurile de clădiri. Anterior, astfel de date trebuiau traduse în limbajul numerelor, ceea ce le putea schimba esența și afecta acuratețea modelului.

Acum astfel de date pot fi folosite în forma sa originală, datorită căreia CatBoost arată mai multe calitate superioarăînvăţare decât metode similare de lucru cu date eterogene. Poate fi folosit într-o varietate de domenii - de la bancar la industrie.

CatBoost poate fi rulat direct de la Linie de comanda sau utilizați API-ul ușor de utilizat pentru Python sau R cu instrumente de analiză a formulelor și de vizualizare a învățării.

După cum a explicat serviciul de presă Yandex pentru CNews, CatBoost este rezultatul muncă îndelungată cei mai buni specialiști ai companiei, care au încorporat mulți ani de experiență a companiei în dezvoltarea de soluții de vârf în machine learning, precum Matrixnet. Punând tehnologia la dispoziția publicului, Yandex intenționează să aducă o contribuție serioasă la dezvoltarea învățării automate și se așteaptă ca comunitatea de specialiști să aprecieze algoritmul și să îl ajute să-l îmbunătățească.

Yandex intenționează să ofere sprijin continuu pentru proiect. După cum sa explicat în companie, sprijinul va fi exprimat în îmbunătățirea constantă a algoritmului, precum și în lucrul cu feedback de la utilizatorii tehnologiei.

Comparație a algoritmilor de învățare automată (GitHub)

Dezvoltatorii plănuiesc să dezvolte tehnologia în cadrul companiei: acum o echipă separată lucrează la ea, care o îmbunătățește și o implementează în mai multe servicii. Biblioteca de aplicații CatBoost va crește în timp. Deoarece tehnologia este pusă la dispoziția publicului, toate progresele vor fi imediat disponibile pentru toți utilizatorii. Având în vedere cantitatea și calitatea serviciilor Yandex și sarcinile non-triviale pe care le rezolvă, compania este încrezătoare că tehnologia va rămâne lider în clasa sa pentru o lungă perioadă de timp de acum încolo.

Astăzi în lume există căi diferite lucrul cu factori categoric. Ele constau în preprocesarea inițială și transformarea lor în numere, explicate în Yandex.

Cea mai practică modalitate este numărarea „contoarelor”, este folosită în mod activ de concurenții de pe Kaggle, iar această metodă este folosită în deciziile câștigătoare. În soluțiile deschise existente, această metodă nu este folosită, ci mai mult metode simple, cum ar fi one-hot-encoding, de obicei au rezultate mai proaste. De exemplu, o astfel de preprocesare poate fi utilizată în algoritmul lightgbm.

CatBoost folosește o muncă mai inteligentă cu factori categoric, unde statisticile despre aceștia sunt calculate nu în avans, ci în timpul antrenamentului, iar cele mai utile statistici sunt selectate pentru date și combinațiile acestora. Codificarea one-hot în CatBoost este, desigur, acceptată; pentru caracteristicile care au puține valori, uneori această metodă oferă un plus în calitate, a explicat Yandex.

Particularitatea bibliotecilor CatBoost este că și acum, în epoca introducerii pe scară largă a tehnologiilor Deep Learning, rețelele neuronale sunt departe de a fi potrivite pentru toate tipurile de sarcini pentru producția reală, iar în astfel de condiții, creșterea gradientului CatBoost oferă performanțe mai mari. , stabilitate și predictibilitate în ceea ce privește calitatea rezultatului final.

Aplicații practice

CatBoost a fost deja testat pe serviciile Yandex. Ca parte a experimentului, a fost folosit pentru a îmbunătăți rezultatele căutării, pentru a clasifica feedul de recomandări Yandex.Zen și pentru a calcula prognoza meteo în tehnologia Meteum. În toate cazurile, tehnologia sa dovedit a fi mai bună decât Matrixnet.

În viitor, CatBoost va lucra și la alte servicii, notează Yandex. De asemenea, este folosit de echipa Yandex Data Factory în soluțiile lor pentru industrie, în special, pentru a optimiza consumul de materii prime și pentru a prezice defectele.

CatBoost are deja experiență internațională: această metodă de învățare automată a fost introdusă de Centrul European de Cercetare Nucleară (CERN) pentru a combina date din diferite părți ale detectorului LHCb.

Datele colectate în timpul experimentului sunt procesate pentru coliziuni individuale folosind CatBoost la o rată de 40 de milioane pe secundă.

Disponibilitate

Pentru a lucra cu CatBoost, trebuie doar să-l instalați pe computer. Suport de bibliotecă Sisteme de operare Linux, Windows și macOS și disponibil în limbi Programare Pythonși R.

Yandex a dezvoltat, de asemenea, programul de vizualizare CatBoost Viewer, care vă permite să urmăriți procesul de învățare pe diagrame. Puteți descărca CatBoost și CatBoost Viewer pe GitHub.

Luați în considerare rețelele neuronale de impuls: caracteristici, perspective și avantaje, datorită cărora a doua generație este înlocuită cu succes.

Oricine urmărește progresul actual în analiza datelor a auzit de utilizarea rețelelor neuronale artificiale de a doua generație în învățarea automată. Aceste rețele sunt de obicei complet conectate, acceptând și emitând valori în continuă schimbare. Deși rețelele neuronale au făcut o descoperire, din punct de vedere biologic, ele nu se potrivesc tocmai cu structura neuronilor reali și cu mecanismele de procesare a informațiilor din creierul uman.

Rețele neuronale cu puls: cum funcționează

Rețelele neuronale în creștere (SNN) sunt mai aproape de fiziologia naturală. Rețelele neuronale cu pulsații fac puntea dintre neuroștiință și învățarea automată, folosind modele biologic realiste ale neuronilor pentru a procesa informații.

Rețeaua neuronală de impuls este fundamental diferită de rețelele neuronale de a doua generație utilizate de analiștii de date. O astfel de rețea, în loc de valori care se schimbă continuu în timp, funcționează cu evenimente discrete care au loc în anumite momente în timp. Rețeaua primește o serie de impulsuri la intrări și produce impulsuri la ieșire.


Un exemplu de semnale pe trei neuroni ai unei rețele neuronale de impuls

Într-un neuron real, transmiterea impulsurilor este determinată de ecuații diferențiale corespunzătoare proceselor biofizice de formare a potențialului pe membrana neuronului. De îndată ce potențialul atinge o anumită valoare, neuronul reacționează la aceasta prin transmiterea unui impuls, iar membrana dobândește potențialul inițial.


Potențial pe membrana unui neuron în timpul transmiterii semnalului

Pentru a descrie procesul sunt folosite diferite modele. Rețelele neuronale cu pulsații diferă, de asemenea, de rețelele de a doua generație prin topologia lor mai puțin conectată și mai specifică.

Rețele neuronale cu puls: distanță și timp

La prima vedere, abordarea SNN poate părea un pas înapoi - de la o imagine continuă, un fel de analogă, la una de impuls, binară. Cu toate acestea, avantajul SNN este că abordarea prin impuls vă permite să operați pe date, ținând cont de distanțele dintre neuroni și de durata propagării semnalului, adică în contextul spațiului și al timpului. Din acest motiv, rețelele SNN sunt mult mai potrivite pentru procesarea datelor de la senzori reali.

Aspectul spațial reflectă faptul că neuronii sunt în primul rând conectați la cei mai apropiați vecini ai lor și, prin urmare, fragmentele de intrare sunt procesate separat.

Aspectul temporal corespunde faptului că impulsurile de antrenament vin cu întârzieri diferite, iar informațiile pe care le „pierdem” la trecerea de la un semnal continuu la un semnal pulsat este de fapt stocată în informații despre întârzierea impulsurilor unul față de celălalt. Acest lucru vă permite să procesați datele temporale într-un mod natural, fără complexitate suplimentară. S-a dovedit că neuronii de declanșare sunt unități de calcul mai puternice decât neuronii artificiali tradiționali.

Probleme de utilizare practică

Având în vedere că SNN-urile sunt, în teorie, rețele neuronale mai puternice decât rețelele de a doua generație, ne întrebăm de ce nu vedem utilizarea lor pe scară largă. Problema principala uz practic SNN - învăţare. În ciuda prezenței unor metode de învățare biologică nesupravegheată (fără profesor), cum ar fi Hebbian și STDP, nu sunt încă cunoscute. metode eficiente instruirea SNN-urilor care oferă performanțe mai mari decât rețelele de a doua generație.

Din cauza problemelor legate de diferențierea impulsului, este imposibil să antrenați un SNN folosind coborârea gradientului fără a pierde informații precise despre impuls. Prin urmare, pentru a utiliza eficient SNN pentru problemele din lumea reală, este necesar să se dezvolte metode adecvate de învățare supravegheată. Aceasta este o sarcină dificilă - având în vedere realismul biologic al acestor rețele, necesită o înțelegere precisă a modului în care creierul uman învață.

O altă problemă, mai aproape de soluție, constă în componenta hardware. Simularea SNN-urilor pe hardware standard este o sarcină care necesită timp, deoarece necesită modelarea ecuațiilor diferențiale. Hardware-ul neuromorfic, cum ar fi IBM TrueNorth, își propune să rezolve această problemă prin simularea neuronilor folosind hardware specializat care se potrivește cu caracterul discret și raritatea rețelelor neuronale biologice.

Perspective de dezvoltare

Viitorul SNN rămâne neclar. Pe de o parte, ei sunt succesori naturali ai rețelelor neuronale moderne. Pe de altă parte, SNN-urile sunt încă departe de instrumente practice pentru majoritatea sarcinilor. Există deja aplicații reale ale SNN-urilor pentru procesarea imaginilor și audio în timp real, dar literatura despre aplicații practice rămâne rară.

Majoritatea publicațiilor despre SNN sunt fie teoretice, fie demonstrează performanțe nesatisfăcătoare pentru sarcinile moderne. Având în vedere perspectivele extreme ale acestei direcții, multe grupuri științifice lucrează la rezolvarea acestor probleme.

Yandex a introdus un nou algoritm de căutare bazat pe rețele neuronale. Potrivit experților, acest lucru ar trebui să ajute compania să-și crească avantajul pe piața rusă față de principalul său concurent - Google

Holding-ul de internet rus „Yandex” a implementat un nou algoritm de căutare bazat pe rețele neuronale. Acest lucru a fost anunțat de șeful serviciului de relevanță al serviciului Alexander Safronov. Noul algoritm, numit „Korolev”, caută nu numai cuvinte cheie, ci și semnificație, iar la întrebările complexe se oferă răspunsuri mai precise, a explicat un reprezentant Yandex.

În 2016, Yandex a introdus algoritmul Palekh, care corespunde semnificației unei interogări rare și unice și titlului unei pagini web în timp real, chiar dacă nu au cuvinte cheie comune. De exemplu, dacă căutați „un tablou în care cerul se învârte”, motorul de căutare va putea afișa Noaptea înstelată a lui Van Gogh. Spre deosebire de Palekh, Korolev este capabil să analizeze întreaga pagină, precum și semnificația solicitărilor la care alți utilizatori merg la ea.

Andrey Styskin, șeful de căutare Yandex, a dat un alt exemplu de întrebare complexă: „un film despre spațiu în care un tată comunică cu fiica lui prin mâinile a doua”. În acest caz, interogarea nu conține cuvinte cheie, dar algoritmul de căutare este capabil să înțeleagă asta vorbim despre filmul „Interstellar”, spune Styskin.

Potrivit reprezentanților serviciului, rețeaua neuronală este capabilă de auto-învățare, astfel încât cu cât mai mulți utilizatori caută în motorul de căutare, cu atât rezultatele vor fi mai precise. Platforma deschisă de crowdsourcing Yandex.Toloka, lansată în 2014, va fi folosită pentru testare. De fapt, acesta este un serviciu în care oricine poate participa la testarea produselor Yandex, le poate evalua și poate lăsa comentarii. Acest lucru permite companiilor să-și îmbunătățească serviciile, iar utilizatorii primesc recompense bănești pentru aceasta. În prezent, peste 1 milion de utilizatori sunt înregistrați în Yandex.Toloka.

„Problema cu rețelele neuronale a fost că sunt foarte lente și nu pot fi folosite pentru a lucra cu cantități uriașe de text în timp real”, spune Igor Ashmanov, fondator și managing partner Ashmanov & Partners. „Dacă Yandex a reușit cu adevărat să implice rețelele neuronale în indexarea întregului volum al Runetului, este interesant, aceasta este o descoperire destul de serioasă din punct de vedere tehnologic.” Cât de mult va îmbunătăți noul algoritm calitatea căutării și dacă o va îmbunătăți în principiu, rămâne de analizat, a menționat Ashmanov.

Principalul concurent al Yandex, Google, conform șefului Ashmanov și Partners, nu a anunțat încă oficial introducerea rețelelor neuronale în algoritmii săi de căutare. „Google își poate permite să configureze diferit factorii de clasare și să experimenteze mai mult timp în acest domeniu fără a introduce noi tehnologii în căutare, pur și simplu pentru că compania are mai mulți programatori și resurse”, a menționat expertul.


Prinde din urmă și depășește

Potrivit analistului VTB Capital Vladimir Bespalov, o noua versiune Motorul de căutare rus - un pas pentru a menține cota Yandex pe piață. "La curent aplicatie mobila Căutare, un nou algoritm de motor de căutare - toate acestea ar trebui să ajute Yandex să se stabilizeze și să-și mărească cota pe piața de căutare, spune expertul. — Efectul nu va fi resimțit imediat, dar o scădere a interogărilor de căutare pe termen lung poate avea un impact mai puțin favorabil asupra performanței viitoare. Căutarea este produsul principal al Yandex, principalul venit al companiei este publicitatea care este legată de căutare.”

Ține-ți poziția căutare pe mobil Yandex poate fi ajutat de decizia FAS, amintește Bespalov. În luna aprilie a acestui an, agenția a încheiat un acord de înțelegere cu principalul său concurent firma ruseasca pe piața de căutare - Google. Potrivit acestuia, gigantul american al internetului va revizui acordurile cu producătorii de smartphone-uri Android din Rusia și va permite utilizatorilor să aleagă alternative alternative ca principale pe dispozitivele lor. Motoarele de căutare Google Servicii.

Conform rezultatelor celui de-al doilea trimestru al acestui an, cota Yandex pe piața de căutare din Rusia a fost de 54,3%, după cum a raportat Yandex N.V. (compania-mamă a Yandex) în raportul său financiar cu un link către propriul serviciu de analiză Yandex.Radar. La 31 iulie, conform Yandex.Radar, Google ocupa 40,36% din motoarele de căutare din Rusia. Potrivit LiveInternet, în medie în ultimele trei luni, Yandex a fost lider în rândul motoarelor de căutare cu o cotă de 51,1%, în timp ce Google a avut 43,9%. Yandex N.V. nu dezvăluie venituri din căutare, dar direcția „căutare și portal” a adus companiei 20,135 miliarde de ruble, cu 22% mai mult decât în ​​aceeași perioadă din 2016.

„Versiunea anterioară revoluționară a căutării Matrixnet a permis lui Yandex să se desprindă de Google și să-și mărească cota cu aproape 10 p.p. Timp de o jumătate de an. Acesta este un exemplu clar al modului în care aplicarea tehnologiilor disruptive duce la rezultate evidente de afaceri, chiar și pe o piață atât de complexă precum căutarea”, spune Managing Partner. skyeng școli onlineși fostul director de dezvoltare internațională la Yandex, Alexander Laryanovskiy.

Potrivit directorului adjunct pentru cercetare și dezvoltare al grupului de companii ABBYY, Tatyana Danielyan, introducerea de noi algoritmi de căutare poate schimba, de asemenea, clasamentul (ordinea în care site-urile sunt afișate în rezultatele căutării). Cu toate acestea, acest lucru va juca un plus pentru site-urile în sine, susține ea: „Utilizatorii vor merge mai des la pagini care corespund cu adevărat solicitărilor lor, iar conversiile site-ului pot crește semnificativ.”

  • Piton,
  • învățare automată,
  • Tehnologii de căutare
  • Astăzi, Yandex și-a lansat propria bibliotecă CatBoost în sursă deschisă, care a fost dezvoltată pe baza experienței de mulți ani a companiei în domeniul învățării automate. 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 mărfuri). Sursă, documentația, benchmark-urile și instrumentele necesare sunt deja publicate pe GitHub sub licența Apache 2.0.

    CatBoost este o nouă metodă de învățare automată bazată pe creșterea gradientului. Este implementat în Yandex pentru a rezolva problemele de clasare, predicție și recomandări de construire. Mai mult, este deja utilizat în cooperare cu Organizația Europeană pentru Cercetare Nucleară (CERN) și clienții industriali Yandex Data Factory. Deci, prin ce se deosebește CatBoost de alți analogi deschisi? De ce amplificarea și nu metoda rețelei neuronale? Cum este această tehnologie legată de deja cunoscutul Matrixnet? Și cum rămâne cu pisicile? Astăzi vom răspunde la toate aceste întrebări.

    Termenul " învățare automată a apărut în anii 1950. Acest termen denotă o încercare de a învăța un computer să rezolve probleme care sunt ușor pentru o persoană, 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 încorporat în mod explicit în el. LA lumea modernă experimentăm roadele învățării automate de multe ori pe zi, mulți dintre noi fără să ne dăm seama. Este folosit pentru a construi panglici în în rețelele sociale, liste cu „produse similare” din magazinele online, la acordarea creditelor de la bănci și determinarea costului asigurării. 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 opinie eronată că acesta este un „glonț de argint” pentru rezolvarea problemelor de orice complexitate. Dar nu este.

    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. O ilustrare în acest sens sunt rezultatele competițiilor de pe platforma Kaggle, unde metode diferite, și pe foarte multe câștiguri de creștere a gradientului.

    Rețelele neuronale rezolvă perfect anumite sarcini - de exemplu, cele în care trebuie să lucrați cu date omogene. Datele omogene constau, de exemplu, din imagini, sunet sau text. La Yandex, ei ne ajută să înțelegem mai bine termeni de căutare, căutați imagini 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 doar de rețelele neuronale - au nevoie de creșterea gradientului. Această metodă este indispensabilă acolo unde există multe date, iar structura lor este eterogenă.

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

    Matrixnet

    Primul motoare de căutare nu au fost la fel de dificile ca acum. De fapt, la început a fost doar o căutare de cuvinte - au fost atât de puține site-uri încât nu a existat prea multă concurență între ele. Apoi au fost mai multe pagini, trebuiau clasate. 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ă numere link-uri.

    În curând, internetul a devenit important din punct de vedere comercial și au fost mulți escroci care încercau să păcălească algoritmii simpli care existau la acea vreme. Și a existat o a doua descoperire majoră - 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 accidental 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. Scrierea unui program care face acest lucru cu o 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. Se poate spune că inteligența colectivă a utilizatorilor și „înțelepciunea mulțimii” ajută la clasare. Informațiile despre site-uri web ș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 separați (de exemplu, așa funcționează algoritmul Palekh, despre care 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ă vă antrenați pe o cantitate relativ mică de date, fără a vă teme că aparatul va găsi modele inexistente. Alte metode de învățare automată fie construiesc formule mai simple cu mai puțini factori, fie necesită un set de antrenament mai mare.

    Încă unul caracteristică importantă Matrixnet este că formula de clasare poate fi configurată separat pentru clase de interogări destul de înguste. De exemplu, pentru a îmbunătăți calitatea căutării numai pentru interogări despre muzică. În același timp, clasamentul pentru restul claselor de interogări nu se va înrăutăți.

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

    Aproape fiecare metodă modernă de creștere a gradientului funcționează cu numere. Chiar dacă aveți genuri muzicale, tipuri de nor sau culori ca intrare, 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 sunt puțin legate între ele și nu există o astfel de regularitate î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 ordinal (de exemplu, în conformitate cu programul de contabilitate din magazin). Ordinea acestor numere nu înseamnă nimic, dar algoritmul va folosi această ordine și va trage concluzii false din ea.

    Un specialist cu experiență î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, tiparele între care se va identifica singură, fără „ajutorul” nostru manual. Și CatBoost este proiectat de noi pentru a funcționa la fel de bine din cutie, atât cu caracteristici numerice, cât și categoriale. Datorită acestui fapt, arată o calitate superioară a instruirii atunci când se lucrează cu date eterogene decât soluțiile alternative. Poate fi folosit într-o varietate de domenii - de la bancar la industrie.

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

    Benchmark-uri

    Puteți vorbi mult timp despre diferențele teoretice ale bibliotecii, dar este mai bine să o arătați în practică o dată. Pentru claritate, am comparat activitatea bibliotecii CatBoost cu analogii 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 dorim să fim neîntemeiați, prin urmare, alături de bibliotecă, sunt postate în sursă deschisă o descriere a procesului de comparare, un cod pentru începerea comparării metodelor și un container cu versiunile folosite ale tuturor bibliotecilor. Orice utilizator poate repeta experimentul pe cont propriu 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, pentru a clasifica feedul de recomandări Yandex.Zen și pentru a calcula prognoza meteo în tehnologia Meteum - și, în toate cazurile, sa dovedit a fi mai bună decât Matrixnet. În viitor, CatBoost va lucra la alte servicii. Să nu ne oprim aici - este mai bine să vă spunem imediat despre Large Hadron Collider (LHC).

    CatBoost a reușit să-și găsească aplicația în cadrul cooperării cu Organizația Europeană pentru Cercetare Nucleară. LHC operează detectorul LHCb, care este folosit pentru a studia asimetria materiei și antimateriei în interacțiunile cuarcilor de frumusețe grei. Pentru a urmări cu exactitate diferitele particule înregistrate în experiment, există mai multe părți specifice în detector, fiecare dintre acestea determinând proprietățile speciale ale particulelor. Cea mai dificilă sarcină în acest caz este de a combina informațiile din diferite părți ale detectorului în cunoștințele cele mai precise și agregate despre particule. Aici intervine învățarea automată. 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 mai bune decât rezultatele 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 acceptă operarea sisteme Linux, Windows și macOS și este disponibil în limbajele de programare Python și R. Yandex a dezvoltat, de asemenea, un program de vizualizare