Разберете как d; LSTM и d; GRU в диаграми - Изкуствена мисъл
Повтарящите се невронни мрежи (RNN) се използват широко в изкуствения интелект, когато a времева представа се намесва в данните (понякога „скрити“, както при анализ на текст).
Но последните страдат във вътрешната си структура от ограничения, които ги правят неработоспособни в много ситуации. След това се намесват клетките LSTM и GRU, чиято ефективност е равна само на тяхната сложност !
Нека се опитаме да имаме, благодарение на това ръководство, просто, дълбоко и илюстрирано как работят.
Проблемът с повтарящите се невронни мрежи (RNN)
Как работи RNN ?
Повтарящата се невронна мрежа (RNN) е невронна мрежа, широко използвана в дълбокото обучение. Много наподобяваща изкуствената невронна мрежа (съкратено като ANN), препоръчително е да се знае последната, за да се разберат напълно обясненията на RNN.
За читатели, които не са запознати с това как работи ANN, ето кратко резюме:
- Входните данни пристигат на входния слой на мрежата. Данните са под формата на вектор, например (0,7, 0,4, 0,9) и всяка координата на вектора се изпраща към жълт неврон отдолу
- След това 3-те стойности ще напредват в мрежовия слой по слой (1-во синьо, 2-ро синьо, след това оранжево, което е изходът). Казват, че сините слоеве са скрити, а оранжевият е изходният слой.
- За да се придвижите напред, между всеки неврон има линия, която ги свързва: тази линия е свързана със стойност, наречена тежест (например 0,3 между 1-ви жълт неврон и 1-ви син), която ще претегли входящата стойност (т.е. ще имаме 0,7 * 0,3 = нова стойност, пристигаща в 1-ия син неврон).
- Всички входящи (и претеглени) стойности се добавят към входа на неврон и след това към резултата се прилага определена функция, която дава изходна стойност за всеки неврон
- След това тези стойности се разпространяват към следващия слой и т.н.

Ето схемата на RNN. За разлика от ANN (и това е единствената разлика), на всеки син неврон имаме цикъл (разработен под мрежовата диаграма):
- имаме данни t (3 стойности, по една за всеки жълт неврон), които пристигат в мрежата
- те се разпространяват в мрежата като в ANN
- с изключение на това, че всеки син неврон, освен че получава претеглените изходи на предходните неврони, получава и стойността, която излиза от себе си за данните t-1
- изходната стойност на всеки син неврон се запазва и ще се използва за данните t + 1
Така че имаме памет на 1 итерация за сини неврони.
Ето по-анимиран подход към RNN, сега, когато имате основната идея. Нека започнем с използване на RNN, за да анализираме думите от изречението „Снощи ядох хамбургер и малко“ и да предскажем следващата дума („картофи“).
Първо, всяка дума се трансформира във вектор. Например „вчера“ става (0,1, 0,5, 1): тази трансформация е основна стъпка за подготовка на данните. След това всеки вектор се изпраща на свой ред към RNN, показан по-долу под формата на зелен квадрат (който представлява неговата клетка, т.е. неврон).
Фразата „Снощи ядох хамбургер и малко“ се превръща във вектори и след това се подава в RNN (кредит: Michaël Nguyen)
Между всяка дума, изпратена в RNN, изходът, отбелязан \ (h_t \) за предишната дума, се добавя като вход с новата дума. Този изход се нарича "скрито състояние"
Векторът на текущата дума, отбелязан \ (x_t \), и изходът (който също е вектор) за предишната дума, отбелязан \ (h_ \), се поставят от край до край, след което преминават в математическата функция „ tanh ”Преди да стане новият изход отбеляза \ (h_t \)
В невронните мрежи е много често да се използват „активиращи функции“ на изхода на невроните. Например, tanh, показан отсреща, е функция, която преобразува стойност (например 300) в нова стойност между - 1 и 1 (виж кривата). Предимството на такава функция е да предотврати изхода на невроните да стане твърде голям, тъй като това би изисквало повече време за изчисление и компютърна памет ...
Проблем с ученето и паметта
Що се отнася до персептрона по негово време, RNN страда от проблема с разсейването на градиента. Какво означава това ?
За да „научи“, RNN използва метода на градиентно спускане за да актуализира тежестите между нейните неврони. Това се основава на следната формула:
\ (w: = w - \ alpha \ cdot F_w \)
- \ (w \) тегло на мрежата
- \ (\ alpha \) скоростта на обучение на мрежата
- \ (F_w \) градиентът на мрежата по отношение на теглото \ (w \)
Проблем: тежестите се актуализират отдясно наляво. Докато се движим наляво, продуктът \ (\ alpha \ cdot F_w \) става много малък и теглото на първите слоеве неврони почти не се променя! По този начин тези слоеве не научават абсолютно нищо ...
И следователно RNN може лесно да забрави данни, които са малко стари (или думи, които са доста далеч от текущата дума в текст) по време на фазата на обучение: паметта му е кратка.
Към по-добра архитектура: LSTM и GRU
Ако клетка (неврон) на RNN в крайна сметка е много проста (ние обединяваме два вектора и след това прилагаме tanh върху тях), това не е случаят с LSTM и GRU в началото.
LSTM и GRU са създадени като метод за ефективно управление на краткосрочната и дългосрочната памет чрез техните портални системи. Ако има много варианти, оригиналните версии (представени тук) все още се използват много много в най-добрите модели за задълбочено обучение за автоматична обработка на естествен език, което се отнася до разпознаване/синтез на реч, но също така и за генериране на текст или проучване на пазара ...