吴恩达【深度学习工程师】学习笔记(九)

吴恩达【深度学习工程师】专项课程包含以下五门课程:

1、神经网络和深度学习;
2、改善深层神经网络:超参数调试、正则化以及优化;
3、结构化机器学习项目;
4、卷积神经网络;
5、序列模型。

今天介绍《结构化机器学习项目》系列第一讲:机器学习策略(1)。

主要内容:

1、使用ML策略

2、评估指标

3、Train/Dev/Test数据集

4、改变评价标准

5、人类水平表现

1、使用ML策略

当我们一开始得到深度神经网络模型时,我们可以从以下方面来对它进行优化:

  • 收集更多的样本数据

  • 收集更加多样化的训练集

  • 使用梯度下降训练更长的时间

  • 使用Adam算法替代梯度下降算法

  • 尝试更大更复杂的网络

  • 尝试更小的网络

  • 使用dropout技术

  • 添加L2正则化

  • 网络架构:激活函数,隐层神经元…

由于可供选择的方法很多,使用一套快速且有效的策略来优化机器学习模型是非常重要的。

机器学习中有许多参数、超参数需要调试。通过每次只调试一个参数,保持其它参数不变,而得到的模型某一性能改变是一种最常用的调参策略,我们称之为正交化方法(Orthogonalization)。正交化在于每次调试一个参数只会影响模型的某一个性能。

例如老式电视机旋钮,每个旋钮就对应一个功能,调整旋钮会调整对应的功能,而不会影响其它功能。也就是说彼此旋钮之间是互不影响的,是正交的。这种方法能够让我们更快更有效地进行机器学习模型的调试和优化。

对应到机器学习监督式学习模型中,可以大致分成四个独立的“功能”,每个“功能”对应一些可调节的唯一的旋钮。四个“功能”如下:

  • Fit training set well on cost function:优化训练集可以通过使用更复杂NN,使用Adam等优化算法来实现;

  • Fit dev set well on cost function:优化验证集可以通过正则化,采用更多训练样本来实现;

  • Fit test set well on cost function:优化测试集可以通过使用更多的验证集样本来实现;

  • Performs well in real world:提升实际应用模型可以通过更换验证集,使用新的cost function来实现。

总的来说,每一种“功能”对应不同的调节方法。而这些调节方法(旋钮)只会对应一个“功能”,是正交的。

early stopping在模型功能调试中并不推荐使用。因为early stopping在提升验证集性能的同时降低了训练集的性能。即同时影响两个“功能”,不是正交的。

2、评估指标

构建、优化机器学习模型时,单值评价指标是非常必要的。

例如:有A、B两个模型,它们的准确率(Precision)和召回率(Recall)分别如下:

这里写图片描述

如果只看准确率的话,B模型更好。如果只看召回率的话,A模型更好。

实际应用中,我们通常使用单值评价指标F1 Score来评价模型的好坏。

F1 Score综合了准确率 P 召回率 R 的大小,计算方法如下:

F1=2PRP+R

然后得到了A和B模型各自的F1 Score:

这里写图片描述

从F1 Score来看,A模型比B模型更好一些。

除了F1 Score之外,我们还可以使用平均值作为单值评价指标来对模型进行评估。

例如:A, B, C, D, E, F六个模型对不同国家样本的错误率不同,计算其平均性能,然后选择平均错误率最小的那个模型(即C模型)为最优模型。

这里写图片描述


有时候,要把所有的性能指标都综合在一起,构成单值评价指标是比较困难的。

我们可以把某些指标作为优化指标(Optimizing metic),寻求最优化值;而某些指标作为满意指标(Satisficing metic),只要满足阈值就行了。

例如:在猫类识别的例子中,有A、B、C三个模型,各个模型的准确率和运行时间如下表中所示:

这里写图片描述

我们将准确率作为优化指标,将运行时间作为满意指标。

给运行时间设定一个阈值,在其满足阈值的情况下,选择准确率最大的模型。例如:运行时间必须<100 ms,准确率要尽可能的高,因此满足条件的 B 模型就是最优模型。

总的来说,性能指标是需要优化的,越优越好;而满意指标只要满足设定的阈值就可以了。

3、Train/dev/test 数据集

应该尽量保证Train/dev/test 数据集同分布。

当样本数量很小(<10000)的时候,通常将Train、dev、test sets的比例设为60%、20%、20%或70%、0%、30%;

当样本数量很大(>1000000)的时候,通常将相应的比例设为98%、1%、1%或者99%、0%、1%。

对于dev 数据集数量的设置,应该遵循的准则是通过dev sets能够检测不同算法或模型的区别,以便选择出更好的模型。

对于test 数据集数量的设置,应该遵循的准则是通过test sets能够反映出模型在实际中的表现。

4、改变评价标准

算法模型的评价标准有时候需要根据实际情况进行动态调整,目的是让算法模型在实际应用中有更好的效果。

举个猫类识别的例子。初始的评价标准是错误率,算法A错误率为3%,算法B错误率为5%。显然,A更好一些。但是,实际使用时发现算法A会通过一些色情图片,但是B没有出现这种情况。从用户的角度来说,他们可能更倾向选择B模型,虽然B的错误率高一些。这时候,我们就需要改变之前单纯只是使用错误率作为评价标准,而考虑新的情况进行改变。例如增加色情图片的权重,增加其代价。

原来的cost function:

J=1mi=1mL(y^(i),y(i))

更改评价标准后的cost function:

J=1w(i)i=1mw(i)L(y^(i),y(i))

w(i)={1,10,x(i) is nonpornx(i) is porn

概括来说,机器学习可分为两个过程:

  • 定义一个标准来评估分类器

  • 怎样优化这个标准

5、人类水平表现

机器学习模型的表现通常会跟人类水平表现作比较,如下:

这里写图片描述

图中,横坐标是训练时间,纵坐标是准确性。

机器学习模型经过训练会不断接近人类水平甚至超过它。但是,超过人类水平之后,准确性会上升得比较缓慢,最终不断接近理想的最优情况,我们称之为bayes optimal error。理论上任何模型都不能超过它,bayes optimal error代表了最佳表现。

实际应用中,要看human-level error,training error和dev error的相对值。

例如猫类识别的例子中,如果human-level error为1%,training error为8%,dev error为10%。由于training error与human-level error相差7%,dev error与training error只相差2%,所以目标是尽量在训练过程中减小training error,即减小偏差bias。

如果图片很模糊,肉眼也看不太清,human-level error提高到7.5%。这时,由于training error与human-level error只相差0.5%,dev error与training error只相差2%,所以目标是尽量在训练过程中减小dev error,即减小方差variance。

通常,我们把training error与human-level error之间的差值称为bias,也称作avoidable bias;把dev error与training error之间的差值称为variance。根据bias和variance值的相对大小,可以知道算法模型是否发生了欠拟合或者过拟合。

提高机器学习模型性能主要要解决两个问题:avoidable bias和variance。

解决avoidable bias的常用方法包括:

  • 更复杂的模型

  • 使用更好的优化器训练更长时间:momentum, RMSprop, Adam

  • 更改NN架构/超参数查找

解决variance的常用方法包括:

  • 更多的样本数据

  • 正则化方法:L2, dropout, data augmentation

  • 更改NN架构/超参数查找

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值