Yandex translator rețea neuronală. O rețea neuronală fantezie a fost construită în Yandex.Translate. Ce este Yandex.Translate

Serviciul Yandex.Translate a început să folosească tehnologii de rețea neuronală la traducerea textelor, ceea ce îmbunătățește calitatea traducerii, a raportat site-ul Yandex.

La marcaje

Serviciul funcționează pe un sistem hibrid, a explicat Yandex: tehnologia de traducere care utilizează o rețea neuronală a fost adăugată modelului statistic care funcționează în Translator de la lansare.

„Spre deosebire de un traducător statistic, o rețea neuronală nu descompune textele în cuvinte și expresii separate. Primește întreaga propoziție ca intrare și își emite traducerea”, a explicat un reprezentant al companiei. Potrivit acestuia, această abordare permite luarea în considerare a contextului și transmiterea mai bună a sensului textului tradus.

Modelul statistic, la rândul său, face față mai bine cuvintelor și expresiilor rare, subliniate în Yandex. „Dacă sensul propoziției nu este clar, ea nu se imagina cum o rețea neuronală poate face acest lucru”, a menționat compania.

La traducere, serviciul folosește ambele modele, apoi algoritmul de învățare automată compară rezultatele și oferă cea mai bună opțiune, în opinia sa. „Sistemul hibrid vă permite să luați ce este mai bun din fiecare metodă și să îmbunătățiți calitatea traducerii”, spun ei în Yandex.

În cursul zilei de 14 septembrie ar trebui să apară un comutator în versiunea web a Translatorului, cu care să comparați traducerile realizate de modelele hibride și statistice. În același timp, uneori, serviciul poate să nu modifice textele, a remarcat compania: „Aceasta înseamnă că modelul hibrid a decis că traducerea statistică este mai bună”.

Există peste 630 de milioane de site-uri pe internetul modern, dar doar 6% dintre ele conțin conținut în limba rusă. Bariera lingvistică este principala problemă a diseminării cunoștințelor în rândul utilizatorilor rețelei și considerăm că ar trebui rezolvată nu numai prin predarea limbilor străine, ci și prin utilizarea traducerii automate automate în browser.

Astăzi le vom spune cititorilor Habr despre două schimbări tehnologice importante în traducătorul Yandex.Browser. În primul rând, traducerea cuvintelor și frazelor selectate folosește acum un model hibrid și ne vom aminti cum diferă această abordare de utilizarea numai a rețelelor neuronale. În al doilea rând, rețelele neuronale ale traducătorului iau acum în considerare structura paginilor web, despre ale căror caracteristici vom vorbi și sub tăietură.

Traducător hibrid de cuvinte și fraze

Pe care s-au bazat primele sisteme de traducere automată dicționare și reguli(de fapt, expresii regulate scrise de mână), care au determinat calitatea traducerii. Lingvistii profesioniști au lucrat de ani de zile pentru a dezvolta reguli manuale din ce în ce mai detaliate. Lucrarea a fost atât de laborioasă încât s-a acordat o atenție serioasă doar celor mai populare perechi de limbi, dar chiar și în cadrul acestora mașinile au funcționat slab. O limbă vie este un sistem foarte complex care nu respectă bine regulile. Este și mai dificil să descrii regulile de potrivire a două limbi.

Singura modalitate prin care o mașină se adaptează constant la condițiile în schimbare este să învețe singură dintr-un număr mare de texte paralele (același sens, dar scrise în limbi diferite). Aceasta este abordarea statistică a traducerii automate. Calculatorul compară texte paralele și identifică în mod independent modele.

La traducător statistic există atât avantaje, cât și dezavantaje. Pe de o parte, își amintește rare și Cuvinte dificileși fraze. Dacă s-au întâlnit în texte paralele, traducătorul le va aminti și va continua să traducă corect. Pe de altă parte, rezultatul traducerii poate fi similar cu un puzzle finalizat: imaginea de ansamblu pare a fi clară, dar dacă te uiți cu atenție, poți vedea că este alcătuită din piese separate. Motivul este că traducătorul prezintă cuvintele individuale ca identificatori, care nu reflectă în niciun caz relația dintre ele. Nu se potrivește cu modul în care oamenii percep limbajul, unde cuvintele sunt definite de modul în care sunt folosite, de modul în care se raportează și diferă de alte cuvinte.

Ajută la rezolvarea acestei probleme rețele neuronale. Încorporarea cuvântului, folosită în traducerea automată neuronală, mapează de obicei fiecare cuvânt într-un vector lung de câteva sute de numere. Vectorii, spre deosebire de identificatorii simpli din abordarea statistică, se formează la antrenarea unei rețele neuronale și iau în considerare relațiile dintre cuvinte. De exemplu, modelul ar putea recunoaște că, deoarece „ceai” și „cafea” apar adesea în contexte similare, ambele cuvinte ar trebui să fie posibile în contextul noului cuvânt „vărsare”, care, să zicem, doar unul dintre ele a fost întâlnit în datele de antrenament.

Cu toate acestea, procesul de învățare a reprezentărilor vectoriale este în mod clar mai solicitant din punct de vedere statistic decât memorarea prin memorare a exemplelor. În plus, nu este clar ce să faci cu acele cuvinte rare de intrare care nu sunt suficient de frecvente pentru ca rețeaua să construiască o reprezentare vectorială acceptabilă pentru ele. În această situație, este logic să combinați ambele metode.

De anul trecut, Yandex.Translate folosește model hibrid. Când Translatorul primește un text de la utilizator, îl trimite la ambele sisteme pentru traducere - atât rețeaua neuronală, cât și traducătorul statistic. Apoi, un algoritm bazat pe metoda de învățare evaluează care traducere este mai bună. La notare, sunt luați în considerare zeci de factori - de la lungimea propoziției (frazele scurte sunt traduse mai bine printr-un model statistic) până la sintaxă. Traducerea recunoscută ca cea mai bună este afișată utilizatorului.

Este modelul hibrid care este utilizat acum în Yandex.Browser, atunci când utilizatorul selectează anumite cuvinte și expresii de pe pagină pentru traducere.

Acest mod este deosebit de convenabil pentru cei care dețin în general limbă străinăși ar dori să traducă doar cuvinte necunoscute. Dar dacă, de exemplu, în loc de engleza obișnuită, întâlnești chineză, atunci va fi dificil să faci fără un traducător de pagini. S-ar părea că diferența este doar în volumul textului tradus, dar nu totul este atât de simplu.

Traducător de pagini web de rețea neuronală

Din perioada experimentului de la Georgetown până aproape în zilele noastre, toate sistemele de traducere automată au fost instruite pentru a traduce fiecare propoziție a textului sursă în mod individual. În timp ce o pagină web nu este doar un set de propoziții, ci un text structurat care conține în mod fundamental elemente diferite. Luați în considerare elementele de bază ale majorității paginilor.

antet. De obicei, text luminos și mare pe care îl vedem imediat când intrăm în pagină. Titlul conține adesea esența știrilor, așa că este important să o traduceți corect. Dar este dificil să faci asta, deoarece textul din titlu este mic și fără să înțelegi contextul, poți face o greșeală. In caz de Limba engleză este și mai dificil pentru că titlurile în limba engleză conțin adesea expresii cu gramatică netradițională, infinitive sau chiar omit verbe. De exemplu, Prequelul Game of Thrones a fost anunțat.

Navigare. Cuvinte și expresii care ne ajută să navigăm pe site. De exemplu, Acasă, Înapoiși Contul meu abia merită să fie traduse ca „Acasă”, „Înapoi” și „Contul meu” dacă se află în meniul site-ului și nu în textul publicației.

Textul principal. La el totul este mai ușor, se deosebește puțin de textele și propozițiile obișnuite pe care le găsim în cărți. Dar chiar și aici este important să se asigure consistența traducerilor, adică să se asigure că aceiași termeni și concepte sunt traduse în același mod în cadrul aceleiași pagini web.

Pentru traducerea de înaltă calitate a paginilor web, nu este suficient să folosiți o rețea neuronală sau un model hibrid - este, de asemenea, necesar să țineți cont de structura paginilor. Și pentru asta a trebuit să ne confruntăm cu o mulțime de dificultăți tehnologice.

Clasificarea segmentelor de text. Pentru a face acest lucru, folosim din nou CatBoost și factori bazați atât pe textul în sine, cât și pe marcajul HTML al documentelor (etichetă, dimensiunea textului, numărul de link-uri pe unitate de text, ...). Factorii sunt destul de eterogene, așa că CatBoost (bazat pe gradient boosting) este cel care arată cele mai bune rezultate (precizia de clasificare este peste 95%). Dar numai clasificarea segmentelor nu este suficientă.

Deformarea datelor. În mod tradițional, algoritmii Yandex.Translate sunt antrenați pe texte de pe Internet. S-ar părea că aceasta este o soluție ideală pentru formarea unui traducător de pagini web (cu alte cuvinte, rețeaua învață din texte de aceeași natură cu acele texte pe care urmează să o aplicăm). Dar de îndată ce am învățat să separăm diferitele segmente unele de altele, am găsit caracteristică interesantă. În medie, conținutul reprezintă aproximativ 85% din tot textul de pe site-uri web, titlurile și navigarea reprezentând doar 7,5% fiecare. De asemenea, amintiți-vă că titlurile și elementele de navigare în sine diferă semnificativ ca stil și gramatică de restul textului. Acești doi factori combinați duc la problema deformării datelor. Este mai profitabil pentru o rețea neuronală să ignore pur și simplu caracteristicile acestor segmente foarte slab reprezentate în eșantionul de antrenament. Rețeaua învață să traducă bine doar textul principal, care suferă de calitatea traducerii titlurilor și a navigației. Pentru a neutraliza acest efect neplăcut, am făcut două lucruri: am atribuit unul dintre cele trei tipuri de segmente (conținut, titlu sau navigare) ca meta-informații fiecărei perechi de propoziții paralele și am ridicat artificial concentrarea ultimelor două în corpus de antrenament. la 33% din cauza faptului că au început să arate exemple similare la rețeaua neuronală de învățare mai des.

Învățare cu mai multe sarcini. Deoarece acum suntem capabili să împărțim textele de pe paginile web în trei clase de segmente, ar putea părea o idee firească să antrenăm trei modele separate, fiecare dintre ele care va face față traducerii unui tip diferit de text - titluri, navigare sau conţinut. Acest lucru funcționează într-adevăr bine, dar schema funcționează și mai bine, în care antrenăm o singură rețea neuronală pentru a traduce toate tipurile de texte simultan. Cheia înțelegerii constă în ideea de învățare multi-task (MTL): dacă există o conexiune internă între mai multe sarcini de învățare automată, atunci un model care învață să rezolve aceste sarcini simultan poate învăța să rezolve mai bine fiecare dintre sarcini. decât un model specializat cu profil îngust!

reglaj fin. Avem deja o traducere automată foarte bună, așa că ar fi nerezonabil să pregătim un nou traducător pentru Yandex.Browser de la zero. Este mai logic să luați un sistem de bază pentru traducerea textelor obișnuite și să îl instruiți să funcționeze cu pagini web. În contextul rețelelor neuronale, aceasta este adesea denumită reglare fină. Dar dacă abordăm această problemă din față, i.e. doar inițializați greutățile rețelei neuronale cu valorile din modelul finit și începeți să învățați din date noi, este posibil să întâlniți efectul de schimbare a domeniului: pe măsură ce învățați, calitatea traducerii paginilor web (în domeniu) va crește, dar calitatea traducerii textelor obișnuite (în afara domeniului) va scădea. Pentru a scăpa de această caracteristică neplăcută, în timpul antrenamentului suplimentar, impunem o restricție suplimentară rețelei neuronale, interzicându-i să schimbe prea mult greutățile față de starea inițială.

Matematic, acest lucru este exprimat prin adăugarea unui termen la funcția de pierdere (funcția de pierdere), care este distanța Kullback-Leibler (divergența KL) dintre distribuțiile de probabilitate de a genera următorul cuvânt, emis de rețelele originale și reantrenate. După cum se poate observa în ilustrație, acest lucru are ca rezultat faptul că îmbunătățirea calității traducerii paginilor web nu mai duce la degradarea traducerii textului simplu.

Lustruirea frazelor de frecvență din navigație. În procesul de lucru la un nou traducător, am colectat statistici privind textele diferitelor segmente de pagini web și am văzut ceva interesant. Textele care au legătură cu elementele de navigație sunt destul de standardizate, așa că reprezintă adesea aceleași fraze standard. Acesta este un efect atât de puternic încât mai mult de jumătate din toate expresiile de navigație găsite pe Internet sunt în doar 2.000 dintre cele mai frecvente.

Desigur, am profitat de acest lucru și am dat câteva mii dintre cele mai frecvente expresii și traducerile lor spre verificare, pentru a fi absolut siguri de calitatea lor.

Aliniamente externe. A existat o altă cerință importantă pentru traducătorul de pagini web în Browser - nu ar trebui să distorsioneze marcajul. Când etichetele HTML sunt plasate în afara propozițiilor sau la granițele acestora, nu apare nicio problemă. Dar dacă în interiorul propoziției există, de exemplu, Două subliniat cuvinte, apoi în traducere vrem să vedem „doi subliniat cuvintele". Acestea. Ca urmare a transferului, trebuie îndeplinite două condiții:

  1. Fragmentul subliniat din traducere trebuie să corespundă exact fragmentului subliniat din textul sursă.
  2. Consecvența traducerii la limitele fragmentului subliniat nu trebuie încălcată.
Pentru a asigura acest comportament, mai întâi traducem textul ca de obicei, iar apoi, folosind modele statistice de aliniere cuvânt cu cuvânt, determinăm corespondența dintre fragmentele sursei și textele traduse. Acest lucru ajută la înțelegerea a ceea ce trebuie subliniat (cursive, hyperlink, ...).

Observator de intersecție. Modelele puternice de traducere a rețelelor neuronale pe care le-am antrenat necesită mult mai multe resurse de calcul pe serverele noastre (atât CPU, cât și GPU) decât generațiile anterioare de modele statistice. În același timp, utilizatorii nu citesc întotdeauna paginile până la sfârșit, astfel încât trimiterea întregului text al paginilor web în cloud pare redundantă. Pentru a economisi resursele serverului și traficul utilizatorilor, am învățat Translator să folosească

Site-urile web indexate în motoarele de căutare au mai mult de jumătate de miliard de copii, iar numărul total de pagini web este de zeci de mii de ori mai mare. Conținutul în limba rusă ocupă 6% din întregul Internet.

Cum să traduceți textul dorit rapid și în așa fel încât sensul dorit al autorului să fie păstrat. Vechile metode ale modulelor de traducere a conținutului statistic funcționează foarte îndoielnic, deoarece este imposibil să se determine cu exactitate declinarea cuvintelor, a timpului și nu numai. Natura cuvintelor și conexiunile dintre ele este complexă, ceea ce uneori a făcut ca rezultatul să pară foarte nenatural.

Acum Yandex folosește traducerea automată automată, care va crește calitatea textului final. Puteți descărca cea mai recentă versiune oficială a browserului cu o nouă traducere încorporată.

Traducere hibridă de fraze și cuvinte

Browserul Yandex este singurul care poate traduce pagina ca întreg, precum și cuvintele și frazele individual. Funcția va fi foarte utilă pentru acei utilizatori care vorbesc mai mult sau mai puțin o limbă străină, dar uneori se confruntă cu dificultăți de traducere.

Rețeaua neuronală construită în mecanismul de traducere a cuvintelor nu a făcut întotdeauna față sarcinilor stabilite, deoarece cuvintele rare au fost extrem de greu de încorporat în text și de a-l face lizibil. Acum a fost integrată în aplicație o metodă hibridă folosind tehnologii vechi și altele noi.

Mecanismul este următorul: programul acceptă propozițiile sau cuvintele selectate, apoi le oferă ambelor module ale rețelei neuronale și traducătorului statistic, iar algoritmul încorporat determină care rezultat este mai bun și apoi îl oferă utilizatorului.

Traducător de rețea neuronală

Conținutul străin este conceput într-un mod foarte specific:

  • primele litere ale cuvintelor din titluri sunt scrise cu majuscule;
  • propozițiile sunt construite cu gramatică simplificată, unele cuvinte sunt omise.

Meniurile de navigare de pe site-uri web sunt analizate în funcție de locația lor, cum ar fi cuvântul Înapoi, tradus corect înapoi (înapoi), nu înapoi.

Pentru a ține cont de toate caracteristicile menționate mai sus, dezvoltatorii au pregătit suplimentar o rețea neuronală, care utilizează deja o gamă largă de date text. Acum, calitatea traducerii este afectată de locația conținutului și de designul acestuia.

Rezultatele traducerii aplicate

Calitatea unei traduceri poate fi măsurată prin algoritmul BLEU*, care compară traducerile automate și cele profesionale. Scala de calitate de la 0 la 100%.

Cu cât translația neuronală este mai bună, cu atât procentul este mai mare. Conform acestui algoritm, browserul Yandex a început să traducă de 1,7 ori mai bine.

Yandex a lansat o nouă versiune a traducătorului. Un sistem hibrid va funcționa acum la traducere: pe lângă modelul statistic folosit anterior, traducătorul va folosi și o rețea neuronală. Acest lucru a fost raportat pe blogul companiei.

Există mai multe abordări ale traducerii automate. Prima abordare, cea mai comună, este cea statistică. O astfel de traducere automată se bazează pe memorare sumă uriașă informații obținute din corpuri paralele (aceleași texte în limbi diferite): acestea pot fi atât cuvinte individuale, cât și reguli gramaticale. Această abordare, totuși, are un dezavantaj foarte important: traducerea automată statistică reține informațiile, dar nu le înțelege, astfel încât o astfel de traducere arată adesea ca multe piese diferite traduse corect, adunate într-un singur text care nu este foarte corect din punct de vedere gramatical și încărcătură semantică.

A doua abordare este rețeaua neuronală. Se bazează nu pe traducerea cuvintelor și frazelor individuale, ci pe propoziții întregi, iar scopul său principal este păstrarea sensului, realizând în același timp cea mai buna calitate traducerea din punct de vedere al gramaticii. O astfel de tehnologie de traducere poate stoca, de asemenea, cunoștințele limbii pe care a învățat-o în procesul de învățare - acest lucru îi permite să facă față, de exemplu, cu erorile în cazul acordului. Traducerea neuronală automată este o abordare relativ nouă, dar s-a dovedit deja: cu ajutorul rețelei neuronale Google Translate, a reușit să obțină o calitate record de traducere.

Începând de astăzi, Yandex.Translate se bazează pe un sistem hibrid. Un astfel de sistem include traducerea statistică utilizată de serviciu mai devreme și traducerea bazată pe funcționarea rețelei neuronale. Un algoritm special de clasificare bazat pe CatBoost (un sistem de învățare automată dezvoltat de Yandex) selectează cea mai bună dintre cele două opțiuni de traducere (statistică și neuronală) și o oferă utilizatorului.

Puteți citi mai multe despre activitatea noii versiuni Yandex. Traduceți în întâlnirea noastră cu șeful serviciului, lingvistul computerizat britanic David Talbot.

În prezent, noua tehnologie de traducere este disponibilă numai atunci când traduceți din engleză în rusă (conform companiei, aceasta este cea mai populară direcție de traducere). În timp ce lucrează cu sistemul, utilizatorul poate comuta între două modele de traducere (statistic vechi și hibrid nou) și poate compara traducerea versiunilor vechi și noi. În lunile următoare, dezvoltatorii Translator promit să includă și alte domenii de traducere.


Exemple de traduceri diferite modele utilizat în noua versiune Yandex.Translate



Traducerea automată folosind rețele neuronale a parcurs un drum lung de la prima cercetare științifică pe această temă și până în momentul în care Google a anunțat transferul complet al serviciului Google Translate către deep learning.

După cum știți, traducătorul neuronal se bazează pe mecanismul rețelelor neuronale recurente bidirecționale (Bidirectional Recurrent Neural Networks), construit pe calcule matriceale, care vă permite să construiți modele probabilistice semnificativ mai complexe decât traducătorii automati statistici. Cu toate acestea, s-a crezut întotdeauna că traducerea neuronală, ca și traducerea statistică, necesită corpuri paralele de texte în două limbi pentru învățare. O rețea neuronală este antrenată pe aceste corpuri, luând ca referință o traducere umană.

După cum a devenit clar, rețelele neuronale sunt capabile să stăpânească Limba noua; limbaj nou pentru traducere chiar și fără un corpus paralel de texte! Site-ul de preprint arXiv.org a publicat simultan două lucrări pe acest subiect.

„Imaginați-vă că îi oferi unei persoane multe cărți chineze și multe cărți arabe - niciuna dintre ele nu este la fel - și această persoană este instruită să traducă din chineză în arabă. Pare imposibil, nu? Dar am demonstrat că un computer poate face asta”, spune Mikel Artetxe, informatician la Universitatea din Țara Bascilor din San Sebastian (Spania).

Majoritatea rețelelor neuronale de traducere automată sunt antrenate „cu un profesor”, al cărui rol este doar un corpus paralel de texte traduse de o persoană. În procesul de învățare, aproximativ vorbind, rețeaua neuronală face o presupunere, verifică cu standardul și face ajustările necesare sistemelor sale, apoi învață mai departe. Problema este că pentru unele limbi din lume nu există un număr mare de texte paralele, deci nu sunt disponibile pentru rețelele neuronale tradiționale de traducere automată.


„Limbajul universal” al rețelei neuronale Google Neural Machine Translation (GNMT). În ilustrația din stânga, grupurile de semnificații ale fiecărui cuvânt sunt afișate în culori diferite, în dreapta jos - semnificațiile cuvântului obținute pentru acesta din diferite limbi umane: engleză, coreeană și japoneză

După ce a compilat un „atlas” uriaș pentru fiecare limbă, sistemul încearcă apoi să suprapună un astfel de atlas pe altul - și iată, aveți un fel de corpus de text paralel gata!

Este posibil să se compare schemele celor două arhitecturi de învățare nesupravegheate propuse.


Arhitectura sistemului propus. Pentru fiecare propoziție în limba L1, sistemul învață alternanța a doi pași: 1) antifonare(denoising), care optimizează probabilitatea de codificare a unei versiuni zgomotoase a unei propoziții cu un codificator comun și reconstrucția acesteia de către decodorul L1; 2) traducere inversă(traducere inversă) atunci când o propoziție este tradusă în modul de ieșire (adică codificată de un codificator comun și decodificată de un decodor L2), și apoi probabilitatea de a codifica această propoziție tradusă cu un encoder comun și de a recupera propoziția originală de către un decodor L1 este optimizat. Ilustrație: Michela Artetxe și colab.


Arhitectura și obiectivele de învățare propuse ale sistemului (din a doua lucrare științifică). Arhitectura este un model de traducere propoziție cu propoziție în care atât codificatorul, cât și decodorul funcționează în două limbi, în funcție de identificatorul limbii de intrare, care schimbă tabelele de căutare. Top (codificare automată): modelul este antrenat să efectueze dezgomot în fiecare domeniu. De jos (traducere): ca mai înainte, plus codificăm din altă limbă, folosind ca intrare traducerea produsă de model în iterația anterioară (caseta albastră). Elipsele verzi indică termeni din funcția de pierdere. Ilustrație: Guillaume Lampl și colab.

Ambele lucrări folosesc o metodologie remarcabil de similară, cu mici diferențe. Dar în ambele cazuri, traducerea se realizează printr-un „limbaj” intermediar sau, mai bine spus, printr-o dimensiune sau spațiu intermediar. Până acum, rețelele neuronale fără profesor nu arată o calitate foarte înaltă a traducerii, dar autorii spun că este ușor să o îmbunătățiți dacă folosiți puțin ajutor de la un profesor, tocmai acum, de dragul purității experiment, acest lucru nu a fost făcut.

Lucrări depuse pentru Conferința Internațională 2018 privind reprezentările învățării. Niciunul dintre articole nu a fost încă publicat în presa științifică.