写在前面:自学机器学习的菜鸟一枚,希望通过记录博客的形式来记录自己一点点的进步~
下面都是学习过程中自己的一些思考和学习,希望大神们批评指正。
首先,百度了一波,搜到了一个泰勒展开式入门的短短6分钟的视频,好像突然感受到了一点点数学的美。还有发现其实真的没有必要死记公式啊。泰勒展开式的入门浓浓的台湾腔调啊。
泰勒公式的表达式:就是下面这个看起来很复杂的公式。
【对于泰勒展开式存在性的一些思考】
一切事物都是存在即是合理,严密而美好的数学更是如此。
关于多项式 (x−a)2
在历史的进程中,多项式是人们最熟悉的函数。对于一些比较复杂的函数,要对这些函数进行处理的时候,我们希望能够近似的将这些函数用我们熟悉的函数来表示。这就是为什么泰勒展开式中会有多项式的成分。当我们可以用这个多项式表示一个函数时,就应该更进一步的思考一下这个多项式之前的系数。
关于系数 fn(a)n!
这个系数刻画了“一叶知秋”的含义。“一叶知秋”:一片叶子掉下来,就知道秋天来了。
对于x=a这个点的领域,我们知道了它的一些信息:一阶变化率(知道了函数是增还是减),二阶变化率(知道了是凹还是凸)…..到n阶变化率)通过这些信息,基本就可以想象出这个函数的样子,一点看全的这种感觉。
下面对泰勒展开式进行推导,这里是学习了[YuanLiangDing的博客](http://blog.sina.com.cn/s/blog_5d323f950101ieyo.html)
里面介绍的很详细,在这里就不浪费时间敲字了。
只稍微补充一下文中提到的:从函数的线性近似 f(a+Δx)=f(a)+f′(a)Δx 来估计函数值。
如上图所示(字丑图丑)要估计a点的函数值,我们无法直接代入a来计算。所以就通过取 a+Δx 这一点的函数值,使 Δx→0 时 f(a) 和 f(a+Δx) 近似相等。函数在a点的斜率为 tanα 忘记画出 α 了。
易知
将式(3)代入式(2)就得出了线性近似,也就是泰勒的一阶展开:
上面的的图片上已经有点函数定积分的几何意义的那个图的感觉了吧。这里就比较好理解为什么泰勒展开式会是由微积分基本定理,就是牛顿莱布尼茨公式通过一系列的换元,转换,得到了泰勒展开式。
这里是学习了luoleicn的专栏里关于牛顿法的文章很通俗易懂。
总结如下:
牛顿法主要有两方面的应用:
1、求方程的根(函数比较复杂,没有求根公式)。
2、应用于最优化方法求解无约束问题的最优解(通常是求函数的极大极小值)
这里马上就用到了刚刚泰勒展开式推导过程中用到的函数的线性近似公式,也就是泰勒公式的一阶展开。
原理: f(a+Δx)=f(a)+f′(a)Δx
步骤:
(1). 第一步选取初始点,构造一阶泰勒展开式。
在 x0 处展开到一阶泰勒公式: f(x)=f(x0)+f′(x0)(x−x0)
求解 f(x)=0⟹f(x0)+f′(x0)(x−x0)=0
设 x1 是上式的解:
x1=x0−f′(x0)f(x0)
虽然这个 x1 并不是 f(x)=0 的解,但它比 f(x0) 更靠近0。
(2).迭代公式
xn+1=xn−f′(xn)f(xn)
根据上面公式迭代,必定能找到一个 x∗ 使得 f(x∗)→0 。
1、二维情况
任务:优化目标函数 f ,通常是求 f 的极大极小值的问题。(基本所有的最优化问题都可以用 minf(x)的问题 来描述)
补充:
(1) 函数极小值的一阶必要条件:若 x∗∈D 是一个极小点,则必有 f′(x∗)=0
(2) 函数极小值的二阶必要条件:若 x∗∈D 是一个极小点,则必有 f′(x∗)=0 && f′′(x∗)>0
所以求 f 的极小值问题可以转换为求 f′(x)=0 的解的问题。这就可以转化为上面的求方程根的方法了。
对目标函数进行二次函数近似:
f′(x)=0⟹f′(x0)+f′′(x0)(x1−x0)=0
⟹x1=x0−f′(x0)f′′(x0)
⇓
推出迭代公式: xn+1=xn−f′(xn)f′′(xn)
正规来说就是对函数 f(x) 进行二阶泰勒展开:
原理: f(a+Δx)=f(a)+f′(a)Δx+12f′′(x)Δx2
对函数 f(x) 近似二次函数近似。
f(x)=f(xa)+f′(xa)(x−xa)+12f′′(xa)(x−xa)2
求解 f′(x)=0⟹{f(xa)+f′(xa)(x−xa)+12f′′(xa)(x−xa)2}′=0
2、高维度
这里x就不是简单的一个数字了,而是一个矩阵,更应该说是一个n维的列向量。
推导过程和上面类似,这里我对包含矩阵的函数的求导还没有思考清楚,就贴上公式吧
之后再具体学习一下。
Xn+1=Xn−G−1kgk
2015/10/29 first version
推导高维度的牛顿公式:
f(X),X 为n维列向量,表示含有n个变量。
2015/11/3 second version