http://zh.diveintodeeplearning.org/chapter_recurrent-neural-networks/rnn.html
对于6,2,4的练习
“如果我们使⽤循环神经⽹络来预测⼀段⽂本序列的下⼀个词,输出个数应该是多少?”
请问输出个数是不是与设定的输出层神经元个数是一样的。
应该是词典中不同词的个数(词典大小)
先声明下,我不是杠精,我就是想问下开头那段,XW是nh矩阵,怎么和1h的b相加呢,求解
“接下来,我们用一个具体的例子来验证这一点。首先,我们构造矩阵X、W_xh、H和W_hh,它们的形状分别为(3,1)、(1,4)、(3,2)和(2,4)。将X与W_xh、H与W_hh分别相乘,再把两个相乘的结果相加,得到形状为(3,4)的矩阵。”
文中这一段举例,构造W_hh为2x4的矩阵,但W_hh是否应该为方阵,在这里构造为4x4的方阵合适些?
谢谢,上下文很容易把W_hh作为方矩阵
这里我直接改了
下次你可以直接提交pull request,这样就可以变成贡献者了:
好的,希望再有发现的机会。
这里 Momenta 的链接似乎不对,你能帮忙fix一下不
已提交pull request. 非常感谢,特地找个机会给我!
上一个RNN的concat ndarray示例修改应该算是你的贡献~要不然读起来确实容易confuse
Ht-1 的shape 应该和nd.dot(X,W_xh)一致,也应该和H 一致。
*6.2节说: 循环神经网络模型参数的数量不随时间步的递增而增长。
*6.6节说:当时间步较大或者较小时,循环神经网络的梯度容易出现衰减或者爆炸。
总感觉这两者有点矛盾。该怎么理解呢?
(1)循环神经网络的参数在时间步上是共享的,可以看下公式介绍;
(2)循环神经网络使用BPTT进行优化,根据求导的链式法则可知,时间步越长,梯度有可能出现越来越小(越来越大).
这两者不矛盾。
我们构造矩阵 X
、 W_xh
、 H
和 W_hh
,它们的形状分别为(3, 1)、(1, 4)、(3, 4)和(4, 4)
书中RNN中计算公式为
Ht = ϕ(X_t*W_xh +H(t-1)*W_hh + Bh), bias为一项 Bh
框架mxnet.gluon.rnn.RNN中计算公式为
h(t)=tanh(W_ih∗X_t+B_ih+W_hh∗h(t−1)+B_hh),bias为两项B_ih 和 B_hh
书上的计算公式的bias为啥和框架中的不同?
为什么我们需要在每一个时间步假设Wxh和Whh 都是相同的?
文本序列不同字符个数?
使用广播机制
其实就是说:循环神经网络的参数在时间步上是共享的,可以看下公式介绍;
如果不是共享的,每一步都有自己的Wxh, Whh, 那参数不就成了时间t的函数了?如果是那样,参数个数会随时间线性增加(倍增),并且,也无法训练了。