ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【Deep Learning】构建机器学习项目

2022-07-19 16:03:00  阅读:190  来源: 互联网

标签:误差 测试 训练 验证 模型 Deep 学习 构建 Learning


本文为吴恩达 Deep Learning 笔记


机器学习策略 (上)


评价指标

为什么要学习机器学习策略:

  • 当我们构造神经网络模型时,可以从很多方面优化:更多的数据、超参数调试、改变神经网络结构、改进优化算法、正则化。

正交化方法:

Orthogonalization 正交化方法

  • 正交化方法:每次只调试一个参数,保持其它参数不变。这样可以使每一种调节方法对应一重评价,更精确有效的解决问题。
  • 在机器学习中,我们希望模型有四重评价:
    • 在训练集上表现好:(如表现不好) 使用更复杂的神经网络结构、改进优化算法 (如使用 Adam)。
    • 在验证集上表现好:(如表现不好) 使用更多的数据、正则化。
    • 在测试集上表现好:(如表现不好) 使用更大的验证集。
    • 在实际应用上表现好:(如表现不好) 改变测试集或代价函数。
  • 早停法 (Early Stopping) 不推荐使用,因为他会影响多个 "功能",具有正交化。

单值评价指标:

Single Number Evaluation Metric 单值评价指标

Harmonic Mean 调和平均数

  • 准确率和召回率:

    • 准确率:预测为正类的正类数量 / 预测为正类的数量。
    • 召回率:预测为正类的正类数量 / 正类的数量。
  • 假设有两个模型 \(A\) 和 \(B\),\(A\) 的准确率 \(P\) 更高,\(B\) 的召回率 \(R\) 更高。我们使用单值评价指标 \(F1\) \(Score\) (\(P\) 和 \(Q\) 的调和平均数) 来评价模型的好坏:

    \[F1 = \frac{2 \cdot P \cdot R}{P + R} \]

  • 除 \(F1\) \(Score\) 外,我们也可以使用平均值作为单值评价指标来对模型进行评估。

满意指标和优化指标:

Satisficing Metic 满意指标

Optimizing Metic 优化指标

  • 把所有的性能指标都综合在一起,构成单值评价指标是比较困难的。
    • 我们把一些性能作为满意指标:只要满足阈值即可。
    • 我们把一些性能作为优化指标:寻求最优化值。

训练 / 验证 / 测试

训练集 / 验证集 / 测试集划分:

  • 训练集 / 验证集 / 测试集应该是同分布的。

验证集和测试集的大小:

  • 随着机器学习的发展,数据的增加,训练集 / 验证集 / 测试集的划分大小在不断变化。

什么时候改变验证集 / 测试集和评价指标:

  • 机器学习可分为两个过程:找靶心、通过训练以射中靶心。
  • 在训练的过程中可能会根据实际情况改变算法模型的评价标准,进行动态调整。

人类表现

为什么与人类表现做比较:

Human-level Performance 人类表现

Bayes Optimal Error 贝叶斯最优误差

  • 机器学习模型经过训练会不断接近人类表现,甚至超过人类表现,但是超过人类表现后,准确性会上升得较慢,最终不断接近理想的最优情况 (Bayes Optimal Error)。
  • 当构建的机器学习模型的表现还没达到人类的表现水平时,我们会使用各种方式来提升它:
    • 采用人工标记过的数据进行训练。
    • 通过人工误差分析了解为什么人能够正确识别。
    • 进行偏差、方差分析。

可避免偏差:

Avoidable Bias 可避免偏差

  • 偏差与方差:
    • 训练误差与人类表现误差之间的差值称为偏差 (Bias),也叫做可避免偏差 (Avoidable Bias)。
    • 训练误差与测试误差之间的差值称为方差 (Variance)。
    • 参考《偏差 / 方差》一节。
  • 如果偏差大于方差,应专注于减少偏差;如果方差大于偏差,应专注于减少方差。

理解人类表现:

  • 不同人群的人类表现不同,一般来说,我们将表现最好的人类群体作为人类表现。
  • 不同人类表现误差的选择会影响偏差和方差的相对变化。
  • 当模型表现很好,接近贝叶斯最优误差时,人类表现误差难以准确定义,人类表现误差对方差与偏差谁者重要的影响也越大。

超过人类表现:

  • 在很多方面,机器学习模型的表现已经超过人类,如:广告、商品推荐、物流时间估计、货款审批。
  • 当算法模型的表现超过人类表现时,很难再通过人的直觉来解决如何继续提高算法模型性能的问题。

改善模型的表现:

  • 比较训练误差与人类表现误差之间的差值 (Bias) 和训练误差与测试误差之间的差值 (Variance)。
  • 解决 High Bias 的方法:
    • 更大的模型。
    • 改进优化算法:Momentum, RMSprop, Adam。
    • 神经网络结构 / 超参数。
  • 解决 High Variance 的方法:
    • 更多的数据。
    • 正则化:L2, Dropout, 数据增强 (Data Augmentation)。
    • 神经网络结构 / 超参数。

机器学习策略 (下)


误差分析

误差分析:

Error Analysis 误差分析

  • 猫的识别例子:
    • 已知模型错误率为 \(10\%\),检查发现,该模型会将一些狗类图片错误分类成猫。
    • 一种解决办法是扩大狗类 (负样本) 图片的数量,误差分析帮助判断是否值得花时间这样做。
      • 从分类错误的样本中统计出狗类图片的数量。
      • 如果狗类样本占 \(5\%\),则扩大狗类图片的数量只能使错误率降为 \(9.5\%\)。
      • 如果狗类样本占 \(50\%\),则扩大狗类图片的数量能使错误率降为 \(5\%\)。
    • 通常来说,比例越大,影响越大,越应该花费时间和精力着重解决这一问题。

清理标注错误的数据:

  • 有时会发现数据集中有些样本被人为地错误标记了。
    • 如果是训练集中样本被错误标记,由于机器学习算法对于随机误差的稳健性,只要出错样本数量较少,分布随机,就不必花时间修正。
    • 如果是验证集 / 测试集中样本被错误标记,与《误差分析》一节相同,统计测试集中所有分类错误的样本中标注错误的数据的比例,决定是否修正所有标注错误的数据。

快速构建一个系统并迭代:

  • 先快速构建第一个简单模型,然后再反复迭代优化。

数据不匹配

训练集 / 测试集的不同划分:

  • 训练集和验证集 / 测试集的来源不同:
    • 方法一:将训练集与验证集 / 测试集混合,随机选一部分做训练集,另一部分做验证集 / 测试集。
    • 方法二:将训练集与一部分验证集 / 测试集作为新的训练集,另一部分验证集 / 测试集作为新的验证集 / 测试集 (这种方法较为常用,性能较好)。

不同数据集划分的偏差和方差:

Data Dismatch 数据不匹配

  • 如果训练集和验证集 / 测试集来自不同分布,则不能直接比较训练集误差和验证集 / 测试集误差。
  • 解决方案:从训练集中划分出一部分作为训练 - 验证集 (Train-dev Set)。
    • 训练 - 验证集误差与训练集误差之差反应了方差 (Variance)。
    • 训练 - 验证集误差与验证集之差反应了数据不匹配 (Data Dismatch)。
    • 参考《可避免偏差》一节。

解决数据不匹配问题:

Artificial Data Synthesi 人工数据合成

  • 进行误差分析,人工检查训练集和验证集 / 测试集。
  • 尝试将训练集数据调整的更想验证集 / 测试集,使用人工数据合成等方法。

其他机器学习方法

迁移学习:

Transfer Learning 迁移学习

Pre-training 预训练

Fine-tuning 微调

  • 迁移学习:将已经训练好的模型的一部分知识 (网络结构) 直接应用到另一个类似模型中。
  • 迁移学习的做法:
    • 方法一:利用之前的神经网络模型,只改变样本输入、输出以及输出层的权重系数 \(W^{[L]}\), \(b^{[L]}\),其它层所有的权重系数 \(W^{[l]}\), \(b^{[l]}\) 保持不变。
    • 方法二:只保留网络结构,重新训练所有层的权重系数。
  • 迁移学习可以保留原神经网络的一部分,再添加新的网络层,具体问题,具体分析。
  • 预训练和微调:
    • 初始 \(W^{[l]}\), \(b^{[l]}\) 由之前的模型训练得到,这一过程称为预训练。
    • 之后不断调试、优化 \(W^{[l]}\), \(b^{[l]}\) 的过程称为微调。
  • 迁移学习的使用场景:
    • 任务 \(A\) 和任务 \(B\) 有同样的输入。
    • 任务 \(A\) 有更多数据,从人物 \(A\) 迁移到任务 \(B\)。
    • 任务 \(A\) 的低层次特征对任务 \(B\) 的学习有帮助。

多任务学习:

Multi-task Learning 多任务学习

  • 多任务学习:构建神经网络同时执行多个任务。
    • 如:识别行人、车辆、交通标志和信号灯。
    • 多个任务之间具有相关性,如抹口红和戴耳环。
  • 多任务学习与 Softmax:
    • 多任务学习的输出向量 \(y\) 可以有多个元素为 \(1\) (多任务学习中,可能存在训练样本 \(y\) 某些标签为空白的情况,这并不影响多任务模型的训练) 。
    • Softmax 的输出向量 \(y\) 只有一个元素为 \(1\)。
  • 多任务学习的使用场景:
    • 训练的一组任务可以共用低层次特征。
    • 每个任务的数据量相近。
    • 能够训练一个足够大的神经网络,以同时做好所有的工作。

什么是端到端的深度学习:

End-to-end Deep Learning 端到端的深度学习

  • 端到端深度学习:
    • 将所有不同阶段的数据处理系统或学习系统模块组合在一起,用一个单一神经网络模型实现所有的功能。
    • 将所有模块混合在一起,只关心输入和输出。
    • 训练样本足够大,神经网络模型足够复杂,端到端深度学习模型性能比传统机器学习分块模型更好。

是否要使用端到端的深度学习:

  • 端到端深度学习的优点:

    • 只要有足够多的数据,剩下的全部交给一个足够大的神经网络。比起传统的机器学习分块模型,可能更能捕获数据中的任何统计信息,而不需要用人类固有的认知来进行分析。

      Let the data speak.

    • 所需手工设计的组件更少,简化设计工作流程。

  • 端到端深度学习的缺点:

    • 需要大量的数据。
    • 排除了可能有用的人工设计组件。

参考

标签:误差,测试,训练,验证,模型,Deep,学习,构建,Learning
来源: https://www.cnblogs.com/wxy4869/p/16494390.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有