第3次课结构化机器学习
来源:互联网 发布:增值税开票软件安装 编辑:程序博客网 时间:2024/06/05 21:56
1. 为什么是ML策略
需求
建了一个模型,但是离目标还差点,需要改进该模型,有如下一些思路:
- 收集更多的数据
- 收集一些反例
- 用梯度下降训练更长的时间
- 用Adam优化算法
- 尝试更大的网络
- 尝试小点的网络
- 尝试dropout
- 添加
L2 正则项 - 网络结构方面的优化
- 激活函数
- 隐藏层节点
- …
但是尝试一个idea可能要花费几个月的时间,因此选择就成了一个问题。
定义
分析机器学习问题的方法,通过这些方法可以朝着最有希望的方向走
2. 正交化
两个例子
- 对于电视机来说,有很多按钮来控制画面,比如说旋转、拉伸、平移等,如果电视只有混合的按钮,旋转一个这样的按钮,会同时进行不同比例的旋转、拉伸、平移操作,那么就很难把只是偏移的画面调整到一个合适的位置
- 对于车来说,油门、刹车和方向盘,如果只有混合的装置,操作它会同时改变车速和方向,那么很难控制车的行为
- 所以需要把动作剥离开来,车速和方向单独控制,就可以很容易控制车的行为,称之为正交化
假设链
- early stoping,早期停止会影响对训练集的训练、同时改善验证集的表现,类似于一个混合按钮,同时改变多个表现
3. 单一数字评估指标
只用一个评价指标来衡量模型的好坏。
Presicion & Recall
- Presicion:判断是猫的图片中真的是猫的比例
- Recall:实际是猫的图片中被检测出来的比例
这两个指标需要权衡折中(trade-off),因为这两个指标是相对的,两个极端:把所有图片都判定为猫,那么Recall为100%,但是Presicion很低;只选择可能性最大那张图片是猫,那么Presicion就很可能是100%,但是Recall就很低。
这就导致了有的模型Presicion好Recall不好,有的模型Presicion不好Recall好,有两个指标的时候就不好比较哪个模型比较好。所以单个指标有利于量化模型的好坏,快速挑选好的模型。
F1 score
综合考虑Presicion和Recall的指标,是Presicion和Recall的调和平均数(harmonic mean)
- 计算公式
- 课后笔记里Recall的公式错误
4. 满足和优化指标
已知2个评价指标准确度和运行速度,如何综合得到一个指标?
- 线性加权组合:cost = accuracy-0.5*running_time
- 把指标分为2类:满足指标(satisfing metric),只需要满足一定的条件就可以,例如运行速度小于100ms;优化指标(optimistizing metric),需要优化的指标,越大越好,例如准确度,即挑选一个作为优化指标,其他的作为满足指标,也就满足了3中的只有一个指标来评价模型的原则。按照这类方法得到的指标如下:
maximize subject to accuracyrunningTime≤100ms
举个例子
语音设备唤醒,比如说你好百度。
对于这种情况,我们更加关注准确度,也就是在要唤醒的时候能够很大程度地唤醒设备。相对来说错误唤醒就不那么重要了。所以我们的指标如下:
5. 训练、开发、测试集的划分
训练、开发、测试集的概念
- 开发集(development set)有时也成为保留交叉验证集(hold out cross validation set,验证集)。
有很多想法,用训练集训练不同的模型,再用开发集来评估不同的思路,然后选择一个不断迭代去改善开发集的性能,直到最后得到一个令人满意的成本,最后再用测试集去评估。
确定了开发集和评价指标,就相当于确立了一个目标。训练不同的模型去逼近这个目标。
训练集用来训练模型,开发集用来选择模型种类结构和调试模型参数,测试集用来评估模型。
- 开发集和测试集划分的原则:分布要一致
举个例子
有不同国家的猫的图片,例如美国、英国、其他欧洲国家、南美、印度、中国、其他亚洲国家、澳大利亚,选择前4个或者随机选4个作为开发集,剩下4个作为测试集。
- 当然上面的做法不好,缺点就是开发集和测试集的分布不一致,很容易导致调好的模型的测试集上表现不好。因此通常的做法是把8个国家的猫图片混在一起,随机选择作为开发集和测试集。
6. 开发集和测试集的大小
- 传统机器学习中,样本数据少,比如100条或者1000条或者10000条,有这样的经验划分
- 数据集变大了,如果有一百万条样本数据,那么如下划分
深度学习算法需要很多的数据才能训练完成,而对于测试集来说,只需要能够得到足够置信度的评价指标就可以了,所占比例可以小于30%。对于开发集来说,需要足够大,来评估不同模型。
7. 什么时候该改变开发集/测试集和指标
对于猫图片的分类问题,算法A的误差为3%,算法B的误差为5%,但是算法A误分的图片中有很多色情图片(porn),而算法B中没有。从开发集和评价指标的角度来说选择算法A,但是从客户应用的角度来说选择算法B,这时候就需要改变指标。
- 如果模型算法的验证集测试集的评价指标都不错,但是应用的时候不好,就要考虑更换评价指标和验证集、测试集
比如说猫图片分类问题,如果我们用的图片数据都是高质量的图片,而用户用的是低质量模糊奇怪的图片,效果就不好,这种情况就需要更换验证集和测试集。
8. 为什么是人的表现
和人比较的两个原因:
- 机器学习领域的快速发展有了近似或者超过人的效果
- 机器学习在很多领域都可以替代人的作用,所以不可避免的要和人做比较
举个例子
在算法模型数据的驱动下,效果越来越好,最终会超过人的表现,但是同时也有一个上限,叫做贝叶斯最优误差(Bayes optimal error,Bayes error,best possible error),即理论上可能达到的最优误差。
比如说在语音识别领域,有些音频就是这么嘈杂,以至于根本就不可能知道说的是什么。
性能超过人的表现以后性能提升少的原因:
- 有些人的表现十分接近贝叶斯最优误差,比如说十分擅长辨认图像,听声音等
- 性能比人的表现差的时候,有很多工具可以提升,但是比人的表现好了以后,很多工具就不怎么有效了
如果性能比人的表现要差,提升的工具有:
- 请专家标注数据,从而有更多的数据训练模型
- 从人工误差分析中,也就是把做错的例子给专家看,找出分错的原因,为什么人能做对,算法出错
分析偏差和方差(bias/variance),偏差和方差在前面的视频中有提到,分别指训练集的性能和开发集的性能
- 如果你的算法性能比人的表现要好,以上3种工具就很难见效了。
9. 可避免偏差
对于猫图片分类问题,有如下两个模型:
- 对于A来说,训练集的误差和人的表现相比测试集和开发集的表现来说差很多,因此偏差(bias)很大,即训练集的误差很大,所以更关注于减少偏差的策略,比如训练一个更大的网络
- 如果猫的图片模糊辨识不清,就会出现B的情况,测试集和开发集的表现相比训练集和人的表现来说差很多,因此方差(variance)很大,即测试集的误差很大,所以更关注于减少方差的策略,比如正则化,更多的训练数据等
在猫图片分类的问题中,可以假设人的表现就是贝叶斯最优误差。
可避免偏差(avoidable bias)的定义
贝叶斯最优误差和训练集误差的差值称为可避免偏差。
10. 理解人的表现
人类水平表现(human-level performance)的定义
举个例子
通过医学图片判断骨折
假设如下:
这个例子中,0.5%就可以认为是贝叶斯最优估计,而误差一般达到1%就有应用的价值了。所以人类水平表现是一个目标,看你的应用需求。
11. 超过人的表现
举个例子
- 对于A情况,选择专家团队的误差作为人类水平表现,则可避免偏差为0.1%,而方差为0.25,因此选择优化方差,比如正则化或者增加训练数据
- 对于B 情况,超过了专家团队的误差,因此不能估计贝叶斯最优误差是多少,所以不好判断是优化偏差还是优化方差
机器学习好过人类的领域
- 网络广告,估计某个用户点击广告的可能性
- 产品推荐,推荐电影或数据之类的任务
- 物流预测,预测从A到B开车的时间
- 借贷证明,预测某人会不会偿还贷款
深度学习,比如说自然语言处理、计算机视觉等自然感知方面,因为人类比较擅长这些,所以超越人类比较困难,但是也有好过人类表现的
1. 语音识别
2. 图像识别
3. 医学方面,比如ECG、癌症判断、放射科等
12. 改善模型的性能
目标
- 训练集和人类水平表现接近或者超过,即可避免偏差低
- 开发集和和测试集的误差低,方差要低
正交化方法
- 对于偏差,可以训练更大的网络或者训练更久
- 对于方差,可以使用正则化或者手机更多的训练数据
如何减少可避免偏差和方差
- 改善可避免偏差,即人类水平和训练集误差
- 训练更大的网络
- 训练更久,使用优化方法,比如动量momuntom,RMProp,Adam
- 改变神经网络结构或者超参数
- 改善方差,即开发集测试集和训练集之间的差别
- 更多的数据
- 正则化方法,L2、Dropout,数据增强
- 改变神经网络结构或者超参数
- 第3次课结构化机器学习
- 第3次课结构化机器学习
- ScalersTalk成长会机器学习小组-深度学习第3次学习笔记
- 3,结构化机器学习项目
- 机器第1次中招
- 机器学习第2课
- C++第3次实验—选择结构程序设计
- Coursera 深度学习 deep learning.ai 吴恩达 第三课 结构化机器学习项目 第一周 测试题目 Bird recognition in the city of Peacetopia
- 《机器学习实战》 自制勘误表 中文版第一版2015年9月第11次印刷版
- 结构化机器学习项目Quiz1
- 结构化机器学习项目Quiz2
- 结构化机器学习项目小结
- 机器学习目录结构
- 机器学习目录结构
- 加州理工机器学习第1课
- 第3次作业
- 第3次作业
- 第3次作业
- Code HDU
- HDU5510 Bazinga (strstr())
- easyui-datagrid
- 安装weblogic事项
- AE构建获取栅格图层属性表(ITable)
- 第3次课结构化机器学习
- Educational Codeforces Round 29
- 排序算法之快速排序
- 前端开发性能优化
- python编码获取排列组合的全部情况数及Python内置函数获取排列组合
- JavaWeb过滤器
- java 中的main方法
- Fragment详解
- [ZJOI2006]物流运输 (洛谷1772)