- 数学基础
- 线性代数
- 函数的可微性与展开
- 凸优化问题
- 无约束问题的最优性条件
- 线搜索
- 梯度法和牛顿法
- 共轭方向法和共轭梯度法
- 拟牛顿法
- 有约束的最优化问题
- 约束最优化问题的最优性条件
- 约束优化问题的可行方向法
- 罚函数
- 划重点
拟牛顿法
考:提出的思想是什么
希望用一个对称正定矩阵 B 去近似 Hesse 矩阵 G
或者是用一个对称正定矩阵 H 去近似 Hesse 矩阵 G 的逆
并且要求这个方法比较简单,不然还不如直接求 G
考:方程是什么(条件是什么)
因为 G 满足
G k + 1 ( x k + 1 − x k ) ≈ g k + 1 − g k G_{k+1}(x_{k+1}-x_{k}) \approx g_{k+1} - g_{k} Gk+1(xk+1−xk)≈gk+1−gk
如果记 s k = x k + 1 − x k , y k = g k + 1 − g k s_k = x_{k+1}-x_{k}, y_k = g_{k+1} - g_{k} sk=xk+1−xk,yk=gk+1−gk
那么上式转化为
G k + 1 s k ≈ y k G_{k+1}s_k \approx y_k Gk+1sk≈yk
那么我们的问题就转化为找一个 B 满足
B k + 1 s k ≈ y k B_{k+1}s_k \approx y_k Bk+1sk≈yk
或者是找一个
实际迭代用一个修正公式
B k + 1 = B k + E k B_{k+1} = B_k + E_k Bk+1=Bk+Ek
对称秩一校正
考:对称秩一校正公式是怎么得到的
E k = a u k u k T E_k = a u_k u_k^T Ek=aukukT 一个自由度
因为 u k u k T u_k u_k^T ukukT 这个矩阵的每一列都是 u k T u_k^T ukT 这个列向量的 u i u_i ui 倍
所以这个矩阵线性无关的列只有一个,那就是 u k T u_k^T ukT 所以秩为 1
α ( u k T s k ) u k = y k − B k s k \alpha(u_k^T s_k)u_k = y_k-B_ks_k α(ukTsk)uk=yk−Bksk
s k s_k sk 是列向量, u k T u_k^T ukT 是行向量, ( u k T s k ) (u_k^T s_k) (ukTsk) 是一个数,所以 u k u_k uk 与 y k − B k s k y_k-B_ks_k yk−Bksk 平行
所以把 u k u_k uk 写成 y k − B k s k y_k-B_ks_k yk−Bksk 的倍数
初始 B 0 = I B_0 = I B0=I 显然是对称正定
之后要确定方向的时候,还是要求解 G d = − g Gd = -g Gd=−g 也就是求解这个 B d = − g Bd = -g Bd=−g 中的 d
也就是要求一个 B B B 的逆,一般是可以接受的
但是如果你是用 H H H 取近似 G G G 的逆
那么直接就能 d k = − H k g k d_k = -H_k g_k dk=−Hkgk 了
目标函数的计算耗时
一阶导用差分来算的话,至少算两次目标函数,那么更耗时
二阶导同理,至少算四次目标函数,更耗时,所以才要避免计算 G
对称秩二
加两个修正的话,有两个参数,能够修正的范围就更多
现在在推导的时候没有那个关键条件 左边的列向量和右边的列向量是平行的
现在的问题是,右端的向量 y k − B k s k y_k-B_ks_k yk−Bksk 位于左边的 u k , v k u_k,v_k uk,vk 张成的平面上
那么其实两个基向量的系数可以任取
那么我们就取一中最简单的情况,就是 y k − B k s k y_k-B_ks_k yk−Bksk 中的 y k y_k yk 与 u k u_k uk 平行, B k s k B_ks_k Bksk 与 v k v_k vk 平行
DFP, BFGS
BFGS, DFP 怎么推导得到的
对称正定
考:BFGS, DFP 每一步校正的时候,怎么保证 Bk 对称正定?
还要证明迭代得到的 B k B_k Bk 也是对称正定,那么就是要求这个条件
书上结论错了,不是说有一个对称正定矩阵 B,就能把这个对称正定矩阵分解为对称正定矩阵 B 1 2 B 1 2 B^{\frac{1}{2}}B^{\frac{1}{2}} B21B21
这里实际上应该是对称正定矩阵的 Cholesky 分解(Cholesky 分解是 LU 分解对对称正定矩阵的特殊情况)
Cauchy-Schwarz 不等式 ( a ⋅ b ) 2 ⩽ ( a ⋅ a ) ( b ⋅ b ) (a \cdot b)^2 \leqslant (a \cdot a)(b \cdot b) (a⋅b)2⩽(a⋅a)(b⋅b)
同样的是 ∫ ( a ⋅ b ) 2 d x ⩽ ∫ ( a ⋅ a ) ( b ⋅ b ) d x \int(a \cdot b)^2 \mathrm{d}x \leqslant \int(a \cdot a)(b \cdot b) \mathrm{d}x ∫(a⋅b)2dx⩽∫(a⋅a)(b⋅b)dx
一个向量像另外一个向量投影再投影回他自身,得到的向量的长度,小于它自身的长度
因为 B 是对称正定,所以 B d = − g Bd = -g Bd=−g 有唯一解 d
同时还有 0 < d T B d = − d T g 0<d^TBd = -d^Tg 0<dTBd=−dTg,所以解得的 d 与下降方向 -g 成锐角,所以能够保证下降
所以之前这一段在证啥来着
所以问题怎么就转化成了 保证 y k T s k > 0 y_k^Ts_k > 0 ykTsk>0?
那么问题转变成,你怎么保证 y k T s k > 0 y_k^Ts_k > 0 ykTsk>0
对于精确线搜索,有 g k + 1 T d k = 0 g^T_{k+1} d_k = 0 gk+1Tdk=0,故 y k T s k = α k ( g k + 1 − g k ) T d k = − α k g k T d k > 0 y_k^Ts_k = \alpha_k(g_{k+1}-g_k)^T d_k = -\alpha_k g^T_k d_k > 0 ykTsk=αk(gk+1−g