1. 什么是损失函数、代价函数、目标函数?
- 损失函数 Loss L L L(单样本)
- 只衡量一个样本的预测误差:
- L ( h ( x i ) , y i ) = ( h ( x i ) − y i ) 2 L\big(h(x_i),y_i\big) = \big(h(x_i)-y_i\big)^2 L(h(xi),yi)=(h(xi)−yi)2
- 代价函数 Cost J J J(全部样本)
- 最小二乘
- J ( w ) = ∑ i = 1 m ( h ( x i ) − y i ) 2 J(w)=\sum_{i=1}^m \big(h(x_i)-y_i\big)^2 J(w)=∑i=1m(h(xi)−yi)2
- J ( w ) = ( X w − y ) T ( X w − y ) J(w) = (Xw-y)^T(Xw-y) J(w)=(Xw−y)T(Xw−y)
- MSE 均方误差
- M S E = 1 m ∑ i = 1 m ( y ^ i − y i ) 2 \mathrm{MSE}=\frac1m\sum_{i=1}^m(\hat{y}_i-y_i)^2 MSE=m1∑i=1m(y^i−yi)2
- RMSE 均方根误差(只做模型评估)
- R M S E = 1 m ∑ i = 1 m ( y ^ i − y i ) 2 \mathrm{RMSE}=\sqrt{\frac1m\sum_{i=1}^m(\hat{y}_i-y_i)^2} RMSE=m1∑i=1m(y^i−yi)2
- MAE 平均绝对误差
- M A E = 1 m ∑ i = 1 m ∣ y ^ i − y i ∣ \mathrm{MAE}=\frac1m\sum_{i=1}^m\left|\hat{y}_i-y_i\right| MAE=m1∑i=1m∣y^i−yi∣
- 使用方式:
- 训练阶段:把 MSE 当作代价函数(loss)去更新参数;
- 模型训练完毕:MSE、RMSE、MAE 全部拿来评估模型好坏。
- 最小二乘
- 目标函数 Objective O b j Obj Obj(最终优化对象)
- 目标函数是训练时真正最小化的函数,可加正则项
- 无正则(普通最小二乘)
- O b j ( w ) = J ( w ) = ∑ i = 1 m ( h ( x i ) − y i ) 2 Obj(w)= J(w) =\sum_{i=1}^m \big(h(x_i)-y_i\big)^2 Obj(w)=J(w)=∑i=1m(h(xi)−yi)2
- O b j ( w ) = J ( w ) = ( X w − y ) T ( X w − y ) Obj(w) = J(w) = (Xw-y)^T(Xw-y) Obj(w)=J(w)=(Xw−y)T(Xw−y)
- 代价函数带 L2 正则(岭回归 / 二阶正则)
- 公式:
- O b j ( w ) = ∑ i = 1 m ( h ( x i ) − y i ) 2 + λ ∑ i = 1 d w i 2 Obj(w)=\sum_{i=1}^m \big(h(x_i)-y_i\big)^2+\lambda\sum_{i=1}^d w_i^2 Obj(w)=∑i=1m(h(xi)−yi)2+λ∑i=1dwi2
- O b j ( w ) = ( X w − y ) T ( X w − y ) + λ w T w Obj(w) = (Xw-y)^T(Xw-y) + \lambda w^T w Obj(w)=(Xw−y)T(Xw−y)+λwTw
- 惩罚项 w²(平方)
- 大权重会被狠狠惩罚、大幅压缩
- 小权重惩罚很小,只会无限趋近 0,不会等于 0
- 核心作用:
压权重、平滑、可逆、防过拟合- 对权重做平方惩罚,让所有权重趋近于 0 但不为 0,权重更平滑
- 避免单个特征权重过大,泛化能力更强,主打防过拟合
- 强制让 X T X + λ I X^TX+ \lambda I XTX+λI 永久满秩、可逆,解决多重共线性、特征冗余导致的正规方程失效问题
- 有解析解,可直接矩阵求解
- 公式:
- 代价函数带 L1 正则(Lasso回归 / 一阶正则)
- L1正则为权重绝对值之和,可产生稀疏解、自动筛选特征:
- O b j ( w ) = ∑ i = 1 m ( h ( x i ) − y i ) 2 + λ ∑ j = 1 d ∣ w j ∣ 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=1d∣wj∣
- O b j ( w ) = ( X w − y ) T ( X w − y ) + λ ∣ w ∣ Obj(w) = (Xw-y)^T(Xw-y) + \lambda \vert w \vert Obj(w)=(Xw−y)T(Xw−y)+λ∣w∣
- 惩罚的是 |w|(绝对值)
- 损失曲面是尖角折线
- 最优解极易落在 坐标轴上
- 落在坐标轴 = w 直接等于 0
- 核心作用
削弱特征、直接置零、稀疏、无解析解- 对权重做绝对值惩罚,会让大量不重要特征的权重直接变为 0
- 自动剔除无效 / 冗余特征,实现特征降维
- 无解析解,只能用梯度下降迭代求解
- L1正则为权重绝对值之和,可产生稀疏解、自动筛选特征:
- 三者层级关系
- 损失函数 ⊂ 代价函数 ⊂ 目标函数
2. 为什么要算损失函数?
- 损失函数用来量化预测误差的
- 通过对损失求梯度,才可以更新参数 w w w
- 不管正规方程还是梯度下降,全部依赖损失函数。
3. 算出来损失函数能干嘛?
- 用来评价当前模型效果
- 通过损失求最优参数(最关键作用)
- 方案 1:正规方程(解析解)
- 公式: w = ( X T X ) − 1 X T y {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−η∂w∂J(w)
- 方案 1:正规方程(解析解)
- 引入正则项解决过拟合(目标函数)
大白话: w w w是未知数,损失函数就是我们的评判标准;机器学习就是不断调整 w w w,把损失降到最小。脱离损失函数,我们完全不知道如何设定 w。
4. 正规方程(解析解)公式推导
求解原始最小二乘参数w 有两种方式:正规方程和梯度下降
正规方程:直接矩阵运算一步算出 w w w;样本不大时好用;样本很多(m 上万)矩阵求逆计算量巨大
梯度下降:迭代逐步逼近 w w w,大数据场景优先选择
这里推导正规方程整个最小二乘推导链路:平方和损失 → 矩阵形式改写(借助 L2 范数)→ 展开多项式 → 矩阵求导 → 令梯度为 0 → 借助逆矩阵求出
- 第一步:先看下原版最小二乘公式
- 预测值: h ( x 1 ) 、 h ( x 2 ) 、 h ( x 3 ) . . . h(x_1)、h(x_2)、h(x_3)... h(x1)、h(x2)、h(x3)...
- 真实值: y 1 、 y 2 、 y 3 . . . y_1、y_2、y_3... y1、y2、y3...
- 公式:
- J ( w ) = ( h ( x 1 ) − y 1 ) 2 + ( h ( x 2 ) − y 2 ) 2 + . . . + ( h ( x m ) − y m ) 2 J(w) = (h(x_1) - y_1)^2 + (h(x_2) - y_2)^2 + ... + (h(x_m) - y_m)^2 J(w)=(h(x1)−y1)2+(h(x2)−y2)2+...+(h(xm)−ym)2
- 第二步:上述公式使用 求和符号 ∑(大写西格玛)表示
- i从1到m,求样本预测值和真实值差值 的 平方和
- J ( w ) = ∑ i = 1 m ( h ( x i ) − y i ) 2 J(w)=\sum_{i=1}^m\big(h(x_i)-y_i\big)^2 J(w)=∑i=1m(h(xi)−yi)2
- 第三步:上述公式使用矩阵转置方式
- 先了解前置知识
- 矩阵
- 矩阵运算 :矩阵相乘的必要条件第一个矩阵的列数 = 第二个矩阵的行数(A的列数n= B的行数n),才可以相乘 A⋅B
- 矩阵转置 :把矩阵 A A A 的行和列互换得到转置矩阵,记作 A T A^T AT,简单来说,矩阵的转置就是行变列,列变行
- 矩阵转置举例 :矩阵 A A A 和 矩阵 A A A 的转置:
A = 1 2 3 , A T = 1 2 3 \boldsymbol{A}= \begin{bmatrix} 1 \\ 2 \\ 3 \end{bmatrix},\quad \boldsymbol{A}^T= \begin{bmatrix} 1 & 2 & 3 \\ \end{bmatrix} A= 123 ,AT=123 - 发现:矩阵乘矩阵转置也就是 A T A A^TA ATA 等于 x 1 2 + x 2 2 + x 3 2 x_1^2 + x_2^2 + x_3^2 x12+x22+x32 等价于 ∑ i = 1 3 x i 2 \sum_{i=1}^3x_i^2 ∑i=13xi2
- 注意 :当 A是列向量 (形状 m×1, m行1列)时一定要写成 A T A A^TA ATA,不是 A A T AA^T AAT,前者运算结果是标量也就是具体计算出来的一个值,后者运算结果是m×m的方阵
- L2范数
- 针对普通 列向量 x x x(也就是形状 m×1,m行1列) 有如下公式:
- ∥ x ∥ 2 = x 1 2 + x 2 2 + ⋯ + x n 2 = ∑ i = 1 n x i 2 \|\boldsymbol{x}\|2=\sqrt{x_1^2 + x_2^2+\dots+x_n^2}=\sqrt{\sum{i=1}^n x_i^2} ∥x∥2=x12+x22+⋯+xn2 =∑i=1nxi2
- 重点 :
- 结合上述矩阵转置知识:把 A A A看作 x x x, x T x x^Tx xTx 等价于 ∑ i = 1 m x i 2 \sum_{i=1}^mx_i^2 ∑i=1mxi2
- 也就是 L2 范数去掉根号,也就是 L2 范数 ∥ x ∥ 2 \|\boldsymbol{x}\|_2 ∥x∥2 再平方,也就是 x T x x^Tx xTx = ∥ x ∥ 2 2 \|\boldsymbol{x}\|_2^2 ∥x∥22
- 矩阵
- 基于第二步公式推导 :根据前置知识我们可以将 第2步 中的 ( h ( x i ) − y i ) (h(x_i)-y_i) (h(xi)−yi) 当作 误差向量 e e e, e = X w − y e=Xw−y e=Xw−y
- X w − y Xw−y Xw−y公式说明 :
- X X X:样本特征矩阵,形状 m(样本总数)×d(特征数量),约定第一列全部填充 1,用来计算偏置项 w 0 w_0 w0
- w w w:参数列向量,维度 n × 1 n×1 n×1, w 0 w_0 w0 为截距(可以看作kx+b中的b), w 1 ... w n − 1 w_1...w_n−1 w1...wn−1是各个特征的权重
- y y y:真实标签列向量,形状 m × 1 m×1 m×1,存放样本真实值
- 此时第2步 中的公式就可以改写成如下公式 :
- J ( w ) = ∑ i = 1 m ( X w − y ) 2 J(w)=\sum_{i=1}^m(Xw−y)^2 J(w)=∑i=1m(Xw−y)2
- 然后,我们在不影响上述公式结果的基础上开根号然后再整体平方,会发现和我们上述范数中推导的公式一致了
- J ( w ) = ∑ i = 1 m ( X w − y ) 2 2 J(w)=\sqrt{\sum_{i=1}^m(Xw−y)^2}^2 J(w)=∑i=1m(Xw−y)2 2 等价于 ∥ X w − y ∥ 2 2 \|\boldsymbol{Xw−y}\|_2^2 ∥Xw−y∥22
- X w − y Xw−y Xw−y公式说明 :
- 先了解前置知识
- 第四步:使用矩阵知识进一步推导
- J ( w ) = ∥ X w − y ∥ 2 2 J(w)=\|\boldsymbol{Xw−y}\|_2^2 J(w)=∥Xw−y∥22
- 根据范数公式 ∥ x ∥ 2 2 \|\boldsymbol{x}\|_2^2 ∥x∥22 = x T x x^Tx xTx,得出
- J ( w ) = ( X w − y ) T ( X w − y ) J(w)=(Xw−y)^T(Xw−y) J(w)=(Xw−y)T(Xw−y)
- 进行乘法运算,得出
- 注意:
转置运算 ( A B ) T = B T A T (AB)^T=B^TA^T (AB)T=BTAT
矩阵乘法不满足交换律 A B ≠ B A AB \neq BA AB=BA** - J ( w ) = ( X w ) T X w − ( X w ) T y − y T X w + y T y J(w)=(Xw)^TXw - (Xw)^Ty - y^TXw + y^Ty J(w)=(Xw)TXw−(Xw)Ty−yTXw+yTy
- J ( w ) = w T X T X w − w T X T y − y T X w + y T y J(w)=w^TX^TXw - w^TX^Ty − y^TXw + y^Ty J(w)=wTXTXw−wTXTy−yTXw+yTy
- 注意:
- 逐项对 w w w 求偏导
- 矩阵求导公式:
公式一: ∂ ∂ w ( w T A w ) = 2 A w \frac{\partial}{\partial w}(w^T A w)=2Aw ∂w∂(wTAw)=2Aw (满足条件: A A A 是对称矩阵, A T = A A^T = A AT=A)
公式二: ∂ ∂ w ( w T a ) = a \frac{\partial}{\partial w}(w^T a)=a ∂w∂(wTa)=a(满足条件: a a a 是 d × 1 d×1 d×1 列向量)
公式三: ∂ ∂ w ( A w ) = A T \frac{\partial}{\partial w}(Aw)=A^T ∂w∂(Aw)=AT(满足条件: A A A 是 m × d m×d m×d 矩阵) - 第一项对 w w w求偏导 w T X T X w w^TX^TXw wTXTXw
- 根据公式一: X T X X^TX XTX是对称矩阵,将 X T X X^TX XTX = A A A 带入得出: 2 X T X w 2X^TXw 2XTXw
- 第二项对 w w w求偏导 w T X T y w^TX^Ty wTXTy
- 根据公式二: X T X^T XT是d x m的矩阵, y y y是 m × 1 m×1 m×1 的列向量,相乘是 d × 1 d×1 d×1 的列向量,将 X T y X^Ty XTy = A A A 带入得出: X T y X^Ty XTy
- 第三项对 w w w求偏导 y T X w y^TXw yTXw
- 根据公式三得出: y T y^T yT 是 1 × m 1×m 1×m 矩阵, X X X是 m × d m×d m×d 的矩阵,相乘是 1 × d 1×d 1×d 矩阵,将 y T X y^TX yTX = A A A 带入得出: X T y X^Ty XTy
- 第四项对 w w w求偏导 y T y y^Ty yTy
- y T y^T yT 是 1 x m矩阵, y y y是 m × 1 m×1 m×1 矩阵,相乘是 1 × 1 1×1 1×1 标量,常数对变量求导结果为零向量
- 矩阵求导公式:
- 全部项结果
- ∂ J ∂ w = 2 X T X w − X T y − X T y \frac{\partial J}{\partial w}=2X^TXw - X^Ty - X^Ty ∂w∂J=2XTXw−XTy−XTy
- ∂ J ∂ w = 2 X T X w − 2 X T y \frac{\partial J}{\partial w}=2X^TXw - 2X^Ty ∂w∂J=2XTXw−2XTy
- 令梯度等于零向量 0 0 0
- 0 = 2 X T X w − 2 X T y 0=2X^TXw - 2X^Ty 0=2XTXw−2XTy
- X T X w = X T y X^TXw = X^Ty XTXw=XTy
- 第五步:根据第四步结果进一步推导
- X T X w = X T y X^TXw = X^Ty XTXw=XTy
- 这里我们引入 X T X X^TX XTX的逆矩阵,目的是为了得到一个单位矩阵,从而消除等式左边的 X T X X^TX XTX。
- 方阵 A A A 可逆的条件:
- 条件一: A A A 必须是 n × n n×n n×n方阵 (条件一满足:矩阵的转置乘矩阵就是方阵,这里的 X T X X^TX XTX就是方阵)
- 条件二: A A A 满秩, 也就是矩阵里面所有行(列)彼此独立,任意一列都不能用剩下列通过加减倍数拼凑出来(列之间线性无关)。行列式 ∣ A ∣ ≠ 0 |A| \neq 0 ∣A∣=0 (条件二不一定满足)
- 方阵 A A A 可逆的条件:
- 这里我们假设 方阵 A A A 可逆的条件满足: 因为方阵乘逆方阵等于单位矩阵 A − 1 A = A A − 1 = I A^-1A=AA^-1=I A−1A=AA−1=I,所以推出:
- ( X T X ) − 1 ( X T X ) w = ( X T X ) − 1 X T y ({X}^T{X})^{-1}({X}^T{X}){w}=({X}^T{X})^{-1}{X}^T{y} (XTX)−1(XTX)w=(XTX)−1XTy
- I w = ( X T X ) − 1 X T y I{w}=({X}^T{X})^{-1}{X}^T{y} Iw=(XTX)−1XTy
- w = ( X T X ) − 1 X T y {w}=({X}^T{X})^{-1}{X}^T{y} w=(XTX)−1XTy
- 最终推导结果
- w = ( X T X ) − 1 X T y {w}=({X}^T{X})^{-1}{X}^T{y} w=(XTX)−1XTy
- 前提条件牢记:
- 当 X T X {X}^T{X} XTX不满秩时, ( X T X ) − 1 ({X}^T{X})^{-1} (XTX)−1不存在,解析解失效,这时引入L2正则: w = ( X T X + λ I ) − 1 X T y {w}=({X}^T{X}+\lambda{I})^{-1}{X}^T{y} w=(XTX+λI)−1XTy