Andrew Eun,“机器学习的热情”。 第36-46章的翻译

自吴安德(Andrew Ng)的《机器学习渴望》第一章出版以来已经过去了三年。 如果您订阅了“机器学习”中心,则无需向您介绍其作者,并且很可能您已经以原始来源的语言阅读过这本书。 该书的前半部分是由alexey_nichnikov译成俄语的,目前已在哈勃上发表了一系列文章


我向您介绍本书第二部分(即第36-58章)的译文。 为了方便发布,计划将其分为两篇文章。 此外,您可以下载以pdf格式编译的这些章节的完整翻译,也许有人会觉得这种格式更便于阅读。

第一篇文章将重点介绍在不同发行版上的培训和测试,以及调试输出算法。

在不同发行版上的培训和测试



Chapter 36.什么时候应该训练和测试不同的分布



Cat Photo应用程序的用户上传了10,000张您手动标记为包含或不包含猫的图像。 您还可以从Internet下载更多的200,000张图像。 如何定义训练(训练集),验证(开发集)和测试选择(测试集)?

由于来自用户的10,000张图像紧密反映了您希望将来成功使用的数据的真实概率分布,因此可以将其用于验证和测试样本。 如果您训练需要大量训练示例的深度学习算法,则可以为其提供从互联网下载的另外200,000张图像以进行训练。 因此,验证样本和测试样本中的数据将具有不同的概率分布。 这将如何影响您的工作结果?

无需将我们的数据分为训练,验证和测试样本,我们可以获取所有210,000张图像并将它们随机洗牌成训练,验证和测试样本。 在这种情况下,所有数据都具有相同的分布。 但我不建议使用此方法,因为大约97.6%(205,000 / 210,000)的验证和测试样本将包含从Internet下载的图像,这些图像不能反映您想要成功获得的实际分布。

关于确认和测试样品定义的建议:

  • 选择验证和测试样本,以反映您将来希望接收并希望成功使用的数据。

大多数学术机器学习文献表明,训练,验证和测试样本均具有相同的分布。 1在机器学习的曙光中,数据很少。 通常我们只有一个具有一定概率分布的数据集。 因此,假设所有数据都来自同一来源(通常与实际情况相同),我们将整个集合随机分为训练样本,验证样本和测试样本。
1关于各种分布模型的训练和测试有许多科学研究。 示例包括领域适应,迁移学习和多任务学习。 但是,理论与实践之间仍然存在巨大差距。 如果在数据集A上训练模型并在数据集B上进行测试,这是非常不同的,那么运气会对算法的性能产生巨大影响。 (在这里,“运气”包括研究人员针对特定任务手动选择的属性,以及我们尚未理解的其他因素。)这使得很难进行系统的学术研究,以培训和测试各种分布。

但是在大数据时代,我们现在可以使用庞大的训练集,例如来自互联网的带有猫的图像。 即使训练样本的分布不同于验证样本和测试样本的分布,我们仍然希望将其用于训练,因为这可以提供许多其他信息。

在带有猫检测器的示例中,我们不能将用户上传的所有10,000张图像放入验证和测试样本中,而只能在其中放置5,000张图像。 剩下的5,000个示例可以放入训练集中。 因此,训练样本将包含205,000个示例,并将包括与验证样本和测试样本具有相同分布的数据,外加200,000个Internet图像。 在下一章中,我们将讨论为什么此方法有用。

让我们看第二个例子。 假设您正在构建一个语音识别系统,用于转录Navigator语音应用程序的地址。 您有20,000个示例,其中每个用户都命名了一个地址。 但是您还有500,000个其他音频记录,用户在其中谈论免费主题。 您可以使用10,000个示例,以及用于验证和测试样本的地址,其余10,000个示例以及另外500,000个示例将包含在培训集中。

我们将继续假设我们的验证和测试样本数据具有相同的分布。 但是重要的是要了解并记住,训练和验证/测试样本中的不同分布将导致特殊问题。


Chapter 37.如何决定使用全部数据还是仅使用部分数据



假设您的猫探测器的训练样本包含10,000个用户上传的图像。 让此数据具有与验证和测试样本相同的分布,并且您想要获得最大结果的分布是这样的。 您还可以从Internet下载另外20,000张图像。 是否有必要将所有20,000 + 10,000 = 30,000张图像都包含在训练集中,还是最好删除20,000张Internet图片,以免将错误引入学习算法中?

使用较早的学习算法(例如手动设计的计算机视觉算法,然后是简单的线性分类器),则存在将来自两个来源的数据组合在一起可能降低结果的真实风险。 因此,一些工程师会警告您不要包含20,000个在线图像。

但是在功能强大,灵活的学习算法(例如大型神经网络)的现代时代,这种风险已大大降低。 如果您有能力构建具有足够大量隐藏层的神经网络,则可以安全地将20,000张Internet图像添加到您的训练集中。 添加图像可能会增加您的收益。

该观察基于这样的事实,即存在一些对应关系xy对于两种类型的数据均适用。 换句话说,存在一种系统,该系统已经从移动应用程序接收到Internet图像或图像,要么可靠地预测标签,甚至不知道图像的来源。

添加20,000个其他Internet图像将具有以下效果:

  1. 这将为您的神经网络提供更多有关猫看起来/不看起来的示例。 这很有用,因为Web图像和移动应用程序的用户上传的图像有一些相似之处。 您的神经网络可以将在线图像中获得的一些知识应用于移动应用程序中的图像。
  2. 这迫使神经网络将其部分资源用于识别特定于Internet图像的属性(例如,更高的分辨率,各种设计方法等)。如果这些属性与来自移动应用程序的图像明显不同,则将“消耗”神经网络的代表性功能的一部分。 因此,识别从移动应用程序接收到的数据的机会将更少,而这正是您真正要担心的。 从理论上讲,这可能会降低算法的性能。

换句话说,为了解释第二种效果,我们可以转到一个虚构的人物夏洛克·福尔摩斯(Sherlock Holmes),他说你的大脑看起来像一个阁楼,空间有限。 他说:“每增加知识,您就会忘记以前的知识。 因此,极为重要的是,不要让无用的事实取代有用的事实。” 2
2 “猩红色的练习曲”,阿瑟特·柯南·道尔,1887年

幸运的是,如果您具有构建足够大的神经网络(即“足够大的阁楼”)所需的计算能力,则上述的这种“挤出”并不是一个严重的问题。 您在Internet图像和来自移动应用程序的图像上都有足够的培训机会,而两种类型的数据都无法竞争识别能力。 算法的“大脑”足够大,因此您不必担心突然间阁楼上没有足够的空间。

但是,如果您没有足够大的神经网络(或另一种非常灵活的学习算法),那么您应该更加注意与验证和测试样本相匹配的训练数据。

如果您认为自己的数据没有任何益处,则应简单地排除它们以加快计算速度。 例如,假设您的验证和测试样本主要包含人,地方,标志和指针以及动物的随机照片。 假设您还有大量扫描的历史文档集合:



这些文件没有猫之类的东西。 它们看起来也与验证和测试样本中的数据完全不同。 将该数据作为负面示例包括在内是没有意义的,因为在这种情况下,第一个效果中描述的好处将是微不足道的。 根据这些数据,您的神经网络将几乎无法找到可应用于您的验证和测试样本的任何内容。 这些示例的包含将导致计算资源的损失和神经网络代表能力的下降。


Chapter 38.如何决定是否包括冲突数据



假设您想学习如何预测纽约的房价。 给定房屋的大小(输入x ),您要预测价格(目标标签y )。

纽约的房价很高。 假设您有第二个数据集-密歇根州底特律的房价,那里的房价要低得多。 我应该在训练集中包括这些数据吗?

如果给定相同的x尺寸,则y房屋的价格将根据在纽约还是在底特律而有很大不同。 如果您只关心预测纽约的房价,则将这两个数据集结合会损害您的生产率。 在这种情况下,最好不要使用来自底特律集的冲突数据。 3
3有一种方法可以解决底特律数据与纽约数据不兼容的问题,即在每个训练示例中添加一个附加功能,即 城市指示。 给定x的输入值(现在指示城市),现在就可以唯一确定y的目标值。 但是,实际上,我仍然看不到经常这样做。

纽约和底特律的住房示例与互联网猫的图像示例和移动应用程序的图像示例有何不同?

关于猫的图像的示例的不同之处在于,给定输入图像x ,您甚至可以在不知道我们是从Internet还是从移动应用程序接收到图像的情况下,可靠地预测标签y ,指示标签上是否有猫。 即 有一个函数f(x)可靠地反映输入x与目标输出y的对应关系,甚至不知道x的来源。 因此,识别Internet图像的任务与从移动应用程序识别图像的任务“相对应”。 这意味着包括所有数据和一些可能的显着优势在内,只有一个很小的负数(计算成本除外)。 与来自纽约和底特律的数据相互矛盾的示例相反,对于纽约和底特律而言,对于相同的输入值x (房屋大小),价格根据房屋所在的城市而有很大差异。


Chapter 39.称量数据



假设您有200,000个在线图像和5,000个来自移动应用程序用户的图像。 这些数据集的大小之间存在40:1的比率。 从理论上讲,只要您构建一个庞大的神经网络并使用所有可用的205,000个示例对其进行足够长的训练,就可以使该算法在Internet图像和移动图像上均能正常工作,这没有错。

但是实际上,Internet图片比移动应用程序的图片多40倍,您可能需要花费比仅训练5,000张图片的网络多40倍的计算资源。

如果您没有大量的计算资源,则可以折衷地减少Internet图像的权重。

例如,假设您的优化目标是平方误差(这不是分类问题的不错选择,但是它将简化我们的解释)。 因此,您的学习算法正在尝试优化:

$$ display $$ \min_θ\ sum _ {(x,y)∈MobileImg}(h_θ(x)-y)^ 2 + \ sum _ {(x,y)∈InternetImg}(h_θ(x)-y)^ 2 $$显示$$


上面的第一笔金额是5,000张移动图像的总错误,第二笔金额是200,000张Internet图像的总错误。 相反,您可以使用其他参数进行优化  beta

$$ display $$ \min_θ\ sum _ {(x,y)∈MobileImg}(h_θ(x)-y)^ 2 + \ beta \ sum _ {(x,y)∈InternetImg}(h_θ(x)-y) ^ 2 $$显示$$


如果您安装  beta = 1/40,该算法将对5,000张移动图片和200,000张互联网图片给予同等的权重。 您还可以设置参数  beta 其他值,可能会将其调整为验证样本。

如果将较低的权重分配给Internet图像,则无需创建大型神经网络即可确保算法能够很好地应对两种任务。 仅当您怀疑其他数据(Internet图像)的分布与验证样本和测试样本中的数据有很大不同,或者其他数据比通过相同分布获得的数据多得多时,才需要使用这种“加权”方法就像验证和测试样本(移动图像)一样。


第40章。将训练样本概括为验证样本



假设您在训练样本不同于验证/测试样本的情况下应用ML。 假设培训样本包含Internet图像+移动图像,而验证/测试样本仅包含移动图像。 但是,该算法无法很好地发挥作用:在验证/测试样本上的错误比我们希望的要高得多。 以下是可能并非如此的一些原因:

  1. 该算法在训练集上效果不佳。 这是训练样本分布的高(可避免)偏差的问题。
  2. 该算法在训练集上效果很好,但不能很好地推广到与训练集中具有相同分布的新数据(以前未显示)。 这是一个很大的差异。
  3. 该算法很好地概括了与训练样本中具有相同分布的新数据(以前未显示),但不适用于来自验证/测试样本的数据。 由于训练样本中的数据与验证/测试样本中的数据相关性很差,因此我们称此问题为数据不匹配。

例如,假设人们在识别猫的任务中取得了几乎完美的结果。 您的算法已达到:

  • 训练样本中1%的错误
  • 与训练样本分布相同的新数据(以前未显示在算法中)有1.5%的误差
  • 验证样本中有10%的错误

在这种情况下,您肯定有数据不匹配的问题。 要启用它,您可以尝试使训练样本更类似于验证/测试样本。 稍后我们将讨论该技术的一些技术。

为了诊断该算法遭受上述每个问题1-3的程度,拥有不同的数据集将很有用。 特别是,您可以将其分为两部分:将算法分为实际的训练样本和一个单独的集合,称为训练验证(“ trainig dev”集合),而不是为算法提供所有可用的训练数据。 ),我们不会在培训中使用。

因此,您有4个数据集:

  • 训练集(训练集)。这是将在其上训练算法的数据(例如,Internet图像+来自移动应用程序的图像)。不必以相同的分布获取这些数据,我们最终将重点放在结果(验证/测试样本)上。
  • 培训和验证样本(“培训开发”集)。所获得的数据与训练样本中的分布相同(例如,Internet图像+移动应用程序的图像)。该集合通常小于训练集,并且应该足够大以评估和跟踪我们的训练算法的进度。
  • 验证采样(开发集)。所获取的数据与测试样本中的分布相同,并且应完全反映我们努力实现最大改进的数据的分布(例如,来自移动应用程序的图像)。
  • 测试所获得的数据与验证样本中的分布相同(例如,来自移动应用程序的图像)。

有了这四个单独的数据集,您可以评估:

  • 训练误差(训练误差),是通过评估训练样本得出的。
  • 通过评估训练验证集,该算法具有与训练集中相同分布的新数据泛化能力。
  • 通过评估验证和(或)测试样本,整个算法在解决问题上的效率。

本书第5-7章给出的有关选择验证样本大小的大多数建议也适用于训练和验证样本。


第41章。偏差,方差和数据失配误差的确定



假设人们在检测猫的任务中达到了几乎完美的效率(错误≈0%),因此最佳错误率约为0%。

假设您有:

  • 训练样本中1%的错误
  • 训练和验证样本中的5%错误
  • 验证样本中5%的错误

这告诉我们什么?您知道自己的差异很大。前面介绍的减少色散的方法应该可以使您有所进步。

现在,假设您的算法已达到:

  • 训练样本中10%的错误
  • 培训和验证样本中11%的错误
  • 验证样本中12%的错误

这表明您在训练集中有很高的可避免偏见。 该算法在训练集上产生较差的结果,但是减少偏移量的方法应该有所帮助。

在上面的两个示例中,该算法仅遭受高偏差(可避免偏差)或仅遭受高分散(方差)。而且,该算法可能遭受高偏差,高分散和数据不一致的任何组合。例如:

  • 训练样本中10%的错误
  • 培训和验证样本中11%的错误
  • 验证样本中有20%的错误

该算法遭受高偏差(可避免偏差)和数据失配的困扰,并且同时在训练样本中不会遇到高分散的问题。

通过在下表中编写错误,可能会更容易理解它们之间的关系:


继续使用cat图像检测器示例,您可以看到X轴上有两个不同的数据分布(分布A和分布B)。在Y轴上,我们有三种错误类型:人为错误,训练算法所依据的示例错误以及未训练算法所针对的示例错误。我们可以使用上一章中确定的各种类型的错误填充表格单元格。

如果需要,您还可以填写此表中的其余两个单元格:您可以填写右上角的字段(“人类可以通过移动应用程序访问图像中的效率”),要求某人从移动应用程序中标记出猫的图像,然后测量其错误。您可以通过从移动应用程序(分布B)拍摄猫的图像并将其一小部分放入训练集中来填充下一个字段,以便神经网络也可以从中学习。然后,您可以在此数据子集上测量训练模型的误差。填充这两个附加字段有时可以使人们对该算法如何处理两种不同的数据分布(分布A和B)有更多的了解。

了解算法最容易遭受的错误类型之后,您可以更好地确定是专注于减少偏差,减少方差还是减少数据不一致。


章42.解决数据不匹配错误



假设您已经开发了一种语音识别系统,该系统在训练样本和训练验证样本上都可以很好地工作。但是,该算法不适用于您的验证样本:您有数据不匹配的问题。你能做什么?

我建议您:(i)尝试了解训练和验证样本中数据的哪些属性不同;(ii)尝试从算法有问题的验证样本中找到更多与样本更匹配的训练数据。 4
4 « » (domain adaptation) — . , , .

例如,假设您正在为语音识别系统执行验证错误分析:您手动查看了100个示例并尝试了解算法在哪里出错。您会发现您的系统运行不正常,因为来自验证样本的大多数音频录音都是在车内进行的,而大多数训练样本的示例都是在静音的背景下录制的。引擎和道路噪音会大大降低语音识别系统的性能。在这种情况下,您可以尝试获取更多包含汽车录音的培训示例。误差分析的目的是了解训练样本与验证样本之间的重大差异,从而导致数据不匹配。

如果您的训练和训练验证样本包括记录在汽车中的声音,则还应该在此数据集上再次检查系统的有效性。如果它可以很好地用于训练样本中的“汽车”样本,而不适合训练验证样本中的“汽车”样本,那么这再次证实了以下假设:获得更多“汽车”样本会有所帮助。这就是为什么在上一章中我们讨论了在训练集中包含一组与验证/测试样本分布相同的数据的可能性。这样,您就可以将训练集中“自动”示例与类似的验证/测试样本示例进行比较,比较系统的有效性。

不幸的是,这件事没有任何保证。例如,如果您没有机会获得更多与验证样本数据更匹配的训练数据,则可能没有提高效率的明确途径。


Chapter 43.合成人工数据



您的语音识别系统需要更多的声音数据,就像这些示例的录音是在汽车中录制的一样。与其在骑车时收集大量数据,不如通过人为生成数据来获取数据的更简单方法。

假设您收到大量带有道路/汽车噪音的录音。您可以从多个站点下载此数据。假设您还拥有大量的培训课程,例如在安静的房间里人们交谈的例子。如果您录制讲话者的录音并向其“添加”汽车/道路噪音,您将获得听起来像该人在嘈杂的汽车中说话的录音。使用此过程,您可以合成听起来像是收集在汽车内的大量数据。

通常,在几种情况下,人工数据的生成使您可以创建合理匹配验证样本的庞大数据集。让我们以猫图像检测器为例。您注意到验证样本中的图像在移动时具有更多的模糊效果,因为它们通常是从拍摄期间略微移动手机的手机用户获得的。您可以从训练集中获取清晰的Internet图像,并为其添加模仿运动模糊的效果,从而使它们与验证集中的图像更加相似。

请记住,人工数据的合成有其自身的问题:有时候,创建对人来说看起来像现实的合成数据要比对计算机看起来像现实的数据更容易。例如,假设您在一个训练集中有1000个小时的语音记录,但是只有1个小时的汽车噪音。如果您重复使用同一小时的汽车噪音,而不是训练集中的原始1000小时,则您将获得一个综合数据集,其中相同的汽车噪音一遍又一遍地重复。尽管听这种声音的人可能无法说出其功能-对于我们大多数人来说,所有汽车噪音听起来都是一样的,但是学习算法可能会在1个小时的汽车噪音中被重新训练。这样它可能无法广泛推广到新的录音中,在这些录音中汽车噪音听起来不同。

另外,假设您有1000个小时的汽车噪音,但是仅使用了10辆不同的汽车进行记录。在这种情况下,该算法可能会重新训练这10辆汽车的记录,并且在测试另一辆汽车的记录时表现不佳。不幸的是,这些问题很难发现。


再举一个例子,假设您创建了一个用于识别汽车的计算机视觉系统。假设您正在与一家视频游戏公司合作,该公司拥有使用计算机图形学制作的几种汽车模型。要训​​练算法,您可以使用这些模型来生成合成汽车图像。即使合成图像看起来非常逼真,这种方法(许多人独立提出的方法)也可能效果不佳。一个视频游戏可以有大约20种汽车模型。创建高质量的汽车3D模型非常昂贵,如果您正在玩游戏,您可能不会注意到一遍又一遍地看到同一辆汽车,也许只是颜色不同。这些数据对您来说非常逼真。但是与行驶中所有汽车的种类相比,因此与在验证/测试样本中可能看到的集合相比,这组20个综合模型仅捕获了全球所有汽车种类中的一小部分。因此,如果您的100,000个训练示例完全基于这20辆汽车,那么您的系统将受到这些特定模型的重新训练,并且无法很好地推广到包括其他汽车模型的验证/测试样本。

综合数据时,请考虑您是否实际上正在生成一组具有代表性的示例。尽量不要提供综合数据属性
允许学习算法将合成示例与非合成示例区分开,例如在基于20个汽车模型之一获得所有合成数据或仅从1小时的汽车噪音中获得所有合成声音的情况下。遵循此建议可能非常困难。

在进行数据合成时,有时我们的团队会花费数周的时间来创建数据,这些数据的细节必须与合成数据的实际分布足够接近,从而产生重大影响。但是,如果您能获得正确的详细信息,它会突然使您获得比以前更大的训练集。

调试输出算法


Chapter 44.优化基准



假设您正在开发语音识别系统。您的系统通过以音频A作为输入来工作,并为每个可能的输出句子S 计算一些分数A(S)。例如,您可能会尝试评估分数A(S)= P(S | A),即假设音频已发送到输入A,则句子S是正确的输出转录的概率。

考虑到计算分数A(S)的方法,您需要找到英语的句子,该句子的评分最高:

Output=argmaxSScoreA(S)


如何从上面的示例中计算“ arg max”?英语有50,000个单词,在这种情况下,可能有(50,000)个N长度为N的句子。这个列表太多了。

因此,您需要应用近似搜索算法来尝试找到优化(最大化)分数A(S)分数 S值。这种算法的一个示例是波束搜索,它可以在搜索过程中仅保存K个最佳候选者。 (就本章而言,您不需要了解射线搜索操作的详细信息。)此类算法不能保证找到S的值,这会使得分Score A(S)最大化

想象一下,有人在录音带上说“我喜欢机器学习”。但是,系统没有输出正确的转录,而是输出了错误的“我爱机器人”。发生错误的可能原因有两个:

  1. 搜索算法中的问题波束搜索算法错误地找到了S的值,从而使得分A(S)最大化
  2. 评估函数的一个客观问题我们对得分A(S)= P(S | A)的估计是不准确的。特别是,所选分数A(S)不允许正确识别正确的转录“我爱机器学习”。

取决于造成系统错误的原因,您应该为其他工作分配不同的优先级。在第一种情况下,您应该改进搜索算法,在第二种情况下,您应该研究一种计算Score A(S)分数的学习算法

面对类似的情况,一些研究人员随机决定研究搜索算法,而另一些研究人员则随机选择研究对Score A(S)评分功能的改进。但是,除非您找出导致系统错误的真正原因,否则您的所有工作都将被浪费掉。如何就哪些工作值得做出更系统的决定?

让我们在S 将是输出转录(“我爱机器人”)。令S *为正确的抄写(“我爱机器学习”)。要了解上面列出的两个问题中的哪个问题,您可以进行优化验证测试:首先计算得分A(S *)和得分A(S out)的得分。然后检查两个等级中哪个等级更重要。有两种概率:

  1. Score A (S*) > Score A (S out ), .. ().

    S*. S out . , S, Score A (S). , . , (beam search).
  2. Score A (S*) ≤ Score A (S out ), .. ().

    , Score A (.): S out . . Score A (S) S.

我们的讨论仅涉及一个示例。为了将优化控制测试付诸实践,您必须检查验证样本的错误。对于每个错误,您必须验证预期(正确)转录的估计值是否高于输出(错误)转录的估计值,即分数A(S *)>分数A(S out)。验证样本中存在此类不平等现象的每个示例都将被标记为由优化算法引起的错误。由于计算分数A(。)的方法不正确,因此每个不等式不成立的示例都将被视为错误

例如,您发现95%的错误是由计算得分A时评估函数的工作引起(。),只有5%的错误是由优化算法引起的。现在您知道,无论您如何优化优化功能,实际上它都将帮助消除不超过5%的错误。因此,您应该集中精力改进分数A(。)的计算方法


第45章。通用优化控制测试程序



您可以在获得一些x作为输入时应用优化控制测试,知道如何计算得分X (y),该得分指示输出y与输入中给定x对应的程度。 此外,您使用近似搜索算法来找到arg max Y Score X (y),但是您怀疑在找到最大值时搜索算法是错误的。 在前面的示例中,使用语音识别系统, x = A是录音,而y = S是输出转录。

假设y *是正确的输出值,但是算法改为返回yout。 然后最主要的是检查得分X (y *)和得分X (y out )之间的关系。 如果第一个估计值大于第二个估计值,则错误的原因在于优化算法中,否则,故障在于评分Score X (y)的计算功能。

让我们看另一个例子。 假设您正在创建一个从中文到英语的机器翻译系统。 您的系统通过接收句子C作为输入来工作,为翻译E的每个可能版本计算分数C (E)。例如,您可以使用分数C (E)= P(E | C),即 鉴于句子C已经提交,转移是E的概率。

您的机器翻译引擎正在尝试计算:

=arg maxECE



但是,英语中所有可能的E句子的集合太大,以至于您必须依靠启发式搜索算法。

假设您的算法比正确的翻译E *更经常产生错误的翻译E。 然后,优化控制测试将允许计算不等式得分C (E *)>得分C (E out )。 如果已保存,则分数C (。)正确地将E *识别为最佳输出E out ,因此,您可以将此误差归因于近似搜索算法的份额,否则,应归因于计算函数分数C (。)。

这是AI中非常普遍的模式:首先,我们训练近似估计函数Score x (。),然后使用近似最大化算法。 如果您记住此模式,则可以使用优化控制测试来查找错误源。


Chapter 46.强化学习示例




假设您使用机器学习来教直升机如何执行复杂的操作。 上图是一台由计算机控制并在引擎关闭的情况下降落的直升机的延时图像。

这种操作称为自动旋转着陆。 即使发动机突然崩溃,它也可以使直升机降落。 飞行员在训练中会练习这种动作。 您的目标是使用机器学习算法,以便直升机可以沿着某个轨迹T飞行并在最后安全着陆。

要应用强化训练,您必须开发一个“奖励函数” R(。)。该函数给出一个估计值,以显示T.的每个可能轨迹的状况,例如,如果轨迹T导致直升机坠毁,则让奖励R(T)=- 1000,即 具有很大的负面价值。 以成功降落结束的轨迹T将具有R(T)的正估计值,该值准确反映了降落的平稳程度。 奖励函数R(。)通常是手动选择的,以量化T的各种轨迹的理想程度。它必须补偿各种因素:着陆过程中摇晃了多少,直升机是否正好准确地降落在正确的位置,下降对乘客的努力程度等等。 好的奖励功能不容易开发。

给定奖励函数R(T),强化学习算法的任务是控制直升机,使其达到最大T R(T)。 但是,强化学习算法进行了许多近似,可能无法成功实现这种最大化。

假设您定义了R(。)奖励函数并运行学习算法。 但是,它的效果比人类飞行员的效果差得多-它在降落时会震动很多,而且似乎不太安全。 如何确定该错误是否与试图遵循最大T R(T)路径的强化学习算法有关,还是与试图测量并确定着陆期间可接受的颠簸与着陆点精度之间的理想关系的奖励函数有关?

我们应用优化控制测试。 设T human是飞行员遵循的路径,T out是算法选择的路径。 根据上面的描述,我们同意T human的轨迹要好于T out ,然后关键的测试问题将是R(T human )> R(T out )是否符合现实。

选择1:如果这种不平等现象持续存在,则奖励函数R(。)正确估计T human的轨迹。 但是强化学习算法选择了劣势轨迹T out 。 这意味着值得改进我们的强化学习算法。

选项2:无法保留这种不平等,即 R( 人类 )≤R( 人类 )。 这意味着奖励函数R(。)为T human分配了最差的结果,尽管到目前为止这是最好的轨迹。 您应该努力提高R(。),以找到与良好拟合相对应的因子的最佳比率。

许多机器学习应用程序都有此“模板”,用于使用近似搜索算法优化得分x (。)函数。 有时我们没有确切给定的输入x,因此优化仅简化为评估函数Score(。)。 在上面的示例中,奖励函数是奖励函数Score(T)= R(T),优化算法是试图计算出良好轨迹T的强化学习算法。

此示例与先前示例之间的唯一区别在于,我们没有将其与“最佳”输出进行比较,而是将其与T 人的人类效率进行了比较。 我们假设T 人的轨迹是合理的,即使不是最优的。 通常,只要您有y *(在此示例中为T human ),就当前学习算法的效率而言,这是最佳输出(即使它不是“最优”),那么优化控制测试也可以显示是否会有更多有望改善优化算法或评估功能。


[ ]

Source: https://habr.com/ru/post/zh-CN485070/


All Articles