《深度学习》 第5章 机器学习基础
深度学习是机器学习的一个特定分支。机器学习本质上属于应用统计学,更多地关注于如何用计算机统计地估计复杂函数,不太关注为这些函数提供置信区间。
学习算法
对于某类任务 T T T和性能度量 P P P,一个计算机程序被认为可以从经验 E E E中学习是指,通过经验 E E E改进后,它在任务 T T T上有性能度量 P P P衡量的性能有所提升
任务 T T T
任务定义为机器学习系统如何处理样本。
常见任务:
- 分类
- 输入缺失分类
- 回归
- 转录
- 机器翻译
- 结构化输出
- 异常检测
- 合成和采样
- 缺失值填补
- 去噪
- 密度估计
性能度量 P P P
使用测试集数据来评估系统性能
经验 E E E
无监督学习涉及到观察随机变量 x x x的好几个样本,试图显式或隐式地学习出概率分布 p ( x ) p(x) p(x),或者其他性质
监督学习包含观察随机向量 x x x及其关联的值或向量 y y y,然后从 x x x预测 y y y,通常是估计 p ( y ∣ x ) p(y|x) p(y∣x)
传统地,人们将回归、分类或者结构化输出问题称为监督学习。支持其他任务的密度估计通常称为无监督学习
强化学习会和环境交互,所以学习系统和训练过程会有反馈回路
示例:线性回归
定义任务 T T T:通过输出 y ^ = w ⊤ x \hat y=w^\top x y^=w⊤x从 x x x预测 y y y。
性能度量
P
P
P:使用均方误差:
MSE
=
1
m
∑
i
(
y
^
−
y
)
i
2
=
1
m
∣
∣
y
^
−
y
∣
∣
2
2
\text{MSE} = \frac 1m\sum_i(\hat y - y)_i^2 = \frac 1m ||\hat y - y||^2_2
MSE=m1i∑(y^−y)i2=m1∣∣y^−y∣∣22
最小化
MSE
\text{MSE}
MSE:
∇
w
MSE
=
0
\nabla_w \text{MSE} = 0
∇wMSE=0
⇒
w
=
(
X
⊤
X
)
−
1
X
⊤
y
→
正规方程
\Rightarrow w = (X^\top X)^{-1}X^\top y \rightarrow \text{正规方程}
⇒w=(X⊤X)−1X⊤y→正规方程
容量、过拟合和欠拟合
模型的容量是指其拟合各种函数的能力。
选择假设空间可以控制训练算法的容量
如:
y
^
=
b
+
∑
i
=
1
9
w
i
x
i
\hat y = b + \sum_{i=1}^9 w_i x^i
y^=b+i=1∑9wixi
尽管该模型是输入的多次函数,但输出仍是参数的线性函数,因此仍可以用正规方程得到闭解。
统计学习理论中最重要的结论阐述了训练误差和泛化误差之间的差异的上界随着模型容量增加而增加,但随着训练样本增加而下降。
泛化误差通常是一个关于模型容量的U形曲线函数
非参数模型的一个示例是最近邻回归:
y
^
=
y
i
,
i
=
arg
min
∣
∣
X
i
,
:
−
x
∣
∣
2
2
\hat y = y_i,i = \arg \min ||X_{i,:} - x||_2^2
y^=yi,i=argmin∣∣Xi,:−x∣∣22
贝叶斯误差:从预先知道的真实分布 p ( x , y ) p(x,y) p(x,y)预测而出现的误差
没有免费午餐定理
在所有可能的数据生成分布上平均之后,每一个分类算法在未事先观测的点上都有相同的错误率。即,没有一个机器学习算法总比其他的要好。
正则化
算法的效果不仅很大程度上受影响于假设空间的函数数量,也取决于这些函数的具体形式。
正则化一个学习函数 f ( x ; θ ) f(x;\theta) f(x;θ)的模型,可以给代价函数添加被称为正则化项的惩罚。表示对函数的偏好是比增减假设空间的成员函数更一般的控制模型容量的方法。
正则化是指我们修改学习算法,使其降低泛化误差而非训练误差。其是机器学习领域的中心问题之一,只有优化能够与其重要性相媲。
超参数和验证集
交叉验证
k k k-折交叉验证
估计、偏差和方差
点估计
点估计试图为一些感兴趣的量提供单个“最优”预测
采取概率派在统计上的观点,假设真实参数 θ \theta θ是固定但未知的,点估计 θ ^ \hat \theta θ^是数据的函数,其也是随机变量。
函数估计 f ^ \hat f f^是函数空间中的一个点估计
偏差
估计的偏差为:
bias
(
θ
^
m
)
=
E
(
θ
^
m
)
−
θ
\text{bias}(\hat \theta_m) = \mathbb E(\hat \theta_m) - \theta
bias(θ^m)=E(θ^m)−θ
如果 bias ( θ ^ m ) = 0 \text{bias}(\hat \theta_m) = 0 bias(θ^m)=0,那么 θ ^ m \hat \theta _m θ^m被称为无偏
样本均值 μ ^ m = 1 / m ∑ i = 1 m x ( i ) \hat \mu_m = 1/m \sum_{i=1}^m x^{(i)} μ^m=1/m∑i=1mx(i)一般为均值的无偏估计
样本方差 σ ^ m 2 = 1 / m ∑ i = 1 m ( x ( i ) − μ ^ m ) 2 \hat \sigma_m^2 = 1/m \sum_{i=1}^m(x^{(i)} - \hat \mu_m)^2 σ^m2=1/m∑i=1m(x(i)−μ^m)2是有偏估计,因为 E [ σ ^ m 2 ] = ( ( m − 1 ) / m ) σ 2 \mathbb E[\hat \sigma_m^2] = ({(m-1)}/{m})\sigma^2 E[σ^m2]=((m−1)/m)σ2,所以 bias ( σ ^ m 2 ) = E [ σ ^ m 2 ] − σ 2 = − σ 2 / m \text{bias}(\hat \sigma_m^2) = \mathbb E [\hat \sigma_m^2] - \sigma^2=-\sigma^2/m bias(σ^m2)=E[σ^m2]−σ2=−σ2/m
无偏样本方差
σ
~
m
2
=
1
/
(
m
−
1
)
∑
i
=
1
m
(
x
(
i
)
−
μ
^
m
)
2
\tilde \sigma_m^2 = 1/{(m-1)}\sum_{i=1}^m(x^{(i)}-\hat \mu_m)^2
σ~m2=1/(m−1)∑i=1m(x(i)−μ^m)2是无偏估计,因为
E
[
σ
~
m
2
]
=
E
[
1
m
−
1
∑
i
=
1
m
(
x
(
i
)
−
μ
^
m
)
2
]
=
m
m
−
1
E
[
σ
^
m
2
]
=
m
m
−
1
(
m
−
1
m
σ
2
)
=
σ
2
\mathbb E[\tilde \sigma_m^2] = \mathbb E\left[\frac {1}{m-1}\sum_{i=1}^m(x^{(i)} - \hat \mu_m)^2 \right] = \frac{m}{m-1} \mathbb E [\hat \sigma_m^2]= \frac{m}{m-1} \left(\frac{m-1}{m} \sigma^2 \right) = \sigma^2
E[σ~m2]=E[m−11i=1∑m(x(i)−μ^m)2]=m−1mE[σ^m2]=m−1m(mm−1σ2)=σ2
方差和标准差
均值的标准差为:
SE
(
μ
^
m
)
=
Var
[
1
m
∑
i
=
1
m
x
(
i
)
]
=
σ
m
\text{SE}(\hat \mu_m) = \sqrt{\text{Var}\left[\frac 1m \sum_{i=1}^m x^{(i)} \right]} = \frac{\sigma}{\sqrt m}
SE(μ^m)=Var[m1i=1∑mx(i)]=mσ
样本方差的平方根和方差无偏估计的平方根都不是标准差的无偏估计。
权衡偏差和方差以最小化均方误差
偏差和方差度量着估计量的两个不同误差来源。偏差度量这偏离真实函数或参数的误差期望。而方差度量着数据上任意特定采样可能导致的估计期望的偏差
判断这种权衡最常用的方法是交叉验证。
均方误差估计包含了偏差和方差:
MSE
=
E
[
(
θ
^
m
−
θ
)
2
]
=
Bias
(
θ
^
m
)
2
+
Var
(
θ
^
m
)
\text{MSE} = \mathbb E[(\hat \theta_m - \theta)^2] = \text{Bias}(\hat \theta_m)^2 + \text{Var}(\hat \theta_m)
MSE=E[(θ^m−θ)2]=Bias(θ^m)2+Var(θ^m)
一致性
plim m → ∞ θ ^ m = θ \text{plim}_{m\to\infty}\hat \theta_m = \theta plimm→∞θ^m=θ
一致性保证了估计量的偏差会随数据样本数目的增加而减少。然而,反过来不正确——渐进无偏并不意味着一致性
最大似然估计
θ
ML
=
arg
max
θ
p
model
(
X
;
θ
)
\theta_{\text{ML}} = \underset{\theta}{\arg\max}p_{\text{model}}(\mathbb X;\theta)
θML=θargmaxpmodel(X;θ)
=
arg
max
θ
∏
i
=
1
m
p
model
(
x
(
i
)
;
θ
)
= \underset{\theta}{\arg\max}\prod_{i=1}^mp_{\text{model}}(x^{(i)};\theta)
=θargmaxi=1∏mpmodel(x(i);θ)
⇒
arg
max
θ
∑
i
=
1
m
log
p
model
(
x
(
i
)
;
θ
)
\Rightarrow \underset{\theta}{\arg\max}\sum_{i=1}^{m}\log p_{\text{model}}(x^{(i)};\theta)
⇒θargmaxi=1∑mlogpmodel(x(i);θ)
=
arg
max
θ
E
x
∼
p
^
data
log
p
model
(
x
;
θ
)
= \underset{\theta}{\arg\max} \mathbb E_{\text x \sim \hat p_{\text{data}}}\log p_{\text{model}}(x;\theta)
=θargmaxEx∼p^datalogpmodel(x;θ)
一种解释最大似然估计的观点是将它看作最小化训练集上的经验分布 p ^ data \hat p_{\text{data}} p^data和模型分布之间的差异,其通过KL散度度量。最小化KL散度:
D KL ( p ^ data ∣ ∣ p model ) = E x ∼ p ^ data [ log p ^ data ( x ) − log p model ( x ) ] D_{\text{KL}}(\hat p_{\text{data}}||p_{\text{model}} )= \mathbb E_{\text{x} \sim \hat p _{\text{data}}}[\log \hat p_{\text{data}}(x) - \log p_{\text{model}}(x)] DKL(p^data∣∣pmodel)=Ex∼p^data[logp^data(x)−logpmodel(x)]
只需要最小化 − E x ∼ p ^ data [ log p model ( x ) ] - \mathbb{E}_{\text{x} \sim \hat p_{\text{data}}}[\log p_{\text{model}}(x)] −Ex∼p^data[logpmodel(x)],这与之前的最大化相同的。
最小化KL散度其实是在最小化分布之间的交叉熵。任何一个由负对数似然组成的损失都是定义在训练集上的经验分布和定义在模型上的概率分布之间的交叉熵。例如,均方误差是经验分布和高斯模型之间的交叉熵。
一文搞懂交叉熵在机器学习中的使用,透彻理解交叉熵背后的直觉(一点疑虑,单分类时,为什么不是 l o s s = − ∑ i = 1 n p ( y i ) log ( y ^ i ) = − ∑ i = 1 n ∑ j = 1 m y j i m log ( y ^ i ) loss=-\sum_{i=1}^n p(y_i) \log(\hat y_i)=-\sum_{i=1}^n \frac{\sum_{j=1}^my_{ji}}{m}\log(\hat y _i) loss=−∑i=1np(yi)log(y^i)=−∑i=1nm∑j=1myjilog(y^i))(ps:我之前把最大似然估计(与概率分布有关,不涉及标签)和条件概率联系在一块了,失策失策)
条件对数似然估计和均方误差
θ ML = arg max θ P ( Y ∣ X ; θ ) = i . i . d . arg max θ ∑ i = 1 m log P ( y ( i ) ∣ x ( i ) ; θ ) \theta_{\text{ML}}=\underset{\theta}{\arg\max}P(Y|X;\theta) \overset{i.i.d.}{=} \underset{\theta}{\arg\max}\sum_{i=1}^m \log P(y^{(i)}|x^{(i)};\theta) θML=θargmaxP(Y∣X;θ)=i.i.d.θargmaxi=1∑mlogP(y(i)∣x(i);θ)
示例:线性回归作为最大似然以最大似然。以最大似然估计的角度重新审视线性回归。我们现在希望模型能够得到条件概率
p
(
y
∣
x
)
p(y|x)
p(y∣x),而不只是得到一个单独的预测
y
^
\hat y
y^。想象有一个无限大的训练集,我们可能会观测到几个训练样本有相同的输入
x
x
x但是不同的
y
y
y。现在学习算法的目标是拟合分布
p
(
y
∣
x
)
p(y|x)
p(y∣x)到和
x
x
x相匹配的不同的
y
y
y。为了得到我们之前推导出的相同的线性回归算法,我们定义
p
(
y
∣
x
)
=
N
(
y
;
y
^
(
x
;
w
)
,
σ
2
)
p (y|x) = \mathcal{N} (y;\hat y(x;w), \sigma^2 )
p(y∣x)=N(y;y^(x;w),σ2) 。函数
y
^
(
x
;
w
)
\hat y(x; w)
y^(x;w)预测高斯的均值。我们假设方差是用户固定的某个常量
σ
2
\sigma^2
σ2。这种函数形式
p
(
y
∣
x
)
p(y | x)
p(y∣x)会使得最大似然估计得出和之前相同的学习算法。由于假设样本是独立同分布的,条件对数似然如下:
∑
i
=
1
m
log
p
(
y
(
i
)
∣
x
(
i
)
;
θ
)
=
−
m
log
θ
−
m
2
log
(
2
π
)
−
∑
i
=
1
m
∣
∣
y
^
(
i
)
−
y
(
i
)
∣
∣
2
2
σ
2
\sum_{i=1}^m \log p(y^{(i)}|x^{(i)};\theta) = -m\log \theta - \frac m2 \log(2\pi) - \sum_{i=1}{m} \frac{||\hat y ^{(i)} - y^{(i)}||^2}{2\sigma^2}
i=1∑mlogp(y(i)∣x(i);θ)=−mlogθ−2mlog(2π)−i=1∑m2σ2∣∣y^(i)−y(i)∣∣2
立刻可以看出最大化关于
w
w
w的对数似然和最小化均方误差会得到相同的参数估计
w
w
w。但是对于相同的最优
w
w
w,这两个准则有着不同的值。这验证了MSE可以用于最大似然估计。
最大似然的性质
当样本数目 m → ∞ m \to \infty m→∞时,就收敛率而言是最好的渐近估计。
贝叶斯统计
频率派的视角是真实参数 θ \theta θ是未知的定值,而点估计 θ ^ \hat \theta θ^是考虑数据集上函数(可以看作是随机的)的随机变量。
贝叶斯用概率反映知识状态的确定性程度。数据集能够被直接观测到,因此不是随机的。另一方面,真实参数 θ θ θ是未知或不确定的,因此可以表示成随机变量。
频率学派和贝叶斯学派最大的差别其实产生于对参数空间的认知上。所谓参数空间,就是你关心的那个参数可能的取值范围。频率学派(其实就是当年的Fisher)并不关心参数空间的所有细节,他们相信数据都是在这个空间里的”某个“参数值下产生的(虽然你不知道那个值是啥),所以他们的方法论一开始就是从“哪个值最有可能是真实值”这个角度出发的。于是就有了最大似然(maximum likelihood)以及置信区间(confidence interval)这样的东西,你从名字就可以看出来他们关心的就是我有多大把握去圈出那个唯一的真实参数。而贝叶斯学派恰恰相反,他们关心参数空间里的每一个值,因为他们觉得我们又没有上帝视角,怎么可能知道哪个值是真的呢?所以参数空间里的每个值都有可能是真实模型使用的值,区别只是概率不同而已。于是他们才会引入先验分布(prior distribution)和后验分布(posterior distribution)这样的概念来设法找出参数空间上的每个值的概率。最好诠释这种差别的例子就是想象如果你的后验分布是双峰的,频率学派的方法会去选这两个峰当中较高的那一个对应的值作为他们的最好猜测,而贝叶斯学派则会同时报告这两个值,并给出对应的概率。
frequentist statistics: 模型参数是未知的定值,观测是随机变量;思想是观测数量趋近于无穷大+真实分布属于模型族中—>参数的点估计趋近真实值;代表是极大似然估计MLE;不依赖先验。
Bayesian statistics: 模型参数是随机变量,观测是定值;思想是高熵先验+观测数据—>低熵后验;代表是最大后验概率估计MAPE;依赖先验概率。
相对于最大似然估计,贝叶斯估计有两个重要区别。第一,不像最大似然方法预测时使用 θ \theta θ的点估计,贝叶斯方法使用 θ \theta θ的全分布。
频率派方法解决给定点估计 θ \theta θ的不确定性的方法是评估方差,估计的方差评估了观测数据重新从观测数据中采样后,估计可能如何变化。对于如何处理估计不确定性的这个问题,贝叶斯派的答案是积分,这往往会防止过拟合。
贝叶斯方法和最大似然方法的第二个最大区别是由贝叶斯先验分布造成的。先验通常表现为偏好更简单或更光滑的模型。
示例:贝叶斯线性回归
p
(
w
∣
X
,
y
)
∝
p
(
y
∣
X
,
w
)
p
(
w
)
∝
exp
(
−
1
2
(
y
−
X
w
)
⊤
(
y
−
X
w
)
)
exp
(
−
1
2
(
w
−
μ
0
)
⊤
Λ
0
−
1
(
w
−
μ
0
)
)
∝
exp
(
−
1
2
(
w
−
μ
m
)
⊤
Λ
m
−
1
(
w
−
μ
m
)
)
p(w|X,y)\\ \propto p(y|X,w)p(w)\\ \propto \exp \left( - \frac{1}{2} (y-Xw)^{\top} (y-Xw) \right) \exp \left(- \frac{1}{2} (w-\mu_0)^{\top}\Lambda_0^{-1}(w-\mu_0)\right) \\ \propto \exp\left(- \frac 12(w-\mu_m)^\top \Lambda_m^{-1}(w-\mu_m)\right)
p(w∣X,y)∝p(y∣X,w)p(w)∝exp(−21(y−Xw)⊤(y−Xw))exp(−21(w−μ0)⊤Λ0−1(w−μ0))∝exp(−21(w−μm)⊤Λm−1(w−μm))
最大后验(MAP)估计
让先验影响点估计的选择来利用贝叶斯方法的优点。
θ
MAP
=
arg
max
θ
p
(
θ
∣
x
)
=
arg
max
θ
log
p
(
x
∣
θ
)
+
log
p
(
θ
)
\theta_{\text{MAP}} = \underset {\theta}{\arg\max}p(\theta|x) = \underset{\theta}{\arg\max} \text{log} p(x|\theta)+\text{log}p(\theta)
θMAP=θargmaxp(θ∣x)=θargmaxlogp(x∣θ)+logp(θ)
考虑具有高斯先验权重
w
w
w的线性回归模型。如果先验是
N
(
w
;
0
,
1
λ
I
2
)
\mathcal N(w;0,\frac {1}{\lambda} I^2)
N(w;0,λ1I2), 那么上式的对数先验项正比于熟悉的权重衰减惩罚
λ
w
⊤
w
\lambda w\top w
λw⊤w,加上一个不依赖
w
w
w也不会影响学习过程的项。因此,具有高斯先验权重的MAP贝叶斯推断对应着权
重衰减。
最大似然估计是求参数 θ \theta θ, 使似然函数 p ( x ∣ θ ) p(x|\theta) p(x∣θ)最大。最大后验概率估计则是想求 θ \theta θ使 p ( x ∣ θ ) p ( θ ) p(x|\theta)p(\theta) p(x∣θ)p(θ)最大。求得的 θ \theta θ不单单让似然函数大, θ \theta θ自己出现的先验概率也得大。(这有点像正则化里加惩罚项的思想,不过正则化里是利用加法,而MAP里是利用乘法)
详解最大似然估计(MLE)、最大后验概率估计(MAP),以及贝叶斯公式的理解
监督学习算法
概率监督学习
大部分监督学习算法基于估计概率分布
p
(
y
∣
x
)
p(y|x)
p(y∣x),线性回归对应于分布族:
p
(
y
∣
x
;
θ
)
=
(
y
;
θ
⊤
x
;
I
)
p(y|x;\theta) = \mathcal(y;\theta^\top x;I)
p(y∣x;θ)=(y;θ⊤x;I)
逻辑回归:
p
(
y
=
1
∣
x
;
θ
)
=
σ
(
θ
⊤
x
)
p(y=1|x;\theta) = \sigma(\theta^\top x)
p(y=1∣x;θ)=σ(θ⊤x)
其实际上是在使用线性回归模型的预测结果于逼近真实标记的对数几率,视
y
y
y为样本
x
x
x为正例的可能性,上式可改写为(来自《机器学习》周志华版的3.3对数几率回归):
ln
y
1
−
y
=
w
⊤
x
+
b
\ln{\frac{y}{1-y}} = w^\top x+b
ln1−yy=w⊤x+b
支持向量机
核技巧观察到许多机器学习算法都可以写成样本间点积的形式。点积替换为被称为核函数(kernel function)的函数 k ( x , x ( i ) ) = ϕ ( x ) ⋅ ϕ ( x ( i ) ) k(x ,x^{(i)}) = \phi(x) \cdot \phi(x^{(i)}) k(x,x(i))=ϕ(x)⋅ϕ(x(i))
核技巧十分强大有两个原因。首先,它使我们能够使用保证有效收敛的凸优化技术来学习非线性模型(关于 x x x的函数)。这是可能的,因为我们可以认为 ϕ \phi ϕ是固定的,优化算法可以将决策函数视为不同空间中的线性函数。其二,核函数 k k k的实现方法通常有比直接构建 ϕ ( x ) \phi(x) ϕ(x)再算点积高效很多。
其他简单的监督学习算法
- 最近邻回归
- 决策树
无监督学习算法
无监督算法只处理 “特征”,不操作监督信号。
一个经典的无监督学习任务是找到数据的“最佳”表示。最常见的三种包括低维表示、稀疏表示和独立表示。低维表示尝试将 x x x中的信息尽可能压缩在一个较小的表示中。稀疏表示将数据集嵌入到输入项大多数为零的表示中。独立表示试图分开数据分布中变化的来源,使得表示的维度是统计独立的。
主成分分析
PCA中通过寻找输入空间的一个旋转(由 W W W确定),使得方差的主坐标和 z z z相关的新表示空间的基对齐。
k k k-均值聚类
k k k-均值聚类算法将训练集分成 k k k个靠近彼此的不同样本聚类。可以认为提供了 k k k-维的one-hot编码向量 h h h以表示输入 x x x。
随机梯度下降
随机梯度下降的核心是,梯度是期望。期望可使用小规模的样本近似估计。
构建机器学习算法
几乎所有的深度学习算法都可以被描述为一个相当简单的配方:特定的数据集、代价函数、优化过程和模型。
促使深度学习发展的挑战
维度灾难
局部不变性和平滑正则化
只要我们通过额外假设生成数据的分布来建立区域间的依赖关系,那么 O ( k ) O(k) O(k)个样本足以描述多如 O ( 2 k ) O(2^k) O(2k)的大量区间。
深度学习的核心思想是假设数据由因素或特征组合产生,这些因素或特征可能来自一个层次结构的多个层级。许多其他类似的通用假设进一步提高了深度学习算法。这些很温和的假设允许了样本数目和可区分区间数目之间的指数增益。
流形学习
流形(manifold)指连接在一起的区域。我们将地球视为二维平面,但实际上它是三维空间中的球状流形。
流形学习(manifold learning)算法认为 R n \mathbb R^n Rn中大部分区域都是无效的输入,有意义的输入只分布在包含少量数据点的子集构成的一组流形中,而学习函数的输出中,有意义的变化都沿着流形的方向或仅发生在我们切换到另一流形时。
第一个支持流形假设(manifold hypothesis)的观察是现实生活中的图像、文本、声音的概率分布都是高度集中的。我们遇到的样本和其他样本相互连接,每个样本被其他高度相似的样本包围,而这些高度相似的样本可以通过变换来遍历该流形得到。支持流形假设的第二个论点是,我们至少能够非正式地想象这些邻域和变换。