为什么有了神经网络还会有RNN,这是因为传统神经网络没有考虑每次输入之间的相关性以及输出之间的相关性,它只对每次输入进行同样的运算并得到结果,没有考虑到连续的输入之间本身存在一种相关性,也就是说每次输入都是独立的。基于每次输入都是独立的假设,每次输出都只与当前输入有关,不能从之前的输入以及输出中得到有效的信息,这在许多情况下不是我们所期望的。RNN就是注意到了这种相关性并利用了这种相关性。RNN在许多任务上都取得了很好的效果,最出名的就是自然语言处理。
RNN称为循环神经网络,与传统的神经网络不同的是多了循环二字。循环的意义是指上一时刻的隐层状态s(t-1)可以作为当前时刻的输入,与当前时刻的输入一起决定当前时刻的状态s(t)。注意,这里可以循环的是每一时刻的隐层状态s,而并非输出o,而且循环的作用对象也是s,也就是说这种循环是隐层状态s的循环。
RNN结构展开(参考链接1):
传统RNN结构主要包括input(x)、hidden state(s)以及output(o)。
以t时刻为例:
x(t) 为t时刻的输入,如果没有循环结构的话,x(t) 将直接通过函数U得到t时刻的隐层状态s(t),但是有了循环结构后x(t) 仅作为s(t)的一部分输入。
s(t-1) 为t-1时刻的隐层状态,作为s(t)的另一部分输入,通过函数W作用与s(t)。这样s(t)就有了两个输入,相较于传统神经网络仅仅是计算s(t) 时多了一个输入。
o(t) 为t时刻的输出,是s(t)通过函数V得到的。由此可知,通过对s进行循环,就可以间接对o产生影响。
对RNN结构的

最低0.47元/天 解锁文章
5万+

被折叠的 条评论
为什么被折叠?



