Gated Recurrent Unit (GRU) — це тип рекурентної нейронної мережі (RNN), який був представлений Чо та ін. у 2014 році як простіша альтернатива мережам довготривалої короткочасної пам’яті (LSTM). Як і LSTM, GRU може обробляти послідовні дані, такі як текст, мова та дані часових рядів.
Основна ідея GRU полягає у використанні механізмів стробування для вибіркового оновлення прихованого стану мережі на кожному кроці часу. Шлюзові механізми використовуються для керування потоком інформації в мережу та з неї. GRU має два механізми стробування, які називаються воротами скидання та воротами оновлення.
Шлюз скидання визначає, яку частину попереднього прихованого стану слід забути, тоді як вентиль оновлення визначає, яку частину нового введення слід використовувати для оновлення прихованого стану. Вихід ГРУ розраховується на основі оновленого прихованого стану.
Рівняння, які використовуються для обчислення воріт скидання, оновлень і прихованого стану GRU, такі:
Скинути ворота: r_t = sigmoid(W_r * [h_{t-1}, x_t])
Оновити ворота: з_т = sigmoid(W_z * [h_{t-1}, x_t])
Прихований стан кандидата: h_t’ = tanh(W_h * [r_t * h_{t-1}, x_t])
Прихований стан: h_t = (1 – z_t) * h_{t-1} + z_t * h_t’
де W_r, W_z і W_h — вагові матриці, які можна вивчати, x_t — вхід на кроці часу t, h_{t-1} — попередній прихований стан, а h_t — поточний прихований стан.
Таким чином, мережі GRU є типом RNN, які використовують механізми стробування для вибіркового оновлення прихованого стану на кожному кроці часу, що дозволяє їм ефективно моделювати послідовні дані. Було показано, що вони ефективні в різних завданнях обробки природної мови, таких як моделювання мови, машинний переклад і розпізнавання мовлення
dateformat.format
Попередні вимоги: рекурентні нейронні мережі, мережі довгострокової пам'яті
Щоб вирішити проблему градієнтів, що зникають і вибухають, яка часто зустрічається під час роботи базової рекурентної нейронної мережі, було розроблено багато варіантів. Однією з найвідоміших варіацій є Мережа довготривалої короткострокової пам'яті (LSTM) . Одним з менш відомих, але не менш ефективних варіантів є Gated Recurrent Unit Network (GRU) .
На відміну від LSTM, він складається лише з трьох воріт і не підтримує внутрішній стан комірки. Інформація, яка зберігається у внутрішньому стані комірки в рекурентному блоці LSTM, включена в прихований стан шлюзованого рекурентного блоку. Ця колективна інформація передається до наступного закритого рекурентного блоку. Різні ворота ГРУ описані нижче:-
- Update Gate(z): він визначає, скільки минулих знань потрібно передати в майбутнє. Він подібний до вихідного воріт у рекурентному блоці LSTM. Reset Gate(r): він визначає, яку частину минулих знань потрібно забути. Це аналогічно поєднанню вхідних воріт і воріт забування в повторюваному блоці LSTM. Поточні ворота пам’яті (
): Його часто не помічають під час типового обговорення Gated Recurrent Unit Network. Він включений у вентиль скидання так само, як вентиль вхідної модуляції є підчастиною вхідного вентиля та використовується для введення деякої нелінійності у вхід, а також для того, щоб зробити вхід нульовим середнім. Ще одна причина зробити це підчастиною шлюзу Reset — зменшити вплив попередньої інформації на поточну інформацію, яка передається в майбутнє.Основний робочий процес Gated Recurrent Unit Network схожий на базову рекурентну нейронну мережу, головна відмінність між ними полягає у внутрішній роботі кожного рекурентного блоку, оскільки Gated Recurrent Unit мережі складаються з воріт, які модулюють поточний вхід і попередній прихований стан.

Робота закритого рекурентного блоку:
- Візьміть поточний вхід і попередній прихований стан як вектори.
- Обчисліть значення трьох різних воріт, дотримуючись наведених нижче кроків:-
- Для кожного вентиля обчисліть параметризований поточний вхід і раніше приховані вектори стану, виконавши поелементне множення (добуток Адамара) між відповідним вектором і відповідними ваговими коефіцієнтами для кожного вентиля.
- Застосуйте відповідну функцію активації для кожного воріт поелементно на параметризованих векторах. Нижче наведено список воріт із функцією активації, яка буде застосована до воріт.
Update Gate : Sigmoid Function Reset Gate : Sigmoid Function>
- Процес обчислення параметра Current Memory Gate трохи відрізняється. Спочатку обчислюється добуток Адамара ворота Reset і раніше прихованого вектора стану. Потім цей вектор параметризується, а потім додається до параметризованого поточного вхідного вектора.

- Щоб обчислити поточний прихований стан, спочатку визначається вектор тих самих розмірів, що й у вхідних даних. Цей вектор називатиметься одиницями та математично позначатиметься 1. Спочатку обчисліть добуток Адамара вентиля оновлення та раніше прихованого вектора стану. Потім згенеруйте новий вектор, віднявши гейт оновлення з одиниць, а потім обчисліть добуток Адамара щойно згенерованого вектора з поточним гейтом пам’яті. Нарешті, додайте два вектори, щоб отримати поточний прихований вектор стану.
Вищезазначена робота вказана нижче: -

Зверніть увагу, що сині кружечки позначають поелементне множення. Позитивний знак у колі позначає векторне додавання, а негативний — векторне віднімання (векторне додавання з від’ємним значенням). Вагова матриця W містить різні ваги для поточного вхідного вектора та попереднього прихованого стану для кожного вентиля.
Подібно до рекурентних нейронних мереж, мережа GRU також генерує вихідні дані на кожному часовому кроці, і ці вихідні дані використовуються для навчання мережі за допомогою градієнтного спуску.

Зауважте, що так само, як і робочий процес, процес навчання для мережі GRU також схематично схожий на процес базової рекурентної нейронної мережі та відрізняється лише внутрішньою роботою кожного рекурентного блоку.
Алгоритм зворотного поширення в часі для стробованої рекурентної одиничної мережі подібний до мережі довгострокової пам’яті та відрізняється лише формуванням диференціального ланцюга.
Дозволяти
бути прогнозованим виходом на кожному кроці часу і
бути фактичним виходом на кожному кроці часу. Тоді похибка на кожному кроці часу визначається як:
Таким чином, загальна похибка визначається сумою похибок на всіх етапах часу.
Так само значення
можна розрахувати як підсумовування градієнтів на кожному кроці часу.
Використовуючи правило ланцюга та використовуючи той факт, що
є функцією
і яка справді є функцією
, виникає такий вираз: -
Таким чином, загальний градієнт помилок визначається наступним чином:
Зауважте, що градієнтне рівняння містить ланцюжок
яка виглядає схожою на базову рекурентну нейронну мережу, але це рівняння працює інакше через внутрішню роботу похідних
.
Як Gated Recurrent Units вирішують проблему зникаючих градієнтів?
Значення градієнтів контролюється ланцюгом похідних, починаючи з
. Пригадайте вираз для
:-
Використовуючи наведений вище вираз, значення для
є: -
Пригадайте вираз для
:-
Використовуючи наведений вище вираз, обчисліть значення
:-
Оскільки і шлюз оновлення, і скидання використовують сигмоїдну функцію як функцію активації, обидва можуть приймати значення 0 або 1.
Випадок 1 (z = 1):
У цьому випадку, незалежно від значення
, термін
дорівнює z, яке, у свою чергу, дорівнює 1.
Випадок 2A (z=0 і r=0):
В даному випадку термін
дорівнює 0.
Випадок 2B(z=0 і r=1):
У даному випадку термін
дорівнює
. Це значення контролюється ваговою матрицею, яку можна навчити, і таким чином мережа вчиться регулювати ваги таким чином, щоб термін
наближається до 1.
Таким чином, алгоритм зворотного поширення в часі регулює відповідні ваги таким чином, щоб значення ланцюжка похідних було якомога ближче до 1.
