机器学习中用到的数学知识

本文介绍了机器学习中涉及的微积分基本概念,包括极限、导数、微分、偏导数、海森矩阵、梯度、泰勒展开、原函数、牛顿莱布尼茨公式以及一元和多元函数的极值。这些概念是理解和应用机器学习算法的基础,如梯度下降法、牛顿法和无约束优化问题的解决。
摘要由CSDN通过智能技术生成

原文 http://www.cnblogs.com/dudi00/p/4056451.html

本文主要介绍学习机器学习过程中涉及到的一些微积分的基本概念,也包括部分数值分析,优化求解的概念。

极限(limit)

直观定义

当函数  y=f(x) y=f(x) 在  x0 x0 的某个去心邻域内有定义,若当  x x “无限趋近于”  x0 x0 时,其对应的函数值  f(x) f(x) “无限趋于” 一个确定的常数  A A ,则称  A A 是当  x x 趋于  x0 x0 时函数  y=f(x) y=f(x) 的极限,记作  limxx0f(x)=A limx→x0f(x)=A。这里所说的“直观定义”主要指“无限趋于”,是一种直观的说法,并没有给出确切的数学定义。

精确定义

直观定义中的“无限趋近”是个含糊不清的概念,为了更精准的用数学语言表达这个概念,很多数学家都做了努力,包括法国数学家朗贝尔(D' Alembert),法国数学家柯西(Cauchy),但最终系统的引入  εδ ε−δ 语言的是德国数学家魏尔斯得拉斯(Weierstrass)。

设  f(x) f(x) 定义在  x0 x0 的某个去心领域  N(x0) N∗(x0) ,若存在常数  A A ,对于任意给定的  ε>0 ε>0 ,存在  δ>0 δ>0 ,使得对于任意的  xN(x0,δ) x∈N∗(x0,δ),即当  0<|xx0|<δ 0<|x−x0|<δ 时,恒有  |f(x)A|<ε |f(x)−A|<ε,则称  A A 为  f(x) f(x) 当  xx0 x→x0 时的极限,记作 limxx0f(x)=A limx→x0f(x)=A

 

常数  e e

limx0(1+x)1x=e limx→0(1+x)1x=e

有很多人写过关于这个常数的博客,都把这个常数跟银行利息挂钩了,其中比较有意思的一篇是 http://www.ruanyifeng.com/blog/2011/07/mathematical_constant_e.html

 

导数(derivative)

设函数  y=f(x) y=f(x) 在点  x0 x0 的某邻域内有定义,如果极限  limΔx0f(x0+Δx)f(x0)Δx limΔx→0f(x0+Δx)−f(x0)Δx 存在,则称函数  f(x) f(x) 在  x0 x0 可导,并且称这个极限值为函数  f(x) f(x) 在点  x0 x0 处的导数,记作  f(x0) f′(x0) 或者  dfdx|x=x0 dfdx|x=x0

 

微分(differential)

设函数  y=f(x) y=f(x) 在点  x0 x0 的某邻域内有定义, Δx Δx 是自变量  x x 在  x0 x0 处的增量,如果存在一个与  Δx Δx 无关的常数  a a,使得  Δy=f(x0+Δx)f(x0)=aΔx+o(Δx) Δy=f(x0+Δx)−f(x0)=aΔx+o(Δx),则称函数  f(x) f(x) 在点  x0 x0 出可微(differentiable),关于  Δx Δx 的线性部分  aΔx aΔx 是函数  f(x) f(x) 在点  x0 x0 处的微分。记作  df(x0) df(x0)。显然有  f(x0)=a f′(x0)=a

 

导数的四则运算

设函数  f(x) f(x) g(x) g(x),在  x x 处可导,则:

(f(x)+g(x))=f(x)+g(x) (f(x)+g(x))′=f′(x)+g′(x)

(f(x)g(x))=f(x)g(x)+f(x)g(x) (f(x)⋅g(x))′=f′(x)g(x)+f(x)g′(x)

(f(x)g(x))=f(x)g(x)f(x)g(x)g2(x) (f(x)g(x))′=f′(x)g(x)−f(x)g′(x)g2(x)

 

复合函数求导

设复合函数  y=f(g(x)) y=f(g(x)),函数  g(x) g(x) 在点  x x 可导,函数 f(u) f(u)在点 u=g(x) u=g(x)可导,则复合函数 y=f(g(x)) y=f(g(x))在点  x x 可导,并且:

dydx=dydududx dydx=dydududx

 

偏导数

设二元函数  f(x,y) f(x,y) 在点  P0=(x0,y0) P0=(x0,y0) 的某个邻域有定义,固定  y=y0 y=y0,将函数  f(x,y0) f(x,y0) 看作  x x的一元函数,并在  x0 x0求导,  limΔx0f(x0+Δx,y0)f(x0,y0)Δx limΔx→0f(x0+Δx,y0)−f(x0,y0)Δx,如果这个导数存在,则称其为二元函数 f(x,y) f(x,y)在点  P0=(x0,y0) P0=(x0,y0)关于 x x的偏导数,记作 f(x0,y0)x ∂f(x0,y0)∂x。同理可以定义 f(x0,y0)y ∂f(x0,y0)∂y。可以将二元函数扩展到  n n 元函数。

 

海森矩阵(Hesse Matrix)

多元函数  f(x1,x2,,xd) f(x1,x2,…,xd) 在  x0=(x10,x20,,xd0) x0=(x10,x20,…,xd0)的所有二阶偏导数构成的矩阵 :

2fx212fx2x12fxdx12fx1x22fx222fxdx22fx1xd2fx2xd2fx2d [∂2f∂x12∂2f∂x1∂x2…∂2f∂x1∂xd∂2f∂x2∂x1∂2f∂x22…∂2f∂x2∂xd⋮⋮⋮∂2f∂xd∂x1∂2f∂xd∂x2…∂2f∂xd2]

称为函数 f(x1,x2,,xd) f(x1,x2,…,xd) 在  x=(x10,x20,,xd0) x=(x10,x20,…,xd0) 的海森矩阵,记作  Hf(x0) Hf(x0)

 

梯度

设二元函数  f(x,y) f(x,y) 在点  (x0,y0) (x0,y0) 可微,称向量 (f(x0,y0)x,f(x0,y0)y)T (∂f(x0,y0)∂x,∂f(x0,y0)∂y)T 为 f(x,y) f(x,y) 在点  (x0,y0) (x0,y0)的梯度。如果梯度是非零向量,则梯度方向是函数值增长最快的方向,负梯度是函数值下降最快的方向,这点在后面会经常用到。同样二元函数也可以很容易扩展到 n n元函数。

 

泰勒展开(Taylor's expansion)

泰勒展开主要是为了用多项式函数来近似地表示一个函数,以研究一些比较复杂的函数性质,用途非常广泛。

一元函数  f(x) f(x) 在  x=x0 x=x0 处的展开式为:

f(x)=f(x0)+f(x0)1!(xx0)+f(x0)2!(xx0)2+f3(x0)3!(xx0)3+ f(x)=f(x0)+f′(x0)1!(x−x0)+f′′(x0)2!(x−x0)2+f3(x0)3!(x−x0)3+…

ex ex 在  x=0 x=0 处的展式为:

ex=n=0xnn!=1+x+x22!+x33!+ ex=∑n=0∞xnn!=1+x+x22!+x33!+…

常见的泰勒展开公式有两种,一种带佩亚诺(Piano)余项,一种带拉格朗日(lagrange)余项。

带佩亚诺余项的泰勒展开:

f(x)=nk=0fk(x0)k!(xx0)k+o((xx0)n) f(x)=∑k=0nfk(x0)k!(x−x0)k+o((x−x0)n)

最后一项称为佩亚诺余项。

带拉格朗日余项的泰勒展开:

f(x)=nk=0fk(x0)k!(xx0)k+fn+1(ε)(n+1)!(xx0)n+1 f(x)=∑k=0nfk(x0)k!(x−x0)k+fn+1(ε)(n+1)!(x−x0)n+1

其中  ε ε介于 x x 与  x0 x0之间,最后一项成为拉格朗日余项。

多元函数  f(x1,x2,,xd) f(x1,x2,…,xd) 在  x=(x10,x20,,xd0) x=(x10,x20,…,xd0) 处的展开式为:

f(x1,x2,,xd)=f(x10,x20,,xd0)+di=1f(x10,x20,,xd0)xi(xixi0)+12!di=1j=1df(x10,x20,,xd0)xixj(xixi0)(xjxj0)+ f(x1,x2,…,xd)=f(x10,x20,…,xd0)+∑i=1d∂f(x10,x20,…,xd0)∂xi(xi−xi0)+12!∑i=1d∑j=1d∂f(x10,x20,…,xd0)∂xi∂xj(xi−xi0)(xj−xj0)+…

 

原函数

如果在区间 I 上存在一个可导函数F(x),使得 xI ∀x∈I,恒有  F(x)=f(x) F′(x)=f(x),则称F(x)为f(x)在 I 上的一个原函数。注意原函数有无穷多个,他们之间相差一个常数。

 

牛顿莱布尼茨(Newton-Leibniz)公式

设f(x)在[a,b]上连续,F(x)是f(x)在[a,b]上的一个原函数,则:

baf(x)dx=F(x)|ba=F(b)F(a) ∫abf(x)dx=F(x)|ab=F(b)−F(a)

 

一元函数极值

必要条件

如果函数  y=f(x) y=f(x) 在点  x0 x0 处取得极值(极大值或极小值),且在该点可导,则导数 f(x0)=0 f′(x0)=0

充分条件

如果函数  y=f(x) y=f(x) x0 x0的某个邻域内有一阶导数,并且 f(x0)=0 f′(x0)=0,又设 f(x0) f′′(x0) 存在,则有:

(1)如果 f(x0)>0 f′′(x0)>0,则 f(x) f(x) x0 x0取得极小值;

(2)如果如果 f(x0)<0 f′′(x0)<0,则 f(x) f(x) x0 x0取得极大值;

 

多元函数极值

必要条件

设多元函数  f(x1,x2,,xd) f(x1,x2,…,xd) x0=(x10,x20,,xd0) x0=(x10,x20,…,xd0)取得极值,如果  f(x) f(x) 在点  x0 x0 处存在偏导数  fxi ∂f∂xi,则有 fxi=0 ∂f∂xi=0(i=1,2,3...d)。

充分条件

设多元函数  f(x1,x2,,xd) f(x1,x2,…,xd) 在  x0=(x10,x20,,xd0) x0=(x10,x20,…,xd0)及其附近有连续二阶偏导数,而且  gradf(x0)=0 gradf(x0)=0,则:

(1) Hf(x0) Hf(x0)正定时, x0 x0 是极小值点;

(2) Hf(x0) Hf(x0)负定时, x0 x0 是极大值点;

(3) Hf(x0) Hf(x0)不定时, x0 x0 不是极值点; 

 

 无约束优化

假设函数  f(x) f(x)是  Rn Rn上具有二阶连续偏导数的函数,考虑无约束优化问题:

minxRnf(x) minx∈Rnf(x)

x x∗表示目标函数 f(x) f(x)的极小点。解无约束优化问题一般常用迭代算法,常用的迭代算法有梯度下降法,牛顿法和拟牛顿法。迭代公式为:

xk+1=xk+λkdk xk+1=xk+λkdk

其中 dk dk称为搜索方向, λk λk称为步长, xk xk为第k次迭代后x的值。不同的迭代算法的区别主要在搜索方向的确定上,而如何确定步长是另一个问题,这里不打算介绍。 

 

梯度下降法(Gradient Descent)

梯度下降法是一种迭代算法。选取适当的初值 x0 x0,不断迭代,更新 x x的值,直到收敛。由于梯度方向是函数值增长最快的方向,负梯度方向是函数值下降最快的方向,所以梯度下降法很自然的选择了负梯度方向为搜索方向。所以迭代公式变为:

xk+1=xkλkf(xk) xk+1=xk−λk▽f(xk)

其中 f(xk) ▽f(xk) f(x) f(x) xk xk的梯度,记为 gk gk

算法:梯度下降法

1.给定初值 x0 x0和精度阈值 ε ε,并令k :=0

2.计算 f(xk) f(xk)

3.计算  gk gk,如果 ||gk||<ε ||gk||<ε,停止迭代,令 x=xk x∗=xk;否则求步长  λk λk

4.计算新的迭代点 xk+1=xkλkgk xk+1=xk−λkgk,计算 f(xk+1) f(xk+1),如果 ||f(xk+1)f(xk)||<ε ||f(xk+1)−f(xk)||<ε或者 ||xk+1xk|| ||xk+1−xk||,停止迭代,令 x=xk+1 x∗=xk+1

5.否则,令k:=k+1,转步骤3

 

牛顿法(Newton's method)

将函数 f(x) f(x) xk xk附近做二阶泰勒展开:

f(x)=f(xk)+gk(xxk)+12(xxk)TH(xk)(xxk) f(x)=f(xk)+gk(x−xk)+12(x−xk)TH(xk)(x−xk)

其中  gk gk f(x) f(x) xk xk处的梯度值, H(xk) H(xk)为海森矩阵在 xk xk处的值。

对上面的二阶泰勒展开式两边求导得到:

f(x)=gk+Hk(xxk) ▽f(x)=gk+Hk(x−xk)

 由前面提到的多元函数极值的必要条件得知,如果函数在 x=xk+1 x=xk+1处取得极值,必有:

  f(xk+1)=0 ▽f(xk+1)=0

  x=xk+1 x=xk+1代入整理得到:

gk+Hk(xk+1xk)=0 gk+Hk(xk+1−xk)=0

所以:

xk+1=xk+(H1kgk) xk+1=xk+(−Hk−1gk)

其中 H1k)gk −Hk−1)gk称为牛顿方向,如果也引入一个步长  λk λk,则:

算法牛顿法

1.给定初值 x0 x0和精度阈值 ε ε,并令k:=0

2.计算  gk gk Hk Hk

3.如果 ||gk||<ε ||gk||<ε,停止迭代;否则确定牛顿方向  dk=H1kgk dk=−Hk−1gk,计算步长  λk λk

4.计算新的迭代点  xk+1=xk+λkdk xk+1=xk+λkdk

5.令k:=k+1,转步骤2

  Wikipedia上的一张图(绿色的线代表梯度下降法,红色的线代表牛顿法),很形象的说明了梯度下降和牛顿法的区别,梯度下降仅仅考虑了当前函数值在迭代点附近的变化,而牛顿法还考虑了函数值变化的趋势(会往等高线越来越密的方向靠),也就是二阶导数,梯度下降相当于用一个平面不断逼近,而牛顿法师用一个曲面不断逼近,所以牛顿法收敛得更快。

 

 

拟牛顿法(Quasi-Newton's method)

将在逻辑回归或者最大熵模型的时候介绍和推导

 

约束优化

在约束优化中,常常利用拉格朗日对偶性将原始问题转换成对偶问题,通过解对偶问题得到原始问题的解,在最大熵和支持向量机模型中,都用到了该方法。先看个例子:

将正数a分成n个正数之和,如何使乘积最大?

令:

f(x1,x2,,xn)=x1x2xn f(x1,x2,…,xn)=x1x2…xn

g(x1,x2,,xn)=x1+x2++xna g(x1,x2,…,xn)=x1+x2+…+xn−a

构造辅助函数:

L(x1,x2,,xn)=x1x2xnλ(x1+x2++xna) L(x1,x2,…,xn)=x1x2…xn−λ(x1+x2+…+xn−a)

Lx1=fx1+λgx1=x2x3xnλ=0 ∂L∂x1=∂f∂x1+λ∂g∂x1=x2x3…xn−λ=0

Lxn=fxn+λgxn=x1x2xn1λ=0 ∂L∂xn=∂f∂xn+λ∂g∂xn=x1x2…xn−1−λ=0

Lλ=a(x1+x2++xn)=0 ∂L∂λ=a−(x1+x2+…+xn)=0

解方程组组得到:

x1=x2==xn=an x1=x2=…=xn=an

但一般实际问题中遇到的问题比这个要复杂得多,不太好直接求解,往往会将这个问题转化成另外一个等价的问题,这就是所谓的拉格朗日对偶问题。

原始问题

f(x) f(x) ci(x) ci(x) hj(x) hj(x) 是定义在  Rn Rn上的连续可微函数,考虑约束优化问题:

minxRnf(x) minx∈Rnf(x)

s.t.ci(x)0,i=1,2,,k s.t.ci(x)≤0,i=1,2,…,k

hj(x)=0,j=1,2,,l hj(x)=0,j=1,2,…,l

称此约束最优化问题为原始最优化问题或者原始问题。

引进广义拉格朗日函数:

L(x,α,β)=f(x)+ki=1αici(x)+lj=1βjhj(x) L(x,α,β)=f(x)+∑i=1kαici(x)+∑j=1lβjhj(x)

其中  αi αi betaj betaj 是拉格朗日乘子,并且 αi0 αi≥0

考虑x的函数:

ΘP(x)=maxα,β:αi0L(x,α,β) ΘP(x)=maxα,β:αi≥0L(x,α,β)

下标P表示原始问题。注意这是关于 x 的函数, α α β β 只是约束。

如果 x 都能满足原始约束条件的话,显然有  ΘP(x)=f(x) ΘP(x)=f(x),如果存在 x 不满足条件,一定可以找到合适的  α α β β 让 f(x) 无穷大。如果考虑极小化问题:

minxΘP(x)=minxmaxα,β:αi0L(x,α,β) minxΘP(x)=minxmaxα,β:αi≥0L(x,α,β)

显然该问题的解与原始问题的解释等价的,即他们有相同的解。问提 minxmaxα,β:αi0L(x,α,β) minxmaxα,β:αi≥0L(x,α,β)称为广义拉格朗日函数的极小极大问题。定义原始问题的的最优值为:

p=minxΘP(x) p∗=minxΘP(x)

 

对偶问题

定义 α α β β的函数:

ΘD(α,β)=minxL(x,α,β) ΘD(α,β)=minxL(x,α,β)

再考虑极大化问题:

maxα,β:αi0ΘD(α,β)=maxα,β:αi0minxL(x,α,β) maxα,β:αi≥0ΘD(α,β)=maxα,β:αi≥0minxL(x,α,β)

问题  maxα,β:αi0minxL(x,α,β) maxα,β:αi≥0minxL(x,α,β) 称为广义拉格朗日函数的极大极小问题。

将这个极大极小问题表示称约束最优化问题:

maxα,βΘD(α,β)=maxα,βminxL(x,α,β) maxα,βΘD(α,β)=maxα,βminxL(x,α,β)

s.t.αi0,i=1,2,,k s.t.αi≥0,i=1,2,…,k

称为原始问题的对偶问题。定义对偶问题的最优值为:

d=maxα,β:αi0ΘD(α,β) d∗=maxα,β:αi≥0ΘD(α,β)

 

原始问题与对偶问题的关系

如果原始问题和对偶问题都有最优值,则有  dp d∗≤p∗

假设 f(x) f(x) ci(x) ci(x)是凸函数, hj(x) hj(x)是仿射函数,并且不等式约束  ci(x) ci(x)严格可行(即存在x,对所有的c(x)<0),则 x x∗ α α∗ β β∗分别是原始问题和对偶问题的解的充要条件是 x x∗ α α∗ β β∗满足KKT(Karush-Kuhn-Tucker)条件:

xL(x,α,β)=0 ∇xL(x∗,α∗,β∗)=0

αL(x,α,β)=0 ∇αL(x∗,α∗,β∗)=0

βL(x,α,β)=0 ∇βL(x∗,α∗,β∗)=0

αici(x)=0,i=1,2,,k αi∗ci(x∗)=0,i=1,2,…,k

ci(x)0,i=1,2,,k ci(x∗)≤0,i=1,2,…,k

αi0,i=1,2,,k αi≥0,i=1,2,…,k

hj(x)0,i=1,2,,l hj(x∗)≥0,i=1,2,…,l

 

练习题

最后附上CMU的一套简单测试题,可以用来你是否具备学习机器学习入门的数学基础。

http://www.cs.cmu.edu/~aarti/Class/10701_Spring14/Intro_ML_Self_Evaluation.pdf

 

参考资料

http://en.wikipedia.org/wiki/Taylor_series

http://en.wikipedia.org/wiki/Newton's_method_in_optimization

统计学习方法 李航著

微积分 清华大学出版社

大学数学实验 高等教育出版社

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值