人工智能(高中版)
上QQ阅读APP看书,第一时间看更新

2.2 数据集与损失函数

一般来说,在面对机器学习问题的时候,会假设有一组标注好的数据,叫做训练数据集(training set)。一个训练数据集通常包含大量的数据点,有时候是几十万、几百万,甚至几亿。将数据点的个数记为N,并将数据点记为x1y1,…,xNyN。其中X=(x1x2,…,xN),称为输入数据(input data),Y=(y1y2,…,yN),称为输出数据(output data),它们一起构成了训练数据集(XY)。在图片识别里y也称为标签(label)。

从上一节的介绍,我们知道监督学习的任务是通过数据集学习出目标函数f。不过,如何判断所学的目标函数好还是不好呢?要回答这个问题,首先需要制定一个评价机制。简单来说,根据数据给出的xiyi的组合,我们希望所学的函数f尽可能满足fxi)=yi,或者至少fxi)≈yi。根据这一原则,可以定义一个距离函数,用以表示fX)和Y的距离有多远。在机器学习领域,这样的距离函数叫做损失函数(loss function)。

根据问题的不同,距离函数可以有多种定义。对于分类问题,即yi表示某种类别,例如猫、狗、猪、鸡,或者正面、负面,或者0,1,2,…,9,等等,一个比较直观的距离函数可以这么定义:

假如fxi)≠yilfxiyi)=1

假如fxi)=yilfxiyi)=0

这里的1和0都是相对的数值,具体大小并不重要。重要的是我们对判断目标函数的正确与否给出了明确的判定准则。尽管这样的距离函数非常直观,但由于它不可导,很难在现代机器学习中被当做损失函数来用,因为难以对其使用优化算法。具体的细节会在后面章节详述。对于一般的回归问题,yi是一个实数,因此距离函数的选择就更为简单。最常用的选择就是平方距离(square loss),即lfxiyi)=(fxi)-yi2

定义了距离函数之后,我们对整个训练集定义一个损失函数,其为所有损失函数的平均值,即)。举个简单的例子,比如,我们考虑有5个点,对应5个不同的yx1=(1,0),x2=(0,0),x3=(0,1),x4=(-1,0),x5=(0,-1),y1=3,y2=3,y3=5,y4=-2,y5=5。如果我们考虑一个简单的线性函数,f(x)=ax1+bx2,并且使用平方距离作为损失函数,则最后的总的损失函数的定义为

接下来,对目标函数f的学习可以具体表示为求。如何找到这样的f函数的过程叫做优化(optimization),下一章中将会简单提及。这里要强调的是,仅仅进行优化其实是远远不够的,还需要保证所学函数的泛化能力。这一点将在2.3节进行详细介绍。