循环神经网络-初识RNN

首先学习RNN需要一定的基础,即熟悉普通的前馈神经网络,特别是BP神经网络,最好能够手推。

所谓前馈,并不是说信号不能反向传递,而是网络在拓扑结构上不存在回路和环路。

而RNN最大的不同就是存在环路。

为什么需要RNN

普通的神经网络处理的是一个个样本,独立同分布(iid),而现实中很多事情前后是有联系的,

比如理解一个句子,只看句子中的词是无法理解整个句子的,此时普通的神经网络就无能为力了。

RNN就是为处理序列数据而生的。

RNN的结构

首先看一个简单的RNN

x是输入,s o是对应层的输出,u v 是对应层的权重,还有w

可以看到,唯一不同的就是隐藏层多了一个环路。

也就是说,s的值不仅取决于x,而且取决于上次隐藏层的输出,即上个s,而w就是这条传播线路上的权重矩阵。

把上图纵向展开,即 输入-输出

这张图有些看不清,左边那部分其实是  [S1', S2', ... Sm'],对应上一次隐层每个神经元的输出,也就是每次隐层的输出先保存起来,下一次和x一起作为输入

于是有公式

Ot=g(V*St)

St=f(U*Xt+W*St-1)

这个公式写在这里其实并不合适,因为公式中的St 和图中的 S1 S2...很容易混淆,其实并不是一个东西。

再把第一张图横向展开,即样本1-样本2-样本3...

此时我们再来看上面的公式,一目了然。

把上图实例化,更容易理解

1. 预测句子

2. 预测单词hello

把图扩展为 Deep RNN

总结

总体来讲,RNN还是要比CNN容易理解的多,几张图轻松搞定,CNN我就不写了,太多了,CNN有什么问题可以在此处探讨。

在实际场景中,CNN多用于图像识别,RNN多用于语音和视频识别。

猜你喜欢

转载自www.cnblogs.com/yanshw/p/10426068.html
今日推荐