吴恩达机器学习笔记(四) —— BP神经网络
主要内容:
一.模型简介
二.一些变量所代表的含义
三.代价函数
四.Forward Propagation
五.Back Propagation
六.算法流程
待解决问题:
视频中通过指出:当特征变多时(或者非线性),利用logistic回归模型解决问题将导致计算量很大,即算法复杂度很高。然后就此引出神经网路,所以说神经网路在解决多特征(或者非线性)问题上是比logistic回归更优的。但为什么呢?有什么合理的解释?

一.模型简介
1.最简单的神经网络就是只有输入层和输出层:

2.稍微复杂一点(中间的被称为隐藏层):

3.其中,当前层的输出作为下一层每一个结点的输入(的一部分),即n*m的全相连,且每一条边都带有权重,就是说我们要训练的参数。
4.在每一层当中,除了我们预先设定的结点之外,还在最上面添加一个结点(bias unit)作为偏移值,其值为1。
5.hθ(x)为Logistic回归函数。
二.一些变量所代表的含义
为了方便描述神经网络,对一些变量进行描述(注意:此处的上标表示第几层,从1开始):
x:最原始的输入
a:当前层的输出,其中a1(上标) = x
z:z = θx
有如下关系:


三.代价函数
1.代价函数:

2.向量化后:

四.Forward Propagation
foward propagation就是将输入x,经过一层层的神经网络,最后到达输出层,并输出结果hθ(x)。
一张图可以很好地解释其过程:

五.Back Propagation(求梯度)
我们可以通过foward propagation求出输出结果hθ(x),接下来就是要减少误差的而进行参数调整了,一贯的做法是梯度下降。
可知Logistic回归的梯度下降的表达式为:

由于神经网络也是利用Logistic回归的sigmoid函数,那么其梯度下降的表达式也应该类似。
可知最后一层,也就是输出层的输出结果为hθ(x),也就是预测值。那么误差就是hθ(x)-Y,对应了上式中的“(hθ(x)-Y)”,记δ=hθ(x)-Y。
但是,我们只知道最后一层的δ,即hθ(x)-Y,而隐藏层的δ却不能够直接看出来,那应该如何呢?
可知输出层的hθ(x),是倒数第二层通过一定的规则计算出来的;反过来,倒数第二层计算所出现的误差,也可以通过输出层hθ(x)与真实值的误差反过来求。其中最重要的就是参数θ,因为它规定着输入(或输出)在当前结点所占的比例。
知道了Back Propagation的思想后,就需要着手具体如何求出δ了,其方法就是微积分中的“链式求导”。可知当前层的输出a(l)(可以看做一个变量),通过相关的映射(或者说函数)得出下一层的输出a(l+1)。此时把a(l+1) 看成y,a(l)看成x,而y = f(x)。我么已知y所造成的误差为δ,而y又是x的函数,所以x所造成的误差就等于:δ*f'(x)。与Logistic回归不同的是:神经网络在两层之间存在着n*m的全相连,每一条边都代表着a-->b的权重,即参数θ。在求误差δ的时候,应该乘上参数θ,如下:


因此,一直往前递推,就可以求出各层(输入层不需要求,因为总为0)的误差δ,即“(hθ(x)-Y)”。梯度就可以求出来了,之后就轮到梯度下降大显身手了。
求梯度的过程总结:

六.算法流程:


吴恩达机器学习笔记(四) —— BP神经网络的更多相关文章
- 吴恩达机器学习笔记(六) —— 支持向量机SVM
主要内容: 一.损失函数 二.决策边界 三.Kernel 四.使用SVM (有关SVM数学解释:机器学习笔记(八)震惊!支持向量机(SVM)居然是这种机) 一.损失函数 二.决策边界 对于: 当C非常 ...
- Coursera-AndrewNg(吴恩达)机器学习笔记——第四周编程作业(多分类与神经网络)
多分类问题——识别手写体数字0-9 一.逻辑回归解决多分类问题 1.图片像素为20*20,X的属性数目为400,输出层神经元个数为10,分别代表1-10(把0映射为10). 通过以下代码先形式化展示数 ...
- [吴恩达机器学习笔记]12支持向量机5SVM参数细节
12.支持向量机 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考资料 斯坦福大学 2014 机器学习教程中文笔记 by 黄海广 12.5 SVM参数细节 标记点选取 标记点(landma ...
- [吴恩达机器学习笔记]11机器学习系统设计3-4/查全率/查准率/F1分数
11. 机器学习系统的设计 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考资料 斯坦福大学 2014 机器学习教程中文笔记 by 黄海广 11.3 偏斜类的误差度量 Error Metr ...
- 吴恩达机器学习笔记61-应用实例:图片文字识别(Application Example: Photo OCR)【完结】
最后一章内容,主要是OCR的实例,很多都是和经验或者实际应用有关:看完了,总之,善始善终,继续加油!! 一.图像识别(店名识别)的步骤: 图像文字识别应用所作的事是,从一张给定的图片中识别文字.这比从 ...
- 吴恩达机器学习笔记39-误差分析与类偏斜的误差度量(Error Analysis and Error Metrics for Skewed Classes)
如果你准备研究机器学习的东西,或者构造机器学习应用程序,最好的实践方法不是建立一个非常复杂的系统,拥有多么复杂的变量:而是构建一个简单的算法,这样你可以很快地实现它. 构建一个学习算法的推荐方法为:1 ...
- Machine Learning——吴恩达机器学习笔记(酷
[1] ML Introduction a. supervised learning & unsupervised learning 监督学习:从给定的训练数据集中学习出一个函数(模型参数), ...
- [吴恩达机器学习笔记]14降维5-7重建压缩表示/主成分数量选取/PCA应用误区
14.降维 觉得有用的话,欢迎一起讨论相互学习~Follow Me 14.5重建压缩表示 Reconstruction from Compressed Representation 使用PCA,可以把 ...
- [吴恩达机器学习笔记]12支持向量机3SVM大间距分类的数学解释
12.支持向量机 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考资料 斯坦福大学 2014 机器学习教程中文笔记 by 黄海广 12.3 大间距分类背后的数学原理- Mathematic ...
随机推荐
- Heterogeneity Wins
 Heterogeneity Wins Edward Garson THE nATuRAl EvoluTion oF CoMpuTER TECHnology has brought about im ...
- Java和C++ 比較
总体差别 1. C/C++是直接执行在机器上(编译后为机器码),而java编译后产生*.class文件(字节码)是执行在java虚拟机上在(JVM),经过JVM解译(机器码)再放到真实机器上执行. J ...
- 使用新版MonoDevelop来进行unity工程调试
现在可以使用新版的MonoDeveloper来调试Unity工程了,新版的MonoDeveloper界面上漂亮很多,而且使用.调试上感觉也更舒服了.先上一张图: 安装方法如下: 登陆网址:http ...
- Vue+原生App混合开发手记#1
项目的大致需求就是做一个App,里面集成各种功能供用户使用,其中涉及到很多Vue的使用方法,单独总结太麻烦,所以通过这几篇笔记来梳理一下.原型图如下: 路由配置 主界面会用到一些原生App方法,比如验 ...
- distcc加速内核编译
Linux内核编译实在是费时间的事,搞内核移植的时候总要编译,生命有一部分就浪费在等内核编译完成上,有心想买个HP的工作站,看了下Z840的价格,想想还是算了.distcc早就听说过,一直没有去试试, ...
- 大型网站技术学习-2. 云计算之OpenStack简述
上一章讲,虚拟化能够充分的利用资源,带来各种各样的好处. 当一个网站不大,只需要四五台机器就可以支撑的时候,可以采用手工的方式虚拟机,但是当网站流量很高,需要成千上万台机器的时候,那就非常不方便了. ...
- nginx proxy_pass 里的”/”
见配置,摘自nginx.conf 里的server 段: server { listen 80; server_name abc.163.com ; location / { proxy_pass h ...
- Python调用API接口的几种方式 数据库 脚本
Python调用API接口的几种方式 2018-01-08 gaoeb97nd... 转自 one_day_day... 修改 微信分享: 相信做过自动化运维的同学都用过API接口来完成某些动作.AP ...
- 开源项目之easyrtmp
https://github.com/bigbluebutton86/EasyRTMP/tree/master/src http://dl.linux-sunxi.org/SDK/A20/A20_SD ...
- 小技巧:怎样以另外的Windows用户执行SSMS
可能会碰到这种问题.你须要在一台机器上面使用不同的Windows账户连接到SQL Server做測试.默认情况下,你须要用不同的Windows账户登录然后測试. 实际上不须要每一个windows登陆. ...