Deep Learning, NLP, and Representations

Пропоную читачам «Хабрахабра» переклад поста «Deep Learning, NLP, and Representations» крутого Крістофера Олаха. Ілюстрації звідти ж.

В останні роки методи, що використовують глибоке навчання нейромереж (deep neural networks), зайняли провідне становище в розпізнаванні образів. Завдяки їм планка для якості методів комп'ютерного зору значно піднялася. В ту ж сторону рухається і розпізнавання мови.

Результати результатами, але чому вони так круто вирішують завдання?

У пості освітлено кілька вражаючих результатів застосування глибоких нейронних мереж в обробці природної мови (Natural Language Processing; NLP). Таким чином, я сподіваюся дохідливо викласти один з відповідей на питання, чому глибокі нейромережі працюють.

Нейронні мережі з одним прихованим шаром
Нейромережа з прихованим шаром універсальна: при досить великій кількості прихованих вузлів вона може побудувати наближення будь-якої функції. Про це є часто цитована (і ще частіше невірно розуміється та застосовується) теорема.

Це вірно, оскільки прихований шар можна просто використовувати як «довідкову таблицю».

Для простоти розглянемо перцептрон. Це дуже простий нейрон, який спрацьовує, якщо його значення перевищує порогову величину, і не спрацьовує, якщо немає. У перцептрона бінарні входи і бінарний вихід (тобто 0 або 1). Кількість варіантів значень на вході обмежена. Кожному з них можна зіставити нейрон у прихованому шарі, який спрацьовує тільки для даного входу.

Розбір «умови» для кожного окремого входу зажадає прихованих нейронів (при n даних). На ділі зазвичай все не так погано. Могуть бути «умови», під які підходять кілька вхідних значень і можуть бути «накладаються один на одного» «умови», які досягають правильних входів на своєму перетині.

Потім можемо використовувати зв'язку між цим нейроном і нейронами на виході, щоб задати підсумкове значення для цього конкретного випадку.

Універсальністю володіють не тільки перцептрони. Мережі з сигмоидами в нейронах (і іншими функціями активації) також універсальні: при достатній кількості прихованих нейронів, вони можуть побудувати скільки завгодно точне наближення будь-якої неперервної функції. Продемонструвати це значно складніше, так як не можна просто так взяти і ізолювати входи один від одного.



Тому і виходить, що нейронні мережі з одним прихованим шаром справді універсальні. Проте в цьому немає нічого вражаючого чи дивного. Те, що модель може працювати як довідкова таблиця, — не найсильніший аргумент на користь нейромереж. Це всього-навсього означає, що модель в принципі здатна впоратися із завданням. Під універсальністю розуміється тільки те, що мережа може підлаштуватися під будь вибірки, але це зовсім не означає, що вона в змозі адекватно інтерполювати рішення для роботи з новими даними.

Ні, універсальність ще не пояснює, чому нейромережі так добре працюють. Правильна відповідь лежить дещо глибше. Щоб розібратися, спочатку розглянемо кілька конкретних результатів.

Векторні представлення слів (word вкладень)
Почну з особливо цікавою підобласті глибокого навчання — з векторних представлень слів (word вкладень). По-моєму, зараз векторні представлення — одна з найкрутіших тем для досліджень в глибокому навчанні, хоча вперше вони були запропоновані Bengio, et al. більше 10 років тому.

Векторні представлення були вперше запропоновані в роботах Bengio et al, 2001 і Bengio et al, 2003 за кілька років до воскресіння глибокого навчання у 2006 році, коли нейромережі ще не були в моді. Ідея розподілених представлень як таких ще старше (див., наприклад, Hinton 1986).

Крім того, я думаю, що це одна з тих завдань, з допомогою яких найкраще формується інтуїтивне розуміння, чому глибоке навчання так ефективно.

Векторне представлення слова — параметризується функція, що відображає слова з певної природної мови в вектори великої розмірності (припустимо, від 200 до 500 вимірювань). Наприклад, це може виглядати так:




(Як правило, ця функція задається таблицею пошуку, що визначається матрицею , в якій кожному слову відповідає рядок ).

W ініціалізується випадковими векторами для кожного слова. Вона буде навчатися, щоб видавати осмислені значення для вирішення деякої задачі.

Наприклад, ми можемо натаскувати мережу на визначення, «коректна» 5-грама (послідовність з п'яти слів, наприклад, 'cat sat on the mat'). 5-грами можна легко отримати з Вікіпедії, а потім половину з них «зіпсувати», замінивши в кожній якесь із слів на випадковий (наприклад, 'cat sat song the mat'), так як це майже завжди робить 5-граму безглуздою.


Модульна мережу для визначення, «коректна» 5-грама (Bottou (2011)).

Модель, яку ми навчаємо, пропустить кожне слово з 5-грами через W, отримавши на виході їх векторні представлення, і подасть їх на вхід іншому модулю, R, який спробує передбачити, «коректна» 5-грама чи ні. Хочемо, щоб було так:




Щоб пророкувати ці значення точно, мережі потрібно добре підібрати параметри для W та R.

Однак ця задачка нуднувата. Ймовірно, знайдене рішення допоможе знаходити в текстах граматичні помилки або щось в цьому дусі. Але що тут по-справжньому цінно, так це отримана W.

(Насправді, вся сіль завдання у навчанні W. Ми могли б розглянути рішення та інших завдань; так, одне з найпоширеніших — передбачення наступного слова в реченні. Але не це зараз наша мета. У решти цього розділу ми поговоримо про багатьох результати векторного подання слів і не будемо відволікатися на освітлення різниці між підходами).

Щоб «відчути», як влаштовано простір векторних представлень, можна зобразити їх з допомогою хитрого методу візуалізації даних високої розмірності — tSNE.


Візуалізація векторних представлень слів з допомогою tSNE. Зліва — «область чисел», праворуч — «область професій» (з Turian et al. (2010)).

Така «картка слів» здається цілком осмисленим. «Схожі» слова близько, і, якщо подивитися, які уявлення ближче інших до даним, виходить, що в той же час і близькі «схожі».


Чиї векторні представлення знаходяться ближче до подання даного слова? Collobert et al. (2011).)

Здається природним, що мережа порівняє словами зі схожими значеннями близькі один до одного вектори. Якщо замінити слово синонім («деякі добре співають» «деякі добре співають»), то «коректність» пропозиції не змінюється. Здавалося б, пропозиції на вході значно різняться, але так як W «зрушує» подання синонімів («деякі» і «небагато» один до одного, для R мало що змінюється.

Це потужний засіб. Число можливих 5-грам величезна, в той час як розмір навчальної вибірки порівняно малий. Зближення уявлень схожих слів дозволяє нам, узявши одне речення, як би працювати з цілим класом «схожих» на нього. Справа не обмежується заміною синонімів, наприклад, можлива підстановка слова з того ж класу («блакитна стіна» «стіна червона»). Більш того, є сенс і в одночасної заміни декількох слів («блакитна стіна» «стеля червоний»). Число таких «схожих фраз» зростає по експоненті від числа слів.

Вже в основоположною роботі A Probabilistic Neural Language Model (Bengio, et al. 2003) даються змістовні пояснення, чому векторні представлення — настільки потужний інструмент.

Очевидно, що ця властивість W було б дуже корисним. Але як її навчають? Дуже ймовірно, що багато разів W стикається з пропозицією «стіна синя» і розпізнає його як коректне перед тим, як побачити пропозицію «червона стіна». Зрушення «червона» ближче до «синя» покращує роботу мережі.

Нам все ще треба мати справу з прикладами вживань кожного слова, але аналогиии дозволяють узагальнювати на нові комбінації слів. З усіма словами, значення яких ми розуміємо, ми раніше стикалися, але зміст речення можна зрозуміти, ніколи до цього не чуючи. То ж вміють і нейронні мережі.


Mikolov et al. (2013a)

Векторні представлення володіють ще одним куди більш цікавим властивістю: схоже, стосунки аналогії між словами визначаються значенням вектора різниці між їх уявленнями. Наприклад, судячи з усього, вектор різниці «чоловічих-жіночих» слів — постійний:




Може, це нікого не здивує. Зрештою, наявність займенників, мають рід, говорить про те, що заміна слова «вбиває» граматичну правильність пропозиції. Ми пишемо: «вона — тітка», але «він — дядько». Аналогічно, «він — король» і «вона — королева». Якщо ми бачимо в тексті «вона — дядько», швидше за все, це граматична помилка. Якщо в половині випадків слова замінили випадковим чином, то ось, мабуть, наш випадок.

«Звичайно!» — скажемо ми, оглядаючись на минулий досвід. — «Векторні представлення зуміють представити підлогу. Напевно є окремий вимір для підлоги. І так само для множинного/однини. Так подібні відносини і так легко розпізнаються!»

З'ясовується, однак, що і більш складні відносини «закодовані» аналогічно. Просто чудеса в решеті (ну, майже)!


Пари відносин (з Mikolov et al. (2013b).)

Важливо, що всі ці властивості W — побічні ефекти. Ми не накладали вимог про те, що подання схожих слів повинні бути близько один до одного. Ми не намагалися самі налаштовувати аналогією з допомогою різниць векторів. Ми лише спробували навчитися перевіряти, «коректно» чи пропозиція, а властивості звідки взялися самі собою в процесі рішення задачі оптимізації.

Здається, велика сила нейронних мереж полягає в тому, що вони автоматично вчаться будувати «кращі» подання даних. У свою чергу представлення даних — істотна частина рішення багатьох завдань машинного навчання. А векторні представлення слів — це один з найбільш дивовижних прикладів навчання уявлень (learning a representation).

Загальні уявлення (shared representations)
Властивості векторних представлень, звичайно, цікаві, але чи можемо ми з їх допомогою зробити щось корисне? Крім дурних дрібниць на кшталт перевірки, «коректна» та чи інша 5-грама.


W та F навчають, підганяючи під завдання A. Потім G зможе вчитися вирішувати завдання B, використовуючи W.

Ми навчили векторні представлення слів, щоб добре справлятися з простими завданнями, але, знаючи їх чудові властивості, які ми вже спостерігали, можна вважати, що вони знадобляться і для більш загальних проблем. У самому справі, векторні представлення зразок цих страшенно важливі:
«Використання векторних представлень слів… останнім часом стало головним «секретом фірми» у багатьох системах обробки природної мови, вирішальних у тому числі завдання виділення іменованих сутностей (named entity recognition), частеречной розмітки (part-of-speech tagging), синтаксичного аналізу і визначення семантичних ролей (semantic role labeling)».
Luong et al. (2013).)

Загальна стратегія — навчити гарне уявлення для задачі A і використовувати його для рішення задачі B — один з головних фокусів у чарівній капелюсі глибокого навчання. У різних випадках його називають по-різному: предобучение (pretraining), transfer learning, і багатоцільове навчання (multi-task learning). Одна з сильних сторін такого підходу — він дозволяє навчати подання на декількох видах.

Можна провернути цю хитрість по-іншому. Замість налаштування для одного типу даних і використання їх для розв'язання задач різного виду, можна відображати різні типи даних в єдине уявлення!

Один із чудових прикладів використання такого трюку — векторні представлення слів для двох мов, запропоновані Socher et al. (2013a). Ми можемо навчитися «вбудовувати» слова з двох мов в єдиний простір. В даній роботі «вбудовуються» слова з англійської мови та путунхуа («мандаринское прислівник» китайського).



Ми навчаємо два векторних подання так само, як робили це вище. Однак нам відомо, що деякі слова в англійській і китайській язызках мають схожі значення. Так, будемо оптимізувати і ще за одним критерієм: подання відомих нам перекладів повинні перебувати на малій відстані один від одного.

Звичайно, в результаті ми спостерігаємо, що відомі нам «схожі» слова укладаються поруч. Не дивно, адже ми так оптимізували. Куди цікавіше ось що: переклади, про яких ми не знали, теж опиняються поруч.

Можливо, це нікого вже не дивує в світлі нашого минулого досвіду з векторними представленнями слів. Вони «притягують» схожі слова один до одного, тому, якщо ми знаємо, що англійський і китайський слова означають приблизно одне і те ж, то і подання їх синонімів повинні перебувати поблизу. Нам також відомо, що пари слів у відносинах начебто відмінності пологів (підлоги) відрізняються на постійний вектор. Схоже, якщо «стягувати» достатня кількість переказів, то вдасться підігнати і різниці так, щоб вони були однаковими у двох мовах. В результаті, якщо «чоловічі версії» слова в обох мовах переводяться одна в одну, автоматично отримаємо, що і «жіночі версії» теж правильно переводяться.

Інтуїція підказує, що, мабуть, мови мають схожу «структуру» і що, насильно пов'язуючи їх у вибраних точках, ми підтягуємо і інші подання на потрібні місця.


Візулізація двомовних векторних представлень за допомогою t-SNE. Зеленим кольором відзначено китайський, Жовтим — англійська (Socher et al. (2013a)).

Коли маємо справу з двома мовами, ми навчаємо єдине для двох схожих типів даних подання. Але можемо «вписувати» в єдиний простір і сильно відрізняються види даних.

Нещодавно з допомогою глибокого навчання стали будувати моделі, які «вписують» зображення і слова в єдиний простір уявлень
В попередній роботі моделювали спільне розподіл позначок та зображень, але тут все трохи інакше.

Основна ідея в тому, що ми класифікуємо зображення, видаючи вектор простору уявлень слів. Картинки з собаками відображаються у вектори близько подання слова «собака», з кіньми, — біля «коня», з авто — близько «автомобіль». І так далі.



Найцікавіше відбувається, коли ви перевіряєте модель на нових класах зображень. Так, що буде, якщо запропонувати класифікувати зображення котика моделі, яку не вчили спеціально їх розпізнавати, тобто відображати в вектор, близьке до вектору «кішка»?


Socher et al. (2013b)

Виявляється, мережа непогано справляється з новими класами зображень. Зображення котів не відображаються у випадкові точки в просторі. Навпаки, вони укладаються в околиці вектора «пес» і досить близько до вектору «кіт». Аналогічно, зображення вантажівок відображаються в точки, близькі до вектору «вантажівка», який знаходиться недалеко від пов'язаного вектора «автомобіль».


Socher et al. (2013b)

Учасники стенфордської групи виконали це з 8 відомими класами та двома невідомими. Результати вражають. Але при такому невеликому числі класів замало точок, за якими можна інтерполювати відношення між зображеннями і семантичним простором.

Дослідницька група Google побудувала куди більш масштабну версію того ж, вони взяли 1000 категорій замість 8 — і приблизно в той же час (Frome et al. (2013)), а потім запропонували ще один варіант (Norouzi et al. (2014)). Дві останні роботи засновані на сильній моделі класифікації зображень (Krizehvsky et al. (2012)), але зображення в них вкладаються в простір векторних представлень слів по-різному.

І результати вражають. Якщо не вдається точно зіставити зображень невідомих класів правильний вектор, то принаймні вдається потрапити в вірну околиця. Тому, якщо намагатися класифікувати зображення з невідомих і значно відрізняються один від одного категорій, то класи принаймні можна розрізняти.

Навіть якщо я ніколи не бачив ні эскулапова полоза, ні броненосця, коли мені покажуть їх знімки, я зможу сказати, де хто зображений, тому що у мене є загальне уявлення, який зовнішній вигляд можуть мати цей тварини. І такі мережі теж на це здатні.

(Ми часто використовували фразу «ці слова схожі». Але здається, що можна отримати куди більш сильні результати, засновані на відносинах між словами. В нашому просторі уявлень слів зберігається постійна різниця між «чоловічими» і «жіночими версіями». Але і в просторі уявлень зображень є відтворні властивості, що дозволяють побачити різницю між статями. Борода, вуса і лиса голова — добре розпізнаються ознаки чоловіки. Груди і довгі волосся (менш надійний ознака), макіяж і прикраси — очевидні індикатори жіночої статі Я прекрасно розумію, що фізичні ознаки статі оманливі. Так, наприклад, я не стану стверджувати, що всі лисі чоловіки або що всі, у кого є бюст, — жінки. Але те, що це частіше вірно, ніж ні, допоможе нам краще задати початкові значення.
. Навіть якщо ви ніколи не бачили короля, то, побачивши королеву (яку ви впізнали по короні) з бородою, ви напевно вирішите, що треба використовувати «чоловічу версію» слова «королева»).

Загальні уявлення (shared вкладень) — захоплююча дух область досліджень; вони — дуже переконливий аргумент на користь того, щоб на фронтах глибокого навчання просувати саме навчання уявлень.

Рекурсивні нейронні мережі

Ми почали обговорення векторних представлень слів з такої мережі:


Модульна мережа (Modular Network), навчальна векторні представлення слів (Bottou (2011)).

На схемі зображена модульна мережа



Вона побудована з двох модулів, W та R. Такий підхід до побудови нейромереж — з менших «нейромережевих модулів» — не надто широко поширений. Проте він дуже добре показав себе в задачах обробки природної мови.

Моделі, про які було рассказывано, сильні, але у них є одне прикре обмеження: число входів у них не може змінюватися.

З цим можна впоратися, додавши ассоциирующий модуль A, який «зливає» два векторних подання.


З Bottou (2011)

«Зливаючи» послідовності слів, A дозволяє представляти фрази і навіть цілі пропозиції. І так як ми хочемо «зливати» різне кількість слів, число входів не повинно бути обмеженим.

Не факт, що правильно «зливати» слова в реченні просто по порядку. Пропозиція 'the cat sat on the mat' можна розібрати на частини так: '((the cat) (sat (on (the mat))'. Можемо застосувати A, використовуючи таку розстановку дужок:


З Bottou (2011)

Ці моделі часто називають рекурсивними нейронними мережами (recursive neural networks), так як вихідний сигнал одного модуля часто подається на вхід іншого модулю того ж типу. Іноді їх ще називають нейронними мережами деревовидної структури (tree-structured neural networks).

Рекурсивні нейронні мережі досягли значного успіху в рішенні декількох завдань обробки природної мови. Наприклад, в Socher et al. (2013c) вони використовуються для передбачення тональності пропозиції:


(Socher et al. (2013c).)

Головна мета — створити «оборотне» подання пропозиції, тобто такий, що по ньому можна відновити пропозицію з приблизно таким же значенням. Наприклад, можна спробувати ввести дисоціюють модуль D, який буде виконувати дію, зворотне A:


З Bottou (2011)

Якщо це вдасться, то у нас на руках буде неймовірно потужний інструмент. Наприклад, можна буде спробувати побудувати подання пропозицій для двох мов і використовувати його для автоматичного перекладу.

На жаль, виявляється, це дуже складно. Жахливо складно. Але, отримавши підстави для сподівань, над рішенням задачі б'ються багато.

Нещодавно Cho et al. (2014) був зроблений прогрес в уявленні фраз, з моделлю, яка «кодує» фразу англійською та «декодує» її як фразу французькою. Тільки подивіться, які виходять вистави!


Невеликий шматок простору уявлень, стиснутих за допомогою tSNE (Cho et al. (2014).)

Критика
Я чув, що деякі з розглянутих вище результатів критикувалися дослідниками з інших областей, зокрема, лінгвістами та спеціалістами по обробці природної мови. Критикуються не самі результати, а наслідки, які з них виводяться, і методи порівняння з іншими підходами.

Я не вважаю, що підготовлений настільки добре, щоб чітко сформулювати, в чому саме проблема. Був би радий, якби хтось це зробив в коментарях.

Висновок
Глибоке навчання на службі у навчання уявлень — потужний підхід, який, здається, дає відповідь на питання, чому нейронні мережі так ефективні. Крім того, є в цьому підході дивовижна краса: чому нейронні мережі ефективні? Та тому, що кращі способи подання даних з'являються самі собою в ході оптимізації багатошарових моделей.

Глибоке навчання — дуже молода область, де ще не стабілізувались теорії і де погляди швидко змінюються. З цією обмовкою скажу, що, як мені здається, навчання уявлень за допомогою нейронних мереж зараз дуже популярно.

В цьому пості розказано про результати багатьох досліджень, які мені здаються вражаючими, але моя основна мета — підготувати ґрунт для наступного поста, в якому будуть розглянуті зв'язку між глибоким навчанням, теорією типів і функціональним програмуванням. Якщо цікаво, то, щоб його не пропустити, можете підписатися на мій RSS-канал.

Далі автор просить повідомляти про помічені неточності в коментарях, див. оригінальну статтю.

Подяки
Спасибі Eliana Lorch, Yoshua Bengio, Michael Nielsen, Laura Ball, Rob Gilson і Jacob Steinhardt за коментарі та підтримку.

Від перекладача: дякую за цінні зауваження Дениса Кір'янова і Вадима Лебедєва.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.