花式解读机器学习!
点击上方关注,All in AI中国
作者——Abhishek Mukherjee
机器学习是人工智能非常重要的组成部分。然而,人们因为不了解机器学习而越来越感到不安。甚至引发了一种对相关算法的疯狂恐惧。这些批评/评论并不完全公正。虽然设计这些成功算法的这一领域的佼佼者确实理解为什么它可以发挥出这么大的作用。然而,受制于算法是一种既无定形而又需人们有深刻理解形式。机器学习算法显的更很复杂,解释这下面的深刻内涵绝非易事。但随着机器学习作为一个领域并越来越成熟,也许是时候谈论些更具体的理解和解释形式了。
在这篇文章中,我将讨论为什么我们的传统理解方法对机器学习来说不是很有效。然后我将讨论另一种理解方法,它可能更适合机器学习的特定环境。我在这篇文章中讨论的内容不是新内容。经验丰富的从业者应该都非常熟悉,这仅仅是我试图在这个领域中的一些经验。
复杂系统中的决策
机器学习对于复杂系统中的决策问题最有用。我们的目标是在给定某种背景下预测最合适的行为,以引起最理想的反应。在现实生活中,问题几乎从未以可观察的数量来表述。因此,第一步是根据可观察量来表述问题。这绝非微不足道,但这不是机器学习的步骤。无论你选择哪种解决问题的方法,都需要采取此步骤。
一旦你用可观察量来表述问题,下一步就是为解决方案开发一个数学公式。该解决方案总是用描述复杂系统的数学函数来表示。该函数称为系统模型。
模型的输入和输出取决于你的公式。例如,输入可以是根据上下文的操作,输出是预期的反应,或者输入的上下文可以输出最佳操作和预期反应,或者你可以选择概率公式,在这种情况下输入可以是上下文动作反应三元组,输出是这种三元组出现的概率。哪种方案最有效,在很大程度上取决于问题的具体情况。
一旦你选择了数学公式,那么你将完成确定模型的核心任务。该模型必须与我们对复杂系统的看法一致。我们的看法可分为两个要素:假设和对数据驱动的见解。
假设是你对系统所做的声明,与任何可用数据无关。这些假设可以进一步分为两个要素:已知的事实和猜测。已知的事实是关于系统的事实,每个人都同意并且没有争论。猜测是那些特定于你的假设,可能会受到挑战。猜测可能来自你之前使用过的类似系统的经验,在这种情况下,它们将是有根据的猜测,并且是站得住脚的。它们也可能只是来自你的直觉,那么在这种情况下,它们就很可能是糟糕的猜测。
谈到数据驱动的见解,从广义上讲,有两种方法可以从数据中提取见解:手动和自动化。手动方式主要包括分析数据趋势以确定变量之间的函数关系。手动洞察的质量在很大程度上取决于获得这些见解的人的能力和偏见。但是他们确实有更容易解释的好处,因为得出见解的人应该能够陈述得出所述见解的逻辑步骤。自动化方式主要包括使用数学优化来确定变量之间的函数关系。鉴于优化目标的选择,自动化洞察的质量独立于任何人。但这也使得它们更难以解释,因为人们不知道优化方法为获得这些见解而采取的确切逻辑步骤。如果一个人确实知道确切的步骤,那么就不需要自动化方法,人们可以简单地手动推导它们。手动和自动模式之间没有明显的分界线。相反,在一端完全手动和另一端完全自动化之间存在连续性。
一般而言,你的假设越强大、越多,数据驱动的见解在确定模型时所起的作用就越小。如果你想减少特定人员对模型的影响,那么你可能希望减少猜测和手动洞察提取的作用。让我们首先看看该程序的两个极端:无数据区和无理论区。
在无数据区域中,你将完全消除对数据的依赖,并根据已知的事实做出决策。为了做到这一点,只有已知的事实才能够提供复杂系统的完整描述。换句话说,你需要一个完整的复杂系统的实用理论。在有趣的现实生活问题中,情况从来都不是这样的——要么我们没有完整的系统理论,要么即使我们这样做,我们也没有办法计算所述理论的后果。
在无理论区域中,你将完全摆脱假设,并仅基于数据构建模型。从数学上讲,这意味着你需要有关模型的所有可能输入和输出的数据。除了这些数据永远不可用之外,这首先打破了构建模型的整个目的。你可能希望构建一个模型,以便它可以从样本推广到整个总体。如果你有整个人群的数据,那么就不需要建立一个模型。
因此,仅基于假设或仅基于数据构建模型既不可行也无用。机器学习的价值在于完全从决策过程中消除猜测和手动洞察的作用,并提供仅基于已知真相和全自动数据驱动见解的解决方案。不幸的是,我们还没有达到这种程度。此时,每个机器学习模型都将包含一些猜测和手动数据驱动的见解。
正如我们所讨论的,已知的事实不需要解释。猜测和手动见解相对容易解释。解释机器学习的关键在于解释自动数据驱动的见解。这样的解释会带来什么?解释与预期的概念密切相关。通常情况下,如果我们能够以某种方式表明其行为与我们的预期期望一致,我们就会说我们对它有了解释。因此,解释取决于能否形成预期。
为了解释机器学习模型,我们需要能够形成对它的预期,而不依赖于构建它的过程。此外,这种形成预期的方法应该比用于构建模型的过程更简单,否则我们需要另一种方法来解释预期形成方法——这将超过解释的全部目的。这立即排除了确切和全面预期的可能性。如果我们确实有一个更简单的方法可以用来在所有可能的场景中准确地预测模型的行为,那么我们只需使用该方法来构建模型而不是原始方法。因此,我们可以瞄准的最好目标是近似和/或部分的解释。
如何不解释
在我们讨论可能有效的解释方法之前,让我们先讨论一些几乎肯定不起作用的解释方法。我们可以将这些方法视为后验方法。换句话说,这些方法试图将最终优化模型分解为"零件"并解释它。例如,我们可以认为模型的输出在某种程度上独立的受到具有某些权重的输入的影响。对于强相关系统来说,这是非常危险和错误的。这里有一个很好的解释,为什么在机器学习模型中基于特征权重判断变量重要性不是一个好主意。因此,如果输入变量是相关的,则该方法根本不起作用。
另一种选择是使用补丁来平铺模型的域,使得在每个补丁上,你可以根据简单的函数对模型进行精确的局部近似。然后我们可以将整体模型视为这些简单局部近似的拼凑,并预估这些局部近似的行为是否符合我们的预期。此方法与使用等价类划分来理解和测试传统软件的方式非常相似。
问题是我们认为什么是一个简单的函数?对于大多数人来说,很难在三维空间之外进行可视化,这意味着一个简单的函数最多只能有两个自变量。此外,我们发现很难推断出超过一个或两个极值的函数。当我们将这些约束强加到一个简单函数的定义中时,我们将看到所需的补丁数量随着输入变量的数量和模型的极值数量呈指数增长。
如果我们在操作上将函数的复杂性定义为输入数量、极值数量和变量之间相关性的强度的某种组合,则上述解释方法不起作用,因为它们在复杂性方面不能很好地扩展。这些方法不能扩展,因为它们试图构建后验还原近似。可扩展方法不需要查看最终模型,而是需要查看优化方法本身。为了扩展,它需要为决策的制定建立全局近似,而不是为每个单独的决策建立近似。
从对称性开始
首先,我们需要详细说明我们的术语。在机器学习中,我们从已知的事实、猜测和手动数据驱动的见解开始。这些函数在数学上表示为称为部分定义的多元函数。除输入和输出外,算法还具有一组未确定的参数。通过用数据训练算法来确定参数。训练算法本质上是以自动方式从数据中提取见解,它通常涉及到解决优化问题。使用数据训练算法的结果是一个完全定义的函数。到目前为止,我们一直在讨论的模型是这些经过训练的模型。用于优化的目标函数以这样的方式设置的:最小化它将意味着训练的模型捕获与该特定问题相关的数据中的稳定模式。
解释的第一步是清晰度。在我们解释任何事情之前,我们需要明确起点。在机器学习中,起点是已知的事实、猜测和手动数据驱动的见解。对于任何给定的问题,我们只能给出这些起点的解释。因此,需要非常清楚和全面地陈述它们。
问题几乎总是以领域的语言来陈述。然后,你将使用表示将其转换为数学问题。当你进行此转换时,问题的复杂性就会显现出来。如果可以根据问题域的期望而不是根据为解决方案选择的特定表示来提供解释,那么任何解释都将具有更高的权威。因此,如果起点具有更好的扩展复杂性的可能,并且它们是根据域的语言而不是表示的语言来陈述,那么它们将具有更高的解释力。
但是,当我们说起点应该以领域的语言陈述时,我们的意思是什么?在机器学习的情况下,起点通常是关于与问题相关的内容的陈述。让我们来看看机器学习最成功应用之一的例子:图像识别。深度学习是一种机器学习,已经被证明在分类图像方面非常成功。不仅如此,我们实际上对于为什么深度学习在图像识别方面的效果非常好有了相当程度的了解。这种成功和理解的主要原因之一是我们设计了将图像领域的相关对称性编码到相关算法(深度神经网络)中的方法。在这种情况下,对称性本质上是一种使结果保持不变的转换。对于图像来说,这些对称性是分辨率、旋转、平移等方面的变化。卷积神经网络本质上是神经网络语言中这些对称性的编码。
对称性是以整体方式陈述我们关于相关性的知识的最经济的方式。对称性告诉你什么是不相关的。通过排除,其他所有内容可能都是相关的。它们使我们能够以独立于数据的方式识别与给定域无关的内容。它们对算法的函数形式施加约束,而不是对模型的局部行为进行陈述。为任务选择的算法类必须足够强大以适应域的对称性。如果训练数据具有足够高的质量和数量,那么模型不正常运行的主要原因可能是错误的对称性被无意地编码到算法中。
对于图像识别,我们有一个明显的例子,即当使用对称性作为基础时,所得到的算法既成功又易于理解。毫无疑问,将领域的相关对称性形式化并将其编码为机器学习算法是非常重要的。图像识别是一个"简单"的例子,因为我们熟悉图像的对称性。然而,我认为,对称性对于理解机器学习至关重要。在有可能的情况下,算法的起点应表示为域的对称性。
逐次全局逼近法
对称性将对算法的参数空间施加一些约束。其余参数的不确定性将通过训练消除。我们现在需要一条路径来连接将对称性和模型。这相当于在对称性的强加和在模型中完全定义的参数之后找到连接算法中部分确定的参数的路径。我们将使用的方法是逐次全局逼近法。
让我举一个例子来说明。假设你要求地图服务(例如Google地图)在旅行时间内找到城市中两个位置之间的最佳路线。来自地图服务的算法通常会产生由许多转弯组成的路线以节省时间。
如果你没有方便的地图服务,并且如果你像大多数人一样,那么你可能会采取最不容易混淆的路线,即转弯次数最少的路线。实质上,你正在解决映射服务算法中给出问题的约束版本。你首先要检查是否有一条没有转弯的路线。如果是这样,那么你会选择那条路线。如果这样的路线不存在,那么你会寻找转弯的路线。如果这样的路线存在且是唯一的,那么你将选择该路线。如果有多条这样的路线,那么你将选择花费最少时间的路线。如果不存在这样的路线,那么你将尝试两圈的路线,依此类推。
理解映射服务生成路由的一种方法是继续上述过程,直到到达映射服务生成的路由为止。假设你的解决方案有两个转弯,而地图服务生成的解决方案有五个。你现在可以尝试连续寻找三圈,四圈,五圈和六圈的解决方案。在每种情况下,你都可以通过添加转弯来查看节省了多少时间。当你从五到六转时,你应该能够看到添加一个转弯不会节省更多的时间,可能还会增加旅行时间。
请注意,在上面的方法中,我们并没有试图孤立地理解映射服务产生的每个转弯。相反,我们专注于将整个解决方案理解为一系列近似的终端。一般来说,人类思维在掌握复杂功能整体行为方面并不十分精干。但它很好地理解了基于两个复杂函数之间差异的"有效理论"。这就是为什么上述方法可以作为理解的有用工具的原因。
在从事复杂系统研究的许多不同学科中都使用了类似的方法。事实上,即使在机器学习中,我们在对模型与基线模型进行基准测试时也使用类似的想法。例如,当试图确定一个分类器有多好时,可以将其性能与随机分类器的性能进行比较。基准模型只不过是优化问题的解决方案,需要额外的约束来使解决方案"更简单"。我们可以通过明确地构建连续基准作为约束优化问题的解决方案,将这种基准测试方法重新用于解释方法,在每个连续步骤中,我们都会删除一些约束。换句话说,我们将优化的解决方案解释为一系列连续近似的最终结果。
在复杂性方面,连续近似的数量应该是可扩展的,在这种情况下,这意味着该数量应该是独立的,或者在最坏的情况下,微弱地取决于算法中的参数的数量。确保这一点的一种方法是在与参数的表示相关中构建近似的约束——一个广义傅里叶空间。然后可以将接下来的近似视为逐步地包括解决方案中的更高阶波动。
与对称性类似,构造连续的全局逼近并不容易。人们需要具备非常深入的专业知识才能在全局范围内而不是进行局部的思考。但复杂的系统之所以被称为复杂系统是有原因的,如果没有必要的专业知识,我们就能够理解它们并以解释的形式传达这种理解,那就太天真了。
机器学习是游戏规则的改变者。已经证明了它非常成功,毫无疑问,它是我们目前为复杂系统构建软件所知道的最强大的方法。但是,成功之后必须有智慧。我们理解软件的传统方法不足以理解机器学习软件,因为它们不能很好地适应复杂性。另一方面,对称性和连续的全局逼近确实可以很好地复杂化。我曾尝试讨论当它们一起使用时,如何提供可扩展的方法来解释机器学习。