1. 什么是损失函数、代价函数、目标函数?

  • 损失函数 Loss LLL(单样本)
    • 只衡量一个样本的预测误差:
    • L(h(xi),yi)=(h(xi)−yi)2L\big(h(x_i),y_i\big) = \big(h(x_i)-y_i\big)^2L(h(xi),yi)=(h(xi)yi)2
  • 代价函数 Cost JJJ(全部样本)
    • 最小二乘
      • J(w)=∑i=1m(h(xi)−yi)2J(w)=\sum_{i=1}^m \big(h(x_i)-y_i\big)^2J(w)=i=1m(h(xi)yi)2
      • J(w)=(Xw−y)T(Xw−y)J(w) = (Xw-y)^T(Xw-y)J(w)=(Xwy)T(Xwy)
    • MSE 均方误差
      • MSE=1m∑i=1m(y^i−yi)2\mathrm{MSE}=\frac1m\sum_{i=1}^m(\hat{y}_i-y_i)^2MSE=m1i=1m(y^iyi)2
    • RMSE 均方根误差(只做模型评估)
      • RMSE=1m∑i=1m(y^i−yi)2\mathrm{RMSE}=\sqrt{\frac1m\sum_{i=1}^m(\hat{y}_i-y_i)^2}RMSE=m1i=1m(y^iyi)2
    • MAE 平均绝对误差
      • MAE=1m∑i=1m∣y^i−yi∣\mathrm{MAE}=\frac1m\sum_{i=1}^m\left|\hat{y}_i-y_i\right|MAE=m1i=1my^iyi
    • 使用方式:
      • 训练阶段:把 MSE 当作代价函数(loss)去更新参数;
      • 模型训练完毕:MSE、RMSE、MAE 全部拿来评估模型好坏。
  • 目标函数 Objective ObjObjObj(最终优化对象)
    • 目标函数是训练时真正最小化的函数,可加正则项
    • 无正则(普通最小二乘)
      • Obj(w)=J(w)=∑i=1m(h(xi)−yi)2Obj(w)= J(w) =\sum_{i=1}^m \big(h(x_i)-y_i\big)^2Obj(w)=J(w)=i=1m(h(xi)yi)2
      • Obj(w)=J(w)=(Xw−y)T(Xw−y)Obj(w) = J(w) = (Xw-y)^T(Xw-y)Obj(w)=J(w)=(Xwy)T(Xwy)
    • 代价函数带 L2 正则(岭回归 / 二阶正则)
      • 公式:
        • Obj(w)=∑i=1m(h(xi)−yi)2+λ∑i=1dwi2Obj(w)=\sum_{i=1}^m \big(h(x_i)-y_i\big)^2+\lambda\sum_{i=1}^d w_i^2Obj(w)=i=1m(h(xi)yi)2+λi=1dwi2
        • Obj(w)=(Xw−y)T(Xw−y)+λwTwObj(w) = (Xw-y)^T(Xw-y) + \lambda w^T wObj(w)=(Xwy)T(Xwy)+λwTw
      • 惩罚项 w²(平方)
        • 大权重会被狠狠惩罚、大幅压缩
        • 小权重惩罚很小,只会无限趋近 0,不会等于 0
      • 核心作用:
        压权重、平滑、可逆、防过拟合
        • 对权重做平方惩罚,让所有权重趋近于 0 但不为 0,权重更平滑
        • 避免单个特征权重过大,泛化能力更强,主打防过拟合
        • 强制让 XTX+λIX^TX+ \lambda IXTX+λI 永久满秩、可逆,解决多重共线性、特征冗余导致的正规方程失效问题
        • 有解析解,可直接矩阵求解
    • 代价函数带 L1 正则(Lasso回归 / 一阶正则)
      • L1正则为权重绝对值之和,可产生稀疏解、自动筛选特征:
        • Obj(w)=∑i=1m(h(xi)−yi)2+λ∑j=1d∣wj∣Obj(w) = \sum_{i=1}^m \big(h(x_i)-y_i\big)^2 + \lambda\sum_{j=1}^d |w_j|Obj(w)=i=1m(h(xi)yi)2+λj=1dwj
        • Obj(w)=(Xw−y)T(Xw−y)+λ∣w∣Obj(w) = (Xw-y)^T(Xw-y) + \lambda \vert w \vertObj(w)=(Xwy)T(Xwy)+λw
      • 惩罚的是 |w|(绝对值)
        • 损失曲面是尖角折线
        • 最优解极易落在 坐标轴上
        • 落在坐标轴 = w 直接等于 0
      • 核心作用
        削弱特征、直接置零、稀疏、无解析解
        • 对权重做绝对值惩罚,会让大量不重要特征的权重直接变为 0
        • 自动剔除无效 / 冗余特征,实现特征降维
        • 无解析解,只能用梯度下降迭代求解
  • 三者层级关系
    • 损失函数 ⊂ 代价函数 ⊂ 目标函数

2. 为什么要算损失函数?

  • 损失函数用来量化预测误差的
  • 通过对损失求梯度,才可以更新参数 www
  • 不管正规方程还是梯度下降,全部依赖损失函数。

3. 算出来损失函数能干嘛?

  • 用来评价当前模型效果
  • 通过损失求最优参数(最关键作用)
    • 方案 1:正规方程(解析解)
      • 公式:w=(XTX)−1XTy{w}=({X}^T{X})^{-1}{X}^T{y}w=(XTX)1XTy
    • 方案 2:梯度下降(迭代求解,深度学习主流)
      • 公式:w=w−η∂J(w)∂w\boldsymbol{w} = \boldsymbol{w}-\eta\frac{\partial J(\boldsymbol{w})}{\partial \boldsymbol{w}}w=wηwJ(w)
  • 引入正则项解决过拟合(目标函数)

大白话:www是未知数,损失函数就是我们的评判标准;机器学习就是不断调整www,把损失降到最小。脱离损失函数,我们完全不知道如何设定 w。

4. 正规方程(解析解)公式推导

求解原始最小二乘参数w 有两种方式:正规方程和梯度下降
正规方程:直接矩阵运算一步算出www;样本不大时好用;样本很多(m 上万)矩阵求逆计算量巨大
梯度下降:迭代逐步逼近www,大数据场景优先选择

这里推导正规方程
整个最小二乘推导链路:平方和损失 → 矩阵形式改写(借助 L2 范数)→ 展开多项式 → 矩阵求导 → 令梯度为 0 → 借助逆矩阵求出

  • 第一步:先看下原版最小二乘公式
    • 预测值:h(x1)、h(x2)、h(x3)...h(x_1)、h(x_2)、h(x_3)...h(x1)h(x2)h(x3)...
    • 真实值:y1、y2、y3...y_1、y_2、y_3...y1y2y3...
    • 公式:
      • J(w)=(h(x1)−y1)2+(h(x2)−y2)2+...+(h(xm)−ym)2J(w) = (h(x_1) - y_1)^2 + (h(x_2) - y_2)^2 + ... + (h(x_m) - y_m)^2J(w)=(h(x1)y1)2+(h(x2)y2)2+...+(h(xm)ym)2
  • 第二步:上述公式使用 求和符号 ∑(大写西格玛)表示
    • i从1到m,求样本预测值和真实值差值 的 平方和
    • J(w)=∑i=1m(h(xi)−yi)2J(w)=\sum_{i=1}^m\big(h(x_i)-y_i\big)^2J(w)=i=1m(h(xi)yi)2
  • 第三步:上述公式使用矩阵转置方式
    • 先了解前置知识
      • 矩阵
        • 矩阵运算:矩阵相乘的必要条件第一个矩阵的列数 = 第二个矩阵的行数(A的列数n= B的行数n),才可以相乘 A⋅B
        • 矩阵转置:把矩阵 AAA 的行和列互换得到转置矩阵,记作 ATA^TAT,简单来说,矩阵的转置就是行变列,列变行
        • 矩阵转置举例:矩阵 AAA 和 矩阵 AAA 的转置:
          A=[123],AT=[123] \boldsymbol{A}= \begin{bmatrix} 1 \\ 2 \\ 3 \end{bmatrix},\quad \boldsymbol{A}^T= \begin{bmatrix} 1 & 2 & 3 \\ \end{bmatrix} A= 123 ,AT=[123]
        • 发现:矩阵乘矩阵转置也就是 ATAA^TAATA 等于 x12+x22+x32x_1^2 + x_2^2 + x_3^2x12+x22+x32 等价于 ∑i=13xi2\sum_{i=1}^3x_i^2i=13xi2
          • 注意:当 A是列向量(形状 m×1, m行1列)时一定要写成 ATAA^TAATA,不是 AATAA^TAAT,前者运算结果是标量也就是具体计算出来的一个值,后者运算结果是m×m的方阵
      • L2范数
        • 针对普通 列向量 xxx(也就是形状 m×1,m行1列) 有如下公式:
        • ∥x∥2=x12+x22+⋯+xn2=∑i=1nxi2\|\boldsymbol{x}\|_2=\sqrt{x_1^2 + x_2^2+\dots+x_n^2}=\sqrt{\sum_{i=1}^n x_i^2}x2=x12+x22++xn2 =i=1nxi2
        • 重点
          • 结合上述矩阵转置知识:把AAA看作xxx, xTxx^TxxTx 等价于 ∑i=1mxi2\sum_{i=1}^mx_i^2i=1mxi2
          • 也就是 L2 范数去掉根号,也就是 L2 范数∥x∥2\|\boldsymbol{x}\|_2x2 再平方,也就是 xTxx^TxxTx = ∥x∥22\|\boldsymbol{x}\|_2^2x22
    • 基于第二步公式推导:根据前置知识我们可以将 第2步 中的 (h(xi)−yi)(h(x_i)-y_i)(h(xi)yi) 当作 误差向量eee, e=Xw−ye=Xw−ye=Xwy
      • Xw−yXw−yXwy公式说明
        • XXX:样本特征矩阵,形状 m(样本总数)×d(特征数量),约定第一列全部填充 1,用来计算偏置项 w0w_0w0
        • www:参数列向量,维度 n×1n×1n×1w0w_0w0 为截距(可以看作kx+b中的b),w1…wn−1w_1…w_n−1w1wn1是各个特征的权重
        • yyy:真实标签列向量,形状 m×1m×1m×1,存放样本真实值
      • 此时第2步 中的公式就可以改写成如下公式
        • J(w)=∑i=1m(Xw−y)2J(w)=\sum_{i=1}^m(Xw−y)^2J(w)=i=1m(Xwy)2
      • 然后,我们在不影响上述公式结果的基础上开根号然后再整体平方,会发现和我们上述范数中推导的公式一致了
        • J(w)=∑i=1m(Xw−y)22J(w)=\sqrt{\sum_{i=1}^m(Xw−y)^2}^2J(w)=i=1m(Xwy)2 2 等价于 ∥Xw−y∥22\|\boldsymbol{Xw−y}\|_2^2Xwy22
  • 第四步:使用矩阵知识进一步推导
    • J(w)=∥Xw−y∥22J(w)=\|\boldsymbol{Xw−y}\|_2^2J(w)=Xwy22
    • 根据范数公式 ∥x∥22\|\boldsymbol{x}\|_2^2x22 = xTxx^TxxTx,得出
      • J(w)=(Xw−y)T(Xw−y)J(w)=(Xw−y)^T(Xw−y)J(w)=(Xwy)T(Xwy)
    • 进行乘法运算,得出
      • 注意:
        转置运算 (AB)T=BTAT(AB)^T=B^TA^T(AB)T=BTAT
        矩阵乘法不满足交换律 AB≠BAAB \neq BAAB=BA**
      • J(w)=(Xw)TXw−(Xw)Ty−yTXw+yTyJ(w)=(Xw)^TXw - (Xw)^Ty - y^TXw + y^TyJ(w)=(Xw)TXw(Xw)TyyTXw+yTy
      • J(w)=wTXTXw−wTXTy−yTXw+yTyJ(w)=w^TX^TXw - w^TX^Ty − y^TXw + y^TyJ(w)=wTXTXwwTXTyyTXw+yTy
    • 逐项对 www 求偏导
      • 矩阵求导公式:
        公式一:∂∂w(wTAw)=2Aw\frac{\partial}{\partial w}(w^T A w)=2Aww(wTAw)=2Aw (满足条件:AAA 是对称矩阵,AT=AA^T = AAT=A
        公式二:∂∂w(wTa)=a\frac{\partial}{\partial w}(w^T a)=aw(wTa)=a(满足条件:aaad×1d×1d×1 列向量)
        公式三:∂∂w(Aw)=AT\frac{\partial}{\partial w}(Aw)=A^Tw(Aw)=AT(满足条件:AAAm×dm×dm×d 矩阵)
      • 第一项对www求偏导 wTXTXww^TX^TXwwTXTXw
        • 根据公式一: XTXX^TXXTX是对称矩阵,将 XTXX^TXXTX = AAA 带入得出:2XTXw2X^TXw2XTXw
      • 第二项对www求偏导 wTXTyw^TX^TywTXTy
        • 根据公式二:XTX^TXT是d x m的矩阵,yyym×1m×1m×1 的列向量,相乘是 d×1d×1d×1 的列向量,将 XTyX^TyXTy = AAA 带入得出:XTyX^TyXTy
      • 第三项对www求偏导 yTXwy^TXwyTXw
        • 根据公式三得出:yTy^TyT1×m1×m1×m 矩阵,XXXm×dm×dm×d 的矩阵,相乘是1×d1×d1×d 矩阵,将 yTXy^TXyTX = AAA 带入得出:XTyX^TyXTy
      • 第四项对www求偏导 yTyy^TyyTy
        • yTy^TyT 是 1 x m矩阵,yyym×1m×1m×1 矩阵,相乘是 1×11×11×1 标量,常数对变量求导结果为零向量
    • 全部项结果
      • ∂J∂w=2XTXw−XTy−XTy\frac{\partial J}{\partial w}=2X^TXw - X^Ty - X^TywJ=2XTXwXTyXTy
      • ∂J∂w=2XTXw−2XTy\frac{\partial J}{\partial w}=2X^TXw - 2X^TywJ=2XTXw2XTy
      • 令梯度等于零向量000
      • 0=2XTXw−2XTy0=2X^TXw - 2X^Ty0=2XTXw2XTy
      • XTXw=XTyX^TXw = X^TyXTXw=XTy
  • 第五步:根据第四步结果进一步推导
    • XTXw=XTyX^TXw = X^TyXTXw=XTy
    • 这里我们引入XTXX^TXXTX的逆矩阵,目的是为了得到一个单位矩阵,从而消除等式左边的XTXX^TXXTX
      • 方阵 AAA 可逆的条件:
        • 条件一:AAA 必须是n×nn×nn×n方阵 (条件一满足:矩阵的转置乘矩阵就是方阵,这里的XTXX^TXXTX就是方阵)
        • 条件二:AAA 满秩, 也就是矩阵里面所有行(列)彼此独立,任意一列都不能用剩下列通过加减倍数拼凑出来(列之间线性无关)。行列式 ∣A∣≠0|A| \neq 0A=0 (条件二不一定满足)
    • 这里我们假设 方阵 AAA 可逆的条件满足: 因为方阵乘逆方阵等于单位矩阵 A−1A=AA−1=IA^-1A=AA^-1=IA1A=AA1=I,所以推出:
      • (XTX)−1(XTX)w=(XTX)−1XTy({X}^T{X})^{-1}({X}^T{X}){w}=({X}^T{X})^{-1}{X}^T{y}(XTX)1(XTX)w=(XTX)1XTy
      • Iw=(XTX)−1XTyI{w}=({X}^T{X})^{-1}{X}^T{y}Iw=(XTX)1XTy
      • w=(XTX)−1XTy{w}=({X}^T{X})^{-1}{X}^T{y}w=(XTX)1XTy
  • 最终推导结果
    • w=(XTX)−1XTy{w}=({X}^T{X})^{-1}{X}^T{y}w=(XTX)1XTy
  • 前提条件牢记:
    • XTX{X}^T{X}XTX不满秩时,(XTX)−1({X}^T{X})^{-1}(XTX)1不存在,解析解失效,这时引入L2正则:w=(XTX+λI)−1XTy{w}=({X}^T{X}+\lambda{I})^{-1}{X}^T{y}w=(XTX+λI)1XTy
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐