RNN - це глибока нейронна мережа (DNN), де кожен шар може приймати новий вхід, але має однакові параметри. BPT - модне слово для зворотного розповсюдження в такій мережі, яке саме по собі є вигадливим словом для Gradient Descent.
Скажімо , що РНН виходів у т в кожному кроці , і
е гу^т
e r r o rт=(yt−y^t)2
Для того, щоб дізнатися ваги, нам потрібні градієнти для функції, щоб відповісти на питання "наскільки зміна параметра впливає на функцію втрати?" і переміщуємо параметри в напрямку, заданому:
∇errort=−2(yt−y^t)∇y^t
Тобто у нас є DNN, де ми отримуємо відгуки про те, наскільки хороший прогноз на кожному шарі. Оскільки зміна параметра змінить кожен шар у DNN (часовий крок) і кожен шар сприяє майбутнім результатам, це потрібно враховувати.
Візьміть просту мережу з одношаровим нейроном, щоб побачити це напіввиразно:
y^t+1=∂∂ay^t+1=∂∂by^t+1=∂∂cy^t+1=⟺∇y^t+1=f(a+bxt+cy^t)f′(a+bxt+cy^t)⋅c⋅∂∂ay^tf′(a+bxt+cy^t)⋅(xt+c⋅∂∂by^t)f′(a+bxt+cy^t)⋅(y^t+c⋅∂∂cy^t)f′(a+bxt+cy^t)⋅⎛⎝⎜⎡⎣⎢0xty^t⎤⎦⎥+c∇y^t⎞⎠⎟
З швидкість навчання крок один навчальний тоді:
[ ~ ~ б ~ з ] ← [ б з ] + δ ( у т - у т ) ∇ у тδ
⎡⎣⎢a~b~c~⎤⎦⎥←⎡⎣⎢abc⎤⎦⎥+δ(yt−y^t)∇y^t
∇y^t+1∇y^tt
error=∑t(yt−y^t)2
Може, тоді кожен крок сприятиме грубому напрямку, якого достатньо в сукупності? Це може пояснити ваші результати, але мені дуже цікаво почути більше про ваш метод / функцію втрати! Також буде зацікавлене порівняння з двома кроками вікна ANN.
edit4: Після прочитання коментарів здається, що ваша архітектура не є RNN.
ht
Ваша модель: Без стану - прихований стан перебудовується на кожному кроці
edit2: додано більше посилань на DNNs edit3: фіксований gradtep та деякі нотації edit5: виправлена інтерпретація вашої моделі після вашої відповіді / уточнення.