Забудьте прошарок у періодичній нейронній мережі (RNN) -


13

Я намагаюся з'ясувати розміри кожної змінної в RNN в шарі забуття, однак я не впевнений, чи я на правильному шляху. Наступна картина та рівняння - з публікації блогу Кола "Розуміння мереж LSTM" :

введіть тут опис зображення

де:

  • є введення розміру м * 1 векторxtm1
  • - прихований стан розміру n 1 векторht1n1
  • - це конкатенація (наприклад, якщо x t = [ 1 , 2 , 3 ] , h t - 1 = [ 4 , 5 , 6 ] , то [ x t , h t - 1 ] = [ 1 , 2 , 3 , 4 , 5 , 6 ] )[xt,ht1]xt=[1,2,3],ht1=[4,5,6][xt,ht1]=[1,2,3,4,5,6]
  • -матрицярозміру k ( m + n ) , де k - кількість клітинних станів (якщо m = 3 , і n = 3 у наведеному вище прикладі, а якщо у нас є 3 клітинні стани, то w f = 3 3 матриці)wfk(m+n)km=3n=3wf=33
  • є зміщення розміру до * 1 вектор, де до є число клітинних станів (так як до = 3 в якості прикладу вище, то б е є 3 * 1 вектор).bfk1kk=3bf31

Якщо ми встановимо таким чином: [ 1 2 3 4 5 6 5 6 7 8 9 10 3 4 5 6 7 8 ]wf

[1234565678910345678]

І бути: [ 1 , 2 , 3 ]bf[1,2,3]

Тоді Wf.[ht1,xt]=

[1234565678910345678].[123456]=[91175133]

Тоді ми можемо додати зміщення, Wf.[ht1,xt]+bf=

[91175133]+[123]=[92177136]

11+exx=[92177136]

[111]

Ct1k=3

Чи правильне вище припущення?

Це також означає, що кількість клітинного стану та прихованого стану однакове?

Відповіді:


14

Чудове запитання!

tl; dr: стан клітини та прихований стан - це дві різні речі, але прихований стан залежить від стану клітини і вони дійсно мають однаковий розмір.

Більш тривале пояснення

Різниця між ними видно з діаграми нижче (частина того ж блогу):

Стан клітини - це смілива лінія, що рухається на захід на схід через вершину.

Стан клітини - це смілива лінія, що рухається на захід на схід через вершину. Весь зелений блок називається "комірка".

Прихований стан з попереднього етапу часу розглядається як частина вводу на поточному етапі часу.

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

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

Ось що відбувається:

Вхідні ворота

введіть тут опис зображення

txtht1

xt=[1,2,3]ht=[4,5,6]

xtht1[1,2,3,4,5,6]

WiWi[xt,ht1]+biWibi

Припустимо, ми переходимо від шестивимірного вводу (довжина об'єднаного вхідного вектора) до тривимірного рішення про те, які стани потрібно оновити. Це означає, що нам потрібна матриця ваги 3x6 та вектор зміщення 3x1. Дамо цим значенням:

Wi=[111111222222333333]

bi=[111]

Розрахунок буде:

[111111222222333333][123456]+[111]=[224262]

it=σ(Wi[xt,ht1]+bi)

σ(x)=11+exp(x)x

σ([224262])=[11+exp(22),11+exp(42),11+exp(62)]=[1,1,1]

Англійською мовою це означає, що ми збираємось оновити всі наші штати.

Вхідний затвор має другу частину:

Ct~=tanh(WC[xt,ht1]+bC)

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

Ct~it

itCt~

Потім виходить ворота забуття, яка була сутністю вашого питання.

Ворота забуття

введіть тут опис зображення

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

Так само, як і вхідний шар, рівень забуття приймає прихований стан з попереднього кроку часу, а новий вхід - з поточного кроку часу і з'єднує їх. Сенс у тому, щоб вирішити стохастично, що забути і про що пам’ятати. У попередньому обчисленні я показав сигмоподібний шар всіх 1-х, але насправді це було ближче до 0,999, і я округлювався.

Розрахунок схожий на те, що ми зробили у вхідному шарі:

ft=σ(Wf[xt,ht1]+bf)

Це дасть нам вектор розміру 3 зі значеннями від 0 до 1. Зробимо вигляд, що він нам дав:

[0.5,0.8,0.9]

Тоді ми вирішуємо стохастично виходячи з цих значень, яку з цих трьох частин інформації забути. Один із способів зробити це - генерувати число з рівномірного (0, 1) розподілу, і якщо це число менше, ніж ймовірність включення одиниці (0,5, 0,8 та 0,9 для одиниць 1, 2 і 3 відповідно), тоді ми включаємо цей блок. У цьому випадку це означає, що ми забуваємо цю інформацію.

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

Оновлення стану клітини

введіть тут опис зображення

Тепер у нас є все необхідне для оновлення стану комірок. Ми беремо комбінацію інформації з вхідних і забутих воріт:

Ct=ftCt1+itCt~

Убік: продукт Адамара

x1=[1,2,3]x2=[3,2,1]

x1x2=[(13),(22),(31)]=[3,4,3]

Кінець убік

Таким чином ми поєднуємо те, що хочемо додати до стану комірки (вхід) з тим, що ми хочемо зняти зі стану клітини (забути). Результат - новий стан клітин.

Вихідні ворота

введіть тут опис зображення

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

Вихідний шар знову приймає той же вхід, але потім враховує оновлений стан комірки:

ot=σ(Wo[xt,ht1]+bo)

Знову ж таки, це дає нам вектор ймовірностей. Тоді ми обчислюємо:

ht=ottanh(Ct)

Таким чином, поточний стан комірки та вихідні ворота повинні узгоджувати, що потрібно виводити.

tanh(Ct)[0,1,1]ot[0,0,1][0,0,1]

htyt=σ(Wht)

ht

Варіантів LSTM є дуже багато, але це стосується суттєвого!


Дякую за вашу відповідь! У мене є одне додаткове запитання - ви не проти. Глибока нейронна мережа може бути глибокою через те, що похідна ReLU дорівнює 1 (Якщо вихід більше 0). Це той самий випадок і для цієї клітини? Я не впевнений, як Тан і Сигмоїд можуть мати постійну похідну 1?
користувач1157751

Моє задоволення! Нейронна мережа вважається «глибокою», коли вона має більше одного прихованого шару. Похідні функцій активації (tanh, sigmoid, ReLU) впливають на тренування мережі. Як ви кажете, оскільки ReLU має постійний нахил, якщо його вхід більше 0, його похідна дорівнює 1, якщо ми знаходимося в цій області функції. Тан та сигмоподібні одиниці мають похідну, близьку до 1, якщо ми знаходимось в середині їх активаційної області, але їх похідна не буде постійною. Можливо, я мушу зробити окремий пост у блозі про похідні ....
StatsSorceress

Чи можете ви показати приклад їх похідної, близький до 1, в області активації? Я бачив багато ресурсів, які говорять про похідні, але математика не робиться?
користувач1157751

Гарна ідея, але мені знадобиться певний час, щоб написати належний пост про це. Тим часом подумайте про форму функції танха - це подовжений 'S'. Посередині - де найвища похідна. Там, де S плоский (хвости S), похідна дорівнює 0. Я бачив одне джерело, яке казало, що сигмоїди мають максимум похідних 0,25, але я не маю еквівалентної межі для tanh.
СтатистикаSorceress

Частина, яку я не розумію, на відміну від ReLU з постійною похідною 1, де x> 0, але сигмоїд і тан мали змінне значення для обох своїх похідних. Як це може бути "постійним"?
користувач1157751
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.