梯度寻优

1.最优化原理

\quad\quad 自然界总是以最小代价取得最大收益,比如一束光线在介质中传播时路线是需时最少的路径,这被称作费马原理(Fermat’s principle)。

在这里插入图片描述
最优化已经深深影响了人类生活的方方面面,比如经济、生产、军事、资源配置等等。促使人们创造数学理论来解决这类问题。二战及战后极大促进了最优化理论的发展,后期尤其是计算机的发明给该理论注入新的活力。

\quad\quad 那么最优化具体研究的是什么呢?最优化理论研究的问题是判定给定目标函数的最大值(最小值)是否存在,并找到令目标函数取到最大值(最小值)的数值。

\quad\quad 人工智能问题最后都会归结为一个优化问题的求解:在复杂环境与多体交互中得出最优决策。最优决策目标就是找全局最值,进一步转化为找最小值,理想情况下,最优化算法的目标就是找到全局最小值。当目标函数的输入参数较多、解空间较大时,绝大多数算法都不能满足全局搜索,只能求出局部最小值。人工智能与深度学习从大自然中得到启发,将神经元抽象成网络节点,神经元链接关系抽象为节点连通关系。因此,神经网络可以看成一个变换函数,将输入空间变换到特征空间的一种函数。人工智能和深度学习求解过程就是寻找和逼近的过程,只要目标函数的取值足够小,就可以把这个值当作最小值使用,作为对性能和复杂度的折中。

2.全局最优与局部最优

\quad\quad 如果函数是凸函数,则局部最优就是全局最优。理想是丰满的,现实是骨感的,真实的函数绝大多数是非凸的。
在这里插入图片描述

全局最优与局部最优

\quad\quad 在创建算法的征途中,能构造出凸函数用于解决问题将是多么幸福的事,平时多修炼数学内力,有助于提升解决问题能力。
那么怎么判断一个函数是不是凸函数呢?所谓的凸函数就是曲线满足不等式: f ( α x 1 + ( 1 − α ) x 2 ) > = f ( α x 1 ) + f ( ( 1 − α ) x 2 ) f({\alpha x_1+(1-\alpha )x_2})>=f(\alpha x_1)+f((1-\alpha )x_2) f(αx1+(1α)x2)>=f(αx1)+f((1α)x2),其中 x 1 , x 2 ∈ I , α ∈ [ 0 , 1 ] x_1,x_2\in I,\alpha\in[0,1] x1,x2Iα[0,1],则称 f f f I I I上的曲线是凸的,否则称 f f f是凹的。

在这里插入图片描述

凸函数

除了用定义方法判断凸函数,下列方法判定方法也是常用的:

1.如果 f 1 , f 2 , f 3 , ⋯   , f k f_1,f_2,f_3,\cdots,f_k f1,f2,f3,,fk是凸的,则线性组合 Φ ( x ) = ∑ i = 0 n λ i f i ( x ) \Phi(x)= \sum_{i=0}^{n}{\lambda_if_i(x)} Φ(x)=i=0nλifi(x),其中 λ i ≥ 0 ( i = 1 , 2 , ⋯   , k ) \lambda_i\geq 0(i=1,2,\cdots,k) λi0(i=1,2,,k) Ψ ( x ) = m a x 1 ≤ i ≤ k f i ( x ) \Psi(x)=max_{1\leq i \leq k} f_i(x) Ψ(x)=max1ikfi(x)都是某集合的凸函数。

2. f f f在n维欧式空间的子集D上可微,若 x , y ∈ D x,y\in D x,yD满足:
f ( y ) − f ( x ) ≥ ∇ f ( x ) T ( y − x ) f(y)-f(x) \geq \nabla f(x)^T(y-x) f(y)f(x)f(x)T(yx)则称 f ( x ) f(x) f(x)在D上是凸函数。

3.设 f ( D ) f(D) f(D) D D D ⊆ \subseteq R n R^n Rn上二阶可微, f ( x ) f(x) f(x)的Hessian矩阵半正定,则 f f f是D内的凸函数。
在诸如牛顿法等梯度方法中,使用黑塞(Hessian)矩阵的正定性可以非常便捷的判断函数是否有凸性,也就是是否可收敛到局部/全局的最优解。

3.梯度迭代

3.1引言

\quad\quad 笛卡尔说:“一切问题都可以转化为数学问题,一切数学问题都可以转化为代数问题,而一切代数问题又可以转化为方程问题”。进一步地方程问题可以转化为迭代问题,迭代问题可以转化为计算机程序问题。现在看虽然有点夸张,但不少问题可以按照上述形式解决。在应用场景中,可以分为线性问题和非线性问题。对于线性问题一般可以简化为 A x = B Ax=B Ax=B形式,其中 A A A是非奇异的。数学方程成为线性方程问题。

在这里插入图片描述
一般数值方法中采用高斯消元法解方程,但实际方程 A A A的阶数很大,而且是稀疏矩阵,用高斯消元法在算力上不够,而采用迭代逼近法求解。

举例说明迭代法的思想

例1 已知方程组的形式为:

{ 8 x 1 − 3 x 2 + 2 x 3 = 20 4 x 1 + 11 x 2 − x 3 = 33 6 x 1 + 3 x 2 + 12 x 3 = 36 (1) \begin{cases} 8x_1-3x_2+2x_3=20\\ 4x_1+11x_2-x_3=33\\ 6x_1+3x_2+12x_3=36\\ \end{cases} \tag{1} 8x13x2+2x3=204x1+11x2x3=336x1+3x2+12x3=36(1)
记上式为 A x = b \bm A\bm x=\bm b Ax=b,其中
A = [ 8 − 3 2 4 11 − 1 6 3 12 ] \bm A=\left[ \begin{matrix} 8 & -3 & 2\\4 & 11 & -1 \\ 6 &3& 12 \end{matrix} \right] A=84631132112 x = [ x 1 x 2 x 3 ] x=\left[ \begin{matrix} x_1 \\ x_2 \\x_3 \end{matrix}\right] x=x1x2x3 b = [ 20 33 36 ] b=\left[ \begin{matrix} 20 \\ 33 \\36 \end{matrix}\right] b=203336
此方程精确解为: x ∗ = ( 3 , 2 , 1 ) T \bm x^*=(3,2,1)^T x=(3,2,1)T
我们将方程改写成可以迭代的形式,改成:
{ x 1 = 1 8 ( 3 x 2 − 2 x 3 + 20 ) x 2 = 1 11 ( − 4 x 1 + x 3 + 33 ) x 3 = 1 12 ( − 6 x 1 − 3 x 2 + 36 ) (2) \begin{cases} x_1=\frac{1}{8}{(3x_2-2x_3+20)}\\ x_2=\frac{1}{11}{(-4x_1+x_3+33)}\\ x_3=\frac{1}{12}{(-6x_1-3x_2+36)} \end{cases} \tag{2} x1=81(3x22x3+20)x2=111(4x1+x3+33)x3=121(6x13x2+36)(2)
抽象成 x = B 0 x + f \bm x=\bm B_0\bm x+f x=B0x+f。其中,
B 0 = [ 0 3 8 − 2 8 − 4 11 0 1 11 − 6 12 − 3 12 0 ] , f = [ 20 8 33 11 36 12 ] B_0=\left[ \begin{matrix} 0 & \frac{3}{8} & -\frac{2}{8} \\-\frac{4}{11} & 0 & \frac{1}{11} \\ -\frac{6}{12} & -\frac{3}{12} & 0 \end{matrix} \right] , f=\left[ \begin{matrix} \frac{20}{8} \\ \frac{33}{11} \\ \frac{36}{12} \end{matrix}\right] B0=0114126830123821110,f=82011331236
取初始值 x ( 0 ) = ( 0 , 0 , 0 ) T x^{(0)}=(0,0,0)^T x(0)=(0,0,0)T,将初始值带入(2)式右侧,得到新值 x ( 1 ) = ( x 1 ( 1 ) , x 2 ( 1 ) , x 3 ( 1 ) ) T = ( 2.5 , 3 , 3 ) T x^{(1)}=(x_1^{(1)},x_2^{(1)},x_3^{(1)})^{T}=(2.5,3,3)^T x(1)=(x1(1),x2(1),x3(1))T=(2.5,3,3)T,再将 x ( 1 ) x^{(1)} x(1)带入(2)式右侧得到 x ( 2 ) x^{(2)} x(2),如此循环迭代,得到序列 ( x ( 0 ) , x ( 1 ) , ⋯   , x ( k ) ) (x^{(0)},x^{(1)},\cdots,x^{(k)}) (x(0),x(1),,x(k)).迭代公式为:
x ( k + 1 ) = B 0 x ( k ) + f \bm x^{(k+1)}=\bm B_0x^{(k)}+f x(k+1)=B0x(k)+f
k = 0 , 1 , 2 , ⋯ k=0,1,2,\cdots k=0,1,2,表示迭代次数。迭代10次后,
x ( 10 ) = ( 3.000032 , 1.999874 , 0.999881 ) T x^{(10)}=(3.000032,1.999874,0.999881)^T x(10)=(3.000032,1.999874,0.999881)T
与精确值比较一下 ∣ ∣ ϵ ( 10 ) ∣ ∣ = x ( 10 ) − x ∗ = 0.000125 \mid \mid \epsilon^{(10)} \mid \mid=x^{(10)}-x^*=0.000125 ϵ(10)=x(10)x=0.000125
除了上述迭代法、还有 Jacobi迭代法、高斯-塞德尔迭代法、超松弛法、共轭梯度法等。

3.2梯度下降法

对于一般函数 f ( x ) f(x) f(x)求最值问题怎么与方程求解关联起来呢?
从微积分中我们知道如果函数 f ( x ) f(x) f(x)在有界闭区域D上连续,那么 f ( x ) f(x) f(x)在D上必定能取得最大值和最小值,取得最大值或最小值的点既可能在D的内部,也可能在D的边界上。假定函数在D上连续,在D内可微且有有限个驻点,这时函数的D的内部取得最大值(最小值),那么这个最大值(最小值)也是函数的极大值(极小值)。因此求解最值问题,一般先求D内驻点,再求边界上的最值点,比较驻点和边界点的最值 ,其中最大的就是最大值,最小的就是最小值。在实际求解中,如果知道最值点在D内取得,直接求解 f ( x ) f(x) f(x)的极值即可。
结合机器学习的训练过程,目的就是将成本函数 f ( x ) = c o s t ( x ) f(x)=cost(x) f(x)=cost(x)降为最小值,实际情况下,成本函数的最值在内部取得。 f ( x ) f(x) f(x)的极值点是 f ′ ( x ) = 0 f'(x)=0 f(x)=0的点。
成本函数一般是非线性的,这时需要迭代求解,求解极小值按照函数减小的方向寻找,那么减小最快的方向是梯度下降的方向,这就是梯度下降法的由来。迭代公式表示为:
x k + 1 = x k + ρ k ∇ f ( x k ) x_{k+1}=x_k+\rho_k \nabla f(x_k) xk+1=xk+ρkf(xk)
其中 ρ k \rho_k ρk表示学习率,迭代跨度,用于调节计算速度。

在这里插入图片描述

梯度下降示意
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值