神经网络及卷积神经网络的训练——反向传播算法
来源:互联网 发布:2016淘宝怎么刷 编辑:程序博客网 时间:2024/04/29 10:26
神经网络的训练过程,就是通过已有的样本,求取使代价函数最小化时所对应的参数。代价函数测量的是模型对样本的预测值与其真实值之间的误差,最小化的求解一般使用梯度下降法(Gradient Decent)或其他与梯度有关的方法。其中的步骤包括:
- 初始化参数。
- 求代价函数关于参数的梯度。
- 根据梯度更新参数的值。
- 经过迭代以后取得最佳参数,从而完成神经网络的训练。
其中最重要的步骤就是求梯度,这可以通过反向传播算法(back propagation)来实现。
单个神经元的训练
单个神经元的结构如下图。假设一个训练样本为
这里激励函数以使用sigmoid为例,当然也可以使用其他的比如tanh或者rectived linear unit函数。要求的参数为
通过定义变量
训练过程中,要求代价函数
公式(4)中根据sigmoid函数的定义
再根据链导法则,可以求得
在这个过程中,先求
多层神经网络的训练
多层网络的一个例子如下图。
假设第
对多层网络的训练需要求代价函数
1,第一步,根据代价函数的定义,求
2,在第
3,第三步,将误差信号从第
4, 对第
5, 最后可得
后向传播的一般形式
1,将整个神经网络加上代价函数的结构看做是一串函数(每一层对应一个函数)级联而成的一个函数,其中的每一个函数的导数都可通过数学表达式解析求得:
其中
2,根据链导法则,求代价函数对任何一个
3,在第
其中第
4,将所有样本的梯度相加得到总梯度。
对于不同的网络结构,在第2步和第3步中根据具体的
卷积神经网络的训练
卷积神经网络(CNN)的结构可阅读上一篇博文。CNN的基本层包括卷积层和池化层,二者通常一起使用,一个池化层紧跟一个卷积层之后。这两层包括三个级联的函数:卷积,求sigmoid函数(或使用其他激励函数),池化。其前向传播和后向传播的示意图如下:
后向传播需要求得这三个函数的导数。sigmoid函数前面已经讨论过,这里讲一讲其他两个函数的处理:
卷积函数的导数及后向传播
假设一个卷积层的输入向量是
卷积过程的示意图如下:
进一步可以得到
因此,通过
池化函数的导数及后向传播
池化函数是一个下采样函数,对于大小为
均值池化:
p范数池化
下采样的后向传播过程为上采样,其示意图为:
该后向传播过程就是利用
有了上述求导公式,就能够将误差信号传递到每一层的输出,再通过每一层的函数对参数的导数,可求得参数的梯度。有了计算梯度的方法,再通过基于梯度的最优化,就能寻得最优值,完成训练过程。
PPT及参考资料:
1,http://www.slideshare.net/kuwajima/cnnbp
2,http://ufldl.stanford.edu/tutorial/
- 神经网络及卷积神经网络的训练——反向传播算法
- 卷积神经网络——反向传播算法
- 卷积神经网络的反向传播算法(笔记)
- 卷积神经网络反向传播算法
- 卷积神经网络-反向传播
- 卷积神经网络(CNN)反向传播算法
- 卷积神经网络(CNN)反向传播算法
- 卷积神经网络(CNN)反向传播算法
- 卷积神经网络(CNN)反向传播算法
- 卷积神经网络(CNN)反向传播算法
- 卷积神经网络(CNN)反向传播算法
- 卷积神经网络(CNN)反向传播算法
- 卷积神经网络CNN(反向传播具体算法)
- 通俗语言描述人工神经网络,反向传播算法,卷积神经网络
- 反向传播(backpropagation)算法的多层神经网络训练过程
- 神经网络笔记——反向传播算法
- 卷积神经网络反向传播推导
- 神经网络-反向传播算法
- 添加pch全局引用文件
- C++及模式设计系列
- 【JS】【笔记】JavaScript入门经典(第5版)第3章 函数
- 转载的一篇关于头文件和库文件路径的文章
- 【JS】【笔记】JavaScript入门经典(第5版)第4章 DOM对象和内置对象
- 神经网络及卷积神经网络的训练——反向传播算法
- Codeforces Round #316 (Div. 2) E. Pig and Palindromes、HDU 5617 Jam's maze(dp)
- LeetCode Excel Sheet Column Number
- Spring的JDBC框架
- 【JS】【笔记】JavaScript入门经典(第5版)第5章 数据类型
- 【JS】【笔记】JavaScript入门经典(第5版)第6章 脚本
- C++对文本文件加密
- 【JS】【笔记】JavaScript入门经典(第5版)第7章 面向对象编程
- NativeXML使用有感