深入浅出图神经网络:GNN原理解析
上QQ阅读APP看书,第一时间看更新

2.1.2 机器学习流程概述

一个完整的机器学习流程通常涉及多个环节,各个环节之间相互依赖,下面以一个具体的实例来直观地说明整个流程,然后以数学的语言阐述整个过程。

1.示例

在电商领域,我们需要对商品进行分类,为了简化问题,假设只有一批商品的图片数据,分为羽绒服、毛呢大衣、连衣裙、卫衣等品类。我们需要建立一个模型,使用这批商品的图片数据训练模型,得到一个可以对未知的图片进行分类的预测模型。比如对于新样式的羽绒服可以正确预测它的类别是羽绒服。要完成上述功能,在机器学习中通常需要如下几个步骤。

(1)提取商品图片的特征:在计算机中图像都是以像素的方式离散存储的,单个像素携带的信息,很难让模型直接去学习。为了让计算机能够准确地识别分类,需要提取一些有区分性的特征,比如衣服的颜色、风格等。这些特征可以是人为定义的,这个过程称为特征工程,也可以使用算法自动提取前者是传统机器学习的必需步骤,并且具有举足轻重的地位,后者典型的方法是深度学习,读者在第3章可以了解到如何使用深度学习方法解决这个问题。

(2)建立模型:在定义好特征后,需要选择一个合适的模型来建模。传统的机器学习模型有逻辑回归、随机森林等;基于深度学习的方法,有多层感知器、卷积网络等。模型可以看成是一个复杂的函数y=f(X;W),其目的是建立输入到标签y之间的映射,其中X是前面定义的特征,W是定义模型的参数。

(3)确定损失函数和进行优化求解:选择模型只是确定了一个模型形式,比如使用逻辑回归,它还包含权值,在这些权值没有确定之前,是无法用它来进行正确预测的。那么如何调整模型使得它可以完成有意义的预测呢?首先需要一个数值来量化模型预测的对错,损失函数就是来衡量模型输出与标签之间的差异程度的,当预测结果与标签差异偏大时,损失函数值增大,反之则减小。基于损失函数给出的值,可以通过优化方法调整模型以不断减小损失值。

2.数学模型

以上述例子代表的分类模型为例,给出分类的数学模型。假设有一批包含N条样本的训练集,用集合X={(xi,yi)|i=1,2,...,N}表示。每一个样本xi都有对应的标签yi,其中xi∈Rd表示每个样本是一个d维的向量,标签yi是一系列离散值yi∈Y={0,1,2,...,K},表示样本xi所属的类别,K为类别的种类数。我们的目的是建立一个能完成分类功能的模型,即需要这样一个模型:f:Rd→RK,输入是d维的向量,经过f映射,输出在每个类别上的概率分布P(Y|xi)=f(xi;θ),这样就可以取概率最大的类别作为结果,即

那么现在的问题是,如何评价分类模型的好坏呢?比较直接的方法是,我们关注模型在训练数据上的结果,通过比较与样本真实标签yi是否相同来评价模型的好坏。如果模型能对训练集中的大部分样本进行正确预测,那这个模型可能是一个不错的模型,否则可能是一个糟糕的模型,这种定性的说明并不直观,我们需要一种可以量化这个差异的方法,该方法就是损失函数。

损失函数(loss function)用来估量模型的预测值y*与真实值y的差异程度,是一个非负实值函数,通常用L(y,f(x;θ))来表示。在机器学习中,通过在训练集X上最小化损失函数来训练模型,调整f的参数θ,使得损失函数值降低,当损失函数取最小值时,也就找到了一个不错的模型。这个过程称为优化求解。整个过程可以用式(2.1)表示:

其中,前面的均值函数表示的是经验风险函数,L代表的是损失函数,后面的Φ是正则化项(regularizer)或者叫惩罚项(penalty term),可以是L1也可以是L2,或者其他正则函数。上述公式表示的是找到使目标函数最小的θ值。损失函数旨在表示模型输出f(x)和真实值Y的差异程度,不同的损失函数有不同的表示意义,也就是在最小化损失函数的过程中,f(x)逼近Y的方式不同,得到的结果可能也不同。

在实际优化时,常常无法一步到位直接找到合适的参数,因此在机器学习中,通常使用迭代式的方法逐步逼近最优值。整个过程如图2-1所示:对训练集X使用模型f(X;θ0)进行预测,其中θ0表示初始参数,然后对预测的结果与样本真实标签利用损失函数计算损失值,优化方法会根据当前损失值对参数进行调整,得到θ1,然后重复上述过程,持续迭代,直到该算法发现损失可能是最低的模型参数。通常,可以不断迭代,直到总体损失不再变化或变化极其缓慢为止,这时候,我们可以说该模型已收敛。

图2-1 机器学习算法迭代过程

需要注意的是,我们训练模型的目的不是让模型在训练集上取得不错的效果,而是希望模型从训练集中学会去面对未知的样本,能够对新样本进行预测。一个极端的情况是我们得到了一个模型,它能完美地拟合训练数据,能完全正确地预测所有的训练样本,即它的损失值为0,但是在新样本预测的表现上却糟糕,这种现象在机器学习中被称为过拟合。另一种情况是模型“竭尽全力”也无法在训练样本上取得令人满意的结果,这种现象被称为欠拟合。

损失函数和优化算法是机器学习的两个重要组成部分。接下来我们首先介绍几种常用的损失函数,然后介绍一类使用较多的优化方法—梯度下降。