简介
MachineLearning YearningSharing 是北京科技大学“机器学习研讨小组”旗下的文献翻译项目,其原文由Deep Learning.ai 公司的吴恩达博士进行撰写。本部分文献翻译工作旨在研讨小组内部交流,内容原创为吴恩达博士,学习小组成员只对文献内容进行翻译,对于翻译有误的部分,欢迎大家提出。欢迎大家一起努力学习、提高,共同进步!
致谢
Deep Learning.ai公司
吴恩达(原文撰稿人)
陆顺(1-5章)
梁爽(6-10章)
郑烨(11-15章)
吴晨瑶(16-20章)
玉岩(21-25章)
陈波昊(25-30章)
翟昊(31-35章) 高宏宇(36-40章)
丁韩旭(41-45章)
李汤睿(46-50章)
马聪 (整体汇总)
北京科技大学“机器学习研讨小组”
人工智能前沿学生论坛(FrontierForum of Artificial Intelligence)
第一部分:吴恩达《ML Yearning》| 关于开发集、测试集的搭建 第二部分:吴恩达《ML Yearning》| 基础的误差分析& 偏差、方差分析 第三部分:吴恩达《ML Yearning》| 关于学习曲线的分析&与人类级别的表现对比
36 、什么时候应该在不同的分类中训练和测试
分享人:高宏宇
你的猫片APP的用户已经上传了10000张你手动标记了是否包含猫的照片。你还有一个更大的有着200000张图片的图片集,这是你从网上下载的。那么你怎么划分训练集,验证集和测试集呢?
因为10000张用户上传的图片能够反映你想要的概率分布,所以你可以使用这个数据集作为你的验证集和测试集。如果你在训练一个需要大量数据的深度学习算法,你可以使用额外的从网上下载的200000张图片来训练。现在,你的训练集和验证/测试集有着不同的概率分布,这会怎么影响你的工作呢?
除了把我们的数据分割成训练集、验证集和测试集,我们也可以把我们所有的210000图片随机的抽取当作训练集、验证集和测试集。在这种情况下所有的数据都有一个相同的概率分布。但是我不推荐这种方法,因为97.6%的数据是来自网络中的,这并不能反应一个你想要的真实的概率分布。对于选择验证集和测试集,记住我们的建议:
选择验证集和测试集应该能够代表你以后能够得到的数据,并且能够在以后的数据上表现得很好。
大多数机器学习方面的学术文献都假设训练集、验证集和测试集都有着相同的概率分布。[1] 在机器学习领域的早些年,数据非常缺乏。经常一个数据集来自很多的概率分布。因此我们经常随机将数据分为训练集、验证集和测试集,并且假设所有的数据都有着同样的来源,这样得出的结果总是令人满意的。
但是在大数据的时代中,我们通常能得到大量的数据集,比如网络上的猫的图片。即使训练集与验证集和测试集有着不同的概率分布,我们仍然可以使用这样的训练集训练,因为它能够提供大量的信息。
在“猫”检测器这个例子中,除了10000张用户上传的图片都放在验证集和测试集中,我们也可以用其中的500张图片作为验证集和测试集。把剩下的5000张用户上传的图片放到训练集中。这样,你的205000张作为训练集的五篇,包含了一些与你的验证集和测试集有着相同来源的数据,还有200000张网络上的图片。在之后的章节之中我们会讨论为什么这种方法很有用。
现在我们思考一下第二个例子。假设你正在搭建一个语音识别系统来为一个基于语音控制的移动地图导航app转录街道地址。你有20000条用户说的街道地址的录音。但是你有500000条其它人说一些关于其他内容的录音。你可以使用10000条街道地址录音作为验证集和测试集;剩下的10000条街道地址录音加上500000条其他录音作为训练集
我们仍然假设你的验证集和测试集有着相同的概率分布。但是知道训练集验证集、测试集有不同的概率分布可能会出现一些挑战是很重要的。
[1] 有一些对于有不同分布的训练集和测试集的研究。比如“领域适应”,“转移学习”和“多任务学习”。但是在理论和实践之间有着巨大的鸿沟。如果你在数据集A上进行训练,并且在一些不同类型的数据B上测试,运气对你的算法表现有非常大的影响。(这里,“运气”包括研究人员设计为特定任务特定的特征,还有其他的我们还不能理解的因素)这使在有不同分布的的训练集和测试集的学术研究难以用一个系统的方式进行。
37、怎么决定是否使用你的全部数据
分享人:高宏宇
假设你的“猫“检测器的训练集有10000张用户上传的图片,这些数据被分成验证集和测试集有着相同的概率分布,并且能够代表你的所期望的概率分布。你也有从网上下载的额外的20000张图片。你应该把这30000张图片都作为你学习算法的训练集吗?或者因为害怕使你的学习算法表现不好而舍弃那20000张网上的图片呢?
当我们在使用早期的学习算法时(比如手工设计的计算机数据特征,使用简单的线性分类器)这时将所有的数据混合到一起将有可能使你的算法表现非常差。因此一些工程师会警告你不要使用网上的20000张图片。
但是在现在属于功能强大的算法比如大规模的神经网络的时代中,这种风险已经很大程度上被减弱了。如果你能够搭建出一个有着大量隐藏神经元/层的神经网络,你就能够安全的将这20000张图片放入你的训练集中。加入这些训练集现在更有可能提高你的算法的表现。
这种说法基于有些x->y的映射对于两种类型的数据都表现得很好。换句话说,有些系统不管输入是网络上的图片还是app图片都能很可靠的预测结果,即使不知道图片的来源。
添加额外的20000张图片有下面的影响:
这样做给了你的神经网络更多的数据(不管图片中是不是猫)。这是很有帮助的,因为网络上的图片和用户上传的图片有一些相似性。你的神经网络可以使用从网络图片中获取知识,并把它应用到移动app的图片上。
这样做使神经网络花费了一些容量去学习一些网络图片上特有的属性(比如更高的分辨率,不同的图片被构建的分布方式)。如果这些属性与app图片上的非常不同,那么它会“消耗”一些神经网络的容量。因此会有更少的容量留给app图片,这是你需要注意的。理论上说,这会降低你的算法的表现。
换个方式来解释第二种影响,我们借助Sherlock Holmes(一个虚构的人物)的话,我们的大脑就想一个阁楼,它的空间是有限的。获取额外的知识,意味着你会忘记一些你之前知道的知识。不要使用一些无用的内容去挤掉那些有用的。[2]
幸运的是,如果你有足以建立一个足够大的神经网络的计算容量——足够大的阁楼,这就不是一个需要担心的问题。你有足够的容量去学习网络图片和app图片中的内容。你的算法的“大脑”的容量足够大。因此你不必担心用光“阁楼”的空间。
但是如果你没有一个足够大的神经网络(或者其他高度灵活的神经网络),那么你就需要花费更大的精力来使你的训练数据匹配你的验证集和测试集的概率分布。
如果你认为你有的数据没有用处,为了减轻计算负担,你应该放弃这些数据。例如,你的验证集和测试集包含大量含有人、地点、地标、动物;同时你有也有大量的扫描出来的历史文件:
这些文件不包含任何像一只猫的东西,它们看起来和你的验证集和测试集的分布完全不符。使用这些数据作为消极样本也没有什么作用,因为从这种数据中得到的第一种影响是微不足道的——你的神经网络几乎不能从这样的数据中学到有用的知识来应用到你的验证集和测试集中。包括他们会浪费神经网络的计算资源和表示能力。
[2] 一个在Scarlet by中的说法,作者是Conan Doyle
38、怎样决定是否包含前后不一致的数据
分享人:高宏宇
假设你想要学习预测美国纽约的房价,已给出房子的面积(输入特征x),你想要预测价格(目标标签y)。
纽约的房价非常高,假设你有第二个关于底特律房价的数据集,那里的房价相对低得多。那么你应该包含这部分数据集吗?
相同的房屋面积x,房子的价格在纽约和底特律的价格是差别的非常大的。如果你只想预测纽约的房价,那么同时使用这两个数据集可能会降低你的算法的表现。在这种情况下,最好的办法是放弃不一致的底特律数据集。[3]
纽约和底特律数据集与移动app数据集和网络图片数据集有怎样的区别呢?
在猫图片的例子中,两个数据级不同因为给定一个输入图片x,能够可靠地预测标签y来反映图片中是否存在一只猫,即使不知道图片是一个app图片或者是一个网络图片。也就是,有一个函数f(x),它能够根据输入x来映射出输出y,即使不知道输入x 的来源。因此,从网络图片中辨别猫和从移动app图片中辨别猫这两个任务是一致的。这意味着包含所有的数据几乎没有坏处(除了计算损耗),甚至还可能有一点积极的影响。相对的,纽约和底特律的数据是不一致的。给出相同的输入x(房子的面积),这个两个地方的房价是差别很大的。
[3] 一个解决底特律数据和纽约数据不一致的问题的方法:为每条数据添加额外的特征代表城市。给定可以反映特定城市的输入x,现在输出y的结果不再是模糊的。然而在实际中,这种做法并不经常使用。
39、给数据添加权重
分享人:高宏宇
假设你有20000张来自网络上的图片和5000张来自己你的app用户的图片。在这两个数据集之中有着40:1的比例。从理论上说,只要你能搭建一个巨大的神经网络,然后花费足够昌的时间去训练这205000张图片,就不会降低你的算法在同时预测网络图片和app图片时的表现。
但是在实际上,与只使用5000张app图片相比,使用比app图片大四十倍的网络图片意味着你需要多花费40倍或者更多的计算资源去得到模型。
如果你没有足够的计算资源,你需要给网络图片进行“瘦身”。
举个例子,假设你的优化目标是一个平方误差(这对于分类任务不是一个好的选择,但是会简化我们的解释),这样我们的学习算法试图去优化方程:
上面第一个累加是对于5000张app图片的累加,第二个累加是对于200000张网络上的图片的累加。你也可以优化一个带有额外参数β的方程:
如果你令β=1/40,在这个算法会给5000张app图片和200000张网络图片有一个相同的权重。你也可以将参数β设为其他的值来适应验证集。
通过给网络图片更少的权重,你不必搭建一个巨大的神经网络去保证算法能够在这两种图片上都表现得很好。这种定义权重的方法只用于当你怀疑额外的数据(网络图片)与验证集和测试集有不同的概率分布的时候,或者额外的数据规模要比与验证集和测试集(app图片)有相同分布的数据大很多的时候
40、从训练集到验证集的推广
分享人:高宏宇
假设你用一个训练集和测试集、验证集有着不同分布的数据集去训练机器学习算法。比如,训练集包含了网络图片和移动app 的图片,但是验证集和测试集包含app 的图片。然而,算法表现的并不好:它在验证集和测试集中有比你期望的更高的错误率。下面是一些可能出错的地方:
算法在训练集上也变现不好,这可能是出现了欠拟合的问题(可避免的)
算法在训练集上表现得很好,但是对于没有见过的数据(与训练集有相同的分布)泛化能力不好。这是过拟合。
算法对于与训练集有相同分布的新数据泛化地非常好,但是对于验证集和测试集的数据表现很差。我们称这种情况为数据失配,因为训练集和验证集、测试集匹配得非常差。
举个例子,假如某人达到了几乎完美的表现在猫的辨别任务中。你的算法可能实现了:
在训练集上有1%的错误率
对于算法没有见过的但是和训练集有相同分布的数据有1.5%的错误率
在验证集上有10%的错误率
在这种情况下,你很明显的出现了数据失配的问题。为了解决这个问题,你可以尝试使训练数据和测试数据、验证数据更相似。我们会在之后讨论一些技术去实现。
为了判断一个算法出现上面三个问题的程度。使用其他的数据集会很有用。需要注意的是,不是将所有可以得到的数据都“喂”给算法,你应该把数据分成两个子集:用于算法训练的现行的数据集,和之后作为训练验证集的分离集(这部分被用于训练)。
现在,你有了一个数据集的四个子集:
训练集:这是你算法需要从其中学习的数据(比如网络图片 移动app图片)。它不必具有我们想要的概率分布(验证集和测试集的分布)。
训练验证集:这部分数据和训练集(网络图片 移动app图片)有相同的概率分布,规模通常要比训练集小,只要足以评价和追踪我们学习算法的进程就行了。
验证集:这部分和测试集有着相同的概率分布,它反映了我们最终想要的数据的概率分布。
测试集:这部分和测试集有相同的概率分布。
有了这四个数据集,你现在可以评估:
训练错误率,通过使用训练集进行评估。
算法对与训练集有相同分布的新数据的泛化能力,通过使用训练验证集进行评估。
算法在你真正想要解决的任务上的表现。通过使用验证集和测试集进行评估。
在5-7章中对于选择验证集的尺寸的参考也可以别应用于选择训练验证集的尺寸。
41、识别偏差,方差,和数据匹配误差
分享人:丁韩旭
假设人类在识别一只猫的任务上达到几乎完美的表现(≈0%误差),因此最佳误差率约为0%。 假设你有:
· 训练集上有1%的误差
· 训练验证集上有5%的误差
· 验证集上有5%的误差
这告诉你什么?在这里,你知道你有很大的方差。 前面描述的方差减少技术应该可以让你改进它。
现在,假设您的算法达到:
· 训练集上有10%的误差
· 训练验证集上有11%的误差
· 验证集上有12%的误差
这告诉您训练集上有很高的可避免偏差,即该算法在训练集上表现不佳。 偏差减少技术应该有所帮助。
在上面的两个案例中,该算法仅遭受高可避免偏差或高方差问题。算法可能承受高可避免偏差,高方差和数据不匹配的任何子集。 例如:
· 训练集上有10%的误差
· 训练验证集上有11%的误差
· 验证集上有12%的误差
该算法存在高可避免偏差和数据不匹配的问题。但是它不会受到训练集分布的高方差的影响。
通过将它们作为表中的条目进行绘制,可能更容易理解不同类型的误差如何相互关联:
继续猫图像检测器的案例,您可以看到x轴上有两种不同的数据分布。 在y轴上,我们有三种类型的误差:人为误差,算法在已训练的案例上的误差,以及算法在未训练的案例上的误差。我们可以用前面章节中确定的不同类型的误差填写表格。
如果您愿意,您还可以填写此表中的其余两个框:您可以通过要求某些人标记您的移动猫图像数据并测量其误差来填写右上方框(人对移动图像上的识别表现)。您可以通过移动猫图像(分布B)填写下一个框,并将一小部分放入训练集中,以便神经网络也可以学习它。然后,您可以在该数据子集上测量学习模型的误差。填写这两个附加条目有时可以得到关于算法在数据的两个不同分布(分布A和B)上所做工作的额外规律。
通过了解算法最容易遭受哪种类型的误差,您将能够更好地决定是关注减少偏差,减少方差还是减少数据不匹配。
42、解决数据不匹配问题
分享人:丁韩旭
假设您已经开发了一个语音识别系统,该系统在训练集和训练验证集上表现很好。但是,它在您的验证集上表现不佳:您遇到数据不匹配问题。 你能做什么?
我建议你:(i)尝试理解训练和验证集分布之间数据的不同属性。(ii)尝试找到更多匹配您的算法遇到的验证集问题的训练数据。
例如,假设您对语音识别验证集进行了误差分析:您手动完成100个案例,并尝试了解算法出错的位置。您发现您的算法运行不佳,因为验证集中的大多数音频剪辑都是在汽车内录制的,而大多数训练案例是在安静的背景下录制的。发动机和道路噪音会严重恶化您的语音系统的性能。在这种情况下,您应该尝试获取更多在汽车内部录制的音频剪辑的训练数据。误差分析的目的是了解训练和验证集之间的显着差异,这是导致数据不匹配的原因。
如果您的训练和训练验证集包含汽车内部录制的音频,您还应该仔细检查系统在此数据子集上的表现。如果它在训练集中的汽车数据上表现良好,而在训练验证集中的汽车数据上表现不佳,那么这进一步验证了获得更多的汽车数据将会有所帮助的猜想。这就是为什么前面章节我们讨论了在训练集中从验证/测试集中相同的分布中提取的一些数据的可能性。这样做可以让您比较训练集和验证/测试集的汽车数据上的算法表现。
不幸的是,在这个过程中没有任何保证。例如,如果您没有任何方法来获得更多与验证集数据更匹配的训练数据,那么您可能没有明确的方法来提高性能。
43、人工数据合成
分享人:丁韩旭
您的语音系统需要更多听起来像是从汽车内部获取的数据。您的语音系统需要更多听起来像是从汽车内部获取的数据,不是在驾车时收集大量数据。可能有更简单的方法来获取这些数据:通过人工合成。
假设您获得了大量的汽车/道路噪音音频剪辑。您可以从一些网站下载此数据。假设您还有一大群人在安静的房间里讲话。如果您将人的音频剪辑添加到汽车/道路噪音的音频剪辑中,您将获得一个听起来好像人在嘈杂的汽车中说话的音频剪辑。使用此过程,您可以“合成”大量听起来像是在车内收集的数据。
更一般地说,有几种情况下,人工数据合成允许您创建一个与验证集合理匹配的庞大数据集。让我们使用猫图像检测器作为第二个例子。您注意到验证集图像具有更多的运动模糊,因为它们往往来自拍照时稍微移动手机的手机用户。您可以从互联网图像的训练集中获取非模糊图像,并为其添加模拟运动模糊,从而使它们更类似于验证集。
请记住,人工数据合成有其挑战:创建对人而言真实的合成数据比创建对计算机而言真实的数据更容易。例如,假设你有1000小时的语音训练数据,但只有1小时的汽车噪音。如果您重复使用1小时汽车噪音与原始1,000小时训练数据中不同的部分,您将得到一个不断重复相同汽车噪音的合成数据集。
或者,假设您有1000小时的汽车噪音,但所有这些都是从10辆不同的汽车中获取的。在这种情况下,如果对来自不同汽车的音频进行测试,算法可能“过度拟合”到这10辆汽车,表现不佳。不幸的是,这些问题很难被发现。
不幸的是,这些问题很难被发现。
再举一个例子,假设您正在构建一个识别汽车的计算机视觉系统。假设您与一家视频游戏公司合作,该公司拥有多辆汽车的计算机图形模型。即使合成图像看起来非常逼真,这种方法(许多人独立提出)也可能效果不佳。在整个视频游戏中拥有约20个汽车设计。建造汽车的3D模型非常昂贵; 如果你正在玩这个游戏,你可能不会注意到你一遍又一遍地看到只有颜色不同的同样的汽车,即这些数据看起来非常逼真。但与道路上的所有汽车相比 – 因而你可能会在验证/测试集中看到 - 这套20辆合成汽车只占世界汽车分布的一小部分。因此,如果您的100,000个训练样例都来自这20辆汽车,那么您的系统将“过度适应”这20个特定的汽车设计,它将无法很好地概括包含其他汽车设计的验证/测试集。
在合成数据时,要考虑一下你是否真的在合成一组有代表性的例子。尽量避免给出使学习算法可以区分合成示例和非合成示例的合成数据属性 – 比如,所有合成数据是否来自20种汽车设计中的一种,或者所有合成音频来自仅1小时的汽车噪音。这个建议很难被遵循。
在进行数据合成时,我的团队有时需要花费数周时间才能生成细节足够接近实际分布的数据,从而产生显着效果。但是如果你能够恰当地获得细节,你可以一下得到比以前大得多的训练集。
44、优化验证测试
分享人:丁韩旭
假设您正在构建语音识别系统。您的系统通过输入音频剪辑,并为每个可能的输出句子计算一些来工作。例如,您可能会估计,即输入音频为时正确的输出副本是句子的概率。
给定一种计算的方法,您仍需找到最大化它的英语句子:
你如何计算上面的“arg max”?如果英语有50,000个单词,则有个可能的长度为的句子 - 太多而无法详尽列举。因此,您需要应用近似搜索算法,以尝试找到优化(最大化)的值。一个搜索算法例子是“波束搜索”,其在搜索过程期间仅保留个最佳候选者。(出于本章的目的,您无需了解波束搜索的细节。)此类算法无法保证找到最大化的值。
假设一个音频片段记录了一个人说“我喜欢机器学习。”但系统输出错误的“我爱机器人”而非正确的副本。现在有两种可能出现的问题:
1. 搜索算法问题。近似搜索算法(波束搜索)未能找到使最大化的值。
2. 客观(评分功能)问题。 我们对的估计是不准确的。 特别是,我们选择的未能认识到“我喜欢机器学习”是正确的副本。
根据上述导致失败的原因,您应该以非常不同的方式确定您的工作优先顺序。如果#1是问题,那么您应该努力改进搜索算法。如果#2是问题,你应该研究估算的学习算法。
面对这种情况,一些研究人员将随机决定研究搜索算法;其他人将随机研究更好的方法来学习的值。但除非您知道哪些是导致偏差的背后原因,否则您的努力可能会被浪费掉。怎么能更有依据地决定做什么?
令为输出副本(“我爱机器人”)。令为正确的副本(“我爱机器学习”)。为了理解问题是上面的#1还是#2,您可以执行优化验证测试:首先,计算和。 然后检查是否。 有两种可能性:
情况1:
在这种情况下,您的学习算法正确地给出比更高的分数。然而,我们的近似搜索算法选择了而不是。这告诉您,您的近似搜索算法未能选择最大化的值。在这种情况下,优化验证测试会告诉您搜索算法有问题,应该关注它。例如,您可以尝试增加光束搜索的光束宽度。
情况2:
在这种情况下,您知道计算的方式是错误的:它没有正确地为给出比更高的分数。优化验证测试告诉您有一个客观(评分)功能问题。因此,您应该专注于改善您学习方法或者对于不同句子的的方式。
我们的讨论集中在单一例子上。要在实践中应用优化验证测试,您应该检查验证集上的偏差。对于每个偏差,您将测试是否。每一个符合此不等式的验证案例都会得到优化算法误差。由于您计算的方式,每个不符合的示例()被计为错误。
例如,假设您发现95%的误差是由评分函数引起的,而由于优化算法引起的只有5%。现在您知道,无论您如何改进优化程序,您实际上只能消除约5%的误差。因此,您应该专注于改进估计的方式。
45、优化验证测试的一般形式
分享人:丁韩旭
您可以应用优化验证测试,在给定输入x的情况下,您知道如何计算,表示响应对输入的好坏程度。此外,您使用近似算法尝试查找,但怀疑搜索算法有时无法找到最大值。在我们之前的语音识别示例中,是音频剪辑,是输出副本。
假设是“正确的”输出,但算法改为输出。 然后关键测试是测量。如果这种不等式成立,那么我们就把错误归咎于优化算法。请参阅前一章,以确保您了解其背后的逻辑。否则,我们会把错误归咎于的计算。
让我们再看一个例子。假设您正在构建一个中英文机器翻译系统。您的系统通过输入中文句子并为每个可能的翻译计算一些来工作。例如,您可以使用,输入句子是,给出翻译的概率。您的算法通过尝试计算下式来翻译句子:
但是,所有可能的英语句子的集合太大,所以你可以用启发式搜索算法。假设您的算法输出错误的翻译而不是正确的翻译。然后,优化验证测试会要求您计算是否。如果这个不等式成立,则正确地将识别为的优良输出; 因此,您可以将此错误归因于近似搜索算法。否则,您将此错误归因于的计算。
在AI中,首先要学习近似评分函数,然后使用近似最大化算法,这是一种非常常见的“设计模式”。如果您能够发现此模式,则可以使用优化验证测试来了解误差来源。
46、强化学习举例
分享人:李汤睿
设想你使用机器学习去训练一个直升飞机来让它完成一些复杂的飞行操作,上面这张由很多照片合并组成的图片,记录了这个直升机从关闭引擎到落地的过程。
即使引擎意外关闭,直升机依然能够安全落地,这称谓一种“自动操作”。人类驾驶员把这种突发情况作为训练中的一部分,而你的目标则是使用机器学习算法来得到一个安全的降落轨迹T来着陆。
为了完成这个强化学习的目标,你需要首先创造一个奖励函数Reward,来评价你所算出的路径操作T有多棒。如果你的直升飞机降落失败并引发一场大爆炸,那么你可以得到一个相当低的得分,比如-1000。如果你的直升机安全降落了,那么得分也得根据降落的准确程度和平稳程度来评价。这个评分函数Reward很大程度上由人来设计评价路径T的,并且需要权衡降落的位置是否精确、降落的轨迹是否平稳等问题,所以人来制定比较好的奖励函数Reward并不容易。
在使用种种手段得到比较好的奖励函数后,强化学习的任务就是控制直升机来获得最大的奖励函数值,但是强化学习的算法有很高的不确定性,常常难以达到最大值。
又经过了种种艰难险阻,你成功得到一些数据并且成功训练了一个强化学习算法。但是这个算法远远达不到人类驾驶员的水平,降落过程往往惊险又刺激。那么错误是来自路径的构建还是来自奖励函数,是侧重于降落过程的质量还是平稳性所带来的问题也需要思考。
和上一章一样,进行优化效果检测,就是人类驾驶员的操作是否比机器算法产生的操作效果好,一般分为以下情况:
Case1: 如果人类的操作得分比较高,那么继续完善优化算法;
Case2: 即便人类的操作比机器的好,但是得分是机器的更高,那么就要转向调整这个评分函数。
有很多机器学习算法都使用这样的评分的函数来得到一个假象的得分辅助搜索算法。在我们刚刚举出的例子中,得分函数就是奖励函数Reward,算法的目的就是使用强化学习得到一个比较好的操作T。
这个例子与之前例子的很大不同就是我们不是寻找一个理论上无懈可击的最好的结果,而是一个和人一样的结果。因为我们倾向于认为人类的操作是优秀的,即便不是理论上最优的。但是一般情况下,我们能够得到一些比当前结果更好的结果,即便不是最优的,通过优化检验也能够作出指示,进一步得到更好的答案。