梯度下降法和泰勒公式

第一部分:泰勒公式

在高数中,引出相关需求,其描述如下:

对于一些较复杂的函数,为了便于研究,往往希望用一些简单的函数来近似表达。由于用多项式表示的函数,只要对自变量进行有限次的加,减,乘三种算数运算,便能求出它的函数值,因此我们经常用多项式近似表达函数。

简单说来,就是:在误差允许的前提下,我们用多项式(简单函数)来近似代替复杂函数,使得复杂函数的应用更加方便

所以说,泰勒公式是使用多项式对目标函数的近似,当然为了提高精度,使用了高次多项式

泰勒(Taylor)中值定理1:如果函数f(x)在x0处具有n阶导数,那么存在x0的一个领域,对于该领域的任一x,有:

佩亚诺余项(近似误差):

我们可以利用泰勒公式对未知函数进行估计,过程如下:

设下图是我们要估计的函数图形:

梯度下降法和泰勒公式_第1张图片

我们不知道函数图形的全部,只知道一小部分:

梯度下降法和泰勒公式_第2张图片

 使用泰勒公式,已知点是这一个函数片段的端点,通过泰勒公式我们可以估计函数片段端点的一个极小领域内的值,若我们用一阶泰勒展开式进行计算的话,效果应该如下:

梯度下降法和泰勒公式_第3张图片

 每一次估计之后,下一次使用上一次的结果再进行估计(迭代过程),每一个估计片段链接起来,就是我们在已知函数片段下,对函数整体的估计。我们可以使用更高阶的泰勒展开来估计函数,这要看对应的应用场景而定。

现在我们只要知道一个函数的一个点的取值和该点的变化率(导数),就可以对函数整体进行估计。

 

第二部分:梯度下降(上升)法

在优化方法中最常提到的方法——梯度下降法

什么是最优化问题?

在百度百科中的定义如下:

工程设计中最优化问题(optimization problem)的一般提法是要选择一组参数(变量),在满足一系列(约束条件)下,使设计指标(目标)达到最优值。

设,我们有一个数据集,每一项数据有两个值(x:属性,y:标签),都是数值型的,我们认为每一项的属性和标签是符合某个函数关系的,即:

 我们希望这个函数尽可能的符合真实的属性-标签之间的关系,我们用欧氏距离来度量,预测关系和真实关系的差距,当这个差距足够小,我们就可以使用

 来近似这种关系。

所以我们有如下最优化目标

这是一个关于w的函数,取不同的数据集,有不同的结果,我们要求这个函数取最小值时的w ,当然我们可以选择对函数求导,令导数等于0,就可以求解,我们不采取这种方法(在现实任务中,一阶导数等于0这个式子不容易求解)。

我们选择一种看上去比较蠢,但是实用的方式:对w一点点的调整,我们希望每一次调整,计算结果都在减小,这是一个迭代过程,直到w的调整无法使函数值下降,我们认为此时的w是最优的w。(这就是梯度下降的基本思想)

设w每次的调整为:w-w0=ηv,因为w是一个参数向量,所以其变化用η(步长,变化大小,标量),v(变化方向,单位向量)来表示。我们需要求v(变化方向),使得函数的变化最快,在v未知的情况下,怎么得到调整后的函数值呢?

此时就可以使用泰勒公式对函数值进行估计,表示如下(使用一阶泰勒展开式):

表示为w的方程为:

因为w-w0=ηv ,有:

因为每次参数w调整之后,函数值减小,有:

 

 因为步长η是一个标量,不影响符号,所以先省略,得到:

 v是一个单位向量,函数的导数也是一个向量(函数增长方向),那么两个向量的乘积在什么时候小于0呢?

如下是向量的乘积:

当cos(α)<0,时向量乘积小于0 ,因为我们希望下降速度是最快的,所以令cos(α) = -1,即两个向量的方向相反。

那么知道了v与f'(w0)方向相反,且是个单位向量,所以v为:

因为 

是个标量,那么将它并入η ,则w的更新公式为:

这就是梯度下降法,梯度上升是求最大值时用的,即把上式中的-换成+

你可能感兴趣的:(数学,机器学习)