(六) 6.3 Neurons Networks Gradient Checking
BP算法很难调试,一般情况下会隐隐存在一些小问题,比如(off-by-one error),即只有部分层的权重得到训练,或者忘记计算bais unit,这虽然会得到一个正确的结果,但效果差于准确BP得到的结果。
有了cost function,目标是求出一组参数W,b,这里以表示,cost function 暂且记做
。假设
,则
,即一维情况下的Gradient Descent:
根据6.2中对单个参数单个样本的求导公式:
可以得到每个参数的偏导数,对所有样本累计求和,可以得到所有训练数据对参数 的偏导数记做
,
是靠BP算法求得的,为了验证其正确性,看下图回忆导数公式:
可见有:那么对于任意
值,我们都可以对等式左边的导数用:
来近似。
给定一个被认为能计算 的函数
,可以用下面的数值检验公式
应用时,通常把设置为一个很小的常量,比如在
数量级,最好不要太小了,会造成数值的舍入误差。上式两端值的接近程度取决于
的具体形式。假定
的情况下,上式左右两端至少有4位有效数字是一样的(通常会更多)。
当是一个n维向量而不是实数时,且
,在 Neorons Network 中,J(W,b)可以想象为 W,b 组合扩展而成的一个长向量
,现在又一个计算
的函数
,如何检验
能否输出到正确结果呢,用
的取值来检验,对于向量的偏导数:
根据上图,对 i 求导时,只需要在向量的第i维上进行加减操作,然后求值即可,定义
,其中
和
几乎相同,除了第
行元素增加了
,类似地,
得到的第
行减小了
,然后求导并与
比较:
中的参数对应的是参数向量中一个分量的细微变化,损失函数J 在不同情况下会有不同的值(比如三层NN 或者 三层autoencoder(需加上稀疏项)),上式中左边为BP算法的结果,右边为真正的梯度,只要两者很接近,说明BP算法是在正确工作,对于梯度下降中的参数是按照如下方式进行更新的:
即有 分别为:
最后只需总体损失函数J(W,b)的偏导数与上述 的值比较即可。
除了梯度下降外,其他的常见的优化算法:1) 自适应的步长,2) BFGS L-BFGS,3) SGD,4) 共轭梯度算法,以后涉及到再看。
(六) 6.3 Neurons Networks Gradient Checking的更多相关文章
- CS229 6.3 Neurons Networks Gradient Checking
BP算法很难调试,一般情况下会隐隐存在一些小问题,比如(off-by-one error),即只有部分层的权重得到训练,或者忘记计算bais unit,这虽然会得到一个正确的结果,但效果差于准确BP得 ...
- (六) 6.1 Neurons Networks Representation
面对复杂的非线性可分的样本是,使用浅层分类器如Logistic等需要对样本进行复杂的映射,使得样本在映射后的空间是线性可分的,但在原始空间,分类边界可能是复杂的曲线.比如下图的样本只是在2维情形下的示 ...
- (六) 6.2 Neurons Networks Backpropagation Algorithm
今天得主题是BP算法.大规模的神经网络可以使用batch gradient descent算法求解,也可以使用 stochastic gradient descent 算法,求解的关键问题在于求得每层 ...
- (六)6.10 Neurons Networks implements of softmax regression
softmax可以看做只有输入和输出的Neurons Networks,如下图: 其参数数量为k*(n+1) ,但在本实现中没有加入截距项,所以参数为k*n的矩阵. 对损失函数J(θ)的形式有: 算法 ...
- (六)6.5 Neurons Networks Implements of Sparse Autoencoder
一大波matlab代码正在靠近.- -! sparse autoencoder的一个实例练习,这个例子所要实现的内容大概如下:从给定的很多张自然图片中截取出大小为8*8的小patches图片共1000 ...
- (六)6.16 Neurons Networks linear decoders and its implements
Sparse AutoEncoder是一个三层结构的网络,分别为输入输出与隐层,前边自编码器的描述可知,神经网络中的神经元都采用相同的激励函数,Linear Decoders 修改了自编码器的定义,对 ...
- (六)6.13 Neurons Networks Implements of stack autoencoder
对于加深网络层数带来的问题,(gradient diffuse 局部最优等)可以使用逐层预训练(pre-training)的方法来避免 Stack-Autoencoder是一种逐层贪婪(Greedy ...
- Coursera Deep Learning 2 Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization - week1, Assignment(Gradient Checking)
声明:所有内容来自coursera,作为个人学习笔记记录在这里. Gradient Checking Welcome to the final assignment for this week! In ...
- 课程二(Improving Deep Neural Networks: Hyperparameter tuning, Regularization and Optimization),第一周(Practical aspects of Deep Learning) —— 4.Programming assignments:Gradient Checking
Gradient Checking Welcome to this week's third programming assignment! You will be implementing grad ...
随机推荐
- HDU 1788 Chinese remainder theorem again
题目链接 题意 : 中文题不详述. 思路 : 由N%Mi=(Mi-a)可得(N+a)%Mi=0;要取最小的N即找Mi的最小公倍数即可. #include <cstdio> #include ...
- PYTHON发送邮件时,有的服务器不用密码认证的
#!/usr/bin/python # coding: UTF-8 import smtplib from email.mime.text import MIMEText receivers_list ...
- ExtJs之工具栏及菜单栏
先培养一下大概的感觉吧. 基本按书上都弄出来了. <!DOCTYPE html> <html> <head> <title>ExtJs</titl ...
- DMS平台从.NET 1.1升级到.NET 4.0的升级步骤
1)复制新增的项目到4.0平台解决方案对应目录,添加到到解决方案中:2)合并公共文件(比如修改了FormMain主界面.基础类库.售后界面的修改)3)控件的修订(Dev少数属性可能需要手工调整为新的方 ...
- 消除ComponentOne(C1StudioNet_2013v2) 的注册提示
以后大家如果遇到还有提示,在License文件里添加:C1.Win.C1Command.C1OutBar, C1.Win.C1Command.4, Version=4.0.20132.19568, ...
- UVA 11076 Add Again 计算对答案的贡献+组合数学
A pair of numbers has a unique LCM but a single number can be the LCM of more than one possiblepairs ...
- C Primer Plus之文件输入/输出
文件 一个文件通常就是磁盘上的一段命名的存储区.但对于操作系统来说,文件就会更复杂一些.例如,一个大文件可以存储在一些分散的区段中,或者还会包含一些使操作系统可以确定其文件类型的附加数据. C将文件看 ...
- jmeter中线程之间传递参数
JMeter 变量作用域局限于所属线程.这样设计是经过深思熟虑的,目的是让测试线程能够独立运转.有时候用户可能需要在不同线程间(可能属于同一个线程组,也可能不属于同一个线程组)传递变量. 其中一种方法 ...
- centOS学习part2:安装JDK及tomcat
0 上一篇(http://www.cnblogs.com/souvenir/p/3875424.html)给大家介绍了centOS操作系统的安装,接下来我们来介绍centOS常用软件的安装以及配置,希 ...
- C# 使用WIN32API设置外部程序窗口无边框
使用代码 var wnd = win32.FindWindowA(null, "窗口标题"); Int32 wndStyle = win32.GetWindowLong(wnd, ...