卷积神经网络(CNN)学习笔记2:模型训练
来源:互联网 发布:linux中exec命令 编辑:程序博客网 时间:2024/05/22 00:09
http://www.jeyzhang.com/cnn-learning-notes-2.html
上篇博文主要对CNN的基本网络结构及连接方式做了简单的介绍,还介绍了一个界内经典的LeNet-5
模型。下面重点介绍CNN模型的训练过程/参数学习,在阅读本文之前,最好需要有以下方面的预备知识:
- 神经网络基础(网络结构,前向/后向传播方式,激活函数等);
- 基础的最优化求解方法(梯度法,牛顿法等);
- 机器学习基础
神经网络模型常用于处理有监督学习的问题,例如分类问题,CNN也不例外。模型需要一些有标注的数据进行训练,训练过程中主要涉及到网络的前向传播和反向传播计算,前向传播体现了特征信息的传递,而反向传播则是体现误差信息对模型参数的矫正。
CNN前向传播
与普通的神经网络的前向传播过程一样。用
其中 sigmod
或者tanh
等函数。
对于卷积层,其前向传播如下图:
CNN反向传播
代价函数
代价函数(或损失函数)有较多形式,常用的有平方误差函数,交叉熵等。这里我们用平方误差函数作为代价函数,公式如下:
以上公式描述了样本
BP反向传播
基本的反向传播与BP神经网络类似,首先,简单回顾一下BP神经网络中的反向传播计算过程:
权值参数调整的方向如下公式:
其中,
其中,
其中,
特殊的反向传播
由于CNN中有不同类型的层级,并且层级之间的连接关系有可能是不确定的(如LeNet-5网络中S2层到C3层)。所以,有几个情形下的反向传播比较特别:
- 情况一:当前为Pooling层,前一层是卷积层;
- 情况二:当前为卷积层,前一层是Pooling层;
- 情况三:当前层与前一层的连接关系不确定(?尚不理解?);
情况一:当前为Pooling层,前一层是卷积层
其中,Kronecker
乘积的计算如下:
情况二:当前为卷积层,前一层是Pooling层
以上的矩阵1和矩阵2进行卷积操作时,需要将矩阵2先水平翻转,然后再垂直翻转;最后在矩阵1上进行卷积操作
(和前向传播时类似)。
情况三:当前层与前一层的连接关系不确定
个人理解,当前层与前一层的连接关系不确定时,反向传播与传统的BP算法类似,只不过更新的是局部连接的那些值。所以需要提前记录当前层的神经元与前一层的哪些元素是连接的。
本文结束,感谢欣赏。
- 卷积神经网络(CNN)学习笔记2:模型训练
- 卷积神经网络(CNN)学习笔记2:模型训练
- CNN卷积神经网络学习笔记
- CNN卷积神经网络学习笔记
- 【机器学习】卷积神经网络(CNN)模型结构
- (4)Deep Learning模型之:CNN卷积神经网络(2)模型训练
- CNN卷积神经网络学习笔记2:网络结构
- 卷积神经网络(CNN)学习笔记2:举例理解
- 卷积神经网络(CNN)学习笔记
- kaldi学习笔记之卷积神经网络(CNN)
- 卷积神经网络(CNN)学习笔记
- 卷积神经网络(CNN)学习笔记
- 卷积神经网络(CNN)笔记
- CNN卷积神经网络笔记
- 卷积神经网络(CNN)模型结构
- 卷积神经网络模型(CNN)
- 卷积神经网络(CNN)模型结构
- 干货 | 深度学习之卷积神经网络(CNN)的模型结构
- 关于西门子PLC300的置位和复位指令
- 初识Activiti(一)
- Ubuntu 14.04 + Caffe配置小记(CPU模式,无GPU,无Cuda)
- 20170216. 极线约束(epipolar constraint )
- UE4 GENERATED_UCLASS_BODY 与 GENERATED_BODY 区别
- 卷积神经网络(CNN)学习笔记2:模型训练
- 动态数据源配置
- 将博客搬至CSDN
- 简谈关于angularjs中$socpe.$apply()的应用场景
- 关于JDK和JRE
- MTK 连接CCT 连不上 出现CDC Serial驱动无法识别
- 中介者模式(24)
- 2017 年最值得期待的 5 个新 Linux 发行版
- 缘起