hanbt / learn_dl

Deep learning algorithms source code for beginners
Apache License 2.0
1.2k stars 988 forks source link

零基础入门深度学习(6) - 长短时记忆网络(LSTM) 误差项沿时间的反向传递 公式(13)有错误 #33

Open cyrixlin opened 6 years ago

cyrixlin commented 6 years ago

首先,非常感谢《零基础入门深度学习》作者hanbingtao付出的辛苦努力,提供了这么好的教程和代码程序。

误差项沿时间的反向传递 公式(13)明显写错了。 将误差项向前传递到任意k时刻的公式:

δ k T = j = k t 1 δ o , j T W o h + δ f , j T W f h + δ i , j T W i h + δ c ~ , j T W c h ( 13 )



原公式是采用从j=k到j=t-1求delta(j),然后把各个delta(j)乘起来,得到delta(k)。这显然是错误的,应当采用循环处理,已知delta(t),用原文中公式(58)求出delta(t-1),反复使用公式(58)直至求出delta(k)。而不是连乘积的形式。

从原文给出的样例代码lstm.py也可以看出这一点,是采用循环处理,逐步沿时间前移,而不是连乘积的算法。