吴恩达《Machine Learning Yearning》总结(21-30章)
21.偏差和方差举例
前提:对于人类而言,可以达到近乎完美的表现(即人类去做分类是误差可以接近0)。
(1)假设算法的表现如下:训练误差率:1%,开发误差率:11%;此时即为高方差(high variance),也被称为过拟合(overfitting)。
(2)假设算法的表现如下:训练误差:15&,开发误差率:16%;此时即为高偏差(high bias),也被称为欠拟合(underfitting)。
(3)假设算法的表现如下:训练误差:15%,开发误差率:30%;此时即为高偏差和高方差。
(4)假设算法的表现如下:训练误差:0.5%,开发误差率:1%;此时算法已经非常完美。
22.与最优误差率比较
举例:当一个连人类都很难完成(如很多噪音的语音识别)的分类任务,人类的误差率达到14%,此时最完美的误差为14%,该误差称为最优误差率,也称为贝叶斯错误率(Bayes error rate)。以上的最优错误率是可以确定的,但是有些问题如电影推荐,很难去确定其最优误差率是多少。
此时偏差和进一步细化:偏差=最优误差率+可避免偏差;其中可避免偏差高时才值得去优化。
23..处理偏差和方差
(1)如果具有较高的可避免偏差,那么可以加大模型的规模(例如增加神经元的层数、每层神经元的个数)。
(2)如果具有较高的方差,那么可以向训练集增加数据。
其他(3)改变网络的架构,这样会带来新的结果。
在增大网络模型时,会带来高方差的风险,但只要通过适当的正则化(如L2),或者dropout等策略,就不会出现这样的问题。
24.偏差和方差间的均衡
在现如今,往往可以获得足够的数据,并且足够的算力来支撑非常大的网络,所以不会出现此消彼长的情况。
25.减少可避免偏差的技术
(1)加大模型规模(例如层数/神经元个数),此时加入正则化可以抵消方差的增加。
(2)根据误差分析结果修改输入特征。
(3)减少或者去除正则化。这种方式会增加方差。
(4)修改模型架构。这项技术会同时影响方差和偏差。
26.训练集误差分析
在训练集上也做类似于开发集上的误差分析。
27.减少方差的技术
(1)添加更多的训练数据。
(2)加入正则化(L1,L2,Dropout),该项会增大偏差。
(3)加入提前终止(比如根据开发集提前终止梯度下降),这项技术会增加偏差,一些学者将其归入正则化技术之一。
(4)通过特征选择减少特征的数量和种类,当数据集很小时,特征选择非常有用。
(5)减小模型规模,谨慎使用。
以下两种方式和减少偏差的策略相同
(6)根据误差分析结果修改输入特征。
(7)修改模型架构。
28.诊断偏差与方差:学习曲线


学习1曲线:误差随数据量增加的变化趋势。
学习曲线有一个缺点:当数据量变得越来越多是,将很难预测后续红色曲线的走向。
29.绘制训练误差曲线

训练误差上升说明:比如两张图片算法很容易就分辨出来,其误差为0,当增加到100张时,就不一定都能正确识别了。
30.解读学习曲线:高偏差

观察结果:
(1)随着我们添加更多的训练数据,训练误差只会变得更糟,因此蓝色的训练误差曲线只会保持不动或上升,这表明它只会远离期望的性能水平(绿色的线)。
(2)红色的开发误差曲线通常要高于蓝色的误差曲线,因此只要训练误差高于期望性能水平,通过添加更多数据来让红色开发误差曲线下降到期望性能水平之下也基本不可能。
之前我们讨论的都是曲线的最右端,而通过学习曲线则更加的群面了解算法。
吴恩达《Machine Learning Yearning》总结(21-30章)的更多相关文章
- 吴恩达Machine Learning 第一周课堂笔记
1.Introduction 1.1 Example - Database mining Large datasets from growth of automation/ ...
- 吴恩达Machine Learning学习笔记(一)
机器学习的定义 A computer program is said to learn from experience E with respect to some class of tasks T ...
- 吴恩达Machine Learning学习笔记(四)--BP神经网络
解决复杂非线性问题 BP神经网络 模型表示 theta->weights sigmoid->activation function input_layer->hidden_layer ...
- 吴恩达Machine Learning学习笔记(三)--逻辑回归+正则化
分类任务 原始方法:通过将线性回归的输出映射到0-1,设定阈值来实现分类任务 改进方法:原始方法的效果在实际应用中表现不好,因为分类任务通常不是线性函数,因此提出了逻辑回归 逻辑回归 假设表示--引入 ...
- 吴恩达Machine Learning学习笔记(二)--多变量线性回归
回归任务 多变量线性回归 公式 h为假设,theta为模型参数(代表了特征的权重),x为特征的值 参数更新 梯度下降算法 影响梯度下降算法的因素 (1)加速梯度下降:通过让每一个输入值大致在相同的范围 ...
- 吴恩达 Deep learning 第二周 神经网络基础
逻辑回归代价函数(损失函数)的几个求导特性 1.对于sigmoid函数 2.对于以下函数 3.线性回归与逻辑回归的神经网络图表示 利用Numpy向量化运算与for循环运算的显著差距 import nu ...
- 吴恩达 Deep learning 第一周 深度学习概论
知识点 1. Relu(Rectified Liner Uints 整流线性单元)激活函数:max(0,z) 神经网络中常用ReLU激活函数,与机器学习课程里面提到的sigmoid激活函数相比有以下优 ...
- Github | 吴恩达新书《Machine Learning Yearning》完整中文版开源
最近开源了周志华老师的西瓜书<机器学习>纯手推笔记: 博士笔记 | 周志华<机器学习>手推笔记第一章思维导图 [博士笔记 | 周志华<机器学习>手推笔记第二章&qu ...
- 我在 B 站学机器学习(Machine Learning)- 吴恩达(Andrew Ng)【中英双语】
我在 B 站学机器学习(Machine Learning)- 吴恩达(Andrew Ng)[中英双语] 视频地址:https://www.bilibili.com/video/av9912938/ t ...
- Coursera课程《Machine Learning》吴恩达课堂笔记
强烈安利吴恩达老师的<Machine Learning>课程,讲得非常好懂,基本上算是无基础就可以学习的课程. 课程地址 强烈建议在线学习,而不是把视频下载下来看.视频中间可能会有一些问题 ...
随机推荐
- day7学python 初识简单模板
初识简单模板 模块与包 1.模块:用来从逻辑上组织python代码(变量,函数,类,逻辑:实现功能),本质是.py结尾的文件 但导入的模块名,无.py 2.包:从逻辑上组织模块,本质就是目录(含有_i ...
- MVC,MVP 和 MVVM 的区别之处
其实我一直以来,虽然做的是前端的工作,但是有一个疑问,就是什么是mvc模式,虽然大概知道,但是具体确实说不上来的的,今天,我就好好总结一下mvc ,mvp,mvvm模式的区别与相同. 1.MVC模式: ...
- loj #2013. 「SCOI2016」幸运数字
#2013. 「SCOI2016」幸运数字 题目描述 A 国共有 n nn 座城市,这些城市由 n−1 n - 1n−1 条道路相连,使得任意两座城市可以互达,且路径唯一.每座城市都有一个幸运数字,以 ...
- Python之路Python文件操作
Python之路Python文件操作 一.文件的操作 文件句柄 = open('文件路径+文件名', '模式') 例子 f = open("test.txt","r&qu ...
- 关于hive Metadata 使用 MsSQL
下面的页面里说明, http://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.0.6.0-Win/bk_installing_hdp_for_window ...
- 使用C#实现SSLSocket加密通讯 Https
原文链接 http://blog.csdn.net/wuyb_2004/article/details/51393290 using System; using System.Collections; ...
- struts2学习笔记(二)—— struts2的架构【转】
一.系统架构 Struts2的官方文档附带了Struts2的架构图. 从这张图能够非常好的去理解Struts2 关于图中的Key: Servlet Filters:过滤器链,client的全部请求 ...
- Kibana6.x.x源码分析--import相关说明
/** * 模块的引入规则: * 不带路径的去node_modules中去找: * 带路径的去相应的路径中去找: * 模块可以不加后缀名,node会依次尝试.mjs..js..json..node 这 ...
- Python-list()之remove()/pop() I /del()
代码块 remove #remove删除首个符合条件的元素,并不删除特定的索引. n =[1,2,2,3,4,5] n.remove(3) print (n) #输出 [1, 2, 2, 4, 5] ...
- vue控制父子组件渲染顺序
在父组件中,如下图渲染子组件,那如何在父组件中加入一些数据获取逻辑且能控制子组件渲染呢. 就是像在上图中红框圈起来的那样,挂个 ok(其他你自己定义的也可以) 参数,同时在父组件的任何生命周期中去改变 ...