牛顿方法
牛顿方法是一种比梯度下降更快的找到极值的算法。
过程及原理
在前一章的讲解中已经知道了拟合的本质是在给定x和 的条件下出现y的概率的极大似然估计,最终通过对极大似然函数的对数使用梯度上升法来迭代求出极大值(可能是最大值)。
那么现在我们换种思路来求极大似然函数的局部最大值,我们知道极值点的导数(如果存在)都为0,因此我们只需要求出使得 的 即可。
而牛顿方法是用来求一个函数的零点的方法,所谓牛顿方法就是通过某些步骤求出 的零点,从而得到 的过程:
某个函数 的图像如下:
{% asset_img markdown-img-paste-20180214170331655.png %}
由图可知 ,因此 y以此类推可以得到一个递推公式:
按这个公式进行迭代,最终能够得到这个函数 的零点。
上面就是牛顿法求函数零点的方法,现在我们用它来寻找 的零点:
函数导数的零点就是函数的可能极值点。
牛顿法迭代的特点
-
初始值影响不大(一般初始化为全零即可)
这是Andrew的原话,但是我觉得如果函数导数有多个零点,则初始点的选取是能够直接影响得到的结果的,不知道老师为什么要这么说。
收敛速度快。这个方法的收敛速度是“二次收敛”,即每次迭代结果和最终结果之间的误差指数级减小。
这个方法不是对所有函数都适用,适用的函数有复杂的限制,这里不讲。
-
当参数 是高维的情况下:
其中H是Hessian矩阵:
牛顿方法相比于梯度上升发的缺点是每次迭代都需要计算Hessian矩阵的逆矩阵,这是一个 维的矩阵,因此一般只在特征较少时(十几个)使用牛顿法。
广义线性模型(Global Linear Model)
之前的课程中了解了两类模型:
-
线性回归:
且符合高斯分布(正态分布)<- 线性函数
-
logistic回归:
且符合伯努利分布(0-1分布)<- sigmod函数(或logistic函数):
上一份笔记的末尾留了一个问题:为什么选择logistic函数来建模伯努利分布呢?为什么线性回归和logistic回归使用的函数不同,迭代过程却十分相似呢?
这是因为它们两个都是指数分布族的特殊情况。
指数分布族(Exponential Family)
一般 。
伯努利分布还原为指数分布族形式
从上面的结果可以看出,伯努利分布是指数分布族在
时的特殊情况。可以将 用 表示出来再代入 的表达式,这样就可以得到变量统一的 :
高斯分布还原为为指数分布族形式
高斯分布: .
因为在之前高斯分布的参数拟合(梯度下降迭代)过程中,我们发现参数 的值并不影响迭代过程,也就不影响最终拟合出来的参数,因此为了简化推导过程,我们设 。
因此,高斯分布是指数分布族在
时的特殊情况。
不仅是高斯分布和伯努利分布,伽马分布、泊松分布都能够写成指数分布族的形式。
构建广义线性模型
广义线性模型符合下述三个假设:
- 给定 , 目的是输出一个期望 使得 最大。
- ,即 和 之间是线性关系。更一般的情况下(是向量)则: .
第三个假设,其实更准确地说是我们在设计GLMs时的一种设计选择(design choice)。有了这些假设和设计选择,我们才能够推导出优美的、具有许多有优良性质的学习算法,也就是GLMs。
在GLMs的基础上,我们如何从概率模型构造出数学函数呢?下面以之前讲过的两个模型为例:
构造出线性回归问题的函数
我们已经分析过,线性回归问题中的目标变量 (学术上称 为“响应变量”)符合高斯分布,那么仅仅知道这一点,我们如何将这个概率模型具体化为某个函数来模拟参数呢?下面用GLMs来做到这一点:
之前已经证明高斯分布是指数分布族的特殊情况。即
对于给定的 ,算法预测 (此处 ),因此输出的是
构造出二分类问题中使用的logistic函数
下面使用GLMs从伯努利概率分布函数自然地推导出logistic函数:
。这个之前已经推导过。
对于给定的 ,目标是预测一个 ,而在大多数情况下 。因此算法输出
正则响应函数(canonical response function)
上述构造过程中的
也称为正则响应函数。
正则关联函数(canonical link function)
而 被称为正则关联函数。
Softmax Regression
课程中使用GLMs推导了二项分布模型的数学表达式,由于过程复杂且本人学习重点不在这里,因此就不记录了,有兴趣可以看讲义,里面有详细过程。
GLM是一个强大的建模工具
从上面的例子中我们可以看到,有了GLM之后,我们所要做的仅仅是决定对某个问题我们使用哪种概率模型即可。决定了之后,如果这个概率模型属于是指数分布族(大多数情况下都是这样),那么就可以通过上述步骤“自动地”得出用于模拟这个概率模型的含参数学表达式。