写在开篇的话:
这一系列的笔记是斯坦福大学cs229 machine learning 机器学习的课程笔记。初步的规划是将课程网站上的资料翻译成中文,同时也作为学习的一个记录。同时由于水平有限,可能有一些不能很好翻译的地方会用自己的话表达。同时课程的视频资源详见bilibili。一共有20节课,一般平均每节课大约4-8小节不等。
本篇原文见cs229-notes1.pdf。
CS229 课程笔记
吴恩达
监督学习
让我们用几个简单的例子来开始讨论监督学习问题。假设我们有一个数据集包括了俄勒冈的波特兰市47所住房居住面积和价格:
居住面积(平方英尺) | 价格(千美元) |
---|---|
2104 | 400 |
1600 | 330 |
2400 | 369 |
1416 | 232 |
3000 | 540 |
这些数据画图是这样的:
给出这样的数据,我们能怎样用一个居住面积的函数来预测住房价格呢?
为了作一些标记供今后使用,我们用
x(i)
x
(
i
)
表示“输入”变量(在这个例子中是居住面积),也叫做输入特征, 同时
y(i)
y
(
i
)
表示要预测的“输出”或,目标变量。一对(
x(i),y(i)
x
(
i
)
,
y
(
i
)
)叫做一个训练样本,并且把要用来学习的数据集-一列m个训练样本{
x(i),y(i)
x
(
i
)
,
y
(
i
)
:i=1,…,m}叫做训练集。注意记号的上角标“(i)”只是用来表示训练集中的序号,没什么需要解释的。我们也用
X
X
表示输入变量的空间,用
Y
Y
表示输出变量的空间。在该例子中
X=Y=R
X
=
Y
=
R
.
为了稍微正式一点来表示监督学习问题,我们的目标是对于给定的训练集,能学习到一个函数h(x):
X↦Y
X
↦
Y
,使得h(x)是一个能很好预测对应y值的函数。由于历史原因,这个函数h 称为假设。 如图,因此过程像这样:
当需要预测的目标变量连续时,比如说我们房价的例子,我们把这样的学习问题叫做回归问题。当y只能取若干较小数量的离散值时(比如说给定居住面积,我们想预测某住所是独栋房还是公寓)我们称之为分类问题。
第一部分 线性回归
为了使得房价预测的例子更加有趣,让我们考虑一个更加丰富的数据集,其中包括了每栋房子的卧室数量:
居住面积(平方英尺) | 卧室数 | 价格(千美元) |
---|---|---|
2104 | 3 | 400 |
1600 | 3 | 330 |
2400 | 3 | 369 |
1416 | 2 | 232 |
3000 | 4 | 540 |
… | … | … |
其中,x是
R2
R
2
的二维向量。例如,
x(i)1
x
1
(
i
)
是训练集中第i所房子的居住面积,
x(i)2
x
2
(
i
)
是它的卧室数量。(一般来说,当设计一个学习问题,它会取决于要选取那些特征,所以如果你在收集波特兰的房屋数据,你也许要考虑包含一些其他特征比如说房子里有没有壁炉,卫生间的数量等等。再之后的章节我们会对特征选取讨论更多,但现在暂时只考虑给定的特征。)
为了实行监督学习,我们必须要决定如何在计算机中表示函数或者叫假设。如一开始所决定的,我们选用近似
y作为x
y
作
为
x
的线性函数:
上式中、 θi θ i 是 参数(也叫做 权重)用来将 X映射到Y X 映 射 到 Y 的线性函数的空间参数化。当不引起歧义时,我们把 hθ(x)的θ h θ ( x ) 的 θ 放到下标,更进一步简化成 h(x) h ( x ) 。 为了简化,引入 x0=1 x 0 = 1 (这是 截距项)故
上式右侧我们把
θ,x
θ
,
x
都看作向量,这里
n
n
是输入变量的数目(不计)。
现在,给定一个训练集,我们如何挑选或学习参数
θ
θ
?一个合理的方法看上去是让
h(x)靠近y
h
(
x
)
靠
近
y
,至少在训练集上要接近。为了正式表达,我们定义一个函数来测量对于每一个
θ
θ
对应的
h(x(i))
h
(
x
(
i
)
)
有多接近对应的
y
y
。定义代价函数(成本函数):
如果你已经见过线形回归,你会注意到这和普通的最小二乘法的代价函数很相似。无论之前是否见过,我们最终会知道这是更广泛算法中的一个特例。
1 LMS算法
我们想通过选择
θ
θ
来使
J(θ)
J
(
θ
)
最小化。为了找到这样的
θ
θ
, 我们用一些“猜测”的初值来开始搜索算法,然后不断改变
θ
θ
使得
J(θ)
J
(
θ
)
更小,直到收敛到一个
θ
θ
的值使得
J(θ)
J
(
θ
)
最小化。特别的,考虑梯度下降算法,该算法从一些初值
θ
θ
开始,重复以下操作更新 1:
(该更新同时对所有 j=0,...,n. j = 0 , . . . , n . 进行操作)式中 α α 称作 学习率。该算法自然地重复向 J J 下降最陡峭的方向前进一步。
为了实现该算法,我们要推导出右边的偏导项。先从只有一个训练样本()开始,忽略 J J 定义的求和项。我们有:
对于单个训练样本给出更新法则:
这个规则称为 LMS法则(LMS代表最小均方),也叫做Widrow-Hoff学习规则。该规则有许多看上去自然又符合直觉的特性。比如更新的大小与 误差项( y(i)−hθ(x(i)) y ( i ) − h θ ( x ( i ) ) )成比例;因此,比如遇到一个训练样本预测值很接近 y(i) y ( i ) 的真实值,然后发现不太需要调整参数;相反的,一个对于有大误差的预测值 hθx(i) h θ x ( i ) ,参数需要有大的调整(比如距离 y(i) y ( i ) 非常远)。
我们已经推导出一个样本的LMS法则。有两种方法来修改这个法则,让它能适用多个样本的训练集。第一个方法是改成如下的算法:
读者可以很简单地验证以上更新规则的求和就是 ∂J∂θj ∂ J ∂ θ j (J是原始定义)。所以这就是简单对原先代价函数 J J 的梯度下降。这个方法看起来在整个训练集的每一个样本的每一步中,称之为批梯度下降。注意,一般来说,梯度下降法受到局部极小值的影响。我们提出来是因为线性回归只有一个全局最优点,没有其他局部最优点。因此梯度下降法总是收敛(假设学习率不过大)到最小值。事实上, J J 是凸二次函数。这个是最小化二次函数的梯度下降的例子。
上图的椭圆展示了二次函数的等高线。也展示了从(48,30)开始的梯度下降的轨迹。图中的(和直线相接)标记出了梯度下降经过的若干连续的
θ
θ
值.
当我们在之前的数据集上跑批梯度下降来拟合
θ
θ
时,我们得到
θ0=71.27,θ1=0.1345
θ
0
=
71.27
,
θ
1
=
0.1345
,如果我们画出
hθ(x)
h
θ
(
x
)
作为
x
x
(面积)的函数图像,以及训练数据点时,我们得到以下图像:
如果卧室数量也包括在一个输入特征的话,我们得到。
以上结果由批梯度下降得到。批梯度下降以外,另一个算法效果也非常好。考虑如下算法:
在这个算法中,我们重复遍历训练集,每次遇到一个训练样本,我们根据单个训练样本的误差的梯度更新参数。这个算法称为 随机梯度下降(也称 增量梯度下降)。 当批梯度下降法执行一步更新操作要遍历整个训练集-当m很大时,这个操作很费时-随机梯度下降可以直接开始,然后每过一个训练赝本都可以前进一步。经常是随机梯度下降靠近最小值比批梯度下降快得多。(注意有时候也许永远不能收敛到最小值,参数 θ θ 会在 J(θ) J ( θ ) 的最小值附近振荡;但是实际上大多数足够靠近最小值的近似都是真正最小值的一个不错的近似值 2)。考虑到以上原因,实际上当训练集足够大,随机梯度下降经常都是比批梯度下降更受欢迎的。
2 正规方程
梯度下降给出了一种最小化 J J 的方法。让我们讨论第二种方法,这次明确地做最小化而不用迭代算法。在这个方法中,我们明确的求对的导数来并令之为零来I求 J J 的最小值。为了不用写大量的代数和整页整页的矩阵的导数,让我们引入一些记号来做矩阵的计算。
2.1矩阵导数
对于函数从
m×n
m
×
n
的矩阵映射到实数,我们将
f
f
对的导数定义为:
因此,梯度 ▽Af(A) ▽ A f ( A ) 自己是 m×n m × n 的矩阵,其中第 (i,j) ( i , j ) 个元素是 ∂f∂Aij ∂ f ∂ A i j 。例如假设
是一个 2×2 2 × 2 的矩阵,函数 f:R2×2↦R f : R 2 × 2 ↦ R 由下式给出:
其中 Aij A i j 表示矩阵A的第 (i,j) ( i , j ) 个元素,则有:
我们也引入 迹算子,写作”tr.”对于 2×2 2 × 2 的方阵A,他的迹定义为对角线上所有元素的和:
若a是实数(例如1 × × 1矩阵),那么 tra=a t r a = a 。(如果你还没有见过“算子记号”,可以把A的迹想象成tr(A),把迹作为矩阵A的函数。通常不写括号。)
迹算子有以下性质:若两个矩阵A,B都是方阵的,他们的乘积AB也是方阵,则有 trAB=trBA t r A B = t r B A (自己验证)。作为该性质的推广我们不难得出:
以下迹的性质也很容易验证。式中A和B都是方阵,a是实数:
我们现不加证明地给出以下关于矩阵导数的结论(其中有一些我们在本章之后的地方才会用到)。公式(4)仅仅对非奇异的矩阵A适用,其中|A|是A的行列式。我们有:
为了让矩阵记号更加具体,让我们具体解释一下第一个方程。假设我们有一常数矩阵 B∈Rn×m B ∈ R n × m 。我们根据 f(A)=trAB f ( A ) = t r A B 定义函数 f:Rm×n↦R f : R m × n ↦ R 。注意该定义是合理的,因 A∈Rm×n A ∈ R m × n ,则AB是方阵,能对其应用迹算子;因此f事实上从 Rm×n R m × n 映射到 R R 。我们能用矩阵导数的定义得到 ▽Af(A) ▽ A f ( A ) ,这是 m×n m × n 矩阵。上式(1)表明该矩阵第 (i,j) ( i , j ) 项由 BT B T 的 (i,j) ( i , j ) 项给出,即 Bji B j i 。
上式(1-3)的证明简单,留给读者作练习用。上式(4)可用矩阵的逆的伴随矩阵推导出 3.
2.2 再议最小二乘
有了矩阵导数的帮助,让我们寻找使得
J(θ)
J
(
θ
)
最小化的
θ
θ
值的封闭形式。我们从用矩阵-向量记号重写
J
J
开始。
给定训练集,定义**设计矩阵**X为矩阵(实际上是
m×n+1
m
×
n
+
1
,如果包含截距项)的行包含了训练集的输入值:
让 y→ y → 为包含训练集所有目标值的m维向量:
由于 hθ(x(i))=(x(i))Tθ h θ ( x ( i ) ) = ( x ( i ) ) T θ 我们能很简单地证明:
因此用向量z的一个性质我们有 zTz=∑iz2i z T z = ∑ i z i 2 :
最后,最小化J,让我们求关于 θ θ 的导数。联立方程(2)(3)得到:
有:
在第三步,利用了迹只是一个实数的这条性质;第四步利用了性质 trA=trAT t r A = t r A T ;第五步利用了式(5),其中 AT=θ,B=BT=XTX及C=I A T = θ , B = B T = X T X 及 C = I 以及式(1)。为了求J最小值,令导数为零,得到正规方程:
那么 J(θ) J ( θ ) 取最小值时 θ θ 的取值由下式这样的封闭形式得到:
3 概率解释
当我们面对回归问题的时候,为什么用线性回归,特别是为什么用最小二乘代价函数J是合理的选择?在这一节,我们会给出一系列概率假设,在这些假设下,最小二乘回归是一种非常自然的算法。
让让我们假设目标值和输入值满足以下方程:
其中 ϵ(i) ϵ ( i ) 是误差项,可能原因是模型以外的因素(比如某特征与房价高度相关,但是没有被纳入回归)或者随机噪声。进一步假设 ϵ(i) ϵ ( i ) 是与有均值零及一定的方差 σ σ 的高斯分布(或正态分布)独立同分布的。我们把这个假设写成” ϵ(i) ϵ ( i ) ~ N(0,σ2) N ( 0 , σ 2 ) ”。换句话说, ϵ(i) ϵ ( i ) 的概率密度函数满足:
这表明:
记号 p(y(i)|x(i);θ) p ( y ( i ) | x ( i ) ; θ ) 表示 y(i) y ( i ) 在给定 x(i) x ( i ) 下由 θ θ 参数决定的概率密度函数。注意到不应该把 θ θ 作为条件( p(y(i)|x(i),θ) p ( y ( i ) | x ( i ) , θ ) ),因为 θ θ 不是随机变量。可以把 y(i) y ( i ) 写成 y(i)|x(i);θ∼N(θTx(i),σ2) y ( i ) | x ( i ) ; θ ∼ N ( θ T x ( i ) , σ 2 ) 。
对于给定X(即设计矩阵,其包含所有 x(i) x ( i ) )及 θ θ ,对应的 y(i) y ( i ) 是什么样的分布?数据的概率由 p(y→|X;θ) p ( y → | X ; θ ) 给出。对于某个特定的 θ θ 的值,这个概率通常被看做是 y→ y → (或者X)的函数。当我们把它看做一个 θ θ 的具体的函数时,我们会把它叫做 似然函数:
注意到 ϵ(i) ϵ ( i ) 的独立性假设(也包括 y(i)和x(i) y ( i ) 和 x ( i ) ),上式也可写成:
现在给定关于 y(i)和x(i) y ( i ) 和 x ( i ) 的概率模型,那么对参数 θ θ 的合理的最佳估计是什么? 极大似然估计方法是指我们应该估计 θ θ 使得数据的概率尽可能大。也就是说我,我们求使得 L(θ) L ( θ ) 最大化的 θ θ 。
如果不求 L(θ) L ( θ ) 的最大值,我们也可以求任意严格递增的 L(θ) L ( θ ) 函数的最大值。特别是,求 对数似然函数 lθ l θ 的最大值的时候,导数更容易求:
那么求 l(θ) l ( θ ) 的最大值等价于求解下士的最小值:
我们发现这就是原来的最小二乘代价函数。
总结:给予之前对于数据的概率假设,最小二乘回归恰好找到了 θ θ 的最大似然估计。这就是在此假设下最小二乘回归是一个非常自然的方法,因为它就是做极大似然估计。(注意让最小二乘成为非常好或者很合理的方法而言,概率假设并不一定是 必要的。并且有其他自然的假设用来证明其合理性)。
还注意到在我们之前的讨论中,最终 θ θ 的取值与 σ σ 无关,实际上就算我们不知道 σ2 σ 2 也能求得同样的结果。我们也会在讨论指数和一般线性模型的时候再一次用上这个结论。
4 局部加权线性回归
考虑到从
x∈R
x
∈
R
预测
y
y
的问题。下图最左侧的图展示了数据集上拟合的结果。我们看到数据点并没由完全落到直线上,所以拟合得并不好。
然而如果我们在加一个特征
x2
x
2
拟合
y=θ0+θ1x+θ2x2
y
=
θ
0
+
θ
1
x
+
θ
2
x
2
那么我们拟合数据稍好一点(见中间这幅图)。那么是不是特征越多,拟合数据就越好呢?然而,加太多特征也是有危险的:右图是五阶多项式的拟合结果
y=∑5)j=0θjxj
y
=
∑
5
)
j
=
0
θ
j
x
j
。我们可以看到虽然拟合曲线完美地经过了每一个点,但是这并不像是一个好的房价(y)和居住面积(x)关系的拟合。不加正式定义的,我们把左图展示的这种情况称作欠拟合,其中数据的结构没有很好地由模型表达出来。右图的情况称作过拟合。(之后在这个课程里,当我们讨论学习理论时,我们会给出记号的正式定义,也会小心地给出假设好坏的定义)。
正如以上所述,在例子中已经展示了选择特征对于学习理论效果好坏的重要性。(当我们讨论模型选择时,会看到算法是如何自动选择一系列好的特征的)。在这一节,让我们简单地讨论以下局部加权线性回归(LWR),LWR就是假设在有充足的训练数据的情况下,使得特征的选择略微不那么关键一点。这种处理是简明的,因为你会有机会自己在作业中自己探索一下LWR的一些性质。
在原本的线性回归算法中,当遇到一个有疑问的点x(来估计h(x))我们会:
1. 求
∑i(y(i)−θTx(i))2
∑
i
(
y
(
i
)
−
θ
T
x
(
i
)
)
2
最小值来拟合
2. 输出
θTx
θ
T
x
相对的是,局部加权线性回归算法会这样做:
1. 求
∑iw(i)(y(i)−θTx(i))2
∑
i
w
(
i
)
(
y
(
i
)
−
θ
T
x
(
i
)
)
2
最小值来拟合
2. 输出
θTx
θ
T
x
式中
w(i)
w
(
i
)
是非负权重值。直觉上,如果
w(i)
w
(
i
)
对于一个特定i值很大,在挑选
θ
θ
时,我们努力让
(y(i)−θTx(i))2
(
y
(
i
)
−
θ
T
x
(
i
)
)
2
变小。如果
w(i)
w
(
i
)
很小,那么误差项
(y(i)−θTx(i))2
(
y
(
i
)
−
θ
T
x
(
i
)
)
2
就在拟合的时候很容易被忽略掉。
决定权重的一种合适方法是4:
注意到权重取决于特定的要求值的x。更进一步说,如果 |x(i)−x| | x ( i ) − x | 很小那么 w(i) w ( i ) 接近1;如果 |x(i)−x| | x ( i ) − x | 很大那么 w(i) w ( i ) 很小。因此, θ θ 选择给予训练样本(的误差)上靠近所求点x更大的权重。也注意到当权重公式的形式上很类似高斯分布的概率密度分布, w(i) w ( i ) 并没有和高斯分布有什么直接关系特别是 w(i) w ( i ) 不是随机变量,正太分布或者什么类似的东西。参数 τ τ 控制着训练样本的权重对于待求点x随着距离 x(i) x ( i ) 下降的快慢。 τ τ 叫做 带宽参数,也会在作业里遇到。
局部加权线性回归是我们看到的第一个 非参数算法。之前见过的(不加权的)线性回归也称作 含参数的学习算法,因为有固定的,有限个数的参数( θ θ ),用来拟合数据。一旦完成了拟合,保留下参数 θ θ 我们就不在需要原始数据来预测未来的情况。相对的,在用局部加权线性回归的时候我们需要保留整个训练集来做未来的预测。“非参数”指的是需要保留一堆东西来代表假设 h h 随着训练集的尺度线性增长。
第二部分 分类与logistic回归
现在让我们来讨论分类问题。这就像是回归问题,对于值y,我们想预测他属于少数几个值。现在我们关注二元分类问题,其中y只能取两种值,0或者1.(我们说的大多数问题都可以推广到多分类问题)。比如我们要做一个垃圾邮件分类器,那是一封邮件的若干特征,当邮件是垃圾邮件时y是1,否则是0.0也成为 负类,1称为 正类,有时也用“-”,“+”来表示。对于给定的 x(i) x ( i ) 对应的 y(i) y ( i ) 也叫做训练样本的 标签。
5 logistic回归
我们可以忽略y是离散值的事实来处理分类问题,就用老的线性回归来尝试x对应的y。然而,很容易就能构造一个让这个办法效果很差的样例。直观上来说,当我们已经知道
y∈{0,1}
y
∈
{
0
,
1
}
,
hθ(x)
h
θ
(
x
)
取值大于1或小于0都是没什么意义的。
为了修正这一点,让我们改变假设
hθ(x)
h
θ
(
x
)
的形式。我们选择
其中
叫做 logistic函数或者 sigmoid函数,下图是g(z)的函数图像:
注意当 z→∞ z → ∞ 时,g(z)趋向于1,当 z→−∞ z → − ∞ 时,g(z)趋向于0。这样g(z)及h(x)就限制在0,1之间。和之前一样我们让 x0=1 x 0 = 1 故有 θTx=θ0+∑nj=1θjxj θ T x = θ 0 + ∑ j = 1 n θ j x j .
现在让我们在给定的g中选择。其他光滑的从0增长到1的函数也可用,但是之后我们会解释理由(当我们讨论GLM时即讨论生成学习算法的时候),对于logistic函数的选择是非常自然的。在继续之前,以下是sigmoid函数导数的几个有用的性质,简记为g’:
那么对于给定的logistic回归模型,我们怎么来拟合 θ θ 呢?类似于之前最小二乘拟合可以由极大似然估计在一系列的概率假设下导出,然后通过极大似然法拟合参数。
让我们假设:
注意到可以写得更简洁:
假设m个训练样本都是独立生成的,我们能写出参数的似然函数:
和之前一样,对数似然函数更容易求解:
那怎么求似然函数最大值呢?类似线性回归的例子,我们可以用梯度上升。用向量记号写,我们的更新因此可以这样写 θ:=θ+α▽θl(θ) θ := θ + α ▽ θ l ( θ ) (注意公式里是正号不是负号,因为这个函数现在是求最大值,不是最小值)。让我们从单个训练样本(x,y)开始用随机梯度上升规则:
以上我们利用了 g′(z)=g(z)(1−g(z)) g ′ ( z ) = g ( z ) ( 1 − g ( z ) ) 因此,给出了梯度上升的公式:
若我们将之与最小二乘LMS的更新公式相比较,会发现它们看上去一样的。但是这 不是同一种算法,因为现在 hθ(x(i)) h θ ( x ( i ) ) 定义为 θTx(i) θ T x ( i ) 的非线性函数。不管怎么说,不同的算法,不同的学习问题最终结果一样还是有点惊讶的,或许背后有着更深层次的原因?当我们学习GLM的时候会得到答案。(详见题集1的Q3附加题)。
6 题外话:感知机学习算法
我们说点题外话,现在简单讨论一个在历史上很有趣的算法,之后我们在讨论学习理论的时候又会回来讨论他。考虑修改logistics函数“强迫”其只能输出0或者1。
为了实现这样,把g的定义改成阈值函数看上去很自然:
若和之前一样使 hθ(x)=g(θTx) h θ ( x ) = g ( θ T x ) 该是用修改后的g的定义,如果我们用如下更新规则:
那么我们就有了 感知机学习算法。
在20世纪60年代,提出了“感知机”作为大脑中单个神经元的工作原理模型。由于这个算法如此简单,这给算法给我们在今后的课程上讨论学习算法提供了一个很好的起点。注意感知机在形式上并不类似于我们讨论的其他算法。实际上这是一种与logistics回归或者线性回归非常不同类型的算法。特别是很难以给他一个有含义的概率解释或者像极大似然算法那样的推导。
7 另一种求 l(θ) l ( θ ) 最大值的算法
回到用sigmoid函数作为g(z)的logstics回归,让我们讨论另外一种求
l(θ)
l
(
θ
)
最大值的算法。
让我们考虑用牛顿法求一个函数的零点。具体来说我们有某函数
f:R↦R
f
:
R
↦
R
,我们希望找到一个
θ
θ
的值使得
f(θ)=0
f
(
θ
)
=
0
。其中
θ∈R
θ
∈
R
是实数。牛顿法为:
这个算法有着非常自然的解释,就是我们用一个在当前 θ θ 与函数f相切的线性函数来逼近函数f,解线性方程等于0的位置,并且用其来作下一个迭代值。
下图是牛顿法的过程的图像:
左图可以看到函数f图像及y=0的水平直线。我们尝试求 θ θ 使得 f(θ)=0 f ( θ ) = 0 ,由图得, θ θ 的值约1.3。假设算法初始值 θ=4.5 θ = 4.5 牛顿法拟合 θ=4.5 θ = 4.5 f的切线求0点(中图)。这给了我们下一个 θ θ 的猜测值,大约2.8。右图是再下一次迭代的结果, θ θ 大约为1.8。在几次迭代后,我们迅速地得到了 θ=1.3 θ = 1.3 。
就蹲发是一种求 f(θ)=0 f ( θ ) = 0 零点的方法。如果我们要求l最大值该怎么办?l的极大值点应该有一阶导数 l′(θ)=0 l ′ ( θ ) = 0 。所以令 f(θ)=l′(θ) f ( θ ) = l ′ ( θ ) 我们可以用同样的方法来求l的最大值,我们得到了更新规则:
(想一想,如果我们要用牛顿法求一个函数的最小值而不是最大值应该怎么做?)
最后,在我们的logistic回归中, θ θ 是向量,所以我们要把牛顿法推广到这上来。牛顿法的推广需要多维度设定(也叫做牛顿-拉夫逊法)由下式给出:
其中 ▽θl(θ) ▽ θ l ( θ ) 一般是 l(θ) l ( θ ) 关于 θi θ i 的向量偏导数;H是n×n矩阵(实际上(n+1)×(N+1),假设假设我们忽略截距项),叫做海森矩阵:
典型上说,牛顿法收敛比(批)梯度下降快,需要更少的迭代就能求得最小值。虽说一次牛顿法的迭代比梯度梯度下降更加“昂贵”,因为需要求n×n海森矩阵,但是只要n不太大一般总是比较快的。当牛顿法应用于logistic对数极大似然函数 l(θ) l ( θ ) 时,结果的方法叫做 Fisher scoring。
第三部分 广义线性模型5
目前为止,我们已经看过了一个回归模型,一个分类模型。在回归模型中,我们有 y|x;θ∼N(μ,σ2) y | x ; θ ∼ N ( μ , σ 2 ) ,在分类模型中,我们有 y|x;θ∼Bernoulli(ϕ) y | x ; θ ∼ B e r n o u l l i ( ϕ ) ,其中 μ、ϕ μ 、 ϕ 是 x、θ x 、 θ 有适当的定义的函数。在本章节,我们会说明以上两种方法是一更广泛模型类型的两个特例,称为(广义线性模型GLM)。我们也会说明GLM的其他模型类型能够导出并应用于其他分类和回归问题。
8 指数族
为了适应GLM,我们先定义指数族分布。当满足下式时,我们说一类分布是指数族分布:
其中 η η 称为分布的 自然参数(也叫作 正则参数)T(y)是充分统计量(对于我们考虑的分布,经常有T(y)=y), a(η) a ( η ) 是 对数划分函数. e−a(η) e − a ( η ) 的数量在归一化常数中起到非常重要的作用,他能保证 p(y;η) p ( y ; η ) 的分布的和除以y得1.
T, a, b的选择定义了由 η η 参数化的一族分布,当我们改变 η η 的值,我们能获得这个分布族内的不同分布.
现在我们将说明伯努利分布和高斯分布是指数分布族内的两个例子. 均值为 ϕ ϕ 的伯努利分布计记做 Bernoulli(ϕ) B e r n o u l l i ( ϕ ) ,其定义了 y∈{0,1} y ∈ { 0 , 1 } 的分布故 p(y=1;ϕ)=ϕ;p(y=0;ϕ)=1−ϕ p ( y = 1 ; ϕ ) = ϕ ; p ( y = 0 ; ϕ ) = 1 − ϕ .当改变 ϕ ϕ 的值,我们得到不同均值的伯努利分布. 现在说明的这类伯努利分布是改变 ϕ ϕ 得到的一类指数族. 例如对于特定的 T,a,b T , a , b ,那方程(6)就正好变成伯努利分布类型.
我们把伯努利分布写成:
因此,自然参数由 η=log(ϕ/(1−ϕ)) η = l o g ( ϕ / ( 1 − ϕ ) ) 给出。有趣的是,如果我们用 η η 解出 ϕ ϕ 的表达式,会得到 ϕ11+e−η ϕ 1 1 + e − η 。这就是我们熟悉的sigmoid函数表达式!这就又回到了推导出logistic函数是一种GLM。为了完成伯努利分布的指数族分布公式,我们有:
这说明了伯努利分布分公式可以写成公式(6)的形式,只要选定合适的T,a,b。
现在让我们考虑高斯分布。回到我们推导线性回归的时候, σ2 σ 2 的值对于最后 θ和hθ(x) θ 和 h θ ( x ) 的取值没有影响。为了简化推导过程,令 σ2=1 σ 2 = 1 6。我们有:
因此,我们可以看出高斯分布是指数族,有:
有很多其他分布也是指数族:多项分布(之后会看到),泊松分布(用于计数数据建模),伽马分布和指数分布(用与连续非负随机变量建模,比如时间间隔);beta分布和狄利克雷分布(用于概率分布),还有很多。在下一节中,我们会描述一个通用的办法来对任意分布的y(给定x和 θ θ )建模.
9 构建GLM
假设你要基于一些特征建立一个模型来估计任意时间到达你的商店的数目y,比如商店优惠,最近广告,天气,星期几等等。我们知道泊松分布可以很好地预测来访者的数目。既然知道了,那对于我们的问题应该怎样来建一个模型呢?幸好泊松分布是指数族分布,所以我们可以用GLM。在这一节,我们会讨论一个办法来建立GLM模型来解决类似这样的问题。
更一般的来说,考虑分类或回归问题,其中要预测x的函数随机变量y。为了要推导出问题对应GLM,我们对我们的模型做以下三个条件关于给定x的y的分布假设:
1.
y|x;θ
y
|
x
;
θ
~
ExponentialFamily(η)
E
x
p
o
n
e
n
t
i
a
l
F
a
m
i
l
y
(
η
)
例如给定x和
θ
θ
,y的分布满足某个指数族分布,参数是
η
η
2. 给定x,我们的目标是预测给定x的对应T(y)的值。在我们大多数的例子中,我们有T(y)=y,故这意味着我们要通过我们学习到的假设h的输出值h(x)满足h(x)=E[y|x].(注意到这个假设
hθ(x)
h
θ
(
x
)
对于logistic回归和线性回归都适用。比如说logistic回归有
hθ(x)=p(y=1|x;θ)=0⋅p(y=0|x;θ)+1⋅p(y=1|x;θ)=E[y|x;θ]
h
θ
(
x
)
=
p
(
y
=
1
|
x
;
θ
)
=
0
⋅
p
(
y
=
0
|
x
;
θ
)
+
1
⋅
p
(
y
=
1
|
x
;
θ
)
=
E
[
y
|
x
;
θ
]
)
3. 自然参数
η
η
和输入x是线性相关的:
η=θTx
η
=
θ
T
x
(或者如果
η
η
是向量的话那么
ηi=θTix
η
i
=
θ
i
T
x
).
9.1 普通最小二乘
为了说明普通最小二乘是GLM族的模型,考虑令y为连续目标变量(也叫GLM的响应变量),我们建立模型给定x的条件分布y是满足高斯分布
N(μ,σ2)
N
(
μ
,
σ
2
)
的(这里
μ可以依赖于x
μ
可
以
依
赖
于
x
)。所以我们让上面的
ExponentialFamily(η)
E
x
p
o
n
e
n
t
i
a
l
F
a
m
i
l
y
(
η
)
分布为高斯分布。正如我们之前所看到的,作为指数族分布的高斯分布的公式中标
μ=η
μ
=
η
所以我们有:
第一个公式遵循假设2;第二个公式遵循 y|x;θN(μ,σ2) y | x ; θ N ( μ , σ 2 ) 。故其期望值为 μ μ 第三个等式遵循假设1(我们之前的推导说明在作为指数分布的高斯分布公式中, μ=η μ = η );最后一个公式遵循假设3.
9.2 logistic 回归
我们现在考虑logistic回归。在此,我们对二元分来感兴趣,所以
y∈{0,1}
y
∈
{
0
,
1
}
。给定y是个二元值,所以用伯努利族的分布来给对给定x的y建模是非常自然的事。在我们的作为指数族分布的伯努利分布公式中。我们有
ϕ=1/(1+e−η)
ϕ
=
1
/
(
1
+
e
−
η
)
。更进一步说注意到
y|x;θ
y
|
x
;
θ
~
Bernoulli(ϕ)
B
e
r
n
o
u
l
l
i
(
ϕ
)
,然后
E[y|x;θ]=ϕ
E
[
y
|
x
;
θ
]
=
ϕ
。所以由类似的推导有普通的最小二乘,有:
所以,这给了我们这样形式的假设公式 hθ=1/(1+eθTx) h θ = 1 / ( 1 + e θ T x ) ,如果你之前想过logistic的公式 1/(1+ez) 1 / ( 1 + e z ) 是怎么推导的,这就能说明GLM和指数族分布的定义是怎么来的。
再介绍一点术语,g函数以自然参数 (g(η)=E[T(y);η]) ( g ( η ) = E [ T ( y ) ; η ] ) 的方式给出了分布的均值叫做 正则响应函数。反函数 g−1 g − 1 叫做 正则链接函数。那么,高斯族的正则响应函数就是恒等函数;伯努利分布的正则响应函数是logistic函数 7。
9.3 softmax 回归
让我们看一个GLM的例子。考虑一个分类问题,其中响应变量y可以去k个值中的一个,所以
y∈{1,2,...,k}
y
∈
{
1
,
2
,
.
.
.
,
k
}
。例如相比较于二元的垃圾,非垃圾的邮件分类,我们会想把邮件分成三类比如垃圾邮件,个人邮件,工作相关邮件。响应变量依然是离散的,但现在可以选多于两个值。我们会因此根据多项来把他建立成分布的模型。
让我们对这种多项来推导一个GLM模型。为了这样,我们开始用指数族分布的形式来表达多项分布。为了要把k个输出的取值的多项分布参数化,可以用k个参数
ϕ1,...,ϕk
ϕ
1
,
.
.
.
,
ϕ
k
来表达每一个可能的输出。但是这些参数是有冗余的,或者说他们不是独立的(已经独立知道k-1个的
ϕi
ϕ
i
值可以推出最后一个,因为要满足
∑ki=1ϕi=1
∑
i
=
1
k
ϕ
i
=
1
)。所以我们只把多项用k-1个参数来表示,
ϕ1,...,ϕk−1,
ϕ
1
,
.
.
.
,
ϕ
k
−
1
,
其中
ϕi=p(y=i;ϕ),p(y=k;ϕ)=1−∑k−1i=1ϕi
ϕ
i
=
p
(
y
=
i
;
ϕ
)
,
p
(
y
=
k
;
ϕ
)
=
1
−
∑
i
=
1
k
−
1
ϕ
i
。为了简洁,令
ϕk=1−∑k−1i=1ϕi
ϕ
k
=
1
−
∑
i
=
1
k
−
1
ϕ
i
。但是要记得这不知一个参数,它由
ϕ1,...,ϕk−1
ϕ
1
,
.
.
.
,
ϕ
k
−
1
所确定。
为了把多项分布用指数族分布来表示,我们会定义如下
T(y)∈Rk−1
T
(
y
)
∈
R
k
−
1
:
不想我们之前的例子,这里没有T(y)=y;这里T(y)是k-1维的向量而不是一个实数。我们用 (T(y))i ( T ( y ) ) i 来表示向量T(y)的第i个元素。
我们现在引入一个非常有用的记号。指示函数1{ ⋅ ⋅ }当变量为真时为1,否则为0(1{True}=1,1{False}=0)。比如1{2=3}=0,1{3=5-2}=1。那T(y)和y的关系可以写作 (T(y))i=1y=i ( T ( y ) ) i = 1 y = i (在你继续读下去之前,请确保你理解为什么这是真!)。进一步说 E[(T(y))i]=P(y=i)=ϕi E [ ( T ( y ) ) i ] = P ( y = i ) = ϕ i 。
我们现在准备好证明多项分布是指数族的一类,我们有:
其中
这就完成了我们指数族形式的多项分布的公式。
链接公式(i=1,…,k)由下式给出:
为了方便,我们也定义 ηk=log(ϕk/ϕk)=0 η k = l o g ( ϕ k / ϕ k ) = 0 。翻转链接函数,导出响应函数,因此有:
这就说明 ϕk=1/∑ki=1eηi ϕ k = 1 / ∑ i = 1 k e η i ,这带回公式(7)就给出响应方程:
这个从 η η 到 ϕ ϕ 的映射称作 softmax函数。
为了完成我们的模型,我们用假设3,之前给出的 ηi η i 与x的线性相关。所以有 ηi=θTix η i = θ i T x (i=1,…,k-1),其中 θ1,...,θk−1∈Rn+1 θ 1 , . . . , θ k − 1 ∈ R n + 1 是我们模型的参数。为了标记方便,我们定义 θk=0 θ k = 0 所以像之前给出的那样, ηk=θTkx=0 η k = θ k T x = 0 。所以我们的模型假设对于给定x的y的条件分布由下式给出:
该模型应用于分类问题,其中 y∈{1,...,k} y ∈ { 1 , . . . , k } ,这成为softmax回归。这是推广了的logistic回归。
我们的假设ui输出:
换句话说,我们的假设会输出对于每个i=1,…,k p(y=i|x;θ) p ( y = i | x ; θ ) 的估计概率(即使说 hθ(x) h θ ( x ) 仅仅定义了k-1维,很清楚的是 p(y=k|x;θ)能由1−∑k−1i=1ϕi p ( y = k | x ; θ ) 能 由 1 − ∑ i = 1 k − 1 ϕ i 得到)。
最后,让我们讨论一下参数拟合。类似于我们原先的最小二乘和logistic回归的推导,如果我们有m个样本的训练集 {(x(i),y(i);i=1,...,m} { ( x ( i ) , y ( i ) ; i = 1 , . . . , m } ,希望学习该模型的参数 θi θ i ,我们可以开始写对数似然函数:
为了获得上面的第二行,我们用方程(8)的 p(y|x;θ) p ( y | x ; θ ) 定义。我们现在通过以 θ θ 的形式求 l(θ) l ( θ ) 的最大值来获得参数的最大似然估计,可以用诸如梯度上升或者牛顿法之类的方法。
- 我们用“ a:=b a := b ” 来表示(计算机程序的)赋值操作,设定变量a的数值等于变量b的数值。换句话说,该操作用b的值覆盖a的值。相对的,我们用 “ a=b a = b ”断言事实的状态,a的值等于b的值。\ ↩
- 正如我们之前所描述的那样,通常随机梯度下降用固定的学习率 α α ,但缓慢下降学习率 α α 到0,可以让参数收敛到全局最小而不是仅仅在最小值附近震荡。 ↩
- 如果我们把A’定义成这样一个矩阵,其中第(i,j)个元素是 (−1)i+j ( − 1 ) i + j 乘以A删去i行j列后的方阵的行列式,那么可以证明 A−1=A′T/|A| A − 1 = A ′ T / | A | (你可以用标准的方法算e二阶 A−1 A − 1 来验证一致性。如果要得出更一般的结论,请参考中高级的线性代数书比如Charles Curtis,1991, Linear Algebra, Springer)。 A′=|A|(A−1)T A ′ = | A | ( A − 1 ) T 得证。而且矩阵的行列式可以写成 |A|=∑jAijA′ij | A | = ∑ j A i j A i j ′ 。由于 (A′)ij ( A ′ ) i j 与 (A)ij ( A ) i j 无关(由定义),这就说明 ∂∂Aij|A|=A′ij ∂ ∂ A i j | A | = A i j ′ 。把所有的放到一起就是结果。 ↩
- 若是向量值,一般化的表达是 w(i)=exp(−(x(i)−x)Tx(i)−x2τ2) w ( i ) = e x p ( − ( x ( i ) − x ) T x ( i ) − x 2 τ 2 ) ,或者选择合适 τ τ 或者 Σ Σ 下 w(i)=exp(−(x(i)−x)T∑−1x(i)−x2) w ( i ) = e x p ( − ( x ( i ) − x ) T ∑ − 1 x ( i ) − x 2 ) 。 ↩
- 本章节的展示材料灵感来源于 Michael I.Jordan, Learning in graphical models(未出版书稿),以及McCullagh and Nelder, Generalized Linear Models(第二版) ↩
- 若我们令 σ2 σ 2 为变量,高斯分布也能以指数族的方式来表示其中 η∈R2 η ∈ R 2 现在是基于 μ和σ μ 和 σ 的二维向量为了GLM,虽说 σw σ w 参数能被当做是更广义的指数族的定义: p(y;η,τ)=b(a,τ)exp((ηTT(y)−a(η))/c(τ)) p ( y ; η , τ ) = b ( a , τ ) e x p ( ( η T T ( y ) − a ( η ) ) / c ( τ ) ) .其中 τ τ 称作分散度参数,对于高斯分布 c(τ)=σ2 c ( τ ) = σ 2 ;但是在我们的简化下,这里例子不需要考虑更一般的定义。 ↩
- 许多书用g来表示链接函数,用来 g−1 g − 1 表示响应函数法;但是注意到我们在这里用的记号是从早期的机器学习书籍继承而来,这样会与我们在剩下的课程中使用的记号更相一致。 ↩