learn_dl icon indicating copy to clipboard operation
learn_dl copied to clipboard

长短时记忆网络(LSTM)中Wfx、Wix, Wox, Wcx的权重梯度的计算,为何不再对历史时刻t进行累加?

Open cyrixlin opened this issue 7 years ago • 10 comments

学习长短时记忆网络(LSTM)中发现一个问题,Wfx、Wix, Wox, Wcx的权重梯度的计算,没有对历史时刻t进行累加。而在循环神经网络(RNN)中,损失函数E对权重矩阵U的梯度,也是各个时刻E对U的梯度之和。因此很奇怪,LSTM中损失函数对Wfx、Wix, Wox, Wcx的权重梯度,只取最后时刻的梯度,而没有按历史时刻进行梯度累加。 我怀疑LSTM里Wfx、Wix, Wox, Wcx的权重梯度的计算写错了,也应当按照历史时刻t进行梯度累加。

cyrixlin avatar Sep 27 '18 03:09 cyrixlin

没有写错呀,LSTM里Xt-1与WWfx、Wix, Wox, Wcx是没有关系的,所以和RNN里的那个不一样,建议你看看RNN里关于为什么把梯度相加的推导

894551089 avatar Oct 04 '18 14:10 894551089

"LSTM里Xt-1与Wfx、Wix, Wox, Wcx是没有关系的",Xt-1与Wfx、Wix, Wox, Wcx当然是有关系的。RNN与LSTM里权重系数都是共享的,X1, X2, ... Xt-1, Xt共享一套Wfx、Wix, Wox, Wcx。因此Wfx、Wix, Wox, Wcx发生变动是从各个时刻共同来影响最后的损失函数L的。

cyrixlin avatar Oct 09 '18 05:10 cyrixlin

RNN里的W是对状态st-1的权重,而LSTM里的Wfx,Wix,Wox,Wcx是对于输入X来说的,你硬要比较,那也只是和RNN里的U类似罢了,但是RNN里的U的梯度是所有时间和,这是因为U是Nett的函数,所以推导和W一样都是所有时间状态的梯度和,你再认真看看RNN里的证明吧

894551089 avatar Oct 09 '18 06:10 894551089

确实Wfx,Wix,Wox,Wcx就是和RNN里的U类似,但是RNN里的U的梯度是所有时间和,这里也没有任何道理求Wfx,Wix,Wox,Wcx的梯度时候不对各个时刻求和。Wfx、Wix, Wox, Wcx发生变动是从各个时刻共同来影响最后的损失函数L的。这道理是很明显的。

cyrixlin avatar Oct 12 '18 01:10 cyrixlin

你去推推RNN里的U的梯度,对U求梯度可以利用链式求导法则化成对netj的偏导,而netj=UXj+Wf(netj-1),这里j是时刻,这样就关联起来了。你再看看LSTM里的NETo,t,NETf,t,NETc,t这些。例如
NETo,t=Wo,hht-1+Wo,xXt+b,在求对Wo,x求导时,导数和Wo,h*ht-1无关,这样就和ht-1即上一时刻的输出是无关的(ht和ht-1和xt-1有关),也就无法关联到xt-1,而对Wo,h求导这和ht-1关联了。

894551089 avatar Oct 12 '18 12:10 894551089

@894551089 在求对Wo,x求导时,导数和Wo,h*ht-1无关,这不对吧,你推导下,ht-1是和Ot-1相关的,而Ot-1和Wo,x与Xt-1 相关,这样就关联上了啊

sangcheng0615 avatar Oct 24 '18 08:10 sangcheng0615

我有同样的问题 但是没有人能解释清楚

luv666 avatar Mar 10 '20 15:03 luv666

+1,我也理解不了

irises1412 avatar Sep 20 '20 10:09 irises1412

你发过来的邮件怎么都是乱码啊,什么都看不到,再发一次吧。

yepaoxixi avatar Jan 17 '24 23:01 yepaoxixi

下面这个视频里面对于Wxf的推导确实用的求和,应该是写错了 https://www.bilibili.com/video/BV1uT411n7Br?p=5&vd_source=df279daeacbb7a06318d2a393fff9b4a

haildceu1 avatar Jan 17 '24 23:01 haildceu1