Чому прості RNN забувають минуле
Звичайний рекурентний нейронний мережевий блок оновлює свій прихований стан на кожному часовому кроці шляхом багаторазового множення на одну й ту ж матрицю ваг і стиснення результату через нелінійність, таку як tanh. Під час навчання сигнал помилки, який використовується для коригування цих ваг, повинен поширюватися назад через кожен з цих множень, один на часовий крок. Коли повторний фактор менше одиниці, градієнт зменшується експоненціально, коли він подорожує назад, що називається проблемою зникаючого градієнту. На практиці це означає, що RNN, навчений на реченні або часовій серії довжиною більше кількох десятків кроків, ефективно не може вивчити залежності між подією біля початку та результатом біля кінця, оскільки сигнал навчання, який їх з’єднує, майже не зникає до того, як він досягне відповідних ваг. Протилежна невдача, вибухові градієнти, також може статися, коли цей фактор більший за одиницю, викликаючи дикі, нестабільні оновлення.
Клітинний стан: конвеєр для пам’яті
LSTM розв’язують це, додаючи другий шлях – клітинний стан, який проходить через кожен часовий крок із незначними, переважно лінійними змінами замість повторних множення матриць та стиснення. Уявіть собі конвеєр, що переносить інформацію безпосередньо через послідовність; градієнти можуть текти назад по цьому конвеєру майже незмінними, що й запобігає їхньому зникненню. Забувна турбіна – це перше, чим стикається інформація на кожному кроці: невелика нейронна мережа аналізує поточний вхід і попередній прихований стан, щоб видати значення між нулем і одиницею для кожного збереженого фрагменту інформації, вирішуючи, скільки старої клітинної пам’яті потрібно зберегти або стерти. Значення близьке до нуля очищає цей слот пам’яті; значення близьке до одиниці зберігає його без змін, дозволяючи критичній інформації вільно пересуватися конвеєром назавжди.
Писання та читання з вхідними та вихідними воротами
Після того, як відбувається забуття, вихідний воріт вирішує, яку нову інформацію записати на пояс. Він поєднує кандидат оновлення, обчислений з поточного входу, з значенням ворітця, яке контролює, скільки цього кандидата насправді додається до стану комірки, таким чином нерелевантні токени можна переважно ігнорувати, а важливі – сильно інтегрувати. Нарешті, вихідний воріт контролює, яка частина оновленого стану комірки стає прихованим станом, який відображається для решти мережі та наступного часового кроку. Він фільтрує стан комірки через інше навчене значення ворітця, щоб LSTM міг зберігати інформацію всередині без необхідності її розповсюдження як виходу відразу. Разом ці три ворота дають мережі точний, навчений контроль над пам’яттю: що видалити, що додати та що відкрити.
Де використовуються LSTM
Приблизно два десятиліття LSTM були основою моделювання послідовностей: мовні моделі, машинний переклад, розпізнавання мовлення, генерація рукописів та прогнозування часових рядів – все від цін на акції до даних датчиків телеметрії – покладалися на їх здатність зберігати контекст протягом тривалих інтервалів. З 2017 року архітектури трансформерів із механізмом само-уваги витіснили LSTM для більшості великих мовних і візуальних послідовностей завдяки тому, що увага дозволяє кожній позиції безпосередньо з’єднуватися з кожною іншою позицією, значно краще паралелізується на сучасному обладнанні та більш передбачувано масштабується з даними та обчислювальними потужностями. LSTM все ще популярні, проте, у обмежених за ресурсами або потокових сценаріях, таких як розпізнавання ключових слів на пристрої, системи реального часу для керування або менші часові ряди та злиття даних датчиків, де їх нижчий обсяг пам’яті, строгий послідовний оброблення та сильний індуктивний упередження щодо впорядкованих даних все ще є справді корисними.
Часті запитання
Що таке проблема зникаючого градієнта, і чому це так сильно шкодить простим RNN?
Під час зворотного поширення помилки через часові кроки градієнт помилки, який використовується для оновлення ваг RNN, обчислюється шляхом повторного застосування правила ланцюга на кожному часовому кроці, що включає множення на матрицю рекурентного зважування та похідну функції активації знову і знову. Коли ці повторні фактори менші за одиницю (що часто зустрічається з насиченими активаціями, такими як tanh або sigmoid), градієнт експоненціально зменшується, коли він рухається назад через часові кроки. Після достатньої кількості кроків він стає чисельно невідрізним від нуля, тому мережа отримує практично жодного сигналу навчання, що з'єднує віддалені минулі входи з поточною помилкою. Практично це означає, що простий RNN може вивчати короткострокові шаблони, але не може навчитися, наприклад, що суб’єкт на початку довгого речення повинен узгоджуватися з дієсловом через десятки слів пізніше, оскільки цей сигнал навчання ніколи не виживає в зворотній передачі.
Як LSTM уникла б тієї ж проблеми зникаючого градієнта?
Стан комірки оновлюється переважно шляхом елементного додавання та множення на значення воріт, а не повторним множенням на спільну матрицю ваг, за якою слідує насичена нелінійність. Коли воріт забуття видає значення близьке до одиниці, стан комірки на наступному кроці майже є точним копією попереднього стану плюс невеликий доданок, тому градієнт, що йде назад по цьому шляху, також близький до одиниці, а не зменшується множенням на кожному кроці. Цей майже лінійний, додавальний шлях часто описують як постійний барабан помилок, і він дозволяє градієнту подорожувати десятками або навіть сотнями часових кроків назад з набагато меншим розкладанням, ніж у простому RNN, що саме дозволяє LSTM вивчати довгострокові залежності.
Що обчислюють ворота забуття, введення та виведення, і чи є вони навченими?
Так, всі три ворота є невеликими навченими шарами, зазвичай сигмоїдна функція, застосована до зваженої комбінації поточного входу та попереднього прихованого стану, що виробляє значення між нулем і одиницею, які діють як м’які перемикачі увімкнення/вимкнення. Ворота забуття множать попередній стан комірки, контролюючи, скільки старої інформації виживає. Ворота введення множать новий кандидат на значення перед додаванням його до стану комірки, контролюючи, скільки нової інформації записується. Ворота виведення множать трансформоване значення оновленого стану комірки для вироблення прихованого стану, який розкривається як вихід. Усі ваги, що беруть участь, навчаються спільно з рештою мережі за допомогою зворотного поширення помилки, тому модель сама вчиться, яка інформація варта зберігання, додавання або розкриття для поставленої задачі.
Спробуйте наживо
Усе, що вище, працює прямо у вашому браузері — відкрийте LSTM Memory Cell Gate Lab і змінюйте параметри під час роботи. Нічого не встановлюється, нічого не завантажується на сервер, уся модель живе в одній вкладці.
▶ Відкрити симуляцію LSTM Memory Cell Gate Lab