吴恩达深度学习课程笔记-Classes 3

简介:

Classes 3 结构化机器学习项目

1 机器学习策略

在这里插入图片描述
在机器学习中,可以观察你的系统,然后说这一部分是错的,它在训练集上做的不好、在开发集上做的不好、它在测试集上做的不好,或者它在测试集上做的不错,但在现实世界中不好,这就很好。必须弄清楚到底是什么地方出问题了,然后刚好有对应的旋钮,或者一组对应的旋钮,刚好可以解决那个问题,那个限制了机器学习系统性能的问题。

1.2 单一数字评测指标

一般做法:

  • 有想法,编程序,跑实验,看看效果如何,然后使用这些实验结果来改善想法,然后继续走这个循环,不断改进算法

有这样一个开发集,加上单实数评估指标,迭代速度肯定会很快,它可以加速改进机器学习算法的迭代过程

有一个单实数评估指标真的可以提高效率,或者提高团
队做出这些决策的效率

1.3 满足和优化指标

准确度与时间上面的综合权衡
在这里插入图片描述
考虑𝑁个指标,有时候选择其中一个指标做为优化指标是合
理的。所以你想尽量优化那个指标,然后剩下𝑁 − 1个指标都是满足指标,意味着只要它们达到一定阈值,例如运行时间快于 100 毫秒,但只要达到一定的阈值,你不在乎它超过那个门槛之后的表现,但它们必须达到这个门槛。

1.4 训练集 验证集 测试集的划分

用训练集训练不同的模型,然后使用开发集来评估不同的思路,然后选择一个,然后不断迭代去改善开发集的性能,直到最后你可以得到一个令你满意的成本,然后你再用测试集去评估
注意:

  • 开发集和测试集来自同一分布,将所有数据随机洗牌,放入开发集和测试集
  • 针对目标收集数据集

划分比例:

  • 机器学习早期: 全部数据用 70/30 比例分成训练集和测试集。或者如果你必须设立训练集、开发集和测试集,分 60%训练集,20%开发集,20%测试集。(数据集小的时候,几千-1w)
  • 深度学习时代:百万级别数据,98%作为训练集,1%开发集,1%测试集

改变数据集:

  • 如果你当前的指标和当前用来评估的数据和你真正关心必须做好的事情关系不大,那就应该更改你的指标或者你的开发测试集,让它们能更够好地反映你的算法需要处理好的数据
  • 对于错分的样本需要加大损失权重

1.5 提升模型的性能

好的模型就两件事:

  • 算法对训练集的拟合很好,这可以看成是你能做到可避免偏差很低
  • 在训练集中做得很好,然后推广到开发集和测试集也很好,这就是说方差不是太大

在这里插入图片描述
偏差上的提升(欠拟合):

  • 使用规模更大的模型,
  • 训练更久
  • 使用更好的优化算法,比如说加入 momentum 或者RMSprop、 Adam
  • 更好的新神经网络架构
  • 更好的超参数:激活函数、隐藏层数、隐藏节点数

方差上的提升(过拟合):

  • 收集更多数据
  • 尝试正则化,包括𝐿2正则化,dropout 正则化
  • 数据增强。
  • 不同的神经网络架构
  • 超参数搜索

2 机器学习策略

2.1 进行误差分析

搭建应用系统,那这个简单的人工统计步骤,错误分析,可以节省大量时间,可以迅速决定什么是最重要的,或者最有希望的方向

在这里插入图片描述
进行错误分析,应该找一组错误样本,可能在开发集里或者测试集里,观察错误标记的样本,看看假阳性(false positives)和假阴性(false negatives),统计属于不同错误类型的错误数量
如果这些标记错误严重影响了你在开发集上评估算法的能力,那么就应该去花时间修正错误的标签。如果它们没有严重影响到你用开发集评估成本偏差的能力,那么可能就不应该花宝贵的时间去处理。

在构造实际系统时,通常需要更多的人工错误分析,更多的人类见解来架构这些系统,尽管深度学习的研究人员不愿意承认这点

2.2 快速搭建你的第一个系统,并进行迭代

应该尽快建立你的第一个系统原型,然后快速迭代
在这里插入图片描述
主要目标是弄出能用的系统,并不是发明全新的机器学习算法。可以从现有大量学术文献为基础出发,一开始就搭建比较复杂的系统。

2.3 使用来自不同分布的数据进行训练和测试

越来越多的团队都用来自和开发集、测试集分布不同的数据来训练,这里有一些微妙的地方,一些最佳做法来处理训练集和测试集存在差异的情况。
这是由于项目任务所针对的图片类型决定的,比如手机app要识别的是用户手机拍摄的猫,而这类数据集少,网上爬虫的数据集大,但与任务的数据不是同一个分布,将其混合起来再划分这样的方法并不好,这是由于混一起后验证集、测试集中任务所要针对的图片占的比例很低。

开发集和测试集都是手机图。而训练集包含了来自网页的 20 万张图片,还有 5000 张来自应用的图片,开发集就是 2500 张来自应用的图片,测试集也是 2500 张来自应用的图片。这样将数据分成训练集、开发集和测试集的好处在于,现在你瞄准的目标就是你想要处理的目标。

有助于提高你的学习算法的性能,但是,潜在问题就不只是偏差和方差问题,这样做会引入第三个潜在问题,数据不匹配。
将训练集划分为训练集与训练-验证集(不用来训练,只测试)来看偏差与方差的关系。

2.4 处理数据不匹配问题

在这里插入图片描述

  • 对训练数据与开发数据进行错误分析,把训练集变得更像开发集
  • 尽可能地收集到相似的训练数据
  • 人工数据合成(注意过拟合)

存在数据不匹配问题,建议你做错误分析,或者看看训练集,或者看看开发集,试图找出,试图了解这两个数据分布到底有什么不同,然后看看是否有办法收集更多看起来像开发集的数据作训练。

2.5 迁移学习

在这里插入图片描述
把神经网络最后的输出层拿走,就把它删掉,还有进入到最后一层的权重删掉,然后为最后一层重新赋予随机权重,然后让它在放射诊断数据上训练。

如果你有足够多的数据,你可以重新训练神经网络中剩下的所有层。经验规则是,如果你有一个小数据集,就只训练输出层前的最后一层,或者也许是最后一两层。

  • 预训练:拿通用数据训练网络模型
  • 微调:固定之前的层,拿专用数据只训练后面的一层

优点: 需要的数据少,学得快
在这里插入图片描述

2.6 多任务学习

在多任务学习中,同时开始学习的,试图让单个神经网络同时做几件事情,然后希望这里每个任务都能帮到其他所有任务。
在这里插入图片描述
什么时候可以使用多任务学习:

  • 第一,如果你训练的一组任务,可以共用低层次特征。
  • 第二,这个准则没有那么绝对,所以不一定是对的。如果想要从多任务学习得到很大性能提升,那么其他任务加起来必须要有比单个任务大得多的数据量
  • 第三,一些场合:训练一个足够大的神经网络,那么多任务学习肯定不会或者很少会降低性能,我们都希望它可以提升性能,比单独训练神经网络来单独完成各个任务性能要更好。

多任务学习能让你训练一个神经网络来执行许多任务,这可以给你更高的性能,比单独完成各个任务更高的性能

2.7 端到端的深度学习

以前有一些数据处理系统或者学习系统,它们需要多个阶段的处理。那么端到端深度学习就是忽略所有这些不同的阶段,用单个神经网络代替它。

输入数据,构建网络模型,直接得到结果。这需要大量的数据以及好的应用场景。
如果不好一步到位,使用分任务的方式将其串起来也是很好的解决方案。

在这里插入图片描述
优点:

  • 端到端学习真的只是让数据说话,可能更能够捕获数据中的任何统计信息,而不是被迫引入人类的成见。
  • 所需手工设计的组件更少,所以这也许能够简化设计工作流程,不需要花太多时间去手工设计功能,手工设计这些中间表示方式

在这里插入图片描述
缺点:

  • 可能需要大量的数据
  • 排除了可能有用的手工设计组件
目录
相关文章
|
1月前
|
机器学习/深度学习 算法 测试技术
深度学习环境搭建笔记(二):mmdetection-CPU安装和训练
本文是关于如何搭建深度学习环境,特别是使用mmdetection进行CPU安装和训练的详细指南。包括安装Anaconda、创建虚拟环境、安装PyTorch、mmcv-full和mmdetection,以及测试环境和训练目标检测模型的步骤。还提供了数据集准备、检查和网络训练的详细说明。
84 5
深度学习环境搭建笔记(二):mmdetection-CPU安装和训练
|
1月前
|
机器学习/深度学习 数据可视化 计算机视觉
目标检测笔记(五):详细介绍并实现可视化深度学习中每层特征层的网络训练情况
这篇文章详细介绍了如何通过可视化深度学习中每层特征层来理解网络的内部运作,并使用ResNet系列网络作为例子,展示了如何在训练过程中加入代码来绘制和保存特征图。
56 1
目标检测笔记(五):详细介绍并实现可视化深度学习中每层特征层的网络训练情况
|
1月前
|
机器学习/深度学习 并行计算 PyTorch
深度学习环境搭建笔记(一):detectron2安装过程
这篇博客文章详细介绍了在Windows环境下,使用CUDA 10.2配置深度学习环境,并安装detectron2库的步骤,包括安装Python、pycocotools、Torch和Torchvision、fvcore,以及对Detectron2和PyTorch代码的修改。
78 1
深度学习环境搭建笔记(一):detectron2安装过程
|
1月前
|
机器学习/深度学习 算法 PyTorch
深度学习笔记(十三):IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU、WIOU损失函数分析及Pytorch实现
这篇文章详细介绍了多种用于目标检测任务中的边界框回归损失函数,包括IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU和WIOU,并提供了它们的Pytorch实现代码。
157 1
深度学习笔记(十三):IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU、WIOU损失函数分析及Pytorch实现
|
1月前
|
机器学习/深度学习 自然语言处理 并行计算
深度学习笔记(十四):Transormer知识总结
关于深度学习中Transformer模型的知识总结,涵盖了Self-attention机制、QKV、Multi-head attention、位置编码和并行运算等关键概念,以及如何在PyTorch中实现Self-attention。
59 1
|
7天前
|
机器学习/深度学习 人工智能 测试技术
深度学习在图像识别中的应用与挑战
本文探讨了深度学习技术,尤其是卷积神经网络(CNN)在图像识别任务中的最新进展和面临的主要挑战。通过分析不同的网络架构、训练技巧以及优化策略,文章旨在提供一个全面的概览,帮助研究人员和实践者更好地理解和应用这些技术。
36 9
|
3天前
|
机器学习/深度学习 人工智能 算法
深度学习在图像识别中的应用与挑战
本文探讨了深度学习技术在图像识别领域的应用,重点分析了卷积神经网络(CNN)的工作原理及其在处理图像数据方面的优势。通过案例研究,展示了深度学习如何提高图像识别的准确性和效率。同时,文章也讨论了当前面临的主要挑战,包括数据不足、过拟合问题以及计算资源的需求,并提出了相应的解决策略。
|
4天前
|
机器学习/深度学习 分布式计算 并行计算
深度学习在图像识别中的应用与挑战
本文深入探讨了深度学习技术在图像识别领域的应用,分析了当前主流的卷积神经网络(CNN)架构,并讨论了在实际应用中遇到的挑战和可能的解决方案。通过对比研究,揭示了不同网络结构对识别准确率的影响,并提出了优化策略。此外,文章还探讨了深度学习模型在处理大规模数据集时的性能瓶颈,以及如何通过硬件加速和算法改进来提升效率。
|
4天前
|
机器学习/深度学习 人工智能 计算机视觉
深度学习在图像识别中的应用与挑战
【10月更文挑战第38天】本文将深入探讨深度学习如何在图像识别领域大放异彩,并揭示其背后的技术细节和面临的挑战。我们将通过实际案例,了解深度学习如何改变图像处理的方式,以及它在实际应用中遇到的困难和限制。
|
4天前
|
机器学习/深度学习 传感器 自动驾驶
深度学习在自动驾驶中的应用与挑战####
本文探讨了深度学习技术在自动驾驶领域的应用现状、面临的主要挑战及未来发展趋势。通过分析卷积神经网络(CNN)和循环神经网络(RNN)等关键算法在环境感知、决策规划中的作用,结合特斯拉Autopilot和Waymo的实际案例,揭示了深度学习如何推动自动驾驶技术向更高层次发展。文章还讨论了数据质量、模型泛化能力、安全性及伦理道德等问题,为行业研究者和开发者提供了宝贵的参考。 ####

热门文章

最新文章