История на машинен превод от Студената война до задълбочено обучение

Снимка на Ант Розецки на Unsplash

Отварям Google Translate два пъти по-често от Facebook, а моменталният превод на етикетите с цените вече не е киберпанк за мен. Това е, което наричаме реалност. Трудно е да си представим, че това е резултат от стогодишна борба за изграждане на алгоритмите за машинен превод и че през половината от този период няма видим успех.

Прецизните разработки, които ще обсъдя в тази статия, поставят основата на всички съвременни системи за обработка на езици - от търсачки до микровълни с контролиран глас. Говоря за развитието и структурата на онлайн превода днес.

Преводаческата машина на П. П. Троянски (Илюстрация, направена от описания. За съжаление не са останали снимки.)

В началото

Историята започва през 1933 г. Съветският учен Петър Троянски представя „Машината за подбор и отпечатване на думи при превод от един език на друг“ на Академията на науките на СССР. Изобретението беше супер просто - имаше карти на четири различни езика, пишеща машина и филмова камера за старо училище.

Операторът взе първата дума от текста, намери съответна карта, направи снимка и напише морфологичните й характеристики (съществително, множествено число, генитивно) на пишещата машина. Ключовете на пишещата машина кодират една от характеристиките. Лентата и филмът на камерата бяха използвани едновременно, като направиха набор от рамки с думи и тяхната морфология.

Въпреки всичко, както често се случва в СССР, изобретението се смята за „безполезно“. Троянски умира от Стенокардия, след като се опитва да довърши изобретението си в продължение на 20 години. Никой в ​​света не знаеше за машината, докато двама съветски учени не откриха патентите му през 1956 г.

Това беше в началото на Студената война. На 7 януари 1954 г. в централата на IBM в Ню Йорк стартира експериментът Джорджтаун – IBM. Компютърът IBM 701 преведе автоматично 60 руски изречения на английски за първи път в историята.

„Момиче, което не разбираше и дума от езика на Съветите, пронизваше руските съобщения на IBM карти. „Мозъкът“ пусна своите английски преводи на автоматичен принтер със скорост на прекъсване от две линии и половина в секунда “, се съобщава в прессъобщението на IBM.
IBM 701

Триумфалните заглавия обаче скриха една малка подробност. Никой не спомена преведените примери бяха внимателно подбрани и тествани, за да се изключи всякаква неяснота. За ежедневна употреба тази система не беше по-добра от джобна книга с фрази. Независимо от това, стартира този вид надпревара с оръжие: Канада, Германия, Франция и особено Япония, всички се включиха в надпреварата за машинен превод.

Състезанието за машинен превод

Напразната борба за подобряване на машинния превод продължи четиридесет години. През 1966 г. американският комитет ALPAC в своя известен доклад нарече машинния превод скъп, неточен и безперспективен. Вместо това препоръчаха да се съсредоточат върху разработването на речници, което елиминира американските изследователи от надпреварата в продължение на почти десетилетие.

Въпреки това, основата за съвременна обработка на естествен език е създадена само от учените и техните опити, изследвания и разработки. Всички днешни търсачки, спам филтри и лични асистенти се появиха благодарение на куп държави, шпиониращи се една за друга.

Машинен превод, базиран на правила (RBMT)

Първите идеи около машинен превод, базиран на правила, се появяват през 70-те години. Учените надничаха над работата на преводачите, опитвайки се да принудят огромните мудни компютри да повторят тези действия. Тези системи се състоеха от:

  • Двуезичен речник (RU -> EN)
  • Набор от езикови правила за всеки език (Например съществителните, завършващи на определени наставки като -heit, -keit, -ung са женски род)

Това е. Ако е необходимо, системите могат да бъдат допълнени с хакове, като списъци с имена, коректори на правописа и транслитератори.

PROMPT и Systran са най-известните примери за RBMT системи. Просто погледнете Aliexpress, за да усетите мекия дъх на този златен век.

Но дори те имаха някои нюанси и подвидове.

Директен машинен превод

Това е най-простият вид машинен превод. Той разделя текста на думи, превежда ги, леко коригира морфологията и хармонизира синтаксиса, за да направи цялото нещо правилно, повече или по-малко. Когато слънцето залезе, обучени езиковеди пишат правилата за всяка дума.

Резултатът връща някакъв вид превод. Обикновено е доста глупаво. Изглежда, че лингвистите губят времето си за нищо.

Съвременните системи изобщо не използват този подход, а съвременните лингвисти са благодарни.

Машинен превод, базиран на трансфер

За разлика от директния превод, ние се подготвяме първо, като определяме граматическата структура на изречението, както ни учеха в училище. След това манипулираме цели конструкции, а не думи след това. Това помага да се получи съвсем прилично преобразуване на реда на думите в превод. На теория.

На практика това все пак доведе до дословен превод и изтощени лингвисти. От една страна, тя донесе опростени общи граматически правила. Но от друга страна, тя стана по-сложна заради увеличения брой словообразувания в сравнение с единични думи.

Междуезичен машинен превод

При този метод изходният текст се трансформира в междинното представяне и е унифициран за всички езици на света (интерлингва). Това е същият интерлингва, за който Декарт мечтае: метаезик, който следва универсалните правила и превръща превода в проста задача „напред и назад“. На следващо място, интерлингва ще се преобразува във всеки целеви език и тук е сингулярността!

Поради преобразуването Interlingua често се бърка с базирани на трансфер системи. Разликата е в езиковите правила, специфични за всеки отделен език и междуезичие, а не в езиковите двойки. Това означава, че можем да добавим трети език към системата за интерлингва и да превеждаме между трите. Не можем да направим това в системи, базирани на трансфер.

Изглежда перфектно, но в реалния живот не е така. Беше изключително трудно да се създаде такъв универсален интерлингва - много учени са работили върху него през целия си живот. Те не са успели, но благодарение на тях сега имаме морфологични, синтактични и дори семантични нива на представяне. Но единствената теория за смисъла на текста струва цяло състояние!

Идеята за междинен език ще се върне. Нека изчакаме известно време.

Както можете да видите, всички RBMT са тъпи и ужасяващи и това е причината, поради която рядко се използват, освен за конкретни случаи (като превод на метеорологичния отчет и т.н.). Сред предимствата на RBMT, често споменавани са морфологичната му точност (не обърква думите), възпроизводимостта на резултатите (всички преводачи получават един и същ резултат) и способността да се настройва към предметната област (да преподава икономисти или термини например специфични за програмистите).

Дори ако някой успее да създаде идеален RBMT и езиковедите го подобриха с всички правописни правила, винаги ще има някои изключения: всички неправилни глаголи на английски, отделящи се префикси на немски, наставки на руски и ситуации, когато хората просто кажете го различно. Всеки опит за отчитане на всички нюанси би изхабил милиони човешки часове.

И не забравяйте за омонимите. Една и съща дума може да има различно значение в различен контекст, което води до разнообразни преводи. Колко значения можете да хванете тук: Видях човек на хълм с телескоп?

Езиците не се развиват въз основа на фиксиран набор от правила - факт, който обичат лингвистите. Те бяха много по-повлияни от историята на нашествията през последните триста години. Как бихте могли да обясните това на машина?

Четиридесет години от Студената война не помогнаха за намирането на ясно решение. RBMT беше мъртъв.

Примерно базиран машинен превод (EBMT)

Япония беше особено заинтересована да се бори за машинен превод. Нямаше студена война, но имаше причини: много малко хора в страната знаеха английски. Това обеща да бъде доста проблем на предстоящата партия по глобализация. Така японците бяха изключително мотивирани да намерят работещ метод за машинен превод.

Преводът на английски-японски превод е изключително сложен. Езиковата структура е напълно различна и почти всички думи трябва да бъдат пренаредени и добавени нови. През 1984 г. Макото Нагао от университета в Киото излезе с идеята да използва готови фрази вместо повторен превод.

Нека си представим, че трябва да преведем просто изречение - „Отивам на кино.“ И да кажем, че вече сме превели друго подобно изречение - „Отивам на театър“ - и можем да намерим думата „ кино ”в речника.

Всичко, от което се нуждаем, е да разберем разликата между двете изречения, да преведем липсващата дума и след това да не я прецакаме. Колкото повече примери имаме, толкова по-добър е преводът.

Изграждам фрази на непознати езици точно по същия начин!

EBMT показа светлината на деня на учени от цял ​​свят: оказва се, че можете просто да захранвате машината със съществуващи преводи и да не прекарвате години, формирайки правила и изключения. Все още не революция, но очевидно първата стъпка към нея. Революционното изобретение на статистически превод ще се случи само за пет години.

Статистически машинен превод (SMT)

В началото на 1990 г. в изследователския център на IBM за пръв път е показана система за машинен превод, която не знае нищо за правилата и лингвистиката като цяло. Той анализира подобни текстове на два езика и се опита да разбере моделите.

Идеята беше проста, но красива. Идентично изречение на два езика се раздели на думи, които бяха съчетани след това. Тази операция се повтаря около 500 милиона пъти, за да се преброят например колко пъти думата „Das Haus” се превежда като „къща” срещу „сграда” срещу „строеж” и т.н.

Ако през повечето време изходната дума е била преведена като "къща", машината е използвала това. Обърнете внимание, че ние не зададохме никакви правила, нито използвахме никакви речници - всички заключения бяха направени от машина, ръководени от статистика и логиката, че „ако хората превеждат по този начин, аз също“. И така се роди статистически превод.

Методът беше много по-ефективен и точен от всички предишни. И не бяха нужни никакви лингвисти. Колкото повече текстове използвахме, толкова по-добър превод имаме.

Статистически превод на Google отвътре. Той показва не само вероятностите, но и отчита обратната статистика.

Оставаше още един въпрос: как машината ще корелира думата „Das Haus“ и думата „сграда“ - и как ще разберем, че това са правилните преводи?

Отговорът беше, че няма да знаем. В началото машината предположи, че думата „Das Haus“ еднакво корелира с всяка дума от преведеното изречение. На следващо място, когато „Das Haus“ се появи в други изречения, броят на корелациите с „къщата“ ще се увеличи. Това е „алгоритъмът за подравняване на думите“, типична задача за машинно обучение на университетско ниво.

Машината се нуждаеше от милиони и милиони изречения на два езика, за да събере съответните статистически данни за всяка дума. Как ги получихме? Е, решихме да вземем резюметата на заседанията на Европейския парламент и на Съвета за сигурност на Организацията на обединените нации - те бяха достъпни на езиците на всички страни-членки и сега бяха на разположение за изтегляне в Корпорация на ООН и Europarl Corpora.

Word-базирана SMT

В началото първите системи за статистически превод работеха чрез разделяне на изречението на думи, тъй като този подход беше прям и логичен. Първият модел на статистически превод на IBM беше наречен Model one. Доста елегантно, нали? Познайте какво нарекоха второто?

Модел 1: „торбата с думи“

Моделът използва класически подход - да се раздели на думи и да брои статистики. Редът на думите не беше взет предвид. Единственият трик беше превеждането на една дума в множество думи. Например „Der Staubsauger“ може да се превърне във „Прахосмукачка“, но това не означава, че ще се окаже обратното.

Ето няколко прости реализации в Python: shawa / IBM-Model-1.

Модел 2: разглеждане на словото в изреченията

Липсата на знания за езиковия ред се превърна в проблем за модел 1, а той е много важен в някои случаи.

Модел 2 се справи с това: запаметява обичайното място, което думата заема в изходното изречение и разбърква думите за по-естествен звук в междинната стъпка. Нещата станаха по-добри, но все пак бяха някак глупави.

Модел 3: допълнителна плодовитост

Новите думи се появяват в превода доста често, като например статии на немски или използване на „do“, когато отричате на английски. „Ich will keine Persimonen“ → „Не искам Persimmons“. За да се справим, към Model 3 бяха добавени още две стъпки.

  • Вмъкване на токел NULL, ако машината прецени необходимостта от нова дума
  • Избор на правилната граматична частица или дума за всяко подравняване на жетоновата дума

Модел 4: подравняване на думи

Модел 2 обмисляше подравняването на думите, но не знаеше нищо за пренареждането. Например прилагателните често превключват места с съществителното и колкото и да е запомнен редът, това не би подобрило изхода. Следователно, модел 4 взе предвид така наречения „относителен ред“ - моделът научи, ако две думи винаги сменят местата си.

Модел 5: грешки

Нищо ново тук. Модел 5 получи още параметри за обучението и отстрани проблема с конфликтни позиции на думи.

Въпреки революционната си същност, базирани на думи системи все още не успяват да се справят със случаи, пол и омонимия. Всяка дума беше преведена по един истински начин, според машината. Такива системи вече не се използват, тъй като са заменени от по-модерните методи, базирани на фрази.

SMT базирана на фрази

Този метод се основава на всички принципи за превод, базирани на думи: статистика, пренареждане и лексикални хакове. Въпреки че, за ученето, той раздели текста не само на думи, но и фрази. Това бяха n-грамовете, за да бъдем точни, които бяха непрекъсната последователност от n думи в един ред.

Така машината се научи да превежда стабилни комбинации от думи, което забележимо подобри точността.

Номерът беше, че фразите не винаги са били прости синтаксични конструкции, а качеството на превода е спаднало значително, ако някой, който е бил наясно с лингвистиката и структурата на изреченията, се намесва. Фредерик Йелинек, пионерът на компютърната лингвистика, се пошегува с това веднъж: „Всеки път, когато уволня лингвист, представянето на разпознаваемия говор нараства.“

Освен подобряване на точността, преводът на базата на фрази предоставя още възможности за избор на двуезични текстове за учене. За превода, базиран на думи, точното съвпадение на източниците беше критично, което изключваше всеки литературен или безплатен превод. Преводът, базиран на фрази, нямаше проблем да се научи от тях. За да подобрят превода, изследователите дори започнаха да анализират новинарските уебсайтове на различни езици за тази цел.

От 2006 г. всички започнаха да използват този подход. Google Translate, Yandex, Bing и други превъзходни онлайн преводачи работеха като базирани на фрази до 2016 г. Всеки от вас вероятно може да си припомни моментите, когато Google или преведе изречението безупречно, или доведе до пълна глупост, нали? Глупостите идваха от функции, базирани на фрази.

Добрият стар основан на правилата подход последователно предоставя предсказуем, макар и ужасен резултат. Статистическите методи бяха изненадващи и озадачаващи. Google Translate превръща „триста“ в „300“ без никакво колебание. Това се нарича статистическа аномалия.

Преводът, базиран на фрази, стана толкова популярен, че когато чуете „статистически машинен превод“, това всъщност се разбира. До 2016 г. всички проучвания възхваляваха превода на базата на фрази като най-съвременния. Тогава никой дори не си помисли, че Google вече разпалва пожарите си, приготвяйки се да промени целия ни образ на машинен превод.

Синтаксичен SMT

Този метод също трябва да бъде споменат накратко. Много години преди появата на невронни мрежи, преводът, базиран на синтаксис, се смяташе за „бъдещето или превода“, но идеята не изчезна.

Привържениците на превода, базиран на синтаксис, вярваха, че е възможно да се слее с метода, базиран на правила. Необходимо е да се направи доста прецизен синтаксичен анализ на изречението - за да се определи темата, предиката и други части на изречението и след това да се изгради дърво на изреченията. Използвайки го, машината се научава да преобразува синтактични единици между езици и превежда останалите чрез думи или фрази. Това би решило въпроса за подравняването на думите веднъж завинаги.

Пример, взет от Yamada and Knight [2001] и това страхотно слайдшоу.

Проблемът е, че синтактичният разбор работи ужасно, въпреки факта, че го смятаме за решен преди време (тъй като имаме готовите библиотеки за много езици). Опитах се да използвам синтактични дървета за задачи, малко по-сложни, отколкото да разбера темата и предиката. И всеки път се отказвах и използвах друг метод.

Кажете ми в коментарите, ако успеете да го използвате поне веднъж.

Неврален машинен превод (NMT)

През 2014 г. беше публикувана доста забавна книга за използването на невронни мрежи в машинен превод. Интернет изобщо не забеляза това, освен Google - извадиха лопатите си и започнаха да копаят. Две години по-късно, през ноември 2016 г., Google обяви промяна на играта.

Идеята беше близо до прехвърляне на стила между снимките. Спомняте ли си приложения като Prisma, които подобряват снимки в стил на известен художник? Нямаше магия. Невронната мрежа беше научена да разпознава картините на художника. След това бяха премахнати последните слоеве, съдържащи решението на мрежата. Получената стилизирана картина беше просто междинното изображение, което мрежата получи. Това е фантазията на мрежата и ние смятаме за красива.

Ако можем да прехвърлим стила на снимката, какво ще стане, ако се опитаме да наложим друг език на изходен текст? Текстът би бил точно този „стил на художника“ и бихме се опитали да го прехвърлим, като запазваме същността на изображението (с други думи, същността на текста).

Представете си, че се опитвам да опиша кучето си - среден размер, остър нос, къса опашка, винаги лае. Ако ви дадох този набор от характеристики на кучето и ако описанието беше точно, можете да го нарисувате, въпреки че никога не сте го виждали.

Сега, представете си, че изходният текст е набор от специфични характеристики. По принцип това означава, че го кодирате и оставяте другата невронна мрежа да го декодира обратно към текста, но на друг език. Декодерът знае само езика му. Тя няма представа за произхода на функциите, но може да ги изрази например на испански. Продължавайки аналогията, няма значение как рисувате кучето - с пастели, акварел или пръст. Рисуваш го както можеш.

Още веднъж - една невронна мрежа може да кодира изречението само към специфичния набор от функции, а друга може само да ги декодира обратно в текста. И двамата нямат представа един за друг и всеки от тях знае само свой собствен език. Да припомня нещо? Интерлингва се завръща. Та-га.

Въпросът е как да намерим тези характеристики? Очевидно е, когато говорим за кучето, но как да се справим с текста? Преди 30 години учените вече се опитаха да създадат универсалния езиков код и това завърши в пълен провал.

Въпреки това, сега имаме задълбочено обучение. И това е основната му задача! Основното разграничение между дълбокото учене и класическите невронни мрежи се състои именно в способността да се търсят тези специфични характеристики, без да има представа за тяхната същност. Ако невронната мрежа е достатъчно голяма и има няколко хиляди видеокарти под ръка, е възможно да намерите и тези функции в текста.

Теоретично можем да предадем характеристиките, получени от невронните мрежи, на лингвистите, за да могат те да отворят смели нови хоризонти за себе си.

Въпросът е какъв тип невронна мрежа трябва да се използва за кодиране и декодиране? Конволюционните невронни мрежи (CNN) идеално се вписват за снимки, тъй като работят с независими блокове пиксели.

Но в текста няма независими блокове - всяка дума зависи от нейното обкръжение. Текст, реч и музика са винаги последователни. Така че повтарящите се невронни мрежи (RNN) биха били най-добрият избор за справяне с тях, тъй като те помнят предишния резултат - предишната дума, в нашия случай.

Сега RNN се използват навсякъде - разпознаването на речта на Siri (тя анализира последователността на звуците, където следващата зависи от предишната), съветите на клавиатурата (запомняне на предишното, предполагам следващото), създаването на музика и дори чатботите.

За нервите като мен: всъщност архитектурата на невронните преводачи варира значително. Редовният RNN беше използван в началото, след това надграден до двупосочен, където преводачът разглеждаше не само думи преди изходната дума, но и следващата дума. Това беше много по-ефективно. След това последва хардкор многослоен RNN с LSTM-единици за дългосрочно съхранение на контекста на превода.

За две години невронните мрежи надминаха всичко, което се появи през последните 20 години на превод. Невронният превод съдържа 50% по-малко грешки в подреждането на думи, 17% по-малко лексикални грешки и 19% по-малко граматически грешки. Невронните мрежи дори се научиха да хармонизират пола и случая на различни езици. И никой не ги е учил да го правят.

Най-забележимите подобрения настъпиха в полета, в които никога не се използва директен превод. Статистическите методи за машинен превод винаги са работили, използвайки английски като основен източник. По този начин, ако сте превели от руски на немски, машината първо е превела текста на английски, а след това от английски на немски, което води до двойна загуба.

Невронният превод няма нужда от това - необходим е само декодер, за да може да работи. Тогава за първи път стана възможен директен превод между езици без речник.

Google Translate (от 2016 г.)

През 2016 г. Google включи невронния превод за девет езика. Те разработиха своята система, наречена Google Neural Machine Translation (GNMT). Състои се от 8 кодиращи и 8 декодер слоя на RNN, както и връзки за внимание от декодерната мрежа.

Те не само разделиха изречения, но и думи. Така се справиха с един от основните въпроси на NMT - редки думи. NMT са безпомощни, когато думата не е в лексиката им. Нека кажем: „Vas3k“. Съмнявам се, че някой е учил невронната мрежа да ми превежда прякора. В този случай GMNT се опитва да разбие думите на парчета от думи и да възстанови превода на тях. Смарт.

Съвет: Google Translate, използван за превод на уебсайт в браузъра, все още използва стария алгоритъм на базата на фрази. По някакъв начин Google не го е актуализирал и разликите са доста забележими в сравнение с онлайн версията.

Google използва механизъм за краудсорсинг в онлайн версията. Хората могат да изберат версията, която смятат за най-правилната и ако много потребители я харесват, Google винаги ще превежда тази фраза по този начин и ще я маркира със специална значка. Това работи фантастично за кратки ежедневни фрази като „Хайде да отидем на кино“ или „Чакам те.“ Google знае английски на разговор по-добре от мен :(

Microsoft Bing работи точно като Google Translate. Но Yandex е различен.

Yandex Translate (от 2017 г.)

Yandex стартира своята система за неврален превод през 2017 г. Основната й характеристика, както беше декларирана, беше хибридността. Yandex комбинира невронни и статистически подходи за превод на изречението, след което той избира най-доброто с любимия си алгоритъм CatBoost.

Работата е там, че невронният превод често се проваля при превод на кратки фрази, тъй като използва контекст, за да избере правилната дума. Би било трудно, ако думата се появи много малко в данните за тренировки. В такива случаи прост статистически превод намира правилната дума бързо и просто.

Yandex не споделя подробностите. Той ни отблъсква с маркетингови прессъобщения. ДОБРЕ.

Изглежда, че Google използва SMT за превод на думи и кратки фрази. Те не споменават това в никоя статия, но е доста забележимо, ако погледнете разликата между превода на кратки и дълги изрази. Освен това SMT се използва за показване на статистиките на думата.

Изводът и бъдещето

Всички все още се вълнуват от идеята за "риба вавилон" - незабавен превод на речта. Google направи стъпки към нея със своите Pixel Buds, но всъщност това все още не е това, за което мечтаехме. Моментният превод на реч е различен от обичайния превод. Трябва да знаете кога да започнете да превеждате и кога да млъкнете и да слушате. Все още не съм виждал подходящи подходи за решаването на това. Освен ако може би Skype ...

И ето още една празна област: цялото учене е ограничено до набор от паралелни текстови блокове. Най-дълбоките невронни мрежи все още учат при паралелни текстове. Не можем да научим невронната мрежа, без да й предоставим източник. Хората вместо това могат да допълнят своя лексикон с четене на книги или статии, дори и да не ги превеждат на родния си език.

Ако хората могат да го направят, на теория може да го направи и нервната мрежа. Открих само един прототип, който се опитва да подбуди мрежата, която знае един език, да чете текстовете на друг език, за да придобие опит. Бих пробвал сам, но съм глупав. Добре, това е всичко.

Първоначално тази история е написана на руски език, а след това е преведена на английски на Vas3k.com от Василий Зубарев. Той е моят приятел на писалката и съм почти сигурен, че блогът му трябва да бъде разпространен.

Полезни връзки

  • Филип Кьон: Статистически машинен превод. Най-пълната колекция от методите, които открих.
  • Мойсей - популярна библиотека за създаване на собствени статистически преводи
  • OpenNMT - още една библиотека, но за невронните преводачи
  • Статията от един от любимите ми блогъри, обясняваща RNN и LSTM
  • Видеоклип „Как да си направим езиков преводач“, забавен човек, кокетно обяснение. Все още не е достатъчно.
  • Текстово ръководство от TensorFlow за създаването на собствен невронни преводач, за тези, които искат повече примери и да изпробват кода.

Други статии от Vas3k.com

Последно нещо…

Ако тази статия ви е харесала, щракнете върху по-долу и я споделете с други хора, за да могат да се наслаждават и на нея.