机器学习概述
本文是邱锡鹏教授撰写的《神经网络与深度学习》一书中 第一部分:机器学习基础 的读书笔记,由于该部分比较基础,只记录一些本人觉得比较值得记录的内容,中间也会包括一些拓展和思考。
机器学习中的损失函数
平方损失函数
- 适用问题:预测的 label y 为实值时,通常是回归问题
- 定义:
L ( y , f ( x ; θ ) ) = 1 2 ( y − f ( x ; θ ) ) 2 L(y,f(x;\theta)) = \frac{1}{2} (y - f(x;\theta))^2 L(y,f(x;θ))=21(y−f(x;θ))2
Note:平方损失函数一般不适用于分类问题
交叉熵损失函数
- 适用问题:预测的 label y ∈ { 1 , 2 , 3 , ⋯ , C } \in \{1,2,3,\cdots,C\} ∈{1,2,3,⋯,C} 的离散类型,通常是多分类问题
- 定义:(详细参见交叉熵)
L ( y , f ( x ; θ ) ) = − y l o g f ( x ; θ ) = − ∑ c = 1 C y c l o g f ( x c ; θ ) L(\boldsymbol y,f(\boldsymbol x;\theta)) = -\boldsymbol y log f(\boldsymbol x; \theta) = -\sum_{c=1}^C y_c log f(\boldsymbol x_c; \theta) L(y,f(x;θ))=−ylogf(x;θ)=−c=1∑Cyclogf(xc;θ) - 因为 y \boldsymbol y y 通常是 one-hot 向量,所以上式直接等价于 L ( y , f ( x ; θ ) ) = − l o g f y ( x ; θ ) L(\boldsymbol y,f(\boldsymbol x;\theta)) = - log f_y(\boldsymbol x; \theta) L(y,f(x;θ))=−logfy(x;θ)
Hinge 损失函数
- 适用问题:预测的 label y ∈ { 1 , − 1 } \in \{1,-1\} ∈{1,−1} 的离散类型,通常是二分类问题
- 定义:
L ( y , f ( x ; θ ) ) = m a x ( 0 , 1 − y f ( x ; θ ) ) L(y,f(\boldsymbol x;\theta)) = max(0, 1- y f(\boldsymbol x; \theta) ) L(y,f(x;θ))=max(0,1−yf(x;θ))
最大似然估计与平方损失函数
假设真实值
y
y
y 与 预测值
f
(
x
;
θ
)
f(x;\theta)
f(x;θ)的关系如下:
y
=
f
(
x
;
Θ
)
+
ϵ
\boldsymbol y = f(\boldsymbol x;\Theta) + \boldsymbol \epsilon
y=f(x;Θ)+ϵ
其中
ϵ
\epsilon
ϵ是误差函数,不失一般性,我们认为其服从正态分布
N
(
0
→
,
σ
2
I
)
\mathcal{N}(\mathop{0} \limits ^{\rightarrow},\sigma^2 I)
N(0→,σ2I),那么
y
\boldsymbol y
y应该服从分布
N
(
f
(
x
;
Θ
)
,
σ
2
I
)
\mathcal{N}(f(\boldsymbol x;\Theta),\sigma^2 I)
N(f(x;Θ),σ2I)
⇒
argmin
−
l
o
g
P
(
y
∣
x
;
Θ
)
=
argmin
−
l
o
g
∏
i
=
1
n
1
2
π
σ
e
x
p
(
−
(
y
−
f
(
x
i
;
θ
)
)
2
2
σ
2
)
=
argmin
−
∑
i
=
1
n
−
(
y
−
f
(
x
i
;
θ
)
)
2
2
σ
2
=
argmin
∑
i
=
1
n
(
y
−
f
(
x
i
;
θ
)
)
2
\begin{aligned} \Rightarrow \text{argmin} - logP(\boldsymbol y|\boldsymbol x;\Theta) &= \text{argmin} -log\prod_{i=1}^n \frac{1}{\sqrt{2\pi}\sigma} exp(-\frac{(y-f(x_i;\theta))^2}{2\sigma^2})\\ &= \text{argmin} -\sum_{i=1}^n -\frac{(y-f(x_i;\theta))^2}{2\sigma^2}\\ &= \text{argmin} \sum_{i=1}^n (y-f(x_i;\theta))^2 \end{aligned}
⇒argmin−logP(y∣x;Θ)=argmin−logi=1∏n2π
σ1exp(−2σ2(y−f(xi;θ))2)=argmin−i=1∑n−2σ2(y−f(xi;θ))2=argmini=1∑n(y−f(xi;θ))2
因此,当误差函数满足高斯分布时,最大似然估计等价于平方损失函数
最大似然估计与交叉熵
参见 最大似然估计与交叉熵
最大似然估计与最大后验估计
- 最大似然估计:频率学派 观点,认为参数为确定的未知数, 参数估计就是找出未知数的过程
Θ ^ = argmax ∑ i = 1 n l o g P ( x i ; Θ ) = argmin − ∑ i = 1 n l o g P ( x i ; Θ ) \hat{\Theta} = \text{argmax} \sum_{i=1}^n log P(x_i; \Theta) = \text{argmin} -\sum_{i=1}^n log P(x_i; \Theta) Θ^=argmaxi=1∑nlogP(xi;Θ)=argmin−i=1∑nlogP(xi;Θ) - 最大后验估计: 贝叶斯 观点,认为参数其实也是随机变量, 服从一定的分布。可以对参数的先验分布进行建模, 并使用观测数据来对参数进行修正, 最后使用修正后的参数分布来进行推断
Θ ^ = argmax P ( Θ ∣ x 1 , ⋯ , x n ) = argmax P ( x 1 , ⋯ , x n ∣ Θ ) ⋅ P ( Θ ) P ( x 1 , ⋯ , x n ) = argmax ∏ i = 1 n P ( x i ∣ Θ ) ⋅ P ( Θ ) = argmin − ∑ i = 1 n l o g P ( x i ∣ Θ ) − l o g P ( Θ ) \begin{aligned} \hat{\Theta} &= \text{argmax} P(\Theta |x_1, \cdots, x_n)\\ &= \text{argmax} \frac{P(x_1, \cdots, x_n |\Theta) \cdot P(\Theta)}{P(x_1, \cdots, x_n)}\\ &= \text{argmax} \prod_{i=1}^n P(x_i|\Theta)\cdot P(\Theta)\\ &= \text{argmin} -\sum_{i=1}^n logP(x_i|\Theta) - logP(\Theta) \end{aligned} Θ^=argmaxP(Θ∣x1,⋯,xn)=argmaxP(x1,⋯,xn)P(x1,⋯,xn∣Θ)⋅P(Θ)=argmaxi=1∏nP(xi∣Θ)⋅P(Θ)=argmin−i=1∑nlogP(xi∣Θ)−logP(Θ)
综上,最大后验估计是在最大似然估计的基础上加上了参数 Θ \Theta Θ 的先验信息。
1. 如果认为 Θ \Theta Θ 是常值,那么最大后验估计等价于最大似然估计
2. 如果认为 Θ \Theta Θ 服从正态分布 N ( 0 → , 1 λ I ) \mathcal{N}(\mathop{0} \limits ^{\rightarrow},\frac{1}{\lambda}I) N(0→,λ1I),则 − l o g P ( Θ ) = l o g 1 2 π λ − 1 2 λ Θ T Θ - log P(\Theta) = log\frac{1}{\sqrt{2\pi \lambda}} - \frac{1}{2}\lambda \Theta^T \Theta −logP(Θ)=log2πλ 1−21λΘTΘ, 与 λ ∣ ∣ Θ ∣ ∣ 2 \lambda||\Theta||_2 λ∣∣Θ∣∣2 成正比,也就是说 最大后验估计 = 最大似然估计 + L 2 L_2 L2正则化
1. 如果认为 Θ \Theta Θ 服从Laplace分布 L a p l a c e ( 0 → , 1 λ I ) \mathcal{Laplace}(\mathop{0} \limits ^{\rightarrow},\frac{1}{\lambda}I) Laplace(0→,λ1I),则 − l o g P ( Θ ) = − l o g λ 2 e x p ( − λ ∣ Θ ∣ ) -log P(\Theta) = -log \frac{\lambda}{2} exp(-\lambda|\Theta|) −logP(Θ)=−log2λexp(−λ∣Θ∣),与 λ ∣ ∣ Θ ∣ ∣ 1 \lambda||\Theta||_1 λ∣∣Θ∣∣1成正比,也就是说 最大后验估计 = 最大似然估计 + L 1 L_1 L1正则化
#########################################################################
正则化
关于L2正则化的两点思考
对于线性回归 f ( x ; w ) = w T x f(\boldsymbol x;\boldsymbol w) = \boldsymbol w^T \boldsymbol x f(x;w)=wTx,其平方损失: L ( w ) = 1 2 ∣ ∣ y − X T w ∣ ∣ 2 L(\boldsymbol w)= \frac{1}{2} || \boldsymbol y - \boldsymbol X^T \boldsymbol w ||^2 L(w)=21∣∣y−XTw∣∣2,用最小二乘法可得 w \boldsymbol w w的解析解为: w = ( X T X ) − 1 X y \boldsymbol w = (\boldsymbol X^T \boldsymbol X)^{-1} \boldsymbol X \boldsymbol y w=(XTX)−1Xy。
但这个要求
X
T
X
\boldsymbol X^T \boldsymbol X
XTX 可逆阵,而实际使用中,仅仅可逆还不够,如果
X
T
X
\boldsymbol X^T \boldsymbol X
XTX可逆,但有接近于0的特征值,仍会使得数据集
X
\boldsymbol X
X一点点小的扰动就让
(
X
T
X
)
−
1
(\boldsymbol X^T \boldsymbol X)^{-1}
(XTX)−1 的值变化很大,为了解决这个问题,有人提出了岭回归,给
X
T
X
\boldsymbol X^T \boldsymbol X
XTX的对角线元素都加上一个常数
α
\alpha
α,使得
X
T
X
+
α
I
\boldsymbol X^T \boldsymbol X + \alpha \boldsymbol I
XTX+αI 求逆稳定:
w
=
(
X
T
X
+
α
I
)
−
1
X
y
\boldsymbol w = (\boldsymbol X^T \boldsymbol X + \alpha \boldsymbol I)^{-1} \boldsymbol X \boldsymbol y
w=(XTX+αI)−1Xy
而上式恰好等价于给平方损失加上L2正则化:
L
(
w
)
=
1
2
∣
∣
y
−
X
T
w
∣
∣
2
+
1
2
α
∣
∣
w
∣
∣
2
L(\boldsymbol w) = \frac{1}{2} || \boldsymbol y - \boldsymbol X^T \boldsymbol w ||^2 + \frac{1}{2} \alpha ||\boldsymbol w||^2
L(w)=21∣∣y−XTw∣∣2+21α∣∣w∣∣2
那么我们就知道了L2正则化的第一个作用:L2正则化可以使得求解更稳定!
继续观察
w
=
(
X
T
X
+
α
I
)
−
1
X
y
\boldsymbol w = (\boldsymbol X^T \boldsymbol X + \alpha \boldsymbol I)^{-1} \boldsymbol X \boldsymbol y
w=(XTX+αI)−1Xy,它可以分解成:
w
=
(
X
T
X
+
α
I
)
−
1
X
T
X
⋅
w
^
=
(
Q
T
Γ
Q
+
α
Q
T
Q
)
−
1
Q
T
Γ
Q
⋅
w
^
=
(
Γ
Q
+
α
Q
)
−
1
Γ
Q
⋅
w
^
=
Q
−
1
(
Γ
+
α
I
)
−
1
Γ
Q
⋅
w
^
=
Q
T
(
Γ
+
α
I
)
−
1
Γ
Q
⋅
w
^
\begin{aligned} \boldsymbol w &= (\boldsymbol X^T \boldsymbol X + \alpha \boldsymbol I)^{-1} \boldsymbol X^T \boldsymbol X \cdot \hat{\boldsymbol w}\\ &= (\boldsymbol Q^T \Gamma \boldsymbol Q + \alpha \boldsymbol Q^T \boldsymbol Q) ^{-1} \boldsymbol Q^T \Gamma \boldsymbol Q \cdot \hat{\boldsymbol w}\\ &= (\Gamma \boldsymbol Q+ \alpha \boldsymbol Q) ^{-1} \Gamma \boldsymbol Q \cdot \hat{\boldsymbol w}\\ &= \boldsymbol Q^{-1} (\Gamma + \alpha \boldsymbol I)^{-1} \Gamma \boldsymbol Q \cdot \hat{\boldsymbol w}\\ &= \boldsymbol Q^T (\Gamma + \alpha \boldsymbol I)^{-1} \Gamma \boldsymbol Q \cdot \hat{\boldsymbol w} \end{aligned}
w=(XTX+αI)−1XTX⋅w^=(QTΓQ+αQTQ)−1QTΓQ⋅w^=(ΓQ+αQ)−1ΓQ⋅w^=Q−1(Γ+αI)−1ΓQ⋅w^=QT(Γ+αI)−1ΓQ⋅w^
其中
w
^
=
(
X
T
X
)
−
1
X
y
\hat{\boldsymbol w} = (\boldsymbol X^T \boldsymbol X)^{-1} \boldsymbol X \boldsymbol y
w^=(XTX)−1Xy 是原始没有加L2正则化时的解。
假如
λ
i
\lambda_i
λi是
X
T
X
=
Q
T
Γ
Q
\boldsymbol X^T \boldsymbol X = \boldsymbol Q^T \Gamma \boldsymbol Q
XTX=QTΓQ的特征值,那么
λ
i
λ
i
+
α
\frac{\lambda_i}{\lambda_i + \alpha}
λi+αλi就是
Q
T
(
Γ
+
α
I
)
−
1
Γ
Q
\boldsymbol Q^T (\Gamma + \alpha \boldsymbol I)^{-1} \Gamma \boldsymbol Q
QT(Γ+αI)−1ΓQ的特征值。
⇒
(
Q
w
)
i
=
λ
i
λ
i
+
α
(
Q
w
^
)
i
\Rightarrow (\boldsymbol Q \boldsymbol w)_i = \frac{\lambda_i}{\lambda_i + \alpha} (\boldsymbol Q \hat{\boldsymbol w})_i
⇒(Qw)i=λi+αλi(Qw^)i
也就是说:在变换 Q \boldsymbol Q Q 下, w i \boldsymbol w_i wi 相对于 w i ^ \hat{\boldsymbol w_i} wi^都变小了,而且变小的强度跟 λ i \lambda_i λi成反比。
由于这里 L ( w ^ ) ∂ 2 w ^ = X T X \frac{L(\hat{\boldsymbol w})}{\partial^2 \hat{\boldsymbol w}} = \boldsymbol X^T \boldsymbol X ∂2w^L(w^)=XTX,因此 X T X \boldsymbol X^T \boldsymbol X XTX 是损失函数 L ( w ) L(\boldsymbol w) L(w) 的海森阵,反映的是损失函数 L ( w ^ ) L(\hat{\boldsymbol w}) L(w^) 的凸性, λ i \lambda_i λi 越大,表示凸性越强。再结合上面的结果,我们可以得到L2正则化的第二个作用:
-
在正交变换 Q \boldsymbol Q Q 下,削减 w ^ \hat{\boldsymbol w} w^ 各方向上的权值,削减比例由损失函数 L ( w ^ ) L(\hat{\boldsymbol w}) L(w^) 在这个方向的凸性决定:
-
凸性越强, λ i \lambda_i λi越大,说明这个方向上 w ^ \hat{\boldsymbol w} w^的变化对 L ( w ^ ) L(\hat{\boldsymbol w}) L(w^)影响大, 那么这个方向上对 w ^ \hat{\boldsymbol w} w^ 的削减就小
-
反之凸性越弱, λ i \lambda_i λi越小,说明这个方向上 w ^ \hat{\boldsymbol w} w^的变化对 L ( w ^ ) L(\hat{\boldsymbol w}) L(w^)影响小, 那么这个方向上对 w ^ \hat{\boldsymbol w} w^ 的削减就大
#########################################################################
机器学习中评价指标
精确率和召回率
对于分类模型,假如有 C C C 个类别,那么对于任意类别 c c c,有:
- 真正例(TP):样本真实类别为
c
c
c,并且模型也预测为
c
c
c 的数量:
T P c = ∑ i = 1 n I ( y i = y i ^ = c ) TP_c = \sum_{i=1}^n \boldsymbol I(y_i = \hat{y_i} = c) TPc=i=1∑nI(yi=yi^=c) - 假负例(FN):样本真实类别为
c
c
c,但是模型将它预测为其他类别的数量:
F N c = ∑ i = 1 n I ( y i = c ∩ y i ^ ≠ c ) FN_c = \sum_{i=1}^n \boldsymbol I(y_i = c \cap \hat{y_i} \neq c) FNc=i=1∑nI(yi=c∩yi^=c) - 假正例(FP):样本真实类别为其他类别,但是模型将它预测为
c
c
c 的数量:
F P c = ∑ i = 1 n I ( y i ≠ c ∩ y i ^ = c ) FP_c = \sum_{i=1}^n \boldsymbol I(y_i \neq c \cap \hat{y_i} = c) FPc=i=1∑nI(yi=c∩yi^=c) - 真负例(TN):样本真实类别为其他类别,并且模型也将它预测为其他类别的数量,对类别 c c c 来说,这种情况一般不需要关注。
精确率,也叫查准率,类别
c
c
c 的查准率是所有预测为类别
c
c
c 的样本中预测正确的比例:
P
c
=
T
P
c
T
P
c
+
F
P
c
\mathcal{P_c} = \frac{TP_c}{TP_c+FP_c}
Pc=TPc+FPcTPc
召回率,也叫查全率,类别
c
c
c 的查全率是所有真实标签为类别
c
c
c 的样本中预测正确的比例:
R
c
=
T
P
c
T
P
c
+
F
N
c
\mathcal{R_c} = \frac{TP_c}{TP_c+FN_c}
Rc=TPc+FNcTPc
F1 score,是一个综合指标,为精确率和召回率的调和平均:
F
c
=
2
∗
P
c
R
c
P
c
+
R
c
\mathcal{F_c} = \frac{2*\mathcal{P_c}\mathcal{R_c}}{\mathcal{P_c}+\mathcal{R_c}}
Fc=Pc+Rc2∗PcRc
计算分类算法在所有类别上的总体精确率,召回率和F1 score:
P
=
1
C
∑
c
=
1
C
P
c
R
=
1
C
∑
c
=
1
C
R
c
F
=
2
∗
P
R
P
+
R
\begin{aligned} \mathcal{P} &= \frac{1}{C}\sum_{c=1}^C \mathcal{P_c}\\ \mathcal{R} &= \frac{1}{C}\sum_{c=1}^C \mathcal{R_c}\\ \mathcal{F} &= \frac{2*\mathcal{P}\mathcal{R}}{\mathcal{P}+\mathcal{R}} \end{aligned}
PRF=C1c=1∑CPc=C1c=1∑CRc=P+R2∗PR
交叉验证
交叉验证(Cross-Validation)是一种比较好的衡量机器学习模型的统计分析方法,可以有效避免划分训练集和测试集时的随机性对评价结果造成的影响.我们可以把原始数据集平均分为 K K K 组不重复的子集,每次选 K − 1 K-1 K−1 组子集作为训练集,剩下的一组子集作为验证集.这样可以进行 K K K 次试验并得到 K K K 个模型,将这 K K K 个模型在各自验证集上的错误率的平均作为分类器的评价.
Reference: