人工智能的四要素是算法、算力、数据和场景,之所以能够智能,离不开长期发展的数学原理,人工智能背后强有力的支撑便是数学、物理等基础学科,本篇笔者浅谈、分享一下个人详学习人工智能的一个前期知识储备阶段对数学方面的积累,列举一些重要、常见的数学公式、算法。
一元函数微分学
导数的几何意义和物理意义
导数的几何意义------切线的斜率
曲线y=f(x)在点A处切线的斜率就是函数f(x)在点A处的导数
导数的物理意义------瞬时速度
如果物体按s=f(t)的规律做变速直线运动,则在某一刻的瞬时速度即为函数在该时刻的导数
基本初等函数
两个特殊极限:
二阶导数判断凹凸性_泰勒展开式
函数的凹凸性:
为了研究函数曲线的弯曲方向,引入了"凹凸性"的概念
- 如果连接曲线上任意两点的割线段都在该两点间的曲线弧之上,那么该段曲线弧称为凹的,反之则为凸的。
设f(x)在[a,b]上连续,在(a,b)内具有二阶导数
若函数f(x)在(a,b)内有f''(x)>0,则函数曲线在[a,b]上是凹的;
若函数f(x)在(a,b)内有f''(x)<0,则函数曲线在[a,b]上是凸的;
例如:x^2^的二阶导数是2,恒大于0,所以在其定义域内是凹的。
泰勒公式
泰勒公式是一个非常重要的内容,它将一些复杂的函数近似地表示为简单的多项式函数,泰勒公式这种化繁为简的功能,使得它成为分析和研究许多数学问题的有力工具。
- 泰勒展开是通过多项式函数来近似一个可导函数 f(x),在 x=x~0~ 处进行泰勒展开
- 很多时候函数 f(x)可能会非常复杂,这时可以使用泰勒展开做一个近似
- 一元函数泰勒展开
函数 f(x)在含 x~0~ 的某个开区间 (a,b)内具有直到 n 阶导数,则对任意的 x∈(a,b)有
其中,x~0~是泰勒公式的展开点,R~n~(x)是泰勒公式的余项。
线性代数基础
向量
向量概念
向量是线性代数里面最基本的概念,表示的是一组有序的数,它可以表示大小和方向
X = (X~1~,X~2~,...X~n~)
和向量相对应,⼀个数字,称为标量
向量的意义
- 几何意义:是空间中的点
- 物理意义:矢量(例如:速度、力)
欧式空间
n 维向量集合的全体就构成了 n 维欧式空间,R^n^
例如,所有二维向量构成了二维欧氏空间;所有三维向量构成了三维欧氏空间。
行向量与列向量
行向量与列向量没有本质的区别 只是表现形式不同
行向量是按行把向量排开,列向量是按列把向量排开
在数学中我们更多的把数据写成列向量
向量的基本运算
- 向量的加法
就是它们的分量分别相加,显然两个向量的长度得是相等的
同理,向量的减法就是它们的分量分别相减
- 数乘运算(实数与向量相乘)
使用实数和这个向量的每个数据分别相乘
- 转置
把列向量变成行向量,把行向量变成列向量
向量的范数
范数的公式是向量每个分量绝对值p次方求和,再用幂函数计算p分之一
向量的范数就是把向量变成一个标量,范数的表示就是两个竖线来表示,然后右下角写上p
- 范数公式:
1范数L1
2范数L2
向量的模
向量的长度叫做向量的模,用两个竖线包起来的向量就代表向量的模,例如:||a||
对于一个n维向量,它的模为:
向量的内积(点乘)
两个向量的内积(点乘)等于对应位置相乘再相加
两个向量的内积的本质是变成一个标量
向量的应用------余弦相似度
使用两向量夹角θ的余弦值cosθ来表示两个向量的相似度,称为余弦相似度。余弦相似
度的范围是:[-1,1],夹角越小,余弦值越接近于1,两个向量越靠近,两者越相似。两个向
量有相同的指向时,余弦相似度的值为1;两个向量夹角为90°时,余弦相似度的值为0;两
个向量指向完全相反的方向时,余弦相似度的值为-1。这个多用来处理文本相似度分析,结合欧氏
距离来做综合判断,查找与我们询问的主题更贴切的内容。
余弦相似度公式为:
其中,<a,b>表示的是向量a和向量b的内积,||a||和||b||分别表示向量a和向量b的模(长度)。
例如,向量a=(X~1~,Y~1~),向量b=(X~2~,Y~2~),代入余弦相似度公式可以得到:
可以将其推广至n维向量空间:
若向量a=(X~1~,X~2~,X~3~,...,X~n~),向量b=(Y1,Y2,Y3,...,Yn),其夹角的余弦值(余弦相似度)可
以表示为:
矩阵
认识矩阵
矩阵实质上就是一张数表,矩阵是对向量的拓展。矩阵一般使用大写字母表示。
如下图所示,矩阵A表示由mxn个数排成 ,是一个m行n列的数表。
则A矩阵叫做m行n列矩阵,简称mxn矩阵。这mxn 个数叫做矩阵A的元素,a~ij~叫做矩阵A的第i行第j列的元素。
方阵、对称矩阵、单位矩阵
- 方阵
行数与列数相等的矩阵,称为方阵。 (行数与列数都等于n的矩阵,称为n阶方阵)
- 对称矩阵
对称矩阵是指以主对角线(从左上角到右下角的对角线)为对称轴,各元素对应相等的矩阵。
例如:
就是个对称矩阵。
- 单位矩阵
形如下面的n阶方阵,称为单位矩阵
特点:主对角线都是1,其它位置是0
注意
对称矩阵、单位矩阵都是方阵!
矩阵的基本运算
矩阵的加减
矩阵的加减法就是矩阵的对应位置相加减
矩阵的数乘
用实数与矩阵的每个元素相乘
转置
矩阵的转置就是行变列,列变行,变成一个新的矩阵
注意
对称矩阵的转置矩阵是其本身!
例如:下面这个对称矩阵的转置矩阵仍是其本身
矩阵乘法
矩阵和向量的乘法
矩阵T与向量a相乘
- 矩阵T的列数必须和向量a的元素个数一致
- 分别用矩阵的每一行与向量进行内积(点乘)运算,得到的数作为结果向量的某个元素
- 矩阵T实际上将向量a转换成了向量b
- 可以把矩阵理解成向量的函数
矩阵和矩阵的乘法
前提:左矩阵的列数必须与右矩阵的行数一致
矩阵与矩阵的乘法可以看作:左矩阵分别与右矩阵的每一列(相当于列向量)相乘,得到的每一个列向量作为结果矩阵的每一列
例子:
注意
对于单位矩阵E,如果满足与矩阵A相乘的条件,则:EA=AE=A
矩阵乘法的运算规律
逆矩阵
逆矩阵的定义
对于n阶方阵A,如果存在n阶方阵B,使AB=BA=E,E为单位矩阵,则称方阵A是可逆的,并称方阵B为方阵A的逆矩阵,简称A的逆,记为A^-1^.
- 可逆矩阵一定是方阵,并且逆矩阵一定是其同阶方阵
- 定义中A与B互为逆阵
- 可逆矩阵也叫做非奇异矩阵 (non-singular);不可逆矩阵叫做奇异矩阵 (singular)
逆矩阵的性质
- 可逆矩阵的逆矩阵是唯一的
- 若A可逆,则A^-1^也可逆,且(A^-1^)^-1^=A
- 若A可逆,则A^T^也可逆,且(A^T^)^-1^=(A^-1^)^T^
- 若A、B为同阶方阵且均可逆,则AB也可逆,且(AB)^-1^=B^-1^A^-1^
多元函数微分学
多元函数微分
偏导数
- 偏导数是针对多元函数(有多个自变量的函数)的导数
- 对于多元函数,对其中的某一个自变量求导数,把其它的自变量看成常量,那就是该多元函数关于这个自变量的偏导数
举个栗子:
高阶偏导数
对于多元函数,依次对变量反复求导,就是所谓的高阶偏导数
举个栗子:
梯度
- 在机器学习中,梯度这个概念是很常见的
- 对于一个多元函数,如果它的自变量有 n个:x~1~,x~2~,...x~n~,则分别对各个自变量求偏导数,构成一个向量,称之为梯度
雅可比矩阵
雅可比矩阵的概念
假设F:R~n~ → R~m~是一个从n维欧氏空间映射到m维欧氏空间的函数。这个函数由m个实函数组成:y~1~(x~1~,...,x~n~), ..., y~m~(x~1~,...,x~n~)。这些函数的偏导数(如果存在)可以组成一个m行n列的矩阵,这个矩阵就是所谓的雅可比矩阵:
举个栗子:
函数F由y~1~与y~2~两个函数组成
雅可比矩阵的作用
简化求导公式,在神经网络的反向传播中能发挥很大的作用
hessian矩阵
hessian Matrix(黑塞矩阵),又译作海森矩阵、海瑟矩阵、海塞矩阵等,是一个多
元函数的二阶偏导数构成的方阵。
有一个n元函数,它的 hessian矩阵是一个 n*n 的矩阵,如下所示:
注意
hessian矩阵是对称矩阵
举个栗子:
hessian矩阵的作用
hessian矩阵常用于牛顿法解决优化问题。
线性代数高级
线性代数高级
二次型
- 二次型概念
二次型可以使用向量与矩阵相乘的形式表示
举个栗子:
为了研究方便,二次型使用x^T ^ A ^ x的形式表示,其中,中间的矩阵A为对称矩阵
特征值与特征向量
设A是n阶方阵,如果数λ和n维非零向量x使关系式Ax = λx成立,那么,λ称为方阵A的特征值;非零向量x称为A的属于特征值λ的特征向量。
举个栗子:
数3为方阵[4 -2,1 1]的特征值;非零向量(2,1)为方阵[4 -2,1 1]的属于特征值3的特征向量。
注意
- 特征值与特征向量是针对方阵而言的
- 特征向量是非零向量
- 同一个特征值λ对应无穷多个特征向量
特征值分解
特征值分解是将一个矩阵分解成下面的形式:
其中Q是这个矩阵A的特征向量组成的矩阵,Σ是一个对角矩阵(只有对角线上有非0元素的矩阵称为对角矩阵),对角线的值是由矩阵所有特征值构成的。
每一个对角线元素就是一个特征值,里面的特征值是由大到小排列的,这些特征值所对应的特征向量是描述这个矩阵变化的方向(从主要的变化到次要的变化排列)。也就是说矩阵A的信息可以由其特征值和特征向量表示。
对于矩阵为高维的情况下,那么这个矩阵就是高维空间下的一个线性变换。可以想象,这个变换也同样有很多的变换方向,我们通过特征值分解得到的前N个特征向量,那么就对应了这个矩阵最主要的N个变化方向。我们利用这前N个变化方向,就可以近似这个矩阵(变换)。
注意
- 特征值分解可以得到特征值与特征向量
- 特征值表示的是这个特征到底有多重要,而特征向量表示这个特征是什么
- 特征值分解是针对于方阵而言
多元函数的泰勒展开
回顾:一元函数泰勒展开
函数 f(x)在含 x~k~ 的某个开区间 (a,b)内具有直到 n 阶导数,则对任意的 x∈(a,b)有
其中,x~0~是泰勒公式的展开点,R~n~(x)是泰勒公式的余项。
展开二项的形式为:
多元函数的泰勒展开
f(x~k~)是标量,而且是个常数;不过注意(x-x~k~)是个向量,然后T转置这里是把梯度和(x-x~k~)做内积;二次项的内积,是和 hessian 矩阵做内积。
多元函数泰勒展开是非常有用的,例如在推导梯度下降法,牛顿法的时候会用的到。
矩阵的秩
k阶子式
在mxn矩阵A中,任取k行k列(1≤k≤min{m,n}),位于这些行列交叉处的k^2^个元素,按照它们在A中所处的位置所构成的k阶行列式叫做矩阵A的一个k阶子式。
注意
- 行列式是由一些数值排列成的数表按一定的法则计算得到的一个数
- 行列式的行数和列数是相等的
- mxn矩阵A的k阶子式共有C~m~^k^C~n~^k^个
矩阵的秩的定义
如果在矩阵A中有一个r阶子式D的值不等于零,而所有r+1阶子式(如果存在的话)的值都等于零,则称数r为矩阵A的秩,记作R(A)。规定零矩阵的秩为0。
矩阵的秩的性质
- R(A)=R(A^T^)
- R(A~mxn~) ≤ min(m,n)
- 对于n阶方阵A,若|A|≠ 0,有R(A)=n,则称A为满秩矩阵;若|A|= 0,则R(A)<n,则称A为降秩矩阵。满秩矩阵是可逆矩阵,降秩矩阵是不可逆矩阵。
SVD分解定义
SVD分解
奇异值分解(Singular Value Decomposition),是在机器学习领域广泛应用的算法,是很多机器学习算法的基石。
矩阵的奇异值分解是指,将一个非零的mxn实矩阵A,A∈R^mxn^,表示为以下三个实矩阵乘积形式的运算,即进行矩阵的因子分解:
其中,U是m阶正交矩阵,V是n阶正交矩阵,∑是由降序排列的非负的对角线元素组成的mxn矩形对角矩阵(注意这里Σ并不是一个方阵,而是 m*n 的矩阵),满足:
σ~i~称为矩阵A的奇异值,U的列向量称为左奇异向量;V的列向量称为右奇异向量
注意
特征值分解只能针对于方阵而言,而奇异值分解可以应用于任意形状矩阵
SVD分解的应用
在实际应用中,你将观察到的只有前几个很大的奇异值。其余的奇异值接近于零。
因此,可以忽略除前几个之外而不会丢失大量信息。
- SVD用于图像压缩
图片压缩利用了在SVD之后仅获得的一些奇异值很大的原理,它将图像的大小(以字节为单位)最小化到可接受的质量水平。这意味着你可以在相同磁盘空间中存储更多图像。
- SVD用于降维
SVD分解允许我们将原始矩阵表示为低秩矩阵的线性组合。
概率论
随机事件与概率
随机事件与随机事件概率
- 随机事件
在一定条件下可能发生也可能不发生的事件叫做随机事件,简称事件。例如,扔一次骰子,结果是5点;生男生女等等。一般使用大写字母(例如A、B)表示一个随机事件。
一定会发生的事件,称为必然事件
一定不会发生的事件,称为不可能事件
必然事件和不可能事件是两种特殊的随机事件
- 随机事件概率
每一个随机事件都关联有一个发生的概率,叫做随机事件概率,使用P表示,例如,A代表抛硬币正面朝上这个随机事件,则P(A)就代表这个随机事件的概率,显然,P(A)=0.5.
贝叶斯公式
条件概率
对于任意两个事件A,B,其中P(B)>0,称
为已知事件B发生的条件下事件A发生的条件概率
举个栗子:
有5个乒乓球,其中3个新的两个旧的。每次取一个,无放回地取两次。记A={ 第一次取到新球},B={第二次取到新球}。试求概率P(A),P(AB),P(B|A)
概率乘法公式
由条件概率的定义得:
对于任意的事件A,B,
- 若P(A) > 0,则P(AB) = P(A)P(B|A)
- 若P(B) > 0,则P(AB) = P(B)P(A|B)
注意
概率乘法公式可以推广到有限多个事件的情形:
设A~1~,A~2~,...,A~n~ 满足 P(A~1~A~2~...A~n-1~) >0,
则P(A~1~A~2~...A~n~) = P(A~1~)P(A~2~|A~1~)P(A~3~|A~1~A~2~)...P(A~n~|A~1~A~2~...A~n-1~)
贝叶斯公式
贝叶斯公式得到的结果是后验概率(知道结果,求某个原因的概率)
在已知事件B发生的条件下(结果),计算导致B发生的某个原因A~j~的条件概率,就可使用下面的贝叶斯公式
举个栗子:
有朋自远方来,他选择坐火车、轮船、汽车或飞机的概率分别为0.3,0.2,0.1和0.4.而如果坐火车则迟到的概率为0.25,坐轮船为0.3,坐汽车为0.1,坐飞机则不会迟到。问:
(1):此人最终可能迟到的概率是多少?
(2):若已知此人最终迟到了,他是乘坐轮船来的概率是多少?
解:
(1) 以A1,A2,A3,A4分别表示事件"选择的交通工具是火车、轮船、汽车、 飞机",可知P(A1)=0.3,P(A2)=0.2,P(A3)=0.1,P(A4)=0.4.再以B表示事件"此人 最终迟到",则P(B|A1)=0.25,P(B|A2)=0.3,P(B|A3)=0.1,P(B|A4)=0。
则
- 所求即为P(A2|B),则根据贝叶斯公式可得
随机变量
随机变量的定义
给定一个随机试验,如果对试验中每一个可能出现的结果w,都有一个实数X(w)与之对
应,那么就把这个实值单值函数X=X(w)叫做随机变量。
例如:随机抛一枚硬币,只有两种可能的结果:正面、反面。如果记正面为1,反面为0,即随机变量为:X(正面)=1,X(反面)=0。
随机变量的分类
先补充一个概念------分布函数
设X是一个随机变量(包括离散型和非离散型),x是任意实数,称函数F(x)=P(X ≤ x)为随机变量X的分布函数。
- 离散型随机变量
若随机变量X的所有可能取值为有限个或可列无限个,则称X为离散型随机变量
对于离散型随机变量及其对应的概率有如下性质:
;;𝑃(𝑋=𝑥𝑖)=𝑝𝑖𝑝𝑖≥0;∑𝑖=1∞𝑝𝑖=1;
- 连续型随机变量
对于有些问题,我们并不感兴趣随机变量取某一个值的概率,而是感兴趣其落在某个区间的概率。例如:灯泡的寿命,我们并不感兴趣其寿命恰好为2.53年的概率,而对其寿命在某一个区间的概率进行研究。这样就引出了连续型随机变量。
连续型随机变量的分布函数值F(x)是下图中的阴影部分面积
注意
- 离散型随机变量在某一范围内取值的概率等于它取这个范围内各个值对应的概率之和
- 连续型随机变量取某个确定值的概率值是0
数学期望与方差
离散型随机变量的数学期望
注意
对概率大的取值,该值出现的机会就大,也就是在计算取值的平均时其权重就大,因此用概率作为一种"权重"做加权计算平均值
举个栗子:
假设买彩票有 0.2 的概率中 500 万,0.3 的概率中 1 万,0.5 的概率中 0.1 万,那可能的收益不可能用 500+1+0.1 来平均一下,肯定要考虑概率值
500x0.2 +1x0.3 + 0.1x0.5(每个事件发生的权值)
连续型随机变量的数学期望
举个栗子:
设随机变量X的概率密度为
求E(X).
解:依题意,得
方差
随机变量X的方差反映了X与其数学期望E(X)的偏离程度,如果X取值集中在E(X)附近,则方差D(X)较小;如果X取值比较分散,则方差D(X)较大。
通用方差公式:
常用随机变量服从的分布
二项分布
伯努利概型
做了n次试验,且满足
(1) 每次试验只有两种可能结果,即A发生或A不发生
(2) n次试验是重复进行的,即A发生的概率每次均一样
(3) 每次试验是独立进行的,即每次试验A发生与否与其他次试验A发生与否是互不 影响的
这种试验称为伯努利概型,或称为n重伯努利试验
例如: 将一骰子掷4次,观察出现6点的次数------4重伯努利试验
**定理:**在n重伯努利试验中,用p表示每次试验A发生的概率,记n次试验中事件A出现k次,则
二项分布
若随机变量X的分布律为
则称随机变量X服从参数为n,p的二项分布。记为X~b(n,p)。
注意
- 二项分布的背景是:n重伯努利试验中事件A发生的次数X~b(n,p),其中p为一次试验中A发生的概率
- 当n=1时的二项分布X~b(1,p),又称为0-1分布(例如,扔一次硬币,观察正面朝上的次数)
正态分布
正态分布是一种连续型随机变量分布
若随机变量X的概率密度为
则称随机变量X服从参数为μ、σ^2^的正态分布,记为X~N(μ,σ^2^)。其中μ,σ(σ>0)为常数
右图可见,μ决定了图形的中心位置,当μ取不同值时,图形沿着x轴平移,而不改变其形状。
注意
自然界和生活中很多事件都服从正态分布或者近似服从正态分布的,比如人的身高、体重、收入等
随机向量与随机变量的独立性
随机向量
线性代数中,我们把标量 x 推广到向量,就是它有多个分量。
同样我们把单个随机变量可以推广到随机向量,就是它有多个分量,这样就有了随机向量的概念了。
以二元随机向量为例:
随机变量的独立性
两个随机变量如果相互独立的话,它们的联合概率密度函数等于它们分别的概率密度函数乘积。
推广到多个随机变量相互独立:
f (x~1~, x~2~ ,.., x~n~ ) = f (x~1~) f (x~2~ )... f (x~n~ )
这和随机事件的形式上是统一的,f 换成符合 P 就可以了。
注意
在实际问题中,判断两个随机变量是否相互独立,往往不是用数学定义去验证。而常常是由随机变量的实际意义去考证它们是否相互独立。如掷两枚骰子的试验中,两枚骰子出现的点数,两个彼此没有联系的工厂一天产品中各自出现的废品件数等都可以认为是相互独立的随机变量。
协方差
协方差的定义
设(X,Y)是二维随机变量(二元随机向量),称
为X与Y的协方差,记为cov(X,Y)
由定义可推导得出协方差的常用计算公式:
注意
对比方差与协方差的计算公式:
- 方差:D(X)=E(X^2^)-[E(X)]^2^,协方差:cov(X,Y)=E(XY)-E(X)E(Y)
- 随机变量X与其自身的协方差就是X的方差
协方差的意义
- 协方差反映的是X与Y之间协同发展变化的趋势
- 协方差刻画了两个随机变量之间的线性关系
协方差矩阵
对于 n 维的向量 X,它的协方差就构成了一个协方差矩阵,第一个是 X~1~ 和 X~1~ 的协方差, 第一行第二列是 X~1~ 和 X~2~ 的协方差,第一行第 n 列是 X~1~和 X~n~ 的协方差。协方差矩阵的对角线上是各变量的方差。
最优化
最大似然估计
最大似然估计法是由德国数学家高斯在1821年提出的 。 然而,这个方法常归功于英国统计学家费歇。因为费歇在1922年重新发现了这一方法,并首先研究了这种方法的一些性质。
引例:
某同学与一位猎人一起外出打猎。忽然,一只野兔从前方窜过,只听一声枪响,野兔应声倒下。若让你推测一下,是谁击中的野兔,你会怎样想?你会想:只一枪便击中,一般情况下猎人击中的概率比同学击中的概率大,故这一枪极大可能是猎人打的。这一想法中就已经包含了最大似然估计原理的基本思想。
最大似然估计原理:
最大似然估计通过已知结果去反推最大概率导致该结果的参数。比如,现在已经得到样本值a1,a2,...an了,这表明取到这一样本值的概率比较大,而取到其他样本值概率比较小。它提供了一种给定观察数据来评估模型参数的方法,即 "模型已定,参数未知",通过若干次试验,观察其结果,利用实验结果得到某些参数值能够使样本出现的概率为最大。
举个栗子:
最优化理论介绍
最优化问题
最优化问题就是求 f(x)的最大值或者最小值,往往求最小值(比如损失函数的最小值),然后找出对应的模型参数
比如上面这个损失函数的图像,有两个局部最小值(也叫极小值),我们需要找到的是最小值,于是就分为两个步骤:
- 先找到所有的局部最小值
- 对所有的局部最小值再次进行比较,找到一个最小的,就是全局最小值了
- 找出全局最小值位置对应的模型参数
迭代求解
如何从当前一个点移动到下一个点上面去,也就是怎么从 x~k~ 到 x~k+1~,迭代法是我们计算机数学中经常采用的一种方法。迭代的关键就是选择合适的搜索方向, 然后再确定步长,从当前位置移动到下一个位置,判断损失函数是否达到最小值,从而找到对应的模型参数。
梯度下降法
在最小化损失函数时,可以通过梯度下降法来一步步的迭代求解,得到最小化的损失函数和模型参数值。
梯度下降法
在机器学习中,对于很多监督学习模型,需要对原始的模型构建损失函数,接下来便是通过优化算法对损失函数进行优化,最小化损失函数,以便寻找到最优的参数。于是,基于搜索的梯度下降法就产生了。
梯度下降法是通过当前点的梯度的反方向寻找到新的迭代点,并从当前点移动到新的迭代点继续寻找新的迭代点,直到找到最优解。
以下图为例:
上图中,η 称为学习率(learning rate),有时候也写作α,其取值影响获得最优解的速度
通过这个公式,在梯度下降法中不断搜索最佳的θ值。
牛顿法
牛顿法的基本思想
在现有的极小值估计值的附近对f(x)做二阶泰勒展开,进而找到极小点的下一个估计
值,反复迭代直到函数的一阶导数小于某个接近0的阀值。最终求出极小点的估计值。
牛顿法的优缺点
优点:
- 牛顿法既用到了一阶导数的信息,也用到了二阶导数的信息
- 牛顿法是用二次函数来代替目标函数,所以牛顿法的收敛速度是更快的
缺点:
- hessian矩阵不一定可逆
- 即使hessian矩阵可逆, 当 hessian 矩阵规模很大,非常耗时
坐标下降法
坐标下降法
坐标下降法是一种非梯度优化算法。算法在每次迭代中,在当前点处沿一个坐标方向
进行一维搜索以求得一个函数的局部极小值。在整个过程中循环使用不同的坐标方向。例如,要最小化函数f(x),即:min f (x), x = (x~1~, x~2~ ,..., x~n~ )
它的思想是按住其它的不动,只优化其中一个比如 x1 ,那就把多元函数求极值问题变成了一元函数求极值问题,这样优化的难度就小了很多,紧接着我们把其它的按住不动,再优化x2,一直到 xn ,完了之后再回来优化 x1,把所有的从 x1、 x2 到 xn 优化一遍,就好比梯度下降迭代一次,计算的工作量小。
案例演示
假设我们有目标函数f(x,y)=5x^2^-6xy+5y^2^,其等高线图如下所示,求(x, y)以使得目标函数在该点的值最小。
图中红色十字标示的是起始点(-0.5, -1.0),此时f =3.25。现在我们固定x,将f
看成关于y的一元二次方程并求当f最小时y的值:
即现在自变量的取值就更新成了(-0.5, -0.3), f = 0.8。
下一步,将新得到的y值固定,将f看成关于x的一元二次方程并求当函数最小时x的值。计算过程与上一步相似,由于计算过于简单,我们直接绘制出经过多轮如上迭代后自变量(x,y)的运动轨迹:
可见,随着(x, y )依次在相应坐标轴上的移动,目标函数逐渐接近其极小值点,直至在某次迭代中函数得不到优化,即达到某一驻点后停止。
数值优化算法面临的问题
- 局部极值问题
要求全局最优解,要把所有极小值找出来,可能要不断的去设置不同的初始迭代点,
反复的求解让它收敛到不同的局部最小值,然后来比较谁最小来找到一个全局最小值。
- 鞍点问题
一元函数 x^3^函数,在坐标为 0 处它是驻点,但是它连局部最小值点都不是,对应多元函数来说,我们称之为鞍点(既不是极大值点也不是极小值点的临界点,叫做鞍点)。
凸优化问题与凸集
凸优化问题
前面我们说过数值优化面临两个问题,一个是局部极值问题,和鞍点问题,我们能不能避免这两个问题呢?只要我们对优化问题进行限定就可以,这类问题有两个限定条件:
- 优化变量的可行域必须是凸集
- 优化函数必须是个凸函数
同时满足这两个限定条件的问题,叫做凸优化问题。一个凸优化问题的局部最优解就是它的全局最优解。
凸集
对于一个点的集合C,有 x,y 它都是属于C里面的两个点,它们两点的连线中任何一点也是属于集合C的。例如,立方体是凸集,但是任何中空的或具有凹痕的例如月牙形都不是凸集。
注意
- 凸集的交集也是凸集
- 凸集的并集不一定是凸集
凸函数
凸函数定义
设函数f定义在凸集D上,若对于∀x,y∈D及 0≤θ≤1,都有f(θx+(1-θ)y)<θf(x)+(1-θ)f(y),则称f为凸函数。
从图形上看,就是:凸函数在函数上任意找两点它们的连线(也就是割线)上的值比对应的函数的值要大。
凸函数的判定
以一元函数为例,若函数f(x)有f''(x)>0,则函数f(x)就是凸函数。例如:函数f(x)=x^2^,对应的二阶导是f''(x)=2,大于0,则f(x)=x^2^是一个凸函数。
拉格朗日乘子法
基本思想
拉格朗日乘子法主要用于解决有约束优化的问题,它的基本思想就是通过引入拉格朗日乘子来将含有n个变量和k个约束条件的约束优化问题转化为含有(n+k)个变量的无约束优化问题。
有约束最优化问题
将2l长的铁丝折成一个长为x,宽为y的长方形,如何折才能使得面积最大