吴恩达老师深度学习笔记第三课第二周

结构化机器学习

2.1进行误差分析
①(定义)错误分析:通过对网络分析,找到问题,使网络达到自己想要的效果
②举例(猫分类)
你的分类猫的系统错误率达到10%,你发现错误识别中有很多狗,被错认为猫
这时,你可以选择直接通过一些办法来解决狗的问题
但是更好的做法是,先找到狗的错误识别的“表现上限”,先找100张错误识别(注意:是在验证集里),如果里边有5张是狗,那么意味着狗的“表现上限”就是5%。这就是错误分析的过程,通过一个错误的表现上限,你可以综合考虑自己是否值得投入时间来解决这个问题。
2.2消除标注错误的数据
监督式 学习的数据由输入x和输出的标签y组成,在检查数据集时,你发现自己的有些标签是错的,这个问题是否 重要呢?
三个数据:整体的开发集的错误率,错误标签导致的错误率,其他问题引起的错误
(其实主要还是看错误标签导致的错误率占总错误率的比例)
通过看这个比例,考虑要不要解决这个问题
老师表达了对错误分析的热爱
2.3快速建立你的第一个系统并进行迭代
如果你处于一个很熟悉很成熟的系统则不需要
2.4在不同划分上做训练并且测试
举了一个例子,一款识别猫的app,你有2000个用户上传的图片(就是你的tag),还有20000网页上找到的
这里相比于全部混在一起然后按照6:2:2分布,更多的是将用户上传的图片放入开发集,因为开发集的目的本身就是充当一个tag的作用
2.5不匹配数据划分的偏差和方差
猫分类的例子
假设贝叶斯误差为0,训练集误差为1%,开发集误差为10%,如果训练集和开发集来自同一误差,那么问题是方差过大,但是当两者不是同一分布,那么我就要考虑清楚这9%的误差到底是因为什么。
我们要做的是训练集开发集混淆,取出一小块训练集数据作为训练集-开发集,如果训练集-开发集的误差接近训练集,那么证明开发集误差大是因为开发集与训练集分布不同(我们叫失配问题),如果训练集-开发集的误差接近开发集,那么证明是方差太大。
贝叶斯误差(人类水平误差)和训练集误差值之间的差:体现可避免偏差问题
训练集误差和训练-开发集误差之间的差值:方差问题
训练-开发集误差和开发集误差之间的差值:数据失配问题
测试集误差和开发集误差之间的差值:算法对开发集的过拟合
2.6定位数据把不匹配
怎么解决数据失配问题
①通过人工误差分析,尝试理解开发集和训练集的区别
②缩小二者差异,比如当你发现是因为开发集中有呼吸噪音,你就在训练集中加入含噪音的开发集
2.7迁移学习
吴恩达老师深度学习笔记第三课第二周_第1张图片
迁移学习适用于(将任务A的网络迁移到任务B上)
①输入一样的两个系统之间
②必须在任务A和任务B有更多的数据时
③任务A中的低层次特征会帮助任务B达成目标
2.8多任务学习
吴恩达老师深度学习笔记第三课第二周_第2张图片
输出是4维的,损失函数是各个输出的总和
什么时候多任务学习
①要实现的一系列任务可以共享一些低层次的特征
②为了增强多任务学习,如果你集中在任一任务上,其他任务比单一任务合计起来,有更多数据。那么其他任务可帮助你在最后的任务表现更好。
多任务学习要比迁移学习用的少的多
2.9什么是端到端深度学习
定义:我们有一些数据处理系统,是由多个阶段组成的学习系统
端到端的深度学习做的,就是他可以捕获所有阶段,并且,通常可以将其代替为单个神经网络,也就是说运行速度更快。
吴恩达老师深度学习笔记第三课第二周_第3张图片
这种方法一般需要更多数据
2.10是否要使用端到端的深度学习
优点:①真正让数据发挥主导作用
②所需人类动手设计的组件变的更少了

缺点:①为了使用机器学习直接得到X到Y的映射,需要大量数据
②它排除了一些具有潜在用途的手工设计你组件
所以是否使用端到端的深度学习的主要问题是,你是否具有足够的数据可以映射x到y所需复杂度的方程

你可能感兴趣的:(机器学习,人工智能,深度学习,python,算法)