吴恩达DL系列03#Lesson3学习提纲~自用
提高学习算法性能的指导方针
正交化
如何设立开发集和测试集
减小偏差or方差的决策
贝叶斯最优错误率一般认为是理论上可能达到的最优错误率,就是说没有任何办法设计出一个到的函数,让它能够超过一定的准确度
在定义人类水平错误率时,要弄清楚你的目标所在,如果要表明你可以超越单个人类,那么就有理由在某些场合部署你的系统,也许这个定义是合适的。但是如果您的目标是替代贝叶斯错误率,那么这个定义(经验丰富的医生团队——0.5%)才合适。
贝叶斯错误率或者说贝叶斯错误率的估计和训练错误率直接的差值就衡量了所谓的可避免偏差
这(训练误差与开发误差之间的差值)可以衡量或者估计你的学习算法的方差问题有多严重。
【一段比较重要的话】用人类水平的错误率估计或代替贝叶斯错误率或贝叶斯最优错误率,对于计算机视觉任务而言,这样替代相当合理,因为人类实际上是非常擅长计算机视觉任务的,所以人类能做到的水平和贝叶斯错误率相差不远。根据定义,人类水平错误率比贝叶斯错误率高一点,因为贝叶斯错误率是理论上限,但人类水平错误率离贝叶斯错误率不会太远。所以这里比较意外的是取决于人类水平错误率有多少,或者这真的就很接近贝叶斯错误率,所以我们假设它就是,但取决于我们认为什么样的水平是可以实现的。(总结:在人类可以做得很好的任务中,你可以估计人类水平的错误率,你可以使用人类水平错误率来估计贝叶斯错误率)
总结:当你远离人类水平时,将优化目标放在偏差或方差上可能更容易一点。这就说明了,为什么当你们接近人类水平时,更难分辨出问题是偏差还是方差。所以机器学习项目的进展在你已经做得很好的时候,很难更进一步。
在之前的课程中,我们测量的是训练错误率,然后观察的是训练错误率比0%高多少,就用这个差值来估计偏差有多大。而事实证明,对于贝叶斯错误率几乎是0%的问题这样就行了,例如识别猫,人类表现接近完美,所以贝叶斯错误率也接近完美。所以当贝叶斯错误率几乎为零时,可以那么做。但数据噪点很多时,比如背景声音很嘈杂的语言识别,有时几乎不可能听清楚说的是什么,并正确记录下来。对于这样的问题,更好的估计贝叶斯错误率很有必要,可以帮助你更好地估计可避免偏差和方差,这样你就能更好的做出决策,选择减少偏差的策略,还是减少方差的策略。
超过人的表现
从结构化数据中学习得来的,这些并不是自然感知问题,这些不是计算机视觉问题,或语音识别,或自然语言处理任务。人类在自然感知任务中往往表现非常好,所以有可能对计算机来说在自然感知任务的表现要超越人类要更难一些。
现在计算机可以检索那么多数据,它可以比人类更敏锐地识别出数据中的统计规律。
总结方法
误差分析
如果你观察100个错误标记的开发集样本,也许只需要5到10分钟的时间,亲自看看这100个样本,并亲自统计一下有多少是狗。根据结果,看看有没有占到5%、50%或者其他东西。这个在5到10分钟之内就能给你估计这个方向有多少价值,并且可以帮助你做出更好的决定,是不是把未来几个月的时间投入到解决错误标记的狗图这个问题。性能上限,就意味着,最好能到哪里,完全解决狗的问题可以对你有多少帮助。
如何使用错误分析来评估某个想法
狗的问题,猫科动物的问题,模糊图像的问题,评论
清除标注错误的数据
监督学习问题的数据由输入和输出标签构成,数据有些标签是错的,是否值得花时间去修正这些标签呢?
如果这些标记错误严重影响了你在开发集上评估算法的能力,那么就应该去花时间修正错误的标签。但是,如果它们没有严重影响到你用开发集评估成本偏差的能力,那么可能就不应该花宝贵的时间去处理。
使用来自不同分布的数据,进行训练和测试
数据分布不匹配时,偏差与方差的分析
开发集和测试集来自相同的分布,但训练集来自不同的分布
我们要做的是随机打散训练集,然后分出一部分训练集作为训练-开发集(training-dev),就像开发集和测试集来自同一分布,训练集、训练-开发集也来自同一分布。
数据不匹配的问题:你的算法擅长处理和你关心的数据不同的分布
关键数据是人类水平错误率,训练集错误率,训练-开发集错误率,开发集错误率,所以这分布和训练集一样,但你没有直接在上面训练。根据这些错误率之间差距有多大,你可以大概知道,可避免偏差、方差大小、数据不匹配问题有多大
(7%,10%)是从训练集分布评估的,而这两个(6%,6%)是从开发测试集分布评估的
有时候如果你的开发测试集分布比你应用实际处理的数据要容易得多(训练数据其实比你的开发集和测试集难识别得多),那么这些错误率可能真的会下降
处理数据不匹配问题
使用人工数据合成,要记住你有可能从所有可能性的空间只选了很小一部分去模拟数据
迁移学习
有的时候神经网络可以从一个任务中习得知识,并将这些知识应用到另一个独立的任务中
在第一阶段训练过程中,当你进行图像识别任务训练时,你可以训练神经网络的所有常用参数,所有的权重,所有的层,然后你就得到了一个能够做图像识别预测的网络。在训练了这个神经网络后,要实现迁移学习,你现在要做的是,把数据集换成新的对,现在这些变成放射科图像,而是你想要预测的诊断,你要做的是初始化最后一层的权重,让我们称之为和随机初始化。
当任务和任务都有同样的输入时,迁移学习是有意义的
当任务A的数据比任务B多得多时
如果你尝试优化任务B的性能,通常这个任务数据相对较少,找一个相关但不同的任务,如图像识别,其中你可能用1百万张图片训练过了,并从中学到很多低层次特征,所以那也许能帮助网络在任务B在放射科任务上做得更好,尽管任务B没有这么多数据。
多任务学习
在多任务学习中,你是同时开始学习的,试图让单个神经网络同时做几件事情,然后希望这里每个任务都能帮到其他所有任务
多分类问题中每个列向量都只有一个为1,或者概率总和为1
与softmax回归的主要区别在于,与softmax回归不同,softmax将单个标签分配给单个样本
这张图可以有很多不同的标签,所以不是说每张图都只是一张行人图片,汽车图片、停车标志图片或者交通灯图片。你要知道每张照片是否有行人、或汽车、停车标志或交通灯,多个物体可能同时出现在一张图里
图同时有车和停车标志,但没有行人和交通灯,所以你不是只给图片一个标签,而是需要遍历不同类型,然后看看每个类型,那类物体有没有出现在图中。所以我就说在这个场合,一张图可以有多个标签。
即使是这样的数据集,你也可以在上面训练算法.
你训练算法的方式,即使这里有些标签是问号,或者没有标记,这就是对从1到4求和,你就只对带0和1标签的值求和,所以当有问号的时候,你就在求和时忽略那个项,这样只对有标签的值求和,于是你就能利用这样的数据集。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步