关于深度学习:深度学习教程-AI应用实践策略上

27次阅读

共计 6283 个字符,预计需要花费 16 分钟才能阅读完成。

  • 作者:韩信子 @ShowMeAI
  • 教程地址:http://www.showmeai.tech/tutorials/35
  • 本文地址:http://www.showmeai.tech/article-detail/219
  • 申明:版权所有,转载请分割平台与作者并注明出处

珍藏 ShowMeAI 查看更多精彩内容


本系列为吴恩达老师《深度学习专项课程 (Deep Learning Specialization)》学习与总结整顿所得,对应的课程视频能够在 这里 查看。

引言

在 ShowMeAI 前一篇文章 网络优化:超参数调优、正则化、批归一化和程序框架 中咱们对以下内容进行了介绍:

  • 超参数优先级与调参技巧
  • 超参数的适合范畴确定
  • Batch Normalization
  • softmax 回归
  • 深度学习框架

本篇 下篇 次要对吴恩达老师第 3 门课《Structuring Machine Learning Projects》( 构建机器学习我的项目 ) 相干内容做总结梳理。内容次要笼罩机器学习中的一些策略和办法,让咱们可能更快更无效地让机器学习零碎工作。

对于一个曾经被构建好且产生初步后果的机器学习零碎,为了能使后果更令人满意,往往还要进行大量的改良。之前的内容局部介绍了很多改良的办法,包含:

  • 收集更多数据
  • 调试超参数
  • 调整神经网络的大小或构造
  • 采纳不同的优化算法
  • 增加正则化

可抉择的办法很多,也很简单、繁琐。自觉抉择、尝试不仅消耗工夫而且可能收效甚微。想要找准改良的方向,使一个机器学习零碎更快更无效地工作,就须要学习一些在构建机器学习零碎时罕用到的策略。

1. 正交化

机器学习中有许多参数、超参数须要调试。通过每次只调试一个参数,放弃其它参数不变,而失去的模型某一性能扭转是一种最罕用的调参策略,咱们称之为 正交化办法(Orthogonalization)

正交化的外围在于每次调整只会影响模型某一方面的性能,而对其余性能没有影响。这种办法有助于更快更无效地进行机器学习模型的调试和优化

在机器学习 (监督学习) 零碎中,咱们心愿模型有 4 重评估:

  • 建设的模型在 训练集 上体现良好
  • 建设的模型在 验证集 上体现良好
  • 建设的模型在 测试集 上体现良好
  • 建设的模型在 理论利用 中体现良好

其中:

  • 对于第①条,如果模型在训练集上体现不好,能够尝试训练更简单的神经网络或者换一种更好的优化算法(例如 Adam)。
  • 对于第②条,如果模型在验证集上体现不好,能够进行正则化解决或者退出更多训练数据。
  • 对于第③条,如果模型在测试集上体现不好,能够尝试应用更大的验证集进行验证。
  • 对于第④条,如果模型在理论利用中体现不好,可能是因为测试集没有设置正确或者老本函数评估指标有误,须要扭转测试集或老本函数。

每一种“性能”对应不同的调节办法。而这些调节办法 (旋钮) 只会对应一个“性能”,是正交的。面对遇到的各种问题,正交化可能帮忙咱们更为精准无效地解决问题。

在模型性能调试中并不举荐应用早停法 early stopping。如果晚期进行,尽管能够改善验证集的拟合体现,然而对训练集的拟合就不太好。因为对两个不同的“性能”都有影响,所以早进行法不具备正交化。尽管也能够应用,然而用其余正交化管制伎俩来进行优化会更简略无效。

2. 单值评估指标

(对于本节波及到的机器学习利用中的评估指标详解,举荐浏览 ShowMeAI 文章 图解机器学习 | 模型评估办法与准则

构建与优化机器学习零碎时,单值评估指标十分必要。通过设置一个量化的单值评估指标(single-number evaluation metric),能够使咱们依据这一指标比拟不同超参数对应的模型的优劣,从而抉择最优的那个模型。

例如,对于二分类问题,罕用的评估指标是 准确率 (Precision)召回率(Recall)

假如咱们有 A 和 B 两个分类器,其两项指标别离如图。但理论利用中,咱们通常应用综合了准确率和召回率的单值评估指标 \(F1-Score\) 来评估模型的好坏。\(F1- Score\) 其实就是精准率和召回率的和谐平均数 (Harmonic Mean),比单纯的平均数成果要好。 咱们计算出两个分类器的 F1-Score,比照会发现 A 模型的成果要更好

除了 F1-Score 之外,咱们还能够应用 平均值 作为单值评估指标来对模型进行评估。

如图所示,\(A,B,C,D,E,F\) 六个模型对不同国家样本的错误率不同,能够计算其均匀性能,而后选 择均匀错误率最小的那个模型(\( C\) 模型)。

3. 优化指标和满足指标

有时候,要把所有的性能指标都综合在一起,形成单值评估指标是比拟艰难的 (比方在下面例子的根底上退出模型效率即运行工夫)。这时,咱们能够将某些指标作为 优化指标 (Optimizing Metric),寻求它们的 最优值 ;而将某些指标作为 满足指标 (Satisficing Metric),只有在肯定 阈值以内 即可。

咱们以猫类辨认的分类器为例,有 A、B、C 三个模型,各个模型的 Accuracy运行工夫 (Running time) 如下表中所示:

咱们能够将 Accuracy 作为优化指标(Optimizing metic),将 Running time 作为满足指标(Satisficing metic):给 Running time 设定一个阈值,在其满足阈值的状况下,抉择 Accuracy 最大的模型。

如上例中设定 Running time 必须在 100ms 以内:

  • 模型 C 不满足阈值条件,首先剔除
  • 模型 B 相比拟模型 A 而言,Accuracy 更高,性能更好

总结一下:优化指标 (Optimizing metic) 是须要优化的,越优越好 , 满足指标 (Satisficing metic) 只有满足设定的阈值就好了。上例中,准确率就是优化指标,因为咱们想要分类器尽可能做到正确分类;而运行工夫就是一个满足指标,如果你想要分类器的运行工夫不多于某个阈值,那最终抉择的分类器就应该是以这个阈值为界外面准确率最高的那个。

4. 动静扭转评估指标

对于模型的评估规范劣势须要依据理论状况进行动静调整,以让模型在理论利用中取得更好的成果。

例如,有时咱们不太能承受某些分类谬误,于是扭转单纯用错误率作为评估规范,给某些分类谬误更高的权重,以从谋求最小错误率转为谋求最小危险。

5. 训练 / 验证 / 测试集划分

ShowMeAI 在后面的文章 深度学习的实用层面 中提到了,咱们会将数据集分为训练集、验证集、测试集。构建机器学习零碎时,咱们采纳不同的学习办法,在训练集上训练出不同的模型,而后应用验证集对模型的好坏进行评估,确信其中某个模型足够好时再用测试集对其进行测试。

训练集、验证集、测试集的设置对于机器学习模型十分重要,正当的设置可能大大提高模型训练效率和模型品质。

5.1 验证集和测试集的散布

验证集和测试集的数据起源应该雷同(来自同一散布)、和机器学习零碎将要在理论利用中面对的数据统一,且必须从所有数据中随机抽取。这样,零碎能力做到尽可能不偏离指标。

如果验证集和测试集不来自同一散布,那么咱们从验证集上抉择的“最佳”模型往往不可能在测试集上体现得很好。这就好比咱们在验证集上找到最靠近一个靶的靶心的箭,然而咱们测试集提供的靶心却远远偏离验证集上的靶心,后果这支必定无奈射中测试集上的靶心地位。

5.2 验证集和测试集的大小

过来数据量较小 (小于 1 万) 时,通常将数据集依照以下比例进行划分,以保障验证集和测试集有足够的数据:

  • 无验证集 的状况:70% / 30%;
  • 有验证集 的状况:60% / 20% / 20%;

当初的机器学习时代数据集规模广泛较大,例如 100 万数据量,这时将相应比例设为 98% / 1% / 1% 或 99% / 1% 就曾经能保障验证集和测试集的规模足够。

5.3 何时扭转开发 / 验证集和评估指标

算法模型的评估规范有时候须要依据理论状况进行动静调整,目标是让算法模型在理论利用中有更好的成果。

仍旧以 猫类辨认 的分类器为例。初始的评估规范是错误率,算法 A 错误率为 3%,算法 B 错误率为 5%,从错误率评估指标上看显然 A 更好一些。然而,理论应用时发现算法 A 会通过一些色情图片,然而 B 没有呈现这种状况。从用户的角度来说,他们可能更偏向抉择 B 模型,尽管 B 的错误率高一些。

这时候,咱们就须要扭转之前单纯只是应用错误率作为评估规范,而思考新的状况进行扭转。例如减少色情图片的权重,减少其代价。

原来的 cost function:

$$
J=\frac1m\sum_{i=1}^mL(\hat y^{(i)},y^{(i)})
$$

更改评估规范后的 cost function:

$$
J=\frac{1}{w^{(i)}}\sum_{i=1}^mw^{(i)}L(\hat y^{(i)},y^{(i)})
$$

$$
w^{(i)}=
\begin{cases}
1, & x^{(i)}\ is\ non-porn\\
10, & x^{(i)}\ is\ porn
\end{cases}
$$

综上,总体来说机器学习可分为两个过程:① 定义一个适合的评估指标,② 基于上述指标评估以后模型的体现。也就是说,第 1 步是找靶心,第 2 步是通过训练,射中靶心。然而在训练的过程中可能会依据理论状况扭转算法模型的评估规范,进行动静调整。

还有一种状况下,咱们须要动静扭转评估规范:咱们的 验证集 / 测试集与理论应用的样本分布不统一。比方猫类辨认分类场景下样本图像分辨率差别。

6. 比拟人类体现程度

很多机器学习模型的诞生是为了取代人类的工作,因而其体现也会跟人类体现程度作比拟。下图展现了 随着工夫的推动,机器学习零碎和人的体现程度的变动

个别的,当机器学习超过人的体现程度后,它的提高速度逐步变得迟缓,最终性能无奈超过某个实践下限,这个下限被称为 贝叶斯最优误差(Bayes Optimal Error)

贝叶斯最优误差个别认为是实践上可能达到的最优误差。换句话说,其就是实践最优函数,任何从 \(x\) 到精确度 \(y\) 映射的函数都不可能超过这个值。例如,对于语音辨认,某些音频片段嘈杂到根本不可能晓得说的是什么,所以完满的识别率不可能达到 100%。

因为人类对于一些天然感知问题的体现程度非常靠近贝叶斯最优误差,所以当机器学习零碎的体现超过人类后,就没有太多持续改善的空间了。而当构建的机器学习模型的体现还没达到人类的体现程度时,咱们会应用各种形式来晋升它:

  • 采纳人工标记过的数据进行训练
  • 通过人工误差剖析理解为什么人可能正确辨认
  • 进行偏差、方差分析

当模型的体现超过人类后,这些办法的作用就微不足道了。

6.1 可防止偏差

理论利用中,要看 人类体现 (误差) 训练误差 验证误差 的相对值。以猫类辨认分类为例:

  • 如果人类误差为 1%,模型训练误差为 8%,验证误差为 10%。因为前两者相差 7%,后两者之间只相差 2%,所以指标是尽量在训练过程中减小训练误差,即减小偏差 bias。
  • 如果图片很含糊,肉眼也看不太清,人类体现 (误差) 进步到 7.5%。此时,因为训练误差与其只相差 0.5%,验证误差与训练误差相差 2%,所以指标是尽量在训练过程中减小验证误差,即方差 variance。

所以这个过程,咱们看的更多是绝对的数据。

模型在「训练集上的误差」与「人类体现程度」的差值被称作可防止偏差(Avoidable Bias)

可防止偏差低便意味着模型在训练集上的体现很好,而训练集与验证集之间错误率的差值越小,意味着模型在验证集与测试集上的体现和训练集同样好。

如果可防止偏差大于训练集与验证集之间错误率的差值,之后的工作就应该专一于减小偏差;反之,就应该专一于减小方差。

6.2 了解人类体现程度

咱们说了很多时候会用 人类程度误差 (Human-level Error) 来代表贝叶斯最优误差 (或者简称贝叶斯误差)。对于不同畛域的例子,不同人群因为其教训程度不一,错误率也不同。 一般来说,咱们将体现最好的作为人类程度误差。然而理论利用中,不同人抉择人类程度误差的基准是不同的,这会带来肯定的影响。

吴恩达老师的课程里,以医疗影像场景举例说明了,这个场景下不同人群的辨认 error 有所不同:

  • 一般公众人群:3% 错误率
  • 一般医生:1% 错误率
  • 有教训的医生:0.7% 错误率
  • 有教训的医生团队:0.5% 错误率

上例中不同人群的错误率不同。一般来说,咱们将体现最好的那一组,即「有教训的医生团队」作为「人类程度」,即 human-level error 就为 0.5%。然而理论利用中,不同人可能抉择的「人类程度」基准是不同的,这对咱们后续会带来一些影响。

如果该模型训练误差为 0.7%,验证为 0.8%

  • 如果抉择「有教训的医生团队」,即人类程度误差为 0.5%,则此时 bias 比 variance 更加突出。
  • 如果抉择「有教训的医生」,即人类程度误差为 0.7%,则 variance 更加突出。

大家能够看到,抉择什么样的人类程度误差,有时候会影响 bias 和 variance 值的绝对变动。当然这种状况个别只会在模型体现很好,靠近 bayes optimal error 的时候呈现。越靠近 bayes optimal error,模型越难持续优化,因为这时候的人类程度误差可能是比拟含糊难以精确定义的。

7. 超过人类的体现

对于天然感知类问题,例如视觉、听觉等,机器学习的体现临时还不迭人类。然而在很多其它方面,机器学习模型的体现曾经超过人类了,包含:

  • 在线广告(计算广告)
  • 商品举荐
  • 物流工夫预估等
  • 贷款申请审批

机器学习模型超过人类程度是比拟艰难的。然而只有提供足够多的样本数据,训练简单的神经网络,模型预测准确性会大大提高,很有可能靠近甚至超过人类程度。而当算法模型的体现超过人类程度时,很难再通过人的直觉来解决如何持续进步算法模型性能的问题

8. 总结

进步机器学习模型性能次要要解决两个问题:avoidable bias 和 variance。训练误差与人类程度误差之间的差值反映的是 avoidable bias,验证误差与训练误差之间的差值反映的是 variance。

根本假如

  • 模型在训练集上有很好的体现
  • 模型推广到开发和测试集啥也有很好的体现

8.1 缩小可防止偏差(avoidable bias)

当咱们发现模型的次要问题是「可防止偏差」时,咱们能够采纳如下形式优化:

  • 训练更大的模型
  • 训练更长时间、训练更好的优化算法(Momentum、RMSprop、Adam)
  • 寻找更好的网络架构(RNN、CNN)、寻找更好的超参数

8.2 缩小方差(variance)

当咱们发现模型的次要问题是「方差」时,咱们能够采纳如下形式优化:

  • 收集更多的数据
  • 正则化(L2、dropout、数据加强)
  • 寻找更好的网络架构(RNN、CNN)、寻找更好的超参数

参考资料

  • 图解机器学习 | 模型评估办法与准则

ShowMeAI 系列教程举荐

  • 图解 Python 编程:从入门到精通系列教程
  • 图解数据分析:从入门到精通系列教程
  • 图解 AI 数学根底:从入门到精通系列教程
  • 图解大数据技术:从入门到精通系列教程
  • 图解机器学习算法:从入门到精通系列教程
  • 机器学习实战:手把手教你玩转机器学习系列
  • 深度学习教程 | 吴恩达专项课程 · 全套笔记解读

举荐文章

  • 深度学习教程 | 深度学习概论
  • 深度学习教程 | 神经网络根底
  • 深度学习教程 | 浅层神经网络
  • 深度学习教程 | 深层神经网络
  • 深度学习教程 | 深度学习的实用层面
  • 深度学习教程 | 神经网络优化算法
  • 深度学习教程 | 网络优化:超参数调优、正则化、批归一化和程序框架
  • 深度学习教程 | AI 利用实际策略(上)
  • 深度学习教程 | AI 利用实际策略(下)
  • 深度学习教程 | 卷积神经网络解读
  • 深度学习教程 | 经典 CNN 网络实例详解
  • 深度学习教程 | CNN 利用:指标检测
  • 深度学习教程 | CNN 利用:人脸识别和神经格调转换
  • 深度学习教程 | 序列模型与 RNN 网络
  • 深度学习教程 | 自然语言解决与词嵌入
  • 深度学习教程 | Seq2seq 序列模型和注意力机制

正文完
 0