博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
优化算法知识点整理
阅读量:4222 次
发布时间:2019-05-26

本文共 3376 字,大约阅读时间需要 11 分钟。

优化算法知识点

几种优化算法,梯度下降的种类

考虑无约束优化问题

minxf(x) m i n x f ( x )

  1. 梯度下降

梯度下降法是一种常用的一阶优化方法,是求解无约束优化问题最简单、最经典的方法之一。

其中,f(x)连续可微。若能构造一个序列 x0,x1,x2,... x 0 , x 1 , x 2 , . . . 满足

f(xt+1)<f(xt),t=0,1,2... f ( x t + 1 ) < f ( x t ) , t = 0 , 1 , 2...

则不断执行该过程即可收敛到局部极小点。

根据泰勒一阶展开:

f(x+Δx)f(x)+ΔxTf(x) f ( x + Δ x ) ≈ f ( x ) + Δ x T ∇ f ( x )

要满足 f(x+Δx)<f(x) f ( x + Δ x ) < f ( x ) , 可选择:

Δx=γf(x) Δ x = − γ ∇ f ( x )

选择合适的步长,就能通过梯度下降法收敛到局部最小

(1) 批梯度下降

原始的梯度下降算法

(2) 随机梯度下降

每次梯度计算只使用一个样本:

  • 避免在类似样本上计算梯度造成的冗余计算
  • 增加了跳出当前的局部最小值的潜力
  • 在逐渐缩小学习率的情况下,有与批梯度下降法类似的收敛速度

(3) 小批量梯度下降

每次梯度计算使用一个小批量的样本:

  • 梯度计算比单样本更加稳定
  • 可以很好的利用现成的高度优化的矩阵运算工具

.

2. 牛顿法

若f(x)二阶连续可微,则f(x)的二阶泰勒展开:

f(x)=f(x(k))+gkT(xx(k))+12(xx(k))TH(x(k))(xx(k)) f ( x ) = f ( x ( k ) ) + g k T ( x − x ( k ) ) + 1 2 ( x − x ( k ) ) T H ( x ( k ) ) ( x − x ( k ) )

其中

gk=g(x(k))=f(x(k)) g k = g ( x ( k ) ) = ∇ f ( x ( k ) )

上式表示f(x)的梯度向量在点 x(k) x ( k ) 处的值

定义海塞矩阵

H(x)=[2fxixj]n×n H ( x ) = [ ∂ 2 f ∂ x i ∂ x j ] n × n

H(x(k)) H ( x ( k ) ) 为海塞矩阵在 x(k) x ( k ) 处的值

牛顿法利用极小点的必要条件 f(x)=0 ∇ f ( x ) = 0 ,每次迭代中从点 x(k) x ( k ) 开始,求目标函数的极小点,作为第k+1次迭代值 x(k+1) x ( k + 1 )

假设 x(k+1) x ( k + 1 ) 满足 f(x(k+1))=0 ∇ f ( x ( k + 1 ) ) = 0

对f(x)的二阶泰勒展开求一阶偏导数

f(x)=gk+H(x(k))(xx(k)) ∇ f ( x ) = g k + H ( x ( k ) ) ( x − x ( k ) )

令上式为0即可求 x(k+1) x ( k + 1 )

x(k+1)=x(k)H(x(k))1gk x ( k + 1 ) = − x ( k ) − H ( x ( k ) ) − 1 g k

  • 牛顿法的优缺点总结:

优点:二阶收敛,收敛速度快;

缺点:

  • 牛顿法是一种迭代算法,每一步都需要求解目标函数的Hessian矩阵的逆矩阵,计算比较复杂;
  • 使用小批量的情形下,牛顿法对于二阶导数的估计噪音太大
  • 在目标函数非凸时,牛顿法更容易受到暗点甚至最大值点的吸引
    .

3.拟牛顿

在牛顿迭代中,需要计算海塞矩阵的逆矩阵 H1 H − 1 ,这一计算比较复杂,考虑使用一个n阶的矩阵 Gk=G(x(k)) G k = G ( x ( k ) ) 来近似代替 H(x(k))1 H ( x ( k ) ) − 1 。这就是拟牛顿法的基本想法。
- 拟牛顿条件
由海塞矩阵H_k满足的条件:

f(x)=gk+H(x(k))(xx(k)) ∇ f ( x ) = g k + H ( x ( k ) ) ( x − x ( k ) )
x=x(k+1) x = x ( k + 1 )
,即
gk+1=gk+H(x(k))(x(k+1)x(k)) g k + 1 = g k + H ( x ( k ) ) ( x ( k + 1 ) − x ( k ) )
yk=gk+1gk,δk=(x(k+1)x(k)) y k = g k + 1 − g k , δ k = ( x ( k + 1 ) − x ( k ) )
,则拟牛顿条件表示为:
yk=Hkδk y k = H k δ k
或者
Hk1yk=δk H k − 1 y k = δ k
用一个n阶的矩阵
Gk=G(x(k)) G k = G ( x ( k ) )
来近似代替
H(x(k))1 H ( x ( k ) ) − 1
,则
Gk G k
也满足拟牛顿条件
Gk+1yk=δk G k + 1 y k = δ k
每次更新:
Gk+1=Gk+ΔGk G k + 1 = G k + Δ G k
(1) DFP算法
DFP算法选择用
Gk+1 G k + 1
的方法是,假设每一步迭代中矩阵
Gk+1 G k + 1
是由
Gk G k
加上两个附加项构成的,即
Gk+1=Gk+Pk+Qk G k + 1 = G k + P k + Q k
其中
Pk,Qk P k , Q k
是待定矩阵,两边同时右乘
yk y k
Gk+1yk=Gkyk+Pkyk+Qkyk G k + 1 y k = G k y k + P k y k + Q k y k
为使
Gk+1 G k + 1
满足拟牛顿条件,可使
PkQk P k , Q k
满足:
Pkyk=δkQkyk=Gkyk P k y k = δ k Q k y k = − G k y k
取:
Pk=δkδkTδkTykQk=GkykykTGkykTGkyk P k = δ k δ k T δ k T y k Q k = − G k y k y k T G k y k T G k y k
(2)BFGS算法

最流行的拟牛顿算法,考虑使用B_k逼近海塞矩阵H,这时,相应的拟牛顿条件是

Bk+1δk=yk B k + 1 δ k = y k

首先令

Bk+1=Bk+Pk+Qk Bk+1δk=Bkδk+Pkδk+Qkδk B k + 1 = B k + P k + Q k   B k + 1 δ k = B k δ k + P k δ k + Q k δ k
考虑使
Pk P k
Qk Q k
满足:
Pkδk=yk Qkδk=Bkδk P k δ k = y k   Q k δ k = − B k δ k
找出合适条件的
Pk P k
Qk Q k
,得到BFGS算法矩阵
Bk+1 B k + 1
的迭代公式:
Bk+1=Bk+ykykTykTδkBkδkδkTBkδkkBkδk B k + 1 = B k + y k y k T y k T δ k − B k δ k δ k T B k δ k k B k δ k

4 三种求解无约束优化问题的方法的比较

  • 梯度下降法并不是下降最快的方向,它只是目标函数在当前的点的切面上下降最快的方向;牛顿法下降的方向一般被认为是下降最快的方向。
  • 梯度下降不一定能够找到全局最优解,也有可能只是一个局部最优解。如果损失函数是凸函数,梯度下降法得到的解就一定是全局最优解。
  • 从收敛速度上看 ,牛顿法是二阶收敛,梯度下降是一阶收敛,前者牛顿法收敛速度更快。但牛顿法仍然是局部算法,只是在局部上看的更细致,梯度法仅考虑方向,牛顿法不但考虑了方向还兼顾了步子的大小,其对步长的估计使用的是二阶逼近。
  • 根据wiki上的解释,从几何上说,牛顿法就是用一个二次曲面去拟合你当前所处位置的局部曲面,而梯度下降法是用一个平面去拟合当前的局部曲面,通常情况下,二次曲面的拟合会比平面更好,所以牛顿法选择的下降路径会更符合真实的最优下降路径。

文字内容来源

你可能感兴趣的文章
AtomicInteger源码解析
查看>>
CopyOnWriteArraySet源码学习
查看>>
Openfiler 配置 NFS 示例
查看>>
Oracle 11.2.0.1 RAC GRID 无法启动 : Oracle High Availability Services startup failed
查看>>
Oracle 18c 单实例安装手册 详细截图版
查看>>
Oracle Linux 6.1 + Oracle 11.2.0.1 RAC + RAW 安装文档
查看>>
Oracle 11g 新特性 -- Online Patching (Hot Patching 热补丁)说明
查看>>
Oracle 11g 新特性 -- ASM 增强 说明
查看>>
Oracle 11g 新特性 -- Database Replay (重演) 说明
查看>>
Oracle 11g 新特性 -- 自动诊断资料档案库(ADR) 说明
查看>>
Oracle 11g 新特性 -- RMAN Data Recovery Advisor(DRA) 说明
查看>>
CSDN博客之星 投票说明
查看>>
Oracle wallet 配置 说明
查看>>
Oracle smon_scn_time 表 说明
查看>>
VBox fdisk 不显示 添加的硬盘 解决方法
查看>>
Secure CRT 自动记录日志 配置 小记
查看>>
RMAN RAC 到 单实例 duplicate 自动分配通道 触发 ORA-19505 错误
查看>>
mysql 随机分页的优化
查看>>
DB2快速创建测试库
查看>>
利用db2look查看ddl
查看>>