CNN和RNN

CNN:

1)卷积:对图像元素的矩阵变换,是提取图像特征的方法,多种卷积核可以提取多种特征。一个卷积核覆盖的原始图像的范围叫做感受野(权值共享)。一次卷积运算(哪怕是多个卷积核)提取的特征往往是局部的,难以提取出比较全局的特征,因此需要在一层卷积基础上继续做卷积计算,这也就是多层卷积。
2)池化:降维的方法,按照卷积计算得出的特征向量维度大的惊人,不但会带来非常大的计算量,而且容易出现过拟合,解决过拟合的办法就是让模型尽量“泛化”,也就是再“模糊”一点,那么一种方法就是把图像中局部区域的特征做一个平滑压缩处理,这源于局部图像一些特征的相似性(即局部相关性原理)。
3) 全连接:softmax分类
4)训练过程:
卷积核中的因子(×1或×0)其实就是需要学习的参数,也就是卷积核矩阵元素的值就是参数值。一个特征如果有9个值,1000个特征就有900个值,再加上多个层,需要学习的参数还是比较多的。

CNN的三个优点:

sparse interaction(稀疏的交互)
parameter sharing(参数共享)
equivalent respresentation(等价表示)。
适合于自动问答系统中的答案选择模型的训练。

CNN与DNN的区别:

DNN的输入是向量形式,并未考虑到平面的结构信息,在图像和NLP领域这一结构信息尤为重要,例如识别图像中的数字,同一数字与所在位置无关(换句话说任一位置的权重都应相同),CNN的输入可以是tensor,例如二维矩阵,通过filter获得局部特征,较好的保留了平面结构信息。
filter尺寸计算:
Feature Map的尺寸等于
(input_size + 2 * padding_size−filter_size)/stride+1

RNN

为什么具有记忆功能?

这个是在RNN就解决的问题,就是因为有递归效应,上一时刻隐层的状态参与到了这个时刻的计算过程中,直白一点呢的表述也就是选择和决策参考了上一次的状态。

为什么LSTM记的时间长?

因为特意设计的结构中具有CEC的特点,误差向上一个状态传递时几乎没有衰减,所以权值调整的时候,对于很长时间之前的状态带来的影响和结尾状态带来的影响可以同时发挥作用,最后训练出来的模型就具有较长时间范围内的记忆功能。
误差回传的主力还是通过了Memory Cell而保持了下来。所以我们现在用的LSTM模型,依然有比较好的效果。
最后整个梳理一下误差回传的过程,误差通过输出层,分类器,隐层等进入某个时刻的Block之后,先将误差传递给了Output Gate和Memory Cell两个地方。
到达输出门的误差,用来更新了输出门的参数w,到达Memory Cell之后,误差经过两个路径,
1是通过这个cell向前一个时刻传递或者更前的时刻传递,
2是用来传递到input gate和block的输入,用来更新了相应的权值(注意!不会经过这里向前一个时刻传递误差)。
最关键的问题就是,这个回传的算法,只通过中间的Memory Cell向更前的时刻传递误差。
在RNN中U、V、W的参数都是共享的,也就是只需要关注每一步都在做相同的事情,只是输入不同,这样来降低参数个数和计算量。

RNN特点:

时序长短可变(只要知道上一时刻的隐藏状态ht−1ht−1与当前时刻的输入xtxt,就可以计算当前时刻的隐藏状态htht。并且由于计算所用到的WxhWxh与WhhWhh在任意时刻都是共享的。递归网络可以处理任意长度的时间序列)顾及时间依赖,未来信息依赖(双向递归)

RNN主要包括LSTM,GRU

GRU对LSTM做了两个大改动:

将输入门、遗忘门、输出门变为两个门:
更新门(Update Gate)和重置门(Reset Gate)。
将单元状态与输出合并为一个状态:
GRU只用了两个gates,将LSTM中的输入门和遗忘门合并成了更新门。并且并不把线性自更新建立在额外的memorycell上,而是直接线性累积建立在隐藏状态上,并靠gates来调控。

猜你喜欢

转载自blog.csdn.net/qq_37903108/article/details/82150660