最小化经验风险函数
目的
用来学习模型参数,具体来说就是先随机初始化模型参数w,然后根据模型表达式所有训练数据的预测输出,将预测值和真实值进行对比,以减小误差为目标来更新模型参数w。这里的误差实际就是刚才所说的经验风险。
损失函数(loss function)
损失函数 是关于模型预测值f(xi)和样本标记值yi的函数,记做:L(f(xi), yi),L是loss的缩写。它用来度量模型在单个样本上预测效果的好坏。
常见的损失函数有:0-1损失函数、绝对损失函数、平方损失函数、对数损失函数。
0-1损失
样本预测值f(xi)等于样本标记值yi,则模型在该样本上的预测损失为0,否则为1.
绝对损失
将样本预测值f(xi)和样本标记值yi差的绝对值作为模型在该样本上的预测损失。
平方损失
将样本预测值f(xi)和样本标记值yi差的平方值作为模型在该样本上的预测损失。
总结
三个损失函数中,平方损失用的最多。
经验风险
基本公式
经验风险是模型在训练数据集上的平均损失,用来度量模型在整个训练数据集上预测效果的好坏,数学表达式为:
经验风险是将每个样本的损失进行求和,然后再除以样本数。自然地,线性回归的经验风险只需要把它的损失函数带入上述公式就可以了。
线性回归的经验风险
公式右侧的分母多了一个2,这个其实是为了函数求导后形式的简洁而添加的,具体来说就是为了和二次函数求导后出现的常数2进行抵消。
将平方损失直接带入经验风险基本公式得到的是均方误差(mean squared error, 简称MSE),从名字可以知道它的计算方式为:先计算差值,然后平方,最后取均值。所以,线性回归的经验风险是MSE的一半。
公式左侧J(w)表示经验风险是参数向量w的函数;J表示函数的映射关系,其实就是用来表示线性回归经验风险的符号标识。
上面的经验风险(标量求和式)还可以转换成矩阵乘法的形式,线性回归的预测函数既有标量形式又有矩阵乘法的形式,但是他们表达的逻辑是一样的:
可以看到,行矩阵乘列矩阵等于对应元素乘积的求和式。所以,线性回归的经验风险也可以写成行矩阵乘列矩阵相乘的形式。
总结
经验风险用来度量模型在整个训练集上的预测效果好坏,而损失函数用来度量模型在单个训练样本上的预测效果好坏。
知道了线性回归的经验风险之后,下一步就是要最小化这个经验风险,并将经验风险最小时的模型参数作为学习到的最佳参数。
这个问题有两种解法,第一种是令经验风险的导数为0;第二种是机器学习中求解模型参数更加通用的一种方法:梯度下降法(gradient descent,简称GD)。
梯度下降
偏导数和梯度
偏导数是相对与多变量函数而言的,例如函数f(w1, w2)对于变量w1求偏导时,是把除w1以外的变量当做常数,然后计算导数。函数f(w1,w2)对w1的偏导记为:
导数的计算
注意:复合函数的导数为外层函数的导数与内层函数导数的乘积。
梯度(gradient):其实就是一个向量,一个函数对于其自变量分别求偏导数,这些偏导数所组成的向量就是函数的梯度。
梯度下降的理解
梯度下降法是求解模型参数的常用方法,那为什么是梯度下降呢?梯度实际就是一个向量,向量既有大小也有方向,所谓梯度下降实际上是模型参数的更新方法:沿梯度的负方向进行参数更新。
经验风险大多是一个凸函数,它的梯度方向是经验风险增大的方向,我们要最小化经验风险就必须朝着负梯度方向更新参数。
**凸函数定义:**曲线上任意两点的连线都位于曲线的上方。
关于一元二次函数,这个函数的梯度可以看做只有一个元素的向量。
模型参数的更新公式
公式中的alpha在机器学习中的术语叫做学习率,是一个人为设定的超参数,代表了参数w一次更新的幅度大小;梯度gradient在一元二次函数中为导数的值。
梯度下降的推导