(由于知乎平台稿件格式问题,公式格式不能正确写上;如若读写困难可后台私信我要完整电子版)
在企业中,技术人员会将商品的价格、品牌等作为输入来预测商品的销量,甚至通过上市公司的财报、行业信息等来预测公司股票价格的变化。它们的共同点是通过输入来预测输出。在机器学习中,这类业务有一个专门的名字——回归(Regression)。
回归是指通过大量已知数据发现输入 x 和输出 y 的内在关系,并对新的输入进行预测。发现内在关系后,就可以通过它来预测新的输入 x 所对应的输出 y^'。在本章中,我们用 y 表示真实的输出,用 y^' 表示预测的输出。
在使用回归前,需要假设 y^' 和 x 之间的关系类型。这种关系类型称为模型。例如,在 y^'=wx+w_0 中,y^' 和 x 成线性关系(x 的变化按比例影响 y^'),因此该模型也称为线性回归。需要注意的是,y 和 x 之间的关系未必满足我们的假设,它甚至是未知的。
以上只对 y^' 和 x 之间的关系进行了假设,而 w 和 w_0 的值是未知的,因此,需要通过一些方法求解 w 和 w_0。
要想求解 w 和 w_0,首先需要 x 和 y 的一些过往真实数据,例如 (x=3,y=4)、(x=1,y=2.5) 等。这些数据称为训练数据。通过训练数据求解未知的 w 和 w_0 的过程称为学习。学习过程通常是由机器自动进行的,这也是“机器学习”这个词的由来。总之,模型选择是一项人工假设工作,而求解 w 和 w_0 是一个自动定量过程。
当模型训练完毕,w 和 w_0 将对应于已知的数值,例如
y^'=3.2x+1.1
有一个新的输入(可以是从未在训练数据中出现的),就可以计算相应的 y^',这个过程称为预测。
在使用回归时,y^' 和 x 之间的对应关系不仅可以假设成 y^'=wx+w_0 这种简单的线性形式,也可以由诸如 y^'=w_1 x^2+w_2 x+w_0 这种复杂的形式来表示。形式越复杂,模型蕴含的 x 和 y^' 之间的关系就越复杂,捕捉 x 和 y 之间的关系的能力就越强。但是,复杂的模型会带来一些负面效应,本书后续会进行系统的论述。
2.1 线性回归的基本概念
当输入为1维数据时,线性回归模型如下式所示。
y^'=wx+w_0
显然,此时线性回归在平面上对应于一条直线,这也是“线性回归”名称的由来。
线性回归模型在平面上对应的直线,如图2-1所示。
图2-1
w_0 也称作偏置项。尽管它和输入并无直接关系,但它有重要的作用。如果没有 w_0,那么直线 y^'=wx 必须经过原点,而这极大地限制了模型的能力。
更为一般的情况是,线性回归模型往往是多输入(m 个输入)的。此时,线性回归可以由下式表示。
y^'=w_1 x_1+w_2 x_2+⋯+w_m x_m+w_0
为了简化书写,上式通常可以表示成矩阵相乘的形式。
y^'=w^T x+w_0
其中
有了线性回归模型 y^'=w^T x+w_0,就可以利用训练数据计算模型中的未知参数 w=[w_1,⋯,w_m ]^T 和 w_0 了。
已知数据 〖{x_((i)),y_((i))}〗_(i=1)^N(训练样本)是客观事实。样本数据 x_((i)),y_((i)) 都是成对出现的,
角标 (i) 表示第 i 个训练样本。训练样本一般是通过收集已经发生的事件数据得到的,例如人工标注数据、互联网公司产生的大量日志。
如果输入 x 可以通过运算得到 y^'=w^T x+w_0,那么 y^' 和真实的 y 越接近,w 和 w_0 就越合理,也就是我们越想要的。
有些读者可能会问:是否能够通过解方程的方法求解 w 和 w_0 呢?在这里,我们简单讨论一下。例如,通过已知数据,可以得到如下方程组。
在这里,w_0,w_1,⋯,w_m 为未知数。从数学的角度看,这是一个典型的多元一次方程组。多元一次方程组的求解比较简单,本书不再赘述。然而,在机器学习场景中,解方程本身会遇到以下问题。
训练样本量通常很大(例如,互联网公司的日志数据量往往都以GB为单位计),这意味着可能有海量的方程。这些方程之间往往存在矛盾,很难协调。而如果采用矩阵的形式求解方程,则涉及百万维的矩阵运算,这对算力、机器配置等提出了巨大的挑战,中小型公司通常无法承担。
在线性回归中,因为对应的是多元一次方程,所以方程尚有解析解。但是,模型远不止线性回归一种,当模型非常复杂时,例如
y^'=1/(1+e^(〖-(w〗^T x+w_0)) )
就很难找到有效的解析解了。即使有了解析解,也需要“特事特办”,为每种模型设计一套特有的方法,而这对机器学习的大规模普及和应用是不利的。
在互联网公司中,数据量往往非常大。例如,以过去半年的日志作为训练样本是非常困难的(因为如此规模的数据很难被一次性加载到机器中)。但是,在解方程时需要加载全部数据,这对实操性提出了不小的挑战。
综合上述三个原因,在机器学习领域,很少会采用解方程的方法求解模型的未知参数。为了顺利求解模型参数 w 和 w_0,梯度下降法诞生了。
2.2 损失函数和梯度下降法
首先,让训练数据图形化。当 x 是1维数据时,{x,y} 为二维坐标系中的一个点。训练样本在该坐标系中对应于若干散点,每个点都代表一个样本,如图2-2所示。