移动终端人工智能技术与应用开发
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2.5 算法与模型

机器学习的三个要素为算法(Algorithm)、模型(Model)和数据(Data),这三者的关系是什么?算法与模型的区别与联系又是什么?简单地说,算法就是利用数据生成模型的方法,图1-7展示了数据、算法与模型的关系。算法利用数据进行运算并生成模型。在运算过程中,算法可以不断调参,优化参数组合,以求解最优模型。算法的目标就是找到全局最优解,最终得到一个高效率且低开销的模型。模型则相当于一个从输入到输出的函数,是机器学习训练的结果,可以用来完成推理应用。

图1-7 算法与模型的关系

我们来看一下上述这个利用数据生成模型的过程。原始数据(Raw Data)是无法直接用来输入给算法进行计算的,所以需要构建一个向量空间模型(Vector Space Model, VSM)。VSM的任务是将各种格式的原始数据(如文字、图片、音频和视频等)转换为数字向量形式,接下来,才可以把这些转换后的向量作为机器学习算法的输入。以著名的鸢尾花数据集(Iris)为例,其原始数据是一个个鸢尾花的图片,使用VSM将每个花转换为一个长度为4的特征向量(花萼长度,花萼宽度,花瓣长度,花瓣宽度),如图1-8所示。

其中,每行代表一个样本,比如第一行[5.1, 3.5, 1.4, 0.2],代表第一个样本的花萼长度=5.1,花萼宽度=3.5,花瓣长度=1.4,花瓣宽度=0.2。每一行也称为特征向量(Feature Vector),可以理解为花萼和花瓣的长度、宽度就是这个花的特征。要把这些特征输入机器学习算法之中,而非输入花的图片。

图1-8 鸢尾花数据集的特征向量

在获取了数据后,如何通过算法得到模型呢?下面举一个大家易于理解的例子:实验数据的线性拟合,这是一个简单而又经典的机器学习案例。某位工程师去做电工实验,通过实验记录了每一个电流值In所对应的电压值Un,他希望借此知道电压U与电流I之间的关系,以便计算任意电流下的电压值(模型),于是他将测得的这些实验数据作为样本(此处,电流I为样本的属性,In为每个样本的属性值,Un为每个样本的标记),然后假设电压与电流之间满足线性关系(模型)U=aI+b,那么就需要某种算法来计算出模型中的未知参数ab。于是他选择了最小二乘法作为算法,通过实验数据得到了ab,从而确定了模型。这个基于样本,通过算法来确定模型的过程就是学习。

模型可以分为不同的类型,比较经典的包括线性模型、决策树模型、神经网络模型、贝叶斯分类器等,它们各有长短,但没有绝对的优劣之分,需要根据实际AI任务的需求来选择。这些模型可以封装在软件框架中来实现不同的人工智能应用,在移动终端上开发的AI应用大多是基于神经网络模型的,关于神经网络模型如何支持各类应用,详见第3章。

基于同样的样本,不同的算法(或同一算法不同参数)所生成的具体模型也会不同,所以算法的优劣对于模型的性能指标有直接影响。可以将算法看作一个与模型未知参数以及样本相关的优化目标(比如最小二乘算法,优化目标是让全体样本的标记与模型输出值的均方误差最小),通过最优化该目标,得出未知的模型参数。如何评价模型的性能呢?我们在进行机器学习任务时,使用的每一个算法都有一个目标函数,算法便是对这个目标函数进行优化,特别是在分类或者回归任务中,便是使用损失函数(Loss Function)作为其目标函数。损失函数又称为代价函数(Cost Function),主要用来评价模型的预测值y=fx)与真实值Y的不一致程度,它是一个非负实值函数,通常使用LY, fx))来表示。损失函数越小,模型的性能就越好。不同的模型用的损失函数一般也不一样。关于模型和目标函数、损失函数的更多知识,可以参考吴恩达的公开课程,本书不再过多叙述。

深度学习模型(如CNN、RNN、BERT等)的成功源于高效的学习算法及其巨大的参数空间的结合,一个参数空间往往由数百层和数百万个参数组成,这使得深度神经网络模型很像一个复杂的黑盒系统。随着算力越来越强,算法模型变得越来越复杂,体积也越来越大,虽然它的能力确实很强,能够帮我们做越来越多的事情,甚至在很多特定任务上的表现超过人类,但我们不知道这些模型和算法这样设置参数的原因,不知道其内部是如何解决问题的,模型不具有可解释性成为我们面临的棘手问题。黑盒模型的风险在于其做出和使用的决策可能不合理、不合法,或者无法对其行为进行详细的解释。最早的人工智能系统其实是很容易解释的,因为线性模型本身涉及的权重很少,而且非常直观,每个权重的大小反映了对应的特征可以对最后的结果产生多大的贡献。而当在工业界落地AI时,随着机器学习模型越来越多地被用于在关键环境中进行重要的预测,构建能让用户理解的模型也变得越来越重要,在医疗、金融和司法等高风险应用中,这一点尤其明显。只有可被解释的机器学习模型才可能被更广泛地采纳,并避免歧视性预测和对决策系统的恶意攻击。

随着机器学习应用越来越广泛,对于算法与模型可解释性的研究在近两年逐渐得到重视。可解释人工智能技术大致可以分为三大类:第一类是基于数据的可解释性,这是我们最容易想到的一种方法,也是很多论文里经常涉及的一类技术;第二类是基于模型的可解释性,这类方法主要是在探讨能不能让模型本身就具有可解释性,这样模型就能告诉我们为什么要这么做;第三类是基于结果的可解释性,思路是直接将现有的模型当作一个黑盒去看待,我们自己给一些输入/输出,通过观察模型的行为去推断出它到底为什么会产生这样的结果,我们自己去建模它的可解释性,这种思路的好处是完全与模型无关,什么模型都可以用。这三大类方法各有各的技术路线,目前模型可解释性的研究仍处于非常早期的阶段,距离实际应用尚需时日。