近年来机器学习逐渐成为技术舞台的主角,在各个广泛的领域得到了应用。然而有效的使用机器学习,特别是对于初学者来说不是一件容易的事情。很多同学在利用机器学习解决真实世界的问题时常常会遇到下面一些疑惑:
“机器学习的方法和技术常常让我感到不知所措、要学的东西实在太多啦!” “到底该用哪个算法呀?为啥这个的结果会比哪个好呢?” “我面对的问题不满足任何标准算法的要求啊!” ······
还有很多各式各样的疑问充满了机器学习的历程和工程实践中。但这本书为我们带来了一个对机器视觉的全新视角:model-based 机器学习。基于模型的机器学习将会给你不同的视角解答上面的问题,并将帮助你创造出更加有效的算法,当然算法也更加透明。
那么,什么是基于模型的机器学习呢?
在过去的五年里,研究人员们构建了很多机器学习算法。工程师如果希望利用机器学习解决一个问题,要么选择其中的一个或几个来尝试,要们就创造自己的新算法。而在选择算法的时候,工程师们很大程度上都会选择自己熟悉的算法,同时选择也会收到响应软硬件条件的限制,最后选择的算法并不是最适合解决问题的算法。
然而基于模型的方法则为每一个问题寻求定制化的解决方案。与其将所面对的问题转换为适配于标准算法的形式,基于模型的机器学习则会设计出一种精确匹配问题的算法。
基于模型的机器学习,其核心观点在于与问题相关的所有假设都能通过模型的形式来构成。实际上,一个模型也正是由一系列假设所构成的,并用精确的数学形式表达出来。 这些假设包含了问题中变量的个数与类型以及变量之间的相互关系。例如,在本书中将以离奇的谋杀案为例建立一个模型来寻找凶手。这一模型的假设包含了嫌疑人的名单、可以的凶器以及不同嫌疑人使用不同凶器的可能。
这一模型随后被用于解决这一特定的机器学习问题。基于模型的机器学习几乎可以被用于解决任何种类的问题,这种通用的思路意味着你无须学习种类繁多的机器学习算法和技术。
那么为什么模型中的假设起到了如此重要的作用呢?难道它会证明机器学习不能单纯从数据中得到结果么?我们需要明白的是:任何算法都建立在一系列假设之上,尽管很多时候这些假设看起来不那么明显。不同的算法对应着不同的假设,当假设不是那么清晰的时候评判算法表现的唯一方法就是通过比较来获得经验结果。
做过项目的小伙伴对于这项工作一定深有体会,会耗费大量的时间,同时也不精确。如果尝试的算法都不满足要求的话,创造一个更好的算法更是难上加难。
模型还是算法?
让我们进一步分析模型和算法。可以把标准的机器学习算法看成是一个功能模块,输入数据输出结果。算法一定需要假设来将它从数千种不同算法中区分出来,然而在算法中这种假设很多时候是隐含且朦胧的。
从基于模型的观点来看,它包含了我们对特定问题所作的一系列假设。为了从模型中进行预测,我们需要读入数据并计算我们希望得到的变量。这一计算过程通常称为推理,将模型与推理结合起来就可以定义出一个机器学习算法,如下图所示:
按照基于模型的观点,算法是有一特定的模型和推理方法组成的,而模型则又由一系列假设组成,改变假设就可以——甚至在保持推理方法不变的情况下——得到不同的机器学习算法。
虽然推理的方法很多,但这一教科书为了解耦推理方法的影响,选择使用了相同的推理方法来与不同的模型组合。
基于模型的机器学习可应用与任何标准的机器学习任务,包括分类、聚类等,同时还将帮助更好地理解和掌控算法的表现,这些都将在书的后续章节中呈现。这种方式还可以通过改变模型来拓展任务的适用范围和提高精度。
此外模型的假设十分清晰,这也为模型的可解释性做出了贡献,既有利于理解性能增强的原因,有利于沟通与交流,同时还可以帮助我们在出现问题的时候更好地解决,也有利于与适应、拓展和结合他人的解决方案。
一个例子
假设我们有一个任务是预测游戏中玩家技能的变化情况,机器学习参考书会告诉你有一个称为卡尔曼滤波的算法可以用于处理这一类问题。为了使用卡尔曼滤波,首先你需要将技能预测问题转换为标准卡尔曼滤波器可以处理的形式。如果运气好的话,将转换后的结果输入到卡尔曼滤波器中就可以得到较好的结果。
但很多情况是,这种现成算法的精度往往满足不了实际要求。那么你该如何去改造算法和软件来获得更好的结果呢?也许你应该成为卡尔曼滤波器方面的专家才能更好地改进算法,并实现更好的软件来解决问题。
然而如果用基于模型的观点来看,我们会从一系列解决方案必须满足的假设开始来定义模型,随后利用这一模型来创造对应的机器学习算法。如果你的假设恰好和卡尔曼滤波中隐含的假设对应的话,你的算法很可能得到精确的卡尔曼滤波器。不过你的模型可能在假设上有所不同,在这个例子中你得到了可能是一个卡尔曼滤波器的变种来解决问题。无论这个算法是否存在是否是一个新的算法,都没关系。你的目标是为问题找到最好的解决方案。
基于这些你就能得到一个改进结果的框架,可以通过检视和改造假设来得到更好的模型,同时也得到了更好的算法。作为一个领域的专家,理解和改变问题的假设比改进机器学习算法容易多了。即使你的目标是理解卡尔曼滤波器,那么从模型的假设出发也是一条更为清晰和简单的路径来学习算法那并理解它是如何运行的。
|