文章目录
声明
本文参考念师
前言
本文将会学习机器学习中的一些通用理论和策略,从而高效优化你的机器学习系统。
包含如下内容:
- 机器学习策略
- 正交化指标
- 评估指标和优化指标
- 开发集、测试集、验证集
- 模型表现和人的表现
- 如何进行误差分析
- 迁移学习
- 多任务学习
- 端对端学习
机器学习策略
what
如何选择恰当的方式进行更有效的调优
正交化指标
what
明确每一步调参的目的,思路清晰明了。
举个例子,给老式电视机调整时,有多个调整的按钮,每个按钮调优功能明确,比如一个是调清晰度,一个是调黑白,一个是调高宽。调整不同的按钮,就可以让电视清晰。这个过程就是正交化。
how
| 阶段 | 目的 | 手段 |
|---|---|---|
| 1 | 训练集上得到不错的结果 | 更大的网络,adam优化算法等 |
| 2 | 验证集上得到不错的结果 | 正则化,更多的训练数据 |
| 3 | 测试集上得到不错的结果 | 扩大验证集 |
| 4 | 真实应用中得到不错的结果 | 调整验证集或者是代价函数等 |
评估指标和优化指标
评估指标
综合各个评估的结果。如下式:
优化指标
在满足指标的前提下,进行评估,得到优化指标。
开发集、测试集、验证集
how
- 在训练集中训练多个模型
- 在验证集中进行验证,找出相对较好的模型
- 满足需求的前提下提交测试机进行测试
other
- 验证集和测试机应该来源于同一分布,且与真实需求一致
- 三者规模比例分布
应用环境:识别猫的分类器为例,得到两个分类器A和B,分类器A的错误率为3%,分类器B的错误率为5%,从数值上来看分类器A的性能更好,但是实验发现分类器A更容易把一些色情图片识别成为猫从而推荐给用户。因此我们无法评估那个模型更优。
解决:调整评估指标或开发验证集,给误判图片(色情图片)以权重值,则误差会变大。
模型表现和人的表现
what
如下如所示:第一根是贝叶斯误差,第二根是机器水平,第三根是人类水平,无论是机器学习还是人类水平,永远都无法超过贝叶斯误差。但可以将此做对比和验证。
other
how
- 降低训练集误差,使其逼近人类水平-降低模型偏差
更大的规模、更长时间的训练、更好的优化算法、网络结构的调整、超参数的优化
- 降低验证集误差与训练集误差的差距-降低模型方差
更多的数据、正则化、网络结构调整、超参数优化
深度学习
擅长海量结构数据相关的分析,比如:
- 在线广告预测
- 产品推荐
- 物流运输规划
- 借贷还款
如何进行误差分析
how
planA
situation:猫的分类器,加入有大量狗的图片被错误的识别成了猫。
解决:在验证集中随机找出若个分类错误的case,统计这其中狗错误识别为猫所占的比例,假设其中只有5个是由狗错误识别为猫,那么可以判断出针对进行优化后猫分类器的识别率至多能提升5%,那么就可以决定是否有必要针对这一问题进行优化。
planB
一次评估多个可能的原因,并在表格中进行统计分析
other
situation:训练集、验证集、测试集来源不同。猫分类问题中贝叶斯最优误差为0%,训练集误差为1%,验证集误差为10%,
- 验证集的数据没有经过训练–方差导致。
- 训练集和验证集分布来源不一样–验证集的数据相比训练集而言更加难以分辨导致。
针对第二种,先得找出具体原因,就需要额外添加一组数据集,可以称之为训练-验证集,这组数据集的特点是和训练集来源于同一分布,但是不会在训练过程中使用,我们可以根据训练集、训练-验证集、验证集来进行误差定位了。
- 当训练集表现不好时,说明是由于偏差导致的
- 当训练集表现优秀,但是训练-验证集表现不好时,说明是由于方差导致的
- 当训练-验证集表现优秀,但是验证集表现不好时,说明是由于验证集(真实场景)和训练集之间数据不匹配导致的
迁移学习
what
从一个领域中学习到的内容可以将其微调后利用到另一个独立的任务中
how
重新初始化最后一层输出层的参数,其他层的参数直接保持之前训练号的模型的值进行训练
feature
串行
多任务学习
what
构建一个神经网络,在输出层同时完成多个任务,损失函数根据多个任务综合进行分析
feature
并行
端对端学习
what
直接向网络中传入数据和标定数据来训练网络
feature
- 忽略人为拆分的多个步骤
- 需要更为大量的数据样本进行训练