本文内容的原文是Andrew Ng教授2018年秋在斯坦福大学教授的机器学习课程的第一讲内容。为了帮助英语不好的同学,这里对原讲义做了翻译。鉴于本人水平有限,难免有误,希望各位网友批评指正。
监督学习
我们先从监督学习的一些例子开始讨论。假设有一个数据集,它给出了俄勒冈州的波特兰地区的47套房子的居住面积与价格:
居住面积(英尺
2) |
价格(千美元) |
2104 |
400 |
1600 |
330 |
2400 |
369 |
1416 |
232 |
3000 |
540 |
…… |
…… |
我们可以将这些数据绘制出来:
基于以上的数据,我们如何学习一个函数,并通过居住面积的大小来预测Portland地区其他房子的价格呢?
为了后续使用符号的方便,我们使用
x(i) 表示输入 (本例中就是居住面积),或者叫做输入特征, 用
y(i)表示输出或我们想要预测的目标变量(价格)。一对
(x(i),y(i))就是一个训练样本。而我们将要使用的数据集—包含
m个训练样本的列表:
{(x(i),y(i));i=1,...,m},叫做训练集。注意符号中的上标“
(i)” 指的是样本在训练集中的索引, 与指数无关。我们也会使用
X表示输入值空间,
Y表示输出值空间。本例中为
R。
我们希望更加正式地描述监督学习问题:我们的目标是,给定一个训练集并从中学习一个函数
h:X→Y ,使得
h(x) 是对相应的
y值得一个比较好的预测。 基于历史原因, 这个函数被称为假设。 这个学习的过程可以通过下面的图像来说明:
当我们要预测的目标变量是连续的, 例如我们这里的房价案例, 我们就把这一类问题叫做回归问题。当
y只能取一些分立的值时 (例如给定居住面积我们想预测这是住房还是政府大楼), 我们称之为分类问题。
第一部分 线性回归
为了使得房价问题更有趣, 我们考虑一个数据量更加充裕的数据集。在这个
数据集中,我们还知道每一个房子的卧室数目:
居住面积 |
卧室数目 |
价格 |
2104 |
3 |
400 |
1600 |
3 |
330 |
2400 |
3 |
369 |
1416 |
2 |
232 |
3000 |
4 |
540 |
…… |
…… |
…… |
这里,
x是
R2中的二维向量。例如,
x1(i)表示第
i套房的居住面积,
x2(i)是第
i套房的卧室数目。(一般来说, 在设计学习问题时, 如何选取特征取决于你。因此如果你要收集波特兰的房价数据,,你也可以考虑收集其他特征, 例如是否有壁炉, 浴室的数目等等。我们稍后会进一步讨论特征选择, 但是现在我们先使用给出的特征。)
为了执行监督学习,我们必须决定如何在计算机中表示函数/假设h。作为
初始选择, 我们决定假设
y是
x的线性函数:
hθ(x)=θ0+θ1x1+θ2x2
这里,
θi是线性函数的参数,它将
X映射为
Y。在没有歧义的情况下,我们会省略掉
hθ(x)的下标
θ,简写为
h(x)。为了进一步简化符号,我们会令
x0=1(这是截距项)。因此有
h(x)=i=0∑nθixi=θTx
在等式右边,我们将
θ与
x视为向量,
n是输入变量的数目(不考虑
x0)。
现在,给定训练集, 我们如何选取或学习参数
θ?一个合理的方法是使得
h(x)接近
y, 至少对于训练集是这样。为了形式化问题, 对于每一个
θ,我们定义一个函数来衡量
h(x(i))和对应的
y(i)之间的误差。我们定义这样的代价函数:
J(θ)=21i=1∑m(hθ(x(i))−y(i))2
如果你之前学习过线性回归, 你可能会认为会认为这是你熟悉的最小平方代价函数,也就是最小二乘回归模型。无论你之前是否学习过,让我们继续学习,最终你会认识到这仅仅是算法家庭中的一个特殊例子。
1 LMS(Least Mean Square) 算法
我们希望选择
θ,从而最小化
J(θ)。为此, 我们使用一个搜索算法,它从对
θ
的初始猜测值开始, 然后反复改变
θ从而使
J(θ)不断减小, 直到收敛到一个
θ使得
J(θ)最小. 我们考虑gradient descent(梯度下降)算法,它从初始的
θ开始, 并重复执行以下更新:
θj:=θj−α∂θj∂J(θ)
注意:这一步骤是对所有的
j=0,1,2,…是同时执行的。其中
α称为学习率(learning rate),或学习速率。这是一个自然的算法,它反复地向着使
J下降最快的方向调整。
为了实现这个算法, 我们必须计算出右边的偏导数。我们先计算处在只有一个训练样本的前提下的偏导数,这样我们就忽略了
J外层的求和符号。我们有:
∂θj∂J(θ)=∂θj∂21(hθ(x)−y)2=2⋅21(hθ(x)−y)∂θj∂(hθ(x)−y)=(hθ(x)−y)xj
对于单一训练样本,更新规则如下:
θj:=θj+α(y(i)−hθ(x(i)))xj(i)
这个规则称为LMS更新规则 (LMS表示“least mean squares”),也被称为Widrow-Hoff更新规则. 这个规则有一些属性是非常直观与自然的。例如,更新的量级与误差项
(y(i)−hθ(x(i)))成正比。因此,如果一个训练样本的预测值与真实值
y(i)非常接近,说明几乎不需要再更新参数。 相反地, 如果预测值
hθ(x(i))与真实值还有很大的误差,说明还需要大幅度更新参数 (例如它距离
y(i)非常远)。
我们已经将LMS规则应用于单训练样本。目前有两种方式修改这个方法,使得它应用于多样本训练集。第一种是使用以下的方式:
Repeat until convergence{θj:=θj+αi=1∑m(y(i)−hθ(x(i)))xj(i), for every j}
读者可以轻易地验证,更新规则中和式中的量刚好是
∂J(θ)/∂θj(相对于初始的
J)。 因此, 这就是对于原始代价函数
J的简单梯度下降。 这个方法在每一步都是用了整个训练集中的每一个样本, 因此称之为批量梯度下降(batch gradient descent)。 注意, 虽然梯度下降有可能收敛到局部极小值, 但是我们遇到的线性回归问题只有一个全局最小值, 没有其他的局部极小值,因此梯度下降总是收敛到全局最小值(假定学习率不会太大)。事实上,
J是一个凸二次函数。下面是一个使用梯度下降求解二次函数最小值的例子。
这个椭圆是一个二次函数的轮廓。同时显示出了梯度下降的轨迹,它从
(48,30)点开始。图中的
x(加入了直线) 标记了梯度下降过程中经过的
θ。
当我们在之前的数据集上运行批量梯度下降来拟合θ时,我们学习房价关于居住面积的函数,得到
θ0=71.27,
θ1=0.1345。如果我们绘制出
hθ(x)与
x (area)的函数,以及训练数据的散点,我们得到下面的图像:
如果卧室数量也加入输入特征中,我们可以得到
θ0=89.60,
θ1=0.1392,
θ2=−8.738。
上面获取到的结果就是使用批量梯度下降。还有一种方法可以实现批量梯度下降,它也表现得非常好。考虑下面的算法:
Loop {
for i=1 to m, {
θj:=θj+α(y(i)−hθ(x(i)))xj(i) for every
j
}
}
在这个算法中,我们反复的在数据集上训练,每当我们遇到一个样本,我们仅仅使用这一个训练样本来更新参数。该算法称为随机梯度下降(stochastic gradient descent)(也叫做incremental gradient descent)。批量梯度下降在每一步都需要扫过整个数据集—这在m很大时非常耗时。而随机梯度下降可以在拿到一个样本后就立即计算,然后继续扫描下一个样本。一般来说,随机梯度下降获取θ的速度比批量梯度下降要快。 (但是要注意,它可能永远不会“收敛”到最低限度,参数θ将在最佳值附近震荡。但在实践中,接近最小值的大多数值都是接近真实最小值的合理的好近似。) 基于以上的原因,当训练集比较大时, 随机梯度下降一般优于批量梯度下降。
2 正规方程
梯度下降给出了一种最小化J的方法。我们来讨论第二种方式。这是一种显式计算方法,并不借助其他的算法。在这种方式中,我们通过显式计算
J对
θj 的导数,并令其为
0来最小化
J。为了使我们做到这些计算而不需要写大量的代数式以及矩阵的导数, 我们引入一些记号用于矩阵的微积分。
2.1 矩阵的导数
对于一个由
m×n的矩阵映射到
R的函数
f:Rm×n→R,我们定义
f对于矩阵
A的导数为:
∇Af(A)=⎣⎢⎡∂A11∂f⋮∂Am1∂f⋯⋱⋯∂A1n∂f⋮∂Amn∂f⎦⎥⎤
因此,梯度
∇Af(A)自身也是一个
m×n矩阵,它的
(i,j)元素是
∂f/∂Aij。例如,假设
A=[A11A21A12A22],它是一个
2×2的矩阵,函数
f:R2×2→R定义为
f(A)=23A11+5A122+A21A22
这里,
Aij代表矩阵
A的第
(i,j)元素。因此有
∇)Af(A)=[23A2210A12A21]
我们同时引入trace操作符(迹),写作
"tr"。对于一个
n×n方阵
A,它的迹定义为它的主对角线元素的和:
tr A=i=1∑nAii
如果
a是一个实数,即一个
1×1矩阵,那么
tr a=a。(如果你之前没有看到过这种“操作记号”,你应该认为矩阵
A的迹为
tr (A),或者将“trace”函数作用于矩阵A。然而我们通常使用没有括号的记法。)
对于两个矩阵
A和
B的迹有这个性质:如果
AB是方阵, 我们有
tr AB=tr BA。 (你可以自己证明!) 因此有以下推论:
tr ABC=tr CAB=tr BCAtr ABCD=tr DABC=tr CDAB=tr BCDA
以下关于迹的性质也容易验证。这里,
A与
B是方阵,
a是一个实数:
tr Atr(A+B)tr aA=tr AT=tr A+tr B=atr A
下面我们不加证明地给出一些关于矩阵导数的结论(我们可能到最后一刻钟才会使用它们)。等式 (4) 只能用于非奇异方阵
A,
∣A∣表示
A的行列式。我们有:
∇Atr AB=BT(1)
∇ATf(A)=(∇Af(A))T(2)
∇Atr ABATC=CAB+CTABT(3)
∇A∣A∣=∣A∣(A−1)T(4)
为了使我们的矩阵表示法更加具体,现在让我们详细解释第一个方程的含义。 假设我们有一个常数矩阵
B∈Rn×m。我们定义一个函数
f:Rm×n→R ,解析式为KaTeX parse error: Expected 'EOF', got '\mbox' at position 8: f(A) = \̲m̲b̲o̲x̲{tr }AB。注意这个定义是有意义的,因为如果
A∈Rm×n, 那么
AB是一个方阵,而且我们可以应用迹操作到它上。因此,
f的确从
Rm×n映射到
R。我们也可以应用矩阵导数的定义来计算
∇Af(A), 它自身就是一个
m×n的矩阵。等式(1)表明导数矩阵的
(i,j)元素由
BT或者说是
Bji给定。
等式(1-3)的证明非常简单,可以作为练习留给读者。等式(4)可以通过逆矩阵的伴随表示推导出。
2.2 最小二乘回顾
掌握了矩阵求导的工具,让我们来寻找
θ的最佳值使得
J(θ)最小化。我们用矩阵向量记号重写
J。
给定训练集, 定义设计矩阵
X为
m×n矩阵(事实上,如果包含了截距项,那么应该是
m×(n+1)) ,它的每一行包含了一个训练样本的输入值:
X=⎣⎢⎢⎢⎡−(x(1))T−−(x(2))T−⋮−(x(m))T−⎦⎥⎥⎥⎤
同样地, 令
y
是
m维向量,包含所有训练集中的目标值:
y
=⎣⎢⎢⎢⎡y(1)y(2)⋮y(m)⎦⎥⎥⎥⎤
现在,既然有
hθ(x(i))=(x(i))Tθ,我们可以轻易验证:
Xθ−y
=⎣⎢⎡(x(1))Tθ⋮(x(m))Tθ⎦⎥⎤−⎣⎢⎡y(1)⋮y(m)⎦⎥⎤=⎣⎢⎡(x(1))Tθ−y(1)⋮(x(m))Tθ−y(m)⎦⎥⎤
因此,使用这个关于向量
z的等式:
zTz=∑izi2,我们有
21(Xθ−y
)T(Xθ−y)=21i=1∑m(hθ(x(i))−y(i))2=J(θ)
最终,为了最小化
J,我们求它关于
θ的导数。组合等式(2)与(3),我们有
∇ATtr ABATC=BTATCT+BATC(5)
因此有,
∇θJ(θ)=∇θ21(Xθ−y
)T(Xθ−y
)=21∇θ(θTXTXθ−θTXTy
−y
TXθ+y
Ty
)=21∇θtr (θTXTXθ−θTXTy
−y
TXθ+y
Ty
)=21(XTXθ+XTXθ−2XTy
)=XTXθ−y
在第三步中,我们使用实数的迹就是实数本身的事实。第四步使用
trA=trAT,第五步使用方程(5)和(1),其中
AT=θ,
B=BT=XTX,以及
C=I(单位阵)。为了最小化
J,令导数为0,就可以获得正规方程如下:
XTXθ=XTy
因此使得
J(θ)最小化的
θ可以通过以下方程求得:
θ=(XTX)−1XTy
3 概率解释
当面对回归问题时,为什么使用线性回归,以及为什么使用最小二乘代价函数
J是一个合理的选择?在这一节,我们给出一些概率假设,在这种假设下,最小二乘回归就是非常自然的算法。
我们假设目标变量和输入通过下面的方程关联:
y(i)=θTx(i)+ϵ(i)
其中,
ϵ(i)是一个误差项,它捕获了非模型效应(例如有些特征与预测房价非常相关,但是我们在回归中没有考虑),或者随机噪声。我们进一步假设
ϵ(i)是独立同分布的,并遵循高斯分布(即正态分布),它的均值为0,方差为
σ2。我们可以将这个假设写为“
ϵ(i)∼N(0,σ2)”。
ϵ(i)的概率密度如下:
p(ϵ(i))=2π
σ1exp(−2σ2(ϵ(i))2)
这表明
p(y(i)∣x(i);θ)=2π
σ1exp(−2σ2(y(i)−θTx(i))2)
记号“
p(y(i)∣x(i);θ)”表明这是
y(i)关于
x(i)和参数
θ的条件概率密度。注意,我们不能将
θ视为“
p(y(i)∣x(i);θ)”的条件,因为
θ不是随机变量。我们也可以 将上面关于
y(i)的分布写作
y(i)∣x(i);θ∼N(θTx(i),σ2)。
给定
X(设计矩阵,包含所有的
x(i))与
θ,
y(i)的分布是什么?这些数据的概率可以通过
p(y
∣X;θ)给出。对于每个固定的
θ,这个量被视为是
y
的函数(也许也是
X的)。当我们需要显式地将它作为
θ的函数是,我们将它称为似然(likelihood)函数。
L(θ)=L(θ;X,y
)=p(y
∣X;θ)
在
ϵ(i)的独立性假设条件下(因此
y(i),
x(i)也是独立的),因此又可以写作
L(θ)=i=1∏mp(y(i)∣x(i);θ)=i=1∏m2π
σ1exp(−2σ2(y(i)−θTx(i))2)
现在,给出了概率模型关于
y(i)与
x(i)的关系,那么怎样才能用合理的方式选择最佳的参数
θ?最大似然估计表明,我们应该选择使得数据的概率尽可能大。即,我们应该选择使得
L(θ)最大的
θ值。
我们用任何
L(θ)的严格递增函数代替原来的函数,便于求导。通车我们使用对数似然函数
l(θ):
l(θ)=logL(θ)=logi=1∏m2π
σ1exp(−2σ2(y(i)−θTx(i))2)=i=1∑mlog2π
σ1exp(−2σ2(y(i)−θTx(i))2)=mlog2π
σ1−σ21⋅21i=1∑m(y(i)−θTx(i))2
因此最大化
l(θ)与最小化下面的式子等价
21i=1∑m(y(i)−θTx(i))2
这就是我们的
J(θ),即原始的最小二乘代价函数。
总结:在先前对数据的概率假设下,最小二乘回归对应于找到
θ的最大似然估计。 因此,这是一组假设,在这些假设下,最小二乘回归可以证明是一种非常自然的方法,只是进行最大似然估计。 (但请注意,概率假设绝不是必要的,因为最小二乘法是一个完美的合理程序,并且可能 - 实际上还有其他自然假设也可以用来证明它。)
还要注意,在我们之前的讨论中,我们对
θ的最终选择并不依赖于
σ2。即使
σ2未知,我们确实得到了相同的结果。 当我们谈论指数族和广义线性模型时,我们将再次使用这一事实。
4 局部加权线性回归
考虑在
x∈R时预测
y的问题。左侧的图显示了在数据集上对y的拟合
y=θ0+θ1x。我们可以看到,数据并不严格贴近直线,因此这个拟合不是非常好。
相反,如果我们添加一个额外的特征
x2,并拟合函数
y=θ0+θ1x+θ2x2,那么我们就会得到一条相对较好的拟合(中间的图)。一般地,如果我们添加更多的特征,曲线拟合的效果就会更好。然而,在添加过多特征时也会有风险:右边的图是使用了5次多项式
y=∑j=05θjxj拟合的结果。我们可以看到,对于通过面积预测房价来说,尽管曲线完美地经过了每一个数据点,我们也不会认为这是一个很好的预测器。不加正式的定义,我们说左边的图像是欠拟合的实例——模型不能完美地捕获所有的结构;右边的图像是过拟合的图像。(之后的课堂上,我们会在学习理论上正式的提及这些概念,并仔细的定义一个模型是好还是坏)
结合之前的讨论与上面的例子,我们知道特征的选取对于确保学习算法的正确性非常重要。(当我们讨论模型选择时,我们也会看到自动选择特性的算法。)在本节中,我们简要讨论一下**局部加权线性回归(LWR)**算法。它假设我们有足够多的训练样本,这样使得特征选择不太重要。这种处理方式很简短,因为你们将有机会在作业中自己探索LWR算法的一些属性。
在原始线性回归算法中,为了在
x点处做出预测(即评估
h(x)),我们会:
- 拟合
θ使得
∑i(y(i)−θTx(i))2最小。
- 输出
θTx
对比来看,局部加权线性回归遵循以下步骤:
- 拟合
θ使得
∑iw(i)(y(i)−θTx(i))2最小。
- 输出
θTx
这里,
w(i)是非负的权值。直观来讲,对于某个特定的
i,如果
w(i)比较大,那么在选取
θ时,我们会尽可能使
(y(i)−θTx(i))2变小。如果
w(i)比较小,那么
(y(i)−θTx(i))2的误差项将会更加被忽略。
一个相对标准的权值选择是
w(i)=exp(−2τ2(x(i)−x)2)
请注意,权重取决于我们尝试评估的特定点
x。此外,如果
∣x(i)−x∣很小,那么
w(i)会接近1;如果
∣x(i)−x∣很大,那么
w(i)就会很小。因此,对于使得预测值更接近实际值的那些
θ,会拥有更大的权值。(还请注意,虽然权重公式的形式在外观上类似于高斯分布,但
w(i)与高斯分布没有直接关系,
w(i)也不是随机变量,无论是正态分布还是其他形式。)参数
τ控制
x(i)与
x的距离变化时权重下降的速度。
τ也叫做带宽参数,也是一个你需要在作业中实验的参数。
局部加权线性回归是我们看到的第一个非参数算法的例子。(无加权)线性回归算法是有参数算法,因为它有固定的、有限的参数(
θi)来拟合数据。一旦我们拟合完成,并存储了
θi,那么在预测新数据时,就不再需要持有训练集了。相反地,使用局部加权线性回归来做预测,我们需要一直持有数据集。词语“非参数”(大体上)指的是我们用于表示假设
h时所需要持有的元素数量随训练集大小线性变化。
第二部分 分类与逻辑回归
下面我们讨论分类问题。这与回归问题相似,除了我们要预测的
y的值只能取一些分立的数值。现在,我们关注二元分类(Binary Classification)问题。这样,
y只能取两个值:
0和
1(我们在这里所说的也能够延伸到多分类案例中)。例如,如果我们要建立一个垃圾邮件分类器,那么
x(i)就是一封邮件的一些特征。如果是垃圾邮件,则令
y=1。反之,
y=0。
0也被称为负类,
1为正类。有时也会用“+”与“-”来标记它们。给定
x(i),对应的
y(i)也叫做训练样本的标签(label)。
5 逻辑回归
我们首先可以忽略分类问题中
y是分立值的事实,然后沿用线性回归算法来预测给定
x时的
y。然而,容易得到,这种方法的性能非常差。直观地说,对于大于
1或小于
0的
hθ(x)是没有意义的,因为我们知道
y∈{0,1}。
为了解决这个问题,我们改变一下假设函数
hθ(x)的形式。我们选择
hθ(x)=g(θTx)=1+e−θTx1
其中
g(z)=1+e−z1
被称为逻辑函数(logstic function)或sigmoid function。如下是
g(z)的函数图像:
注意当
z→∞时
g(z)趋于
1,当
z→−∞时
g(z)趋于
0。另外,
g(z)与
h(x)总是介于
0和
1之间。与之前相同,我们令
x0=1,因此有
θTx=θ0+∑j=1nθjxj。
现在,让我们研究一下选出的
g。其他从
0平滑递增到
1的函数也可以使用,但是由于一些原因我们稍后再研究(当我们讨论GLM时,以及生成式学习算法时),对于逻辑函数的选择是自然的。逻辑函数的导数有一个有用的性质,我们记作
g′:
g′(z)=dzd1+e−z1=(1+e−z)21e−z=1+e−z1⋅(1−1+e−z1)=g(z)(1−g(z))
因此,给定逻辑回归模型,我们如何拟合
θ?按照我们通过最大似然估计推导最小二乘回归的方法,我们对分类模型也做一定的假设,然后通过最大似然估计拟合参数。
我们假设
P(y=1∣x;θ)P(y=0∣x;θ)=hθ(x)=1−hθ(x)
我们将两个等式合为一个,写作
p(y∣x;θ)=(hθ(x))y(1−hθ(x))1−y
假设
m个训练样本是独立的,我们就可以写下关于参数的最大似然估计为:
L(θ)=p(y
∣X;θ)=i=1∏mp(y(i)∣x(i);θ)=i=1∏m(hθ(x(i)))y(i)(1−hθ(x(i)))1−y(i)
计算对数似然估计为
l(θ)=logL(θ)=i=1∑my(i)logh(x(i))+(1−y(i))log(1−h(x(i)))
我们如何最大化似然函数?与在线性回归的例子中的导数类似,我们使用梯度下降。使用向量符号,更新的等式为:
θ:=θ+α∇θl(θ)。(注意更新公式中的正负号,我们这里是最大化,而不是最小化函数)。我们从单一训练样本
(x,y)开始,然后遵循随机梯度下降的方式进行求导:
∂θj∂l(θ)=(yg(θTx)1−(1−y)1−g(θTx)1)∂θj∂g(θTx)=(yg(θTx)1−(1−y)1−g(θTx)1)g(θTx)(1−g(θTx))∂θj∂θTx=(y(1−g(θTx))−(1−y)g(θTx))xj=(y−hθ(x))xj
上面,我们使用了公式
g′(z)=g(z)(1−g(z))。因此,随机梯度下降规则为:
θj:=θj+α(y(i)−hθ(x(i)))xj(i)
如果我们将它与LMS更新规则比较,我们看到它们是相同的;但是这不是相同的算法,因为
hθ(x(i))是
θTx(i)的非线性函数。尽管如此,对于一个完全不同的算法和学习问题,我们最终得到了相同的更新规则,这有点令人惊讶。这是巧合,还是有更深层次的原因?我们会在GLM模型中回答这个问题。(另见问题集1,Q3的附加问题。)
6 题外话:感知器学习算法
我们现在简单地谈谈一个具有一定历史意义的算法,并且当我们谈论学习理论时我们也会回到这里。 考虑修改逻辑回归方法以“强制”它输出0或1或精确值。 为此,将
g的定义更改为阈值函数似乎很自然:
g(z)={10if z≥0if z<0
如果我们令
hθ(x)=g(θTx)。这里的
g采用修改后的函数,那么如果我们使用更新规则
θj:=θj+α(y(i)−hθ(x(i)))xj(i)
这样我们就有一个感知器学习算法(perceptron learning algorithm)。
在20世纪60年代,这种“感知器”被认为是大脑中各个神经元如何工作的粗略模型。尽管这个算法很简单,但是当我们讨论学习理论时,它为我们分析问题提供了起始点。但请注意,尽管感知器可能在外观上与我们所讨论的其他算法类似,但它实际上是一种与逻辑回归和最小二乘线性回归相比非常不同的算法类型;特别地,我们很难对感知器的预测给出有意义的概率解释,或将感知器推广为最大似然估计算法。
7 其他最大化
l(θ)的算法
回到以sigmoid函数作为逻辑回归的
g(z)函数的情形,我们现在讨论另外一种最大化
l(θ)的算法。
在开始之前,我们先考虑牛顿法求解函数的零点。特别地,假设我们有一些函数
f:R→R,我们希望找到一个
θ使得
f(θ)=0。这里,
θ是一个实数。牛顿法执行下面的更新:
θ:=θ−f′(θ)f(θ)
这种方法有一个自然的解释:我们可以考虑使用线性函数逼近这个函数
f,这个线性函数与函数
f在这一点处相切。求解线性函数为
0的位置,然后领下一个猜测的
θ为这个值。
下图是牛顿法的动态示意图:
在最左边的图中,我们看到函数
f以及
y=0的图像。我们试图寻找
θ使得
f(θ)=θ。接近
θ真实值得数大约是
1.3。假设我们从
θ=4.5开始运行算法。牛顿法就会拟合一条在
θ=4.5处与
f相切的直线,并解出使得这个直线方程为
0的
θ值。这样就确定了下一个猜测值,它大约是
2.8。最右边的图是执行两次更新的结果,
θ的近似值为
1.8。在经过多次迭代以后,我们循序得到
θ=1.3。
牛顿法给出了一种求
f(θ)=0的解的方法。那么如果我们想要用它最大化一些函数
l呢?
l的最大值点对应于它的一阶导数
l′(θ)=0的零点。因此,令
f(θ)=l′(θ),我们就可以用相同的算法来最大化
l,就得到下面的更新规则:
θ:=θ−l′′(θ)l′(θ)
(考虑下面的事情:我们如何修改牛顿法使得它用于求解函数最小化而不是最大化?).
最后,在逻辑回归中,
θ是向量值,因此我们需要扩展牛顿法。牛顿法对于多维的处理方法是:
θ:=θ−H−1∇θl(θ)
这里,
∇θl(θ)是
l(θ)对向量
θ的偏导数;
H是一个
n×n矩阵(实际上是
(n+1)×(n+1),假定我们包含了截距项),叫做海塞矩阵(Hessian),它的定义如下:
Hij=∂θi∂θj∂2l(θ)
牛顿法通常比批量梯度下降更快收敛,而且需要比较少的迭代次数就能非常接近最小值附近。然而一次牛顿迭代得到代价却比梯度下降更高,因为它需要寻找
n×n的海塞矩阵并计算逆矩阵;但是只要
n不是太大,牛顿法通常会更快。当使用牛顿法用来最大化逻辑回归的对数似然函数
l(θ)时,这样的方法称为费希尔得分(Fisher scoring)。
第三部分 广义线性模型
8 指数族
为了完成GLM,我们将首先定义指数族分布。我们说指数族中的一类分布有如下的表示形式:
p(y;η)=b(y)exp(ηTT(y)−a(η))(6)
其中,
η称为分布的自然参数(或叫做规范参数);
T(y)是充分统计量(对于我们考虑的分布,通常是
T(y)=y);
a(η)是对数配分函数。
e−a(η)起归一化常数的作用,确保了概率分布
p(y;η)的和/积分为
1。
对于固定的
T,a,b定义了一族概率分布,它们以
η为参数;当
η变化时,我们就得到不同的分布。
下面我们说明伯努利分布与高斯分布是指数族分布的例子。均值为
ϕ的伯努利分布,写作
Bernoulli(ϕ)。它的概率分布可以写作:
p(y=1;ϕ)p(y=0;ϕ)=ϕ=1−ϕ
当我们改变
ϕ时,就获得了不同均值的伯努利分布。下面我们说明这种伯努利分布就是属于指数族的。即,通过选定
T,a,b使得等式
(6)变成下面的形式:
p(y;ϕ)=ϕy(1−ϕ)1−y=exp(ylogϕ+(1−y)log(1−ϕ))=exp(ylog(1−ϕϕ)+log(1−ϕ))
因此,自然参数为
η=log1−ϕϕ。有趣的是,如果我们反解出
ϕ,就有
ϕ=1+e−η1。这是我们熟悉的sigmoid函数。当我们以GLM的形式进行逻辑回归时,它会再次出现。根据指数族公式,我们有
T(y)a(η)b(y)=y=−log(1−ϕ)=log(1+eη)=1
这说明伯努利分布可以写成等式
(6)的形式,使用上面选择的
T,a,b。
下面我们考虑高斯分布。回顾一下,在扩展线性回归时,
σ2的值对最终选择的
θ和
hθ(x)没有影响。因此,我们可以选择任意的
σ2。这里我们取
σ2=1。那么就有:
p(y;μ)=2π
1exp(−21(y−μ)2)=2π
1exp(−21y2)⋅exp(μy−21μ2)
因此,我们看到高斯分布也属于指数族,参数为:
ηT(y)a(η)b(y)=μ=y=2μ2=2η2=2π
1exp(−2y2)
还有许多其他分布是指数族的成员:多项分布(我们稍后会看到),泊松分布(用于离散数据模型;查看问题集);gamma‘和指数分布(用于连续数据模型;非负随机变量,例如时间间隔);beta和狄利克雷分布;等等。在下一节,我们会描述一种普遍的建模方法,
y(给定
x和
θ)可以来自于任何分布。
9 构建GLM
假设你要创建一个模型来估计给定的小时内,来到你的商店的客户的数量
y(或你的网页的页面浏览量),基于确定的特征
x,例如商店促销,最近的广告,天气,周内的日交易量等。我们知道泊松分布通常适合对顾客数量进行建模。知道了这个,我们如何对我们的问题进行建模?幸运的是,泊松分布是一个指数族分布,因此我们可以使用广义线性模型。本届中,我们会描述一个构建GLM模型的方法来解决像这样的问题。
更一般的情况下,在分类或回归问题中,我们希望预测随机变量
y与
x的函数。为了得到一个GLM模型,我们作如下三个关于
y关于
x的条件分布与模型的假设:
-
y∣x;θ∼ExponentialFamily(η)。即给定
x与
θ,
y服从参数是
η的指数族分布。
- 给定
x,我们的目标是预测出目标值
T(y)。在大多数样本中,我们有
T(y)=y,这意味着我们希望通过已知假设
h得到的预测
h(x)满足
h(x)=E[y∣x]。(这个假设对于
hθ(x)是逻辑回归或线性回归都是满足的。例如,在逻辑回归中,我们有
hθ(x)=p(y=1∣x;θ)=0⋅p(y=0∣x;θ)+1⋅p(y=1∣x;θ)=E[y∣x;θ])。
- 自然参数
η与输入
x是线性相关的:
η=θTx(如果
η是向量,那么
ηi=θiTx)。
第三个假设看似是最不合理的,最好能将它视为设计GLM的一种”设计选择“,而不是假设本身。这三个假设、设计选择允许我们衍生出一类非常优雅的学习算法,即GLM,它有许多令人满意的属性,例如易用性。此外,所得到的模型对于
y的不同类型的分布都非常有效;例如,我们将很快证明,逻辑回归和普通最小二乘都可以导出为GLMs。
9.1普通最小二乘法
为了表明普通最小二乘是GLM族模型的一个特殊案例,考虑目标变量
y(也叫响应变量)是连续变量,同时使用高斯分布
N(μ,σ2)作为
y相对
x的条件分布。(这里,
μ取决于
x)因此,我们使用高斯分布作为指数族分布。正如先前看到的那样,
μ=η。因此有:
hθ(x)=E[y∣x;θ]=μ=η=θTx
第一个等号是根据假设2得来的;第二个等号是根据高斯分布的性质得来的;第三个等号根据假设1得来;最后一个等号是根据假设3得来的。
9.2 逻辑回归
现在我们考虑逻辑回归。我们考虑二分类问题,因此
y∈{0,1}。由于
y只有两个可选值,因此假设
y和
x之间的条件分布是伯努利分布。在将伯努利公式作为指数族分布考虑时,我们有
ϕ=1+e−η1。进一步说,如果
y∣x;θ∼Bernoulli(ϕ),那么就有
E[y∣x;θ]=ϕ。因此,按照和最小二乘法类似的推导,有:
hθ(x)=E[y∣x;θ]=ϕ=1+e−η1=1+e−θTx1
因此,这就给出了假设函数的形式
hθ(x)=1+e−θTx1。如果之前你考虑过我们是怎样得出逻辑回归函数的形式的,那么这里就给出了答案:一旦我们假定
y对
x服从伯努利分布,就会根据GLM与指数族分布的定义产生。
为了引入更多属于,函数
g给出了分布的均值关于自然参数
η的函数(
g(η)=E[T(y);η]),称为规范响应函数。它的反函数
g−1,称为规范链接函数。高斯族函数的规范响应函数是恒等函数;伯努利函数的规范响应函数是逻辑函数。
9.3 Softmax回归
让我们看一看GLM的更多案例。考虑多分类问题,其中
y可以取
k个值中的任意一个,即
y∈{1,2,…,k}。例如,我们不仅仅是将邮件分类为垃圾邮件与非垃圾邮件,还有可能分为三类—垃圾邮件、个人邮件、工作邮件。响应变量仍旧是分立值,但是已经超过了两个值。因此我们使用多项分布模型描述它。
让我们推导一个用于描述多项分布数据的的GLM模型。为了这么做,我们首先会将多项分布表示为一种指数族分布。
为了参数化一个具有
k个可能输出值的多项分布,可以使用
k个参数
ϕ1,ϕ2,…,ϕk,分别表示每一种输出的可能性。然而,这些参数可能是重复的,或正式的说,它们不是独立的(因为知道任意
k−1个
ϕi,就能得到最后一个,因为
∑i=1nϕi=1)。因此,我们可以仅仅使用
k−1个参数,其中
ϕi=p(y=i;ϕ),且
p(y=k;ϕ)=1−∑i=1k−1ϕi。为了符号化的方便,我们也会令
ϕk=1−∑i=1k−1ϕi,但是我们应该记住,它不是一个参数,并完全由
ϕ1,…,ϕk−1决定。
为了将多项分布表示为一种指数族分布,我们按照如下方式定义
T(y)∈Rk−1:
T(1)=⎣⎢⎢⎢⎢⎢⎡100⋮0⎦⎥⎥⎥⎥⎥⎤,T(2)=⎣⎢⎢⎢⎢⎢⎡010⋮0⎦⎥⎥⎥⎥⎥⎤,T(3)=⎣⎢⎢⎢⎢⎢⎡001⋮0⎦⎥⎥⎥⎥⎥⎤,…,T(k−1)=⎣⎢⎢⎢⎢⎢⎡000⋮1⎦⎥⎥⎥⎥⎥⎤,T(k)=⎣⎢⎢⎢⎢⎢⎡000⋮0⎦⎥⎥⎥⎥⎥⎤
与之前的例子不同的是,我们这里的
T(y)=y不成立;
T(y)现在是一个
k−1维向量,而不是一个实数。我们会用
(T(y))i表示
T(y)的第
i号元素。
我们引入一下游泳的记号。指标函数
1{⋅}表示当花括号里的表达式为真时,结果为
1,否则为0。例如,
1{2=3}=0,1{3=5−2}=1。因此,我们可以将
T(y)和
y的关系写作
(T(y))i=1{y=i}。进一步说,
E[(T(y))i]=P(y=i)=ϕi。
现在我们要说,多项分布是指数族的成员。
p(y;ϕ)=ϕ11{y=1}ϕ21{y=2}⋯ϕk1{y=k}=ϕ11{y=1}ϕ21{y=2}⋯ϕk1−∑i=1k−1(T(y))i=exp((T(y))1logϕ1+(T(y))2logϕ2+⋯+(1−i=1∑k−1(T(y))i)logϕk)=exp((T(y))1log(ϕ1/ϕk)+(T(y))2log(ϕ2/ϕk)+⋯+(T(y))k−1log(ϕk−1/ϕk)+log(ϕk))=b(y)exp(ηTT(y)−a(η))
其中,
ηa(η)b(y)=⎣⎢⎢⎢⎡log(ϕ1/ϕk)log(ϕ2/ϕk)⋮log(ϕk−1/ϕk)⎦⎥⎥⎥⎤,=−log(ϕk)=1
以上将多项分布转换为指数族分布的表示形式。
链接函数为(
i=1,…,k)
ηi=logϕkϕi
为了方便起见,我们定义
ηk=log(ϕk/ϕk)=0。为了求出响应函数,我们有
eηiϕkeηiϕki=1∑keηi=ϕkϕi=ϕi=i=1∑k=1
这表明
ϕk=∑i=1keηi1,可以将它带入等式
(7)中获得响应函数
ϕi=∑j=1keηjeηi
这个将
η映射到
ϕ的函数叫做softmax函数。
为了完成模型,我们使用假设
3,即
η与
x线性相关。因此,有
ηi=θiTx(
i=1,…,k−1),其中
,θ1,⋯,θk−1∈Rn+1,就是模型的参数。为了记号的方便,我们定义
θk=0,因此有
ηk=θkTx=0。因此,我们的模型假定
y对于
x的条件分布为
p(y=i∣x;θ)=ϕi=∑j=1keηjeηi=∑j=1keθjTxeθiTx(8)
这个模型被应用于多分类问题,其中
y∈{1,…,k},它被称为softmax回归。这是逻辑回归的延伸。
我们的假设会输出
hθ(x)=E[T(y)∣x;θ]=E⎣⎢⎢⎢⎡1{y=1}1{y=2}⋮1{y=k−1}∣∣∣∣∣∣∣∣∣x;θ⎦⎥⎥⎤=E⎣⎢⎢⎢⎡ϕ1ϕ2⋮ϕk−1⎦⎥⎥⎥⎤=E⎣⎢⎢⎢⎢⎢⎢⎡∑j=1kexp(θjTx)exp(θ1Tx)∑j=1kexp(θjTx)exp(θ2Tx)⋮∑j=1kexp(θjTx)exp(θk−1Tx)⎦⎥⎥⎥⎥⎥⎥⎤
换句话说,我们的假设会输出每一个
i的估计概率
p(y=i∣x;θ)。(这
hθ(x)只有
k−1维,且有
p(y=k∣x;θ)可以通过这个公式得到:
1−∑i=1k−1ϕi)。
最后,我们讨论参数拟合。与原始的最小二乘法以及逻辑回归的推导类似,如果我们有一个包含
m个样本的训练集
{(x(i),y(i));i=1,…,m},并希望学习参数
θi,我们会写下我们的对数似然函数,如下:
l(θ)=i=1∑mlogp(y(i)∣x(i);θ)=i=1∑mlogl=1∏k(∑j=1keθjTx(i)eθlTx(i))1{y(i)=l}
为了获得上面的第二个等式,我们使用了公式
(8)定义的等式。我们现在可以通过最大化
l(θ)获得对于参数
θ的最大似然估计,使用牛顿法或梯度下降。