二、RNN训练过程
RNN和人工神经网络一样,也具有输入层、隐藏层和输出层,但不一样的是RNN的隐藏层和深度神经网络相似,具有多层隐藏层,每一层受当前时刻输入和前一时刻输出的影响。整个RNN网络结构如下:
、
、
代表t-1、t 和 t+1 时刻的输入,W表示输入的权重,U表示当前时刻输入 的权重,V表示输出的权重,他们都是权值共享,即每一个W的值都是一样的,U、V同理。
在t=1时,一般令s0=0,或者初始化一个值:
其中,f和g均为激活函数. 其中f可以是tanh,relu,sigmoid等激活函数,g通常是softmax也可以是其他。
后面的每一层随着时间传递:
权值更新:
采用BPTT算法进行反向更新,从输出误差E开始,往前面分别对W、U、V进行梯度更新,详细过程可参考博客
三、LSTM(长短时记忆网络)
长短时记忆网络在RNN的基础之上添加了长期依赖信息,主要是在每一个cell(即每一个时刻的输入单元)增添了三个门控----遗忘门、输入门和输出门。整个前向传递过程如下图所示:
最左边的
是遗忘门,遗忘门用于选择需要记住多少信息
是遗忘矩阵,由0-1组成,以此来决定保留多少当前时刻的状态,
含有前t-1个时刻的信息。中间代表输入门,其中的
和
分别是输入矩阵和状态矩阵
经过当前时刻单元的记忆状态信息
(有时也被叫作调制输入
)即为:
最右边的代表输出门
是输出矩阵
其中符号
表示按元素乘(对应位置元素相乘),
代表A,B的增广矩阵,
代表sigmoid激活函数。
好了,前向传递过程结束,过程简单易懂。参考博客:
https://zybuluo.com/hanbingtao/note/581764
四、CNN卷积神经网络
图像是由像素点构成,若采用全连接的方式会导致参数量巨大,消耗资源,且误差反向传播到每一个权重上误差会变的很小,调整参数时容易引起过拟合;再者图像本身具有二维局部特征,一张图片中并不是所有点都是我们需要的,即并不是所有像素值都是“特征”。所以,有了CNN卷积神经网络的出现,主要用于提取二维图像的局部特征,以此进行分类或者回归。
第一步:卷积操作,如下图
粉红色模块是
,深度为3的图像,蓝色模块是
深度为3的卷积核(filter)作为模板,从左上角进行滑动,对应位置元素相乘再相加作为新的像素值,设定步长stride为1,则最后得到一个
的像素矩阵。
上图中,一般使用多个卷积核对同一个图像进行卷积操作以提取多个特征
上图是使用6个卷积核对图像进行操作后的结果,得到
的结果,卷积核的大小一致
,值不同。
上面的卷积操作算是一次卷积操作,不过中间那些地方存在激活函数后面进行总结的时候再说,一般情况下需要进行多次卷积操作以得到更加细节的特征
上图使用
的模板进行第二次卷积操作,卷积核数量为10个,最后得到一个
的结果
第二步:池化操作pooling
池化操作,使用
的max模板或者average模板,最后得到一个
的池化结果
第三步:全连接
把上面的池化结果flat展平进行全连接,再进行softmax进行分类。
注意点:
1.每一次卷积操作后都需要进行激活函数激活,激活函数一般使用Relu
2.pooling池化操作后不需要再进行激活函数激活
3.全连接层之后要使用激活函数激活
4.参考图