深度学习(二)BP求解过程和梯度下降
一、原理
重点:明白偏导数含义,是该函数在该点的切线,就是变化率,一定要理解变化率。
1)什么是梯度
梯度本意是一个向量(矢量),当某一函数在某点处沿着该方向的方向导数取得该点处的最大值,即函数在该点处沿方向变化最快,变化率最大(为该梯度的模)。
2)代价函数有哪些
0-1损失函数(0-1 loss function):
L(Y,f(X))={1,0,Y≠f(X)Y=f(X)
平方损失函数(quadratic loss function)
L(Y,f(X))=(Y−f(X))2
绝对损失函数(absolute loss function)
L(Y,f(X))=|Y−f(X)|
对数损失函数(logarithmic loss function) 或对数似然损失函数(log-likelihood loss function)
L(Y,P(Y|X))=−logP(Y|X)
3)为什么需要代价函数(损失函数)
a: 学自动化的时候,我们要求系统是收敛的,稳定的。对于模型,输入x,产生的输出y,希望能最接近期望的Y,如果y不能等于Y时,我们希望知道模型离期望的Y有多远,所以我们需要定义一个cost function以衡量模型的好坏。既然是付出代价,我们希望付出的代价最小,因为输入的x是逐步添加的,我们不可能一步到位,那么选择下降最快的方向,尽快达到最低,使得系统稳定。这就是我们需要梯度的原因。(更新权值即为更新这个函数的斜率(切线的斜率,该函数的变化快慢),在这个代价函数中,这个是以权值为参数的函数,我们要做的就是找到最小误差时,权值为多少)
梯度下降原理:将函数比作一座山,我们站在某个山坡上,往四周看,从哪个方向向下走一小步,能够下降的最快;

b: 假如你现在有一个凸目标函数J(x)如下图,你想要求它的最小值。
假如你是在左边那个点上面(画出了切线和函数相交的那个点),你要往最小值的那个地方跑,你肯定不能够往上面跑对吧。要是你高中学过物理的话,你就会知道,你必须完全把速度用到切线的方向上面你才能够最快的到最小值。为什么呢?因为要是你的速度在其他的方向,最后算是你往下的速度只是你一开始速度的一个分量。那么肯定就没有那么大的速度往最小值走了对吧。
我们又知道,在一个点的切线方向就是导数的方向。你从上面的图来看的话,在最小值点处的导数是0,然后最小值左边的导数都小于0,最小值右边的导数都大于0.(这里别问我为什么)。
对于左边那个点的横坐标,是应该加上该点导数的值还是应该减去该点导数的值才能够往最小值的横坐标移动呢?如果x值要往右边移动,需要加上一个正的数,又因为这里的导数是小于0的,那么就需要减去导数值。最终对于左边这个点来说是要减去导数的值才能够向最小值移动。
对于右边那个点,想去最小值那么x需要往左边移动,因为该点的导数是大于0的,那么往左边移动需要减去导数的值。那么还是需要减去导数的值。
个人总结:
在我们确定了输入了以后,这个代价函数就是以权值为参数的一个函数,我们要做的就是去寻找最小的误差点,求最小就是要去找权值点,因为这是一个以权值为参数的函数,求导,导数的含义就是变化率,当我们求出导数的值为正数时,则说明这是这是一个上升的点,上升说明了这个函数的误差率在变大,我们要往其反方向走(我们以增大的方向为正方向),怎么走,这个时候就要去找方向了,找哪个方向更快的下降,答案是切线的方向(如有不懂的地方,可以百度).当导数为负数时,则相反!
所以存在这样的式子:
这个方向是个矢量,表示朝哪个方向走,而n(导数前面那个符号)表示步长,表示我朝这个方向走多长(步长由我们用户自定义)。
二求解过程
发现是不是都是关于E对w的求导。符号第一点的要求。
定义变量&4和&8
观察上图,我们发现权重wji仅能通过影响节点j的输入值影响网络的其它部分(前面只能影响后面),设netj是节点j的加权输入。
即
2)隐藏层权值训练
深度学习(二)BP求解过程和梯度下降的更多相关文章
- 深度学习面试题03:改进版梯度下降法Adagrad、RMSprop、Momentum、Adam
目录 Adagrad法 RMSprop法 Momentum法 Adam法 参考资料 发展历史 标准梯度下降法的缺陷 如果学习率选的不恰当会出现以上情况 因此有一些自动调学习率的方法.一般来说,随着迭代 ...
- 【深度学习】BP反向传播算法Python简单实现
转载:火烫火烫的 个人觉得BP反向传播是深度学习的一个基础,所以很有必要把反向传播算法好好学一下 得益于一步一步弄懂反向传播的例子这篇文章,给出一个例子来说明反向传播 不过是英文的,如果你感觉不好阅读 ...
- 深度学习之BP算法
1.介绍 人工神经网络(Artificial Neural Network,ANN)简称神经网络(NN),是在现代生物学研究人脑组织所取得成果的基础上提出来的.人工神经网络是大脑生物结构的数学建模,有 ...
- go微服务框架go-micro深度学习 rpc方法调用过程详解
摘要: 上一篇帖子go微服务框架go-micro深度学习(三) Registry服务的注册和发现详细解释了go-micro是如何做服务注册和发现在,服务端注册server信息,client获取serv ...
- 深度学习二、CNN(卷积神经网络)概念及理论
一.卷积神经网络(CNN) 1.常见的CNN结构有:LeNet-5.AlexNet.ZFNet.VGGNet.ResNet等.目前效率最高的是ResNet. 2.主要的层次: 数据输入层:Input ...
- go微服务框架go-micro深度学习(五) stream 调用过程详解
上一篇写了一下rpc调用过程的实现方式,简单来说就是服务端把实现了接口的结构体对象进行反射,抽取方法,签名,保存,客户端调用的时候go-micro封请求数据,服务端接收到请求时,找到需要调用调 ...
- go微服务框架go-micro深度学习(二) 入门例子
上一篇帖子简单介绍了go-micro的整体框架结构,这一篇主要写go-micro使用方式的例子,中间会穿插一些go-micro的源码,和调用流程图,帮大家更好的理解go-micro的底层.更详细更具体 ...
- 吴恩达深度学习:2.9逻辑回归梯度下降法(Logistic Regression Gradient descent)
1.回顾logistic回归,下式中a是逻辑回归的输出,y是样本的真值标签值 . (1)现在写出该样本的偏导数流程图.假设这个样本只有两个特征x1和x2, 为了计算z,我们需要输入参数w1.w2和b还 ...
- 深度学习基础(CNN详解以及训练过程1)
深度学习是一个框架,包含多个重要算法: Convolutional Neural Networks(CNN)卷积神经网络 AutoEncoder自动编码器 Sparse Coding稀疏编码 Rest ...
随机推荐
- 微信小程序web-view之动态加载html页面
官方推出的web-view方便了很多开发人员. 我们在做的时候,经常会想到写一个小程序的page然后通过动态加载web-view的形式来完成其他功能页面的开发. 之前研究web-view的时候发现网上 ...
- sql 循环 ,随机数,循环插入一年数据
--循环插入一年的时间 DROP TABLE #temp CREATE TABLE #temp (date DATETIME); DECLARE @year INT ; WITH a1 AS ( SE ...
- Devexpress Tab Control 文档
https://documentation.devexpress.com/WPF/8078/Controls-and-Libraries/Layout-Management/Tab-Control/P ...
- Ubuntu 12.04 Openssh 安装过程
1.输入 apt-get install openssh-server 注意 出现依赖 需要使用 查看依赖是否需要,如果不需要可以直接删除,sudo apt-get remove XXXX 或者sud ...
- ceph 移除 osd
1:从crush中移除节点ceph osd crush remove osd.0 2:删除节点ceph osd rm osd.0 3:删除节点认证(不删除编号会占住)ceph auth del osd ...
- BZOJ 4719--天天爱跑步(LCA&差分)
4719: [Noip2016]天天爱跑步 Time Limit: 40 Sec Memory Limit: 512 MBSubmit: 1464 Solved: 490[Submit][Stat ...
- PHP和JS中全局变量和局部变量
一,PHP中全局变量和局部变量 php与C++中对全局变量和局部变量定义类似,全局变量:函数外定义的变量,在全局通用:局部变量:在函数内定义的变量,只在函数内有效.PHP中变量范围跨越了include ...
- Windows文件共享,报错"该用户已禁用"解决方案
文章背景:学校机器有俩个用户think和adminsitrator.默认administrator禁用,think属于administrators组. 经排错得问题出现情况.因为同学们都是Think用 ...
- Struts2运行原理
一个请求在Struts2框架中的处理大概分为以下几个步骤: 1 客户端发送请求:2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤 ...
- Oracle执行SQL语句的过程
转载至:http://blog.csdn.net/aqszhuaihuai/article/details/7024551 当我们提交一条sql语句时,Oracle会做哪些操作呢? Oracle会为每 ...