День 101 № NLP365: Поглиблене дослідження архітектури дієт RASA

Сучасна архітектура для намірів та класифікації об'єктів

Райан Онг

10 квітня · 6 хв читання

Привіт усім, мене звати Райан. Я працюю вченим з даних у Лондоні. Я дуже захоплений процесом обробки природних мов (NLP), і зараз я працюю над проектом # NLP365 (+1), де я документую свою навчальну подорож NLP кожен день у 2020 році. Не соромтеся перевіряти, що я вивчав протягом останні 100 днів тут.

поглибленого

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

DIET розшифровується як Dual Intent та Entity Transformer. DIET - це багатозадачна архітектура трансформатора, яка може виконувати як класифікацію намірів, так і розпізнавання сутностей разом. Він складається з декількох компонентів, що дозволяє нам мати гнучкість для обміну різними компонентами. Наприклад, ми могли б експериментувати з використанням різних вбудованих слів, таких як BERT та GloVe.

Багато попередньо навчених мовних моделей дуже важкі в тому сенсі, що вони вимагають великої обчислювальної потужності, а час виведення тривалий, тому, незважаючи на високу продуктивність, вони не розроблені для розмовних програм ШІ. Дієта відрізняється від себе:

  • Це модульна архітектура, яка дозволяє розробникам програмного забезпечення мати більшу гнучкість в експериментах
  • З точки зору точності відповідає попередньо навченим мовним моделям
  • Перевершує поточний рівень SOTA, і тренуватися в 6 разів швидше

Перш за все, які дані навчання нам потрібні для навчання моделі DIET? Архітектура вимагає, щоб набір даних містив вхідний текст, мітки (цілі) наміру та мітки (сутності).

Архітектура має багато компонентів, і вона має загальну втрату для оптимізації (мінімізації), яка складається з трьох втрат:

  1. Втрата юридичної особи
  2. Втрата намірів
  3. Втрата маски

Як вхідні речення посилаються на втрату сутності під час навчання? Нижче наведені шари, що пов'язують вхідні речення із втратою сутності:

  1. Індивідуальний шлях маркера
  2. Трансформаторний шар
  3. Умовне випадкове поле (CRF)

Індивідуальний шлях маркера розбивається на два під-шляхи

  1. Попередньо оброблені вкладення. Це може бути BERT або GloVe. Тут ви можете експериментувати з різними вкладеннями. Результатом є числове представлення маркера
  2. Розріджені функції + нейронна мережа прямого подавання (FFNN). Складається з одноразових кодерів N-грамів символьного рівня як особливості та передається на рівень прямого подавання

Вихідні дані двох під-шляхів об'єднуються разом і подаються в інший FFNN. Результатом роботи FFNN є 256-мірний вектор.

Виходи окремого шляху маркера подаються у 2-шаровий трансформаторний шар. Клацніть тут, щоб отримати гарну статтю про трансформатори. Згодом виходи шару трансформатора подаються в шар умовного випадкового поля (CRF). Усередині CRF ми маємо FFNN, який приймає вихідні дані трансформаторного шару і класифікує, який об'єкт є вихідним. Наприклад, слово "ping" має сутність "game_name". Між цими FFNN ми маємо матрицю переходів. Ідея матриці переходів полягає в тому, щоб зафіксувати ситуацію, коли, якщо є маркер, який є суттю, сусідні маркери з великою ймовірністю теж будуть суттю. Для кожного маркера ми маємо мітку сутності "істина-земля", і це може бути використано під час навчання для навчання як нашої FFNN, так і матриці переходів (їх ваги).

На рисунку архітектури DIET є спеціальний маркер класу (__CLS__). Ідея цього спеціального маркера класу полягає в тому, що він узагальнює все вхідне речення та отримує числове представлення, яке представляє ціле вхідне речення. Цей маркер спеціального класу йде за тим же шляхом, що й окремі маркери, однак вихід попередньо навчених вкладених і розріджених особливостей дещо відрізняється:

  1. Результатом попередньо навченого вбудовування тепер є вбудовування речення. Це обчислюється по-різному, залежно від того, які попередньо навчені вставки використовуються.
  2. Розріджені ознаки для маркера спеціального класу - це сума всіх окремих розріджених ознак окремих токенів.

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

Додавання цієї лексеми маски в архітектуру полягає в тому, що модель також може навчатися як мовна модель. Мовна модель - це де модель передбачає найбільш підходящий наступний маркер з урахуванням набору вхідних лексем. Під час навчання модель випадково маскувала деякі слова, і метою алгоритму було передбачити, яке саме оригінальне слово маскується. На діаграмі нижче показано, як це працює. Маркер маски пройде через трансформатор і перетвориться на шар вбудовування. Одночасно маскуваний маркер (слово pong на малюнку) проходить через окремий шлях маркера, а також у шар вбудовування. Функція подібності обчислюється між цими двома вкладеннями. Однією з цілей моделі є мінімізація втрати маски. Чим менша втрата маски, тим краща модель у прогнозуванні замаскованого маркера.

Дві особливі примітки про всі FFNN в архітектурі. По-перше, вони НЕ повністю пов'язані. Рівень відсіву FFNN становить близько 80% з самого початку. Це робить FFNN більш легким. По-друге, ВСІ FFNN мають однакову вагу. Всі розріджені функції FFNN розділяють ваги (W1), а всі повідомлення FFNN, що зливають вихідні дані двох шляхів, мають інший набір ваг (W2).

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

Архітектура розроблена, щоб дозволити моделі вивчити більш загальне представлення наших вхідних речень. Під час тренування всі ваги повинні бути оптимізовані на основі трьох різних втрат: сутності, наміру та втрати маски, і як така, модель не може просто вивчити подання, яке сильно мінімізує одну із втрат. Крім того, архітектура розроблена таким чином, що ви можете вмикати або вимикати кілька компонентів. Архітектура розроблена для обробки намірів та класифікації об'єктів, але якщо ми просто хочемо, щоб модель виконувала класифікацію намірів, ми можемо "вимкнути" сутність та маскувати втрату і просто зосереджується на оптимізації втрати намірів під час навчання. Мені дуже подобається дізнаватися про модель дієти RASA, і наступним кроком є ​​експеримент з бібліотекою RASA.