目录

markdown
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
1. 目录
2. 模拟方法与误差
2.1. 模拟方法
2.2. 误差分析
2.2.1. 向前误差和向后误差 Forward Error and Backward Error
2.2.2. 敏感性与病态性 Sensitivity and Conditioning
2.2.3. 条件数 Conditional Number
2.2.3.1. 向量的条件数
2.2.3.1. 方阵的条件数
2.2.3.2. 误差限
2.2.4. 截断误差和舍入误差 Truncation Error and Round-off Error
3. 线性方程组的求解
3.1. 矩阵的秩
3.2. 方程组解的个数
3.2.1. 非奇异矩阵 Nonsingular Matrix
3.3. 范数/模 Norm
3.3.1. 向量的范数
3.3.1.1. Euclidean Norm
3.3.1.2. H-Norm
3.3.2. 矩阵的范数
3.3.2.1. p-范数诱导的矩阵范数
3.3.2.2. Frobenius Norm
3.4. 求解线性方程组的方法
3.5. Gauss 消去法
3.5.1. 初等消去矩阵
3.5.2. Gauss 消去法内容
3.6. 共轭梯度法 Conjugate Gradient Method
3.6.1. 先置知识
3.6.2. 矩阵A共轭向量
3.6.3. 当已知某个矩阵A共轭向量集合时
3.6.4. 共轭梯度法的收敛性
3.6.5. 迭代系数alpha的设计
3.6.6. 如何产生矩阵A共轭向量集合{p_i}
3.6.6.1. Expanding Subspace Minimization
3.6.6.2. 基于矩阵A共轭向量集合{p_i}特性产生{p_i}
3.6.7. 共轭梯度法算法步骤
3.7. 迭代法 Iterative Method (待更新)
3.7.1. 雅可比迭代法 Jacobi Method (待更新)
3.7.2. 高斯-塞德尔迭代法 Gauss-Seidel Method (待更新)
4. 线性最小二乘问题 (待更新)
5. 无约束优化
5.1. 优化基础
5.2. 下降方法的收敛性
5.2.1. 关于收敛
5.2.2. 部分下降方法的收敛性
5.3. 最速下降法 Steepest Descent Method
5.4. 牛顿法 Newton-Raphson Method
5.4.1. 收敛性
5.5. 实用牛顿法 Practical Newton Method
5.5.1. 信赖域方法 Trust-Region Newton Methods
5.6. 拟牛顿法 Quasi-Newton Method
5.6.1. 拟牛顿条件/割线条件
5.6.2. DFP方法
5.6.2.1. DFP算法步骤
5.6.3. BFGS方法
5.6.3.1. BFGS算法步骤
6. 关于学习中的一些补充 (待更新)

模拟方法与误差

计算模拟重要方法:迭代法、逼近法

一般策略:

  • 用有限维空间代替无限的空间。
  • 用有限过程代替无限过程。
  • 用代数方程代替微分方程。
  • 用线性问题代替非线性问题。
  • 用低阶方程组代替高阶方程组。
  • 用简单函数代替复杂函数。
  • 用简单结构的矩阵代替一般矩阵。

近似的来源:

  • 建模:这个过程可能简化,或者和忽略问题或者系统的某些物理特性。
  • 经验测量:实验设备精度所限。
  • 前面的计算:输入的数据可能是中间数据,其结果只能是近似值。

误差分析

  • 绝对误差 = 近似值 - 真值
  • 相对误差 = 绝对误差 / 真值

总误差 = 计算误差 + 数据传播误差 ,比如

Δf(x)=f^(x^)f(x)=(f^(x^)f(x^))ComputationalError+(f(x^)f(x))PropagatedDataError\Delta f(x)=\hat f(\hat x)-f(x)=\underbrace{(\hat f(\hat x)-f(\hat x))}_{ComputationalError}+\underbrace{(f(\hat x)-f(x))}_{PropagatedDataError}

向前误差和向后误差

若有 y=f(x)andy^=f(x^)y=f(x)\quad and \quad\hat y=f(\hat x) ,则Δy=y^y\Delta y=\hat y-y 为向前误差;Δx=x^x\Delta x=\hat x-x 为向后误差。

fig1.2

fig1.2

f(x^)=f^(x)f(\hat x)=\hat f(x) 是因为x^\hat x的定义来自误差。

Note that the equality $\hat f(x)=f(\hat x)$ is due to the choice of $\hat x$; indeed, this requirement *defines* $\hat x$.

敏感性和病态性 Sensitivity and Conditioning

在某些情况下,即便计算是完全精确的,问题的解对数据的扰动也可能是高度敏感的。

The qualitative notion of *insensitive*, and its quantitative measure, called *conditioning*, are concerned with propagated data error, i.e., the effects on the solution of perturbations in the input data.

  • 如果输入数据的相对变化对解的相对变化影响相对适中,则是不敏感 (insensitive) 的,或者良态 (well-conditioned) 的。
  • 如果影响很大,则是敏感 (sensitive) 的,或者病态 (ill-conditioned) 的。

条件数

解的相对变化与输入数据的相对变化的比值称为条件数。(一个问题的条件数远远大于1,则是病态的。)

Conditionnumber=(f(x^)f(x))/f(x)(x^x)/x=y^yyx^xx=Δy/yΔx/xCondition\quad number=\frac{|(f(\hat x)-f(x))/f(x)|}{|(\hat x-x)/x|}=\frac{|\frac{\hat y-y}{y}|}{|\frac{\hat x-x}{x}|}=|\frac{\Delta y/y}{\Delta x/x}|

Δy/yRelativeForwardError=Conditionnumber×Δx/xRelativeBackwardError\underbrace{|\Delta y/y|}_{Relative\quad Forward\quad Error} = Condition\quad number \times \underbrace{|\Delta x/x|}_{Relative\quad Backward\quad Error}

取$\hat f(x)-f(x)=f(\hat x)-f(x)\simeq f'(x)\Delta x$,有条件数≈$|\frac{xf'(x)}{f(x)}|$

向量的条件数

x=(x1,x2,,xn)T,y=F(x)=(f1(x),f2(x),,fn(x))T\vec x=(x_1,x_2,\cdots,x_n)^T,\qquad \vec y=\boldsymbol{F}(\vec x)=(f_1(\vec x),f_2(\vec x),\cdots,f_n(\vec x))^T

Δyi=j=1nfi(x)xjΔxj\Delta y_i=\sum_{j=1}^n\frac{\partial f_i(\vec x)}{\partial x_j}\Delta x_j

由于

ϵyi=Δyifi(x),ϵxj=Δxjxj\epsilon_{y_i}=\frac{\Delta y_i}{f_i(\vec x)},\quad \epsilon_{x_j}=\frac{\Delta x_j}{x_j}

所以

ϵyi=1fi(x)j=1nfi(x)xjxjϵxj\epsilon_{y_i}=\frac{1}{f_i(\vec x)}\sum_{j=1}^n\frac{\partial f_i(\vec x)}{\partial x_j}x_j \epsilon_{x_j}

即条件数

Conditionnumber=(x1f1(x)f1(x)x1x2f1(x)f1(x)x2x1f2(x)f2(x)x1x2f2(x)f2(x)x2)Condition\quad number=\left( \begin{array}{ccc} \frac{x_1}{f_1(\vec x)}\frac{\partial f_1(\vec x)}{\partial x_1} & \frac{x_2}{f_1(\vec x)}\frac{\partial f_1(\vec x)}{\partial x_2} & \cdots\\ \frac{x_1}{f_2(\vec x)}\frac{\partial f_2(\vec x)}{\partial x_1} & \frac{x_2}{f_2(\vec x)}\frac{\partial f_2(\vec x)}{\partial x_2} & \cdots\\ \vdots & \vdots & \ddots \end{array} \right)

方阵的条件数

非奇异矩阵的条件数定义为cond(A)=AA1cond(\mathbf A)=\|\mathbf A\|\cdot \|\mathbf A^{-1}\|

***Proof:***

在有误差的情况下,有$\mathbf A(\vec x+\delta\vec x)=\vec b+\delta \vec b$。

因此$\|\delta \vec x\|=\|\mathbf A^{-1}\delta \vec b\|\leq \|\mathbf A^{-1}\|\|\delta \vec b\|$.

又$\|\vec b\|=\|\mathbf A\vec x\|\leq\|A\|\cdot\|x\|\Rightarrow \frac{1}{\|\vec x\|}\leq \frac{\|\mathbf A\|}{\|\vec b\|}$.

两式相乘,得到$\frac{\delta \vec x}{\|\vec x\|}\leq\|A\|\|A^{-1}\| \frac{\|\delta \vec b\|}{\|\vec b\|}$.

故条件数为$cond(\mathbf A)=\|\mathbf A\|\cdot \|\mathbf A^{-1}\|$。

误差限

方程组解的相对变化,可用条件数乘以问题中数据的相对变化来界定。
δxxcond(A)(ΔAA+δbb)\frac{\delta \vec x}{\|\vec x\|}\leq cond(A) \cdot(\frac{\|\Delta \mathbf A\|}{\|\mathbf A\|}+ \frac{\|\delta \vec b\|}{\|\vec b\|})

***Proof:***

取$\mathbf A(t)=\mathbf A+t\Delta\mathbf A,\quad\vec b(t)=\vec b+t\delta\vec b$, 并考虑线性方程组$\mathbf A(t)\vec x(t)=\vec b(t)$ 的解 $\vec x(t)=\vec x+t\delta\vec x$。求导并使$t\to 0$后取范数并整理即得该不等式。

截断误差和舍入误差

计算误差(计算过程产生的误差)可以分为截断误差(级数的截断,迭代的中止)和舍入误差(有限精度)。

线性方程组的求解

Ax=bARm×n,bRm\mathbf A\vec x=\vec b\quad \mathbf A \in \mathbb R^{m\times n}, \vec b\in \mathbb R^{m}

矩阵的秩

矩阵的

  • 是矩阵列向量生成的向量空间的维数 (Bourbaki, Algebra)
  • 是极大线性无关组的元素向量个数
  • 是矩阵作为线性映射变换矩阵生成的像的维度

矩阵的列秩和行秩总是相等的,因此它们可以简单地称作矩阵的秩。

方程组解的个数

非奇异矩阵

对于方阵A,若满足下列等价条件之一则为非奇异;否则为奇异。

  • A的逆矩阵存在
  • 行列式det(A)0det(\mathbf A)\neq 0
  • n阶矩阵的秩Rank(A)=nRank(\mathbf A)=n
  • 对任何非零向量 z0,Az0\vec z\neq 0,\mathbf A\vec z\neq 0

所以

  1. 若矩阵A非奇异,无论b取何值,方程组 总有唯一解
  2. 若矩阵A奇异,则解的个数由b取值决定,可能无解,也可能由无数解,且必存在非零向量z使得Az=0\mathbf A\vec z=0

有解的充要条件Rank(A)=Rank[A,b]Rank(\mathbf A)=Rank[\mathbf A,\vec b]

范数/模 Norm

Norm是具有“长度”概念的函数。在线性代数、泛函分析及相关的数学领域,是一个函数,其为向量空间内的所有向量赋予非零的正长度或大小,满足

  1. 半正定性;norm(v)0norm(v)\geq 0
  2. 齐次性;norm(av)=anorm(v)norm(av)=|a|\cdot norm(v)
  3. 三角不等式成立;norm(v1)+norm(v2)norm(v1+v2)norm(v_1)+norm(v_2)\geq norm(v_1+v_2)
  4. 正定性(不满足则为半范数)norm(v)=0iffv=0norm(v)= 0\quad iff\quad \vec v=\vec 0

如果拓扑向量空间的拓扑可以被范数导出,这个拓扑向量空间被称为赋范向量空间.

向量的范数

Euclidean-norm

l1norm:x1=i=1nxi.l_1-norm:\quad \|\vec x\|_1=\sum_{i=1}^n |x_i|.

l2norm:x2=(i=1nxi2)12=xTx.l_2-norm:\quad \|\vec x\|_2=(\sum_{i=1}^n |x_i|^2)^\frac{1}{2}=\sqrt{x^Tx}.

lnorm:x=max1inxi.l_\infty-norm:\quad \|\vec x\|_\infty=\max_{1\leq i\leq n} |x_i|.

lpnorm:xp=(i=1nxip)1p.l_p-norm:\quad \|\vec x\|_p=(\sum_{i=1}^n |x_i|^p)^\frac{1}{p}.

H-norm

matrix H is positive definite. H0\mathbf H\geq 0

Hnorm:xH=xTHx.H-norm:\quad \|x\|_H=\sqrt {x^T\cdot H\cdot x}.

矩阵的范数

p-范数诱导的矩阵范数

A=maxx0Axx\|\mathbf A\|=\max_{\vec x\neq\vec 0}\frac{\|\mathbf A\vec x\|}{\|\vec x\|}

1norm:A1=maxji=1maij.1-norm:\quad \|\mathbf A\|_1=\max_{j}\sum_{i=1}^m|a_{ij}|.

norm:A=maxij=1maij.\infty-norm:\quad \|\mathbf A\|_\infty=\max_{i}\sum_{j=1}^m|a_{ij}|.

Frobenius norm

Frobenius 范数定义为

Frobeniusnorm:AF=(i=1mj=1naij2)1/2.Frobenius-norm:\quad \|\mathbf A\|_F= (\sum_{i=1}^m\sum_{j=1}^n a_{ij}^2)^{1/2}.

已知实对称矩阵有完备的特征向量系,即有AV=VΛAV=V\Lambda,其中VV为正交阵,Λ\Lambda为对角阵。

求解线性方程组的方法

线性方程组左乘一个非奇异矩阵,方程组的解不变。

  1. 排列矩阵 Permutation Matrix
  2. 对角线调整 Postive Definite Diagonal Matrix
  • 下三角线性方程组 Lx=b\mathbf L\vec x=\vec b
  • 上三角线性方程组 Ux=b\mathbf U\vec x=\vec b

Gauss 消去法

初等消去矩阵

Mkα=(11mk+11mn1)(α1αkαk+1αn)=(α1αk00)M_k\alpha= \left( \begin{array}{ccc} 1 \\ & \ddots \\ & & 1\\ & & -m_{k+1} & 1\\ & & \vdots & & \ddots\\ & & -m_n & & & 1 \end{array}\right) \left( \begin{array}{ccc} \alpha_1\\ \vdots\\ \alpha_k\\ \alpha_{k+1}\\ \vdots\\ \alpha_n\\ \end{array}\right)= \left( \begin{array}{ccc} \alpha_1\\ \vdots\\ \alpha_k\\ 0\\ \vdots\\ 0\\ \end{array}\right)

MkM_k是一个单位下三角矩阵,必定非奇异。

Mk=ImkekT=I(000mk+1mn)(0,,0,1k,0,,0)M_k=I-m_ke_k^T=I- \left(\begin{array}{ccc} 0\\ \vdots\\ 0\\ 0\\ m_{k+1}\\ \vdots\\ m_n \end{array}\right) \left(\begin{array}{ccc} 0,\cdots,0,1_k,0,\cdots,0 \end{array}\right)

因为ekTmk=0e_k^Tm_k=0,所以MK1=I+mkekTM_K^{-1}=I+m_ke_k^T。如果j>k,由于ekTmj=0e_k^Tm_j=0,所以

MkMj=[ImkekT][ImjejT]=ImkekTmjejT+mk(ekTmj)ejT=ImkekTmjejTM_kM_j=[I-m_ke_k^T][I-m_je_j^T]=I-m_ke_k^T-m_je_j^T+m_k(e_k^Tm_j)e_j^T=I-m_ke_k^T-m_je_j^T

Gauss消去法内容

**对应问题:** 求解$Ax=b$

MAx=Mn1M2M1Ax=UxM\cdot Ax=M_{n-1}\cdots M_2M_1Ax=Ux

Mb=Mn1M2M1bM\cdot b=M_{n-1}\cdots M_2M_1b

高斯消去法即选主元(有限精度必须,避免误差放大),再将A转换成上/下三角矩阵后求解。

共轭梯度法 Conjugate Gradient Method

**对应问题:** 求解$Ax=b$, where A is an nxn matrix, symmetric and positive definite (A^T=A, A>0).

该问题可以等价于求函数f(x)的极值: f(x)=12xTAxbTxf(x)=\frac{1}{2}x^TAx-b^Tx。这里记残量(residual)函数r(x):=f(x)=Axbr(x):=\nabla f(x)=Ax-b

先置知识

需要了解迭代、搜索方向等内容,此处不赘述。

矩阵A共轭向量

如果非零向量集合{p0,p1,,pl}\{p_0,p_1,\cdots,p_l\} 满足 piTApj=0forallijp_i^TAp_j=0\quad for\quad all\quad i\neq j,则称该集合对实对称正定矩阵A共轭。易证pip_i线性无关。

***Proof:***

对于$a_0p_0+a_1p_1+\cdots+a_lp_l=0$,左乘$p_0^T$得$p_0^Ta_0p_0+\underbrace{\cdots}_{=0}=0$。又因为$p_0^Ta_0p_0=a_0(p_0^Tp_0)\quad and\quad (p_0^Tp_0)\neq 0$ 所以 $a_0=0$。同理可得$\forall a_i=0$,故得证。

当已知某个矩阵A共轭向量集合时

用共轭向量pkp_k作为k-th迭代时的方向。即xk+1=xk+αkpkx_{k+1}=x_k+\alpha_kp_k,其中αk(:=rkTpkpkTApk)\alpha_k(:=-\frac{r_k^Tp_k}{p_k^TAp_k})是一维的步长系数,即标量。

共轭梯度法的收敛性

共轭梯度算法可在最多n次迭代内收敛到问题的目标解。

For any $x_0 \in R^n$, the sequence {$x_k$} generated by the conjugate direction algorithm converges to the solution $x^*$ of the linear system in **at most n steps**.
***Proof:***

当迭代n次时,因为{$p_i$}线性无关,可以作为n维空间的基,张成空间内的任意向量,包括目标解$x^*$。故若选取合适的$\alpha_i$满足$x_k-x^*=(x_0+\sum_{i=1}^{k-1}\alpha_ip_i)-(\sum_{i=0}^{n-1}\delta_i^*p_i)=0$,最多n次迭代即可得到目标解。

迭代系数alpha的设计

已知存在表达式xx0=i=0n1δipix^*-x_0=\sum_{i=0}^{n-1}\delta_ip_i,左乘pkTAp_k^TA可得

pkTA(xx0)=pkTAi=0n1δipi=pkTAδkpkpkTA(xx0)=pkTA(xxk+xkx0)=pkTA(xxk)+0=pkT(bAxk)=pkTrkLetαk=δk=rkTpkpkTApkp_k^TA(x^*-x_0)=p_k^TA\sum_{i=0}^{n-1}\delta_ip_i=p_k^TA\delta_kp_k\\ p_k^TA(x^*-x_0)=p_k^TA(x^*-x_k+x_k-x_0)=p_k^TA(x^*-x_k)+0=p_k^T(b-Ax_k)=-p_k^Tr_k\\ Let\quad \alpha_k=\delta_k=\frac{-r_k^Tp_k}{p_k^TAp_k}

如何产生矩阵A共轭向量集合{p_i}

Expanding Subspace Minimization

x0Rnx_0\in \mathbb{R}^n{xi}i=1k\{x_i\}_{i=1}^k 由 A-共轭向量生成。则有:

part (1)

rkTpi=0,fori=0,1,,k1r_k^Tp_i=0,\quad for\quad i=0, 1,\dots,k-1

part (2)

对于{xx=x0+span(p0,p1,,pk1)}\{x|x=x_0+span(p_0,p_1,\dots,p_{k-1})\}xkx_k是问题f(x)=12xTAxbTxf(x)=\frac{1}{2}x^TAx-b^Tx 的最小值点。

***Proof:***

(1)显然的,有以下几个式子成立

r1Tp0=(r0+α0Ap0)Tp0=r0Tp0r0Tp0=0r_1^Tp_0=(r_0+\alpha_0 Ap_0)^Tp_0=r_0^Tp_0-r_0^Tp_0=0

rkTpk1=(rk1+αk1Apk1)Tpk1=0r_k^Tp_{k-1}=(r_{k-1}+\alpha_{k-1} Ap_{k-1})^Tp_{k-1}=0

rkTpi=(rk1+αk1Apk1)Tpi=rk1Tpiαk1pk1TApi=rk1Tpi+0fori=0,1,,k2r_k^Tp_i=(r_{k-1}+\alpha_{k-1} Ap_{k-1})^Tp_i\\ =r_{k-1}^Tp_i-\alpha_{k-1} p_{k-1}^TAp_i\\ =r_{k-1}^Tp_i+0\\ for\quad i=0,1,\dots,k-2

最后一个式子说明rkTpir_k^Tp_i最终都可以转换成ri+1Tpi=0r_{i+1}^Tp_i=0,故(1)得证。

(2)令h(σ)=f(x0+σ0p0++σk1pk1)h(\sigma)=f(x_0+\sigma_0p_0+\dots+\sigma_{k-1}p_{k-1}),对于目标解σ\sigma^*有:

h(σ)σi=0=h(σ)(σipi)(σipi)σi=f(x0+σ0p0++σk1pk1)(σipi)pi=f(x)Tpi=(Axb)Tpi=r(x)Tpifori=0,1,,k1\frac{\partial h(\sigma^*)}{\partial\sigma_i}=0=\frac{\partial h(\sigma^*)}{\partial(\sigma_ip_i)}\frac{\partial(\sigma_ip_i)}{\partial\sigma_i}\\ =\frac{\partial f(x_0+\sigma_0p_0+\dots+\sigma_{k-1}p_{k-1})}{\partial(\sigma_ip_i)}p_i\\ =\nabla f(x^*)^Tp_i=(Ax^*-b)^Tp_i\\ =r(x^*)^Tp_i\\ for\quad i=0,1,\dots,k-1

同时有rk=r(xk)=Axkbr_k=r(x_k)=Ax_k-brkTpi=0r_k^Tp_i=0,即r(xk)Tpi=r(x)Tpi=0r(x_k)^Tp_i=r(x^*)^Tp_i=0.

xkx_k满足解xx^*的条件,(2)得证。

基于矩阵A共轭向量集合{p_i}的特性产生{p_i}

由于{pi}i=0k\{p_i\}_{i=0}^k的关于矩阵A共轭特性,pkp_k可以仅由pk1p_{k-1} “正交”产生,而必然满足与前面生成的{pi}i=0k2\{p_i\}_{i=0}^{k-2} 关于矩阵A共轭。

pk=rk+βkpk1p_k=-r_k+\beta_k p_{k-1},将其左乘pk1TAp_{k-1}^TA 可得

βk=pk1TArkpk1TApk1\beta_k=\frac{p_{k-1}^TAr_k}{p_{k-1}^TAp_{k-1}}

因此有以下性质:

part (1)

rkTri=0fori=0,,k1r_k^Tr_i=0\quad for\quad i=0,\dots,k-1

part (2)

span(p0,,pk)=span(r0,,rk)=span(r0,Ar0,,Akr0)span(p_0,\dots,p_k)=span(r_0,\dots,r_k)=span(r_0,Ar_0,\dots,A^kr_0)

***Proof:***

首先$r_k=\beta_kp_{k-1}-p_k$ 所以仅有i=k-1时需要证明其不为0。

$$r_k^Tr_{k-1}=\beta_kp_{k-1}^Tr_{k-1}=\frac{p_{k-1}^TA(r_kp_{k-1}^T)r_{k-1}}{p_{k-1}^TAp_{k-1}}=0$$

(1)得证。

用数学归纳法易证(2)。假设rkspan(r0,Ar0,,Akr0)r_k\in span(r_0,Ar_0,\dots,A^kr_0) 然后推广到rk+1r_{k+1} 即可证明span(r0,,rk)span(r0,Ar0,,Akr0)span(r_0,\dots,r_k)\in span(r_0,Ar_0,\dots,A^kr_0)。反过来也很容易证明。

共轭梯度法算法步骤

CG-Preliminary Version
  • Set r0:=Ax0b,p0:=r0,k:=0r_0:=Ax_0-b,\quad p_0:=-r_0,\quad k:=0
  • while rktolerancer_k\geq tolerance :
    1. αk:=rkTpkpkTApk\alpha_k:=-\frac{r_k^Tp_k}{p_k^TAp_k}
    2. xk+1:=xk+αkpkx_{k+1}:=x_k+\alpha_kp_k
    3. rk+1:=Axk+1br_{k+1}:=Ax_{k+1}-b
    4. βk+1:=rk+1TApkpkTApk\beta_{k+1}:=\frac{r_{k+1}^TAp_k}{p_k^TAp_k}
    5. pk+1:=rk+1+βk+1pkp_{k+1}:=-r_{k+1}+\beta_{k+1}p_k
    6. k++k++
  • end
CG-Pratical Version
  • Set r0:=Ax0b,p0:=r0,k:=0r_0:=Ax_0-b,\quad p_0:=-r_0,\quad k:=0
  • while rktolerancer_k\geq tolerance :
    1. αk:=rkTrkpkTApk(=rkTpkpkTApk)\alpha_k:=-\frac{r_k^Tr_k}{p_k^TAp_k}(=-\frac{r_k^Tp_k}{p_k^TAp_k})
    2. xk+1:=xk+αkpkx_{k+1}:=x_k+\alpha_kp_k
    3. rk+1:=rk+αkApkr_{k+1}:=r_k+\alpha_kAp_k
    4. βk+1:=rk+1Trk+1rkTrk\beta_{k+1}:=\frac{r_{k+1}^Tr_{k+1}}{r_k^Tr_k}
    5. pk+1:=rk+1+βk+1pkp_{k+1}:=-r_{k+1}+\beta_{k+1}p_k
    6. k++k++
  • end

易证两者是等价的。

迭代法

**对应问题:** 求解$Ax=b.$ A为非奇异矩阵。

当A为低阶稠密矩阵时,高斯消去法可以有效求解。但对于大型稀疏矩阵(A阶数很大,且零元素较多,比如n>10^4),这时利用迭代法求解时合适的。在计算机内存和运算两方面,迭代法都可以利用大量零元素的特点。

雅可比迭代法

待更新

高斯-塞德尔迭代法

待更新

线性最小二乘问题

待更新

无约束优化

优化基础

  1. 泰勒展开
  2. 一阶必要条件:
    如果x^star 是f(x)局部最小值,并且函数f(x)在x^star 的邻域内连续可微,那么f(x)=0\nabla f(x^*)=0, 即x^star 为驻点
***Proof:*** 用反证法,利用泰勒公式构造式子,证明与局部最小矛盾。
  1. 二阶必要条件:
    如果x^star 是f(x)局部最小值,并且函数2f(x)\nabla^2f(x)在x^star 的邻域内连续,那么f(x)=0and2f(x)\nabla f(x^*)=0\quad and\quad \nabla^2f(x^*) 是半正定的
***Proof:*** 同理,用反证法,利用泰勒公式构造式子,证明与局部最小矛盾。
  1. 二阶充分条件:
    如果函数2f(x)\nabla^2f(x)在x^star的邻域内连续,并且f(x)=0and2f(x)\nabla f(x^*)=0\quad and\quad \nabla^2f(x^*) 是正定的,那么x^star是函数的严格局部最小
***Proof:*** 取半径r>0构造球形域,此时Hessian矩阵$\nabla^2f(x)$对球形域内任意x而言都是正定的。对于任意范数$\|p\|$小于r的向量,有 f(x^*+p)=f(x^*)+p^T\nabla f(x^*)+\frac{1}{2}p^T\nabla f(x^*+tp)p\\ =f(x^*)+\frac{1}{2}p^T\nabla f(x^*+tp)p$$。 而因为Hessian矩阵正定,有$p^T\nabla f(x^*+tp)p>0$,故局部最小得证。
5. (A). 如果函数convex,那么任意局部最小x^star就是全局最小;(B). 如果函数可微,那么任意驻点x^star是全局最小
***Proof:*** 利用Convexity property 和 Jensen's inequality进行构造式子可证(A);用反证法,假设$x^*$是驻点但不是全局最小。首先$\lim_{\lambda\to 0}\frac{f(x^*+\lambda(z-x^*))-f(x^*)}{\lambda}=\nabla f(x^*)^T(z-x^*)$。 利用Jensen's inequality得 $$\lim_{\lambda\to 0}\frac{f(x^*+\lambda(z-x^*))-f(x^*)}{\lambda}\leq\lim_{\lambda\to 0}\frac{\lambda f(z)+(1-\lambda)f(x^*)-f(x^*)}{\lambda}\\=f(z)-f(x^*)<0$$,得到$\nabla f(x^*)^T<0$即$x^*$不是驻点,与假设矛盾,故(B)得证。
## 下降方法的收敛性 ### 关于收敛 线性收敛 Linear Convergence $$\|x_{k+1}-x^*\|\leq c\|x_k-x^*\|\quad 0二次收敛 Quadratic Convergence

xk+1xcxkx20<c<1\|x_{k+1}-x^*\|\leq c\|x_k-x^*\|^2\quad 0<c<1

超线性收敛 Superlinear Convergence

limk0xk+1xxkx=0\lim_{k\to 0}\frac{\|x_{k+1}-x^*\|}{\|x_k-x^*\|}=0

部分下降方法的收敛性

Method Complexity Convergence
Steepest Descent O(n) Linear
Conjugate Gradient O(n) Linearfail
Newton’s O(n^3) Quadratic
Damped Newton’s O(n^3) Superlinear
Quasi-Newton (DFP) O(n^2) Superlinear
Quasi-Newton (BFGS) O(n^2) Superlinear

最速下降法 Steepest Descent Method

此处内容可参考 ***Convex Optimization***, *Stephen Boyd (page475)*

最速下降法比较简单,只需搜索方向设置为最速下降方向(假设读者知道优化中的搜索相关内容)。对于f(x+v)f(x)+f(x)Tvf(x+v)\simeq f(x)+\nabla f(x)^Tv,一个规范化的最速下降方向满足(可能有多个最优解):

Δxnsd=argmin{f(x)Tvv=1}\Delta x_{nsd}=argmin\{\nabla f(x)^Tv\Big|\|v\|=1\}

当v的方向为梯度方向时,即是梯度下降法。而相比而言,最速下降可以选取非Euclidean norm,或者多个最优解中的其中一个。

Reference: 最速下降法与梯度下降法区别

牛顿法 Newton-Raphson Method

**对应问题:** 求解$g(x)=0.$ 以及可以转化成该形式的问题。

此处内容同计算统计 ***Computational Statistics***, *Guo-Liang TIAN, 2018 (page33-37)*

xtx_t是其根xx^*的近似。利用中值定理,有:

g(xt)0=g(xt)g(x)=g(xα)(xtx)xα[min{xt,x},max{xt,x}]g(x_t)-0=g(x_t)-g(x^*)=g'(x_\alpha)(x_t-x^*)\\ x_\alpha \in \big[min\{x_t, x^*\}, max\{x_t, x^*\}\big]

xtx_t替代xαx_\alpha,并用xt+1x_{t+1}替代xx^*,则有:

xt+1=xtg(xt)g(xt)x_{t+1}=x_t-\frac{g(x_t)}{g'(x_t)}

收敛性

LetF(x)=xg(x)g(x)Let\quad F(x)=x-\frac{g(x)}{g'(x)}

F(x)=F(x)x=x=1g(x)2g(x)g(x)g(x)2x=x=g(x)g(x)g(x)2x=x=g(x)g(x)g(x)2=0g(x)=0F'(x^*)=F'(x)|_{x=x^*}=1-\frac{g'(x)^2-g(x)g''(x)}{g'(x)^2}\bigg|_{x=x^*}\\ =\frac{g(x)g''(x)}{g'(x)^2}\bigg|_{x=x^*}=\frac{g(x^*)g''(x^*)}{g'(x^*)^2}\\ =0\qquad \because g(x^*)=0

收敛率 c=limtxtxxtx2=12f(x^)c=\lim_{t\to\infty} \frac{\|x_t-x^*\|}{\|x_t-x^*\|^2}=\frac{1}{2}|f''(\hat x)|,所以是二次收敛的。

实用牛顿法 Practical Newton’s Method

该部分内容可以参考 ***Numerical Optimization***, *1999, Nocedal J., Wright S.J. (page134-162)*

包括

  • Inexact Newton Steps
  • Line Search Newton Methods
  • Hessian Modifications
  • Trust-Region Newton Methods

信赖域方法 Trust-Region Newton Methods

用对称矩阵Bk=2f(xk)B_k=\nabla^2 f(x_k) 计算优化步 step:

pk=argmin{mk(p)=f(xk)+f(xk)Tp+12pTBkp}s.t.pΔkp_k=argmin\{m_k(p)=f(x_k)+f(x_k)^Tp+\frac{1}{2}p^TB_kp\}\\ s.t.\quad \|p\|\leq\Delta_k

根据比例ρk=f(xk)f(xk+pk)mk(0)mk(pk)\rho_k=\frac{f(x_k)-f(x_k+p_k)}{m_k(0)-m_k(p_k)}调整信赖域Δk\Delta_k 或赋值xk+1=xk+pk.x_{k+1}=x_k+p_k.

其中有个the dogleg method:狗腿法,名字比较有趣 😃

Reference: 数值优化 Ch.4 信赖域方法

拟牛顿法 Quasi-Newton Method

**对应问题:** 求解$g(x)=0.$ 以及可以转化成该形式的问题。

牛顿法虽然收敛速度快,但每次迭代都要计算Hessian矩阵,极大地复杂了计算度。所以类似Fisher Scoring算法对Newton-Raphson算法的改进,拟牛顿法构造出可以近似Hessian矩阵的正定对称阵,在“拟牛顿”的条件下优化目标函数。

拟牛顿条件/割线条件

下文B表示对Hessian矩阵的近似,D表示Hessian矩阵的逆矩阵的近似。即 BH,DH1B\simeq H, D\simeq H^{-1}

k+1次迭代后进行泰勒展开有:

f(x)f(xk+1)+Hk+1(xxk+1)\nabla f(x)\simeq\nabla f(x_{k+1})+H_{k+1}\cdot (x-x_{k+1})

x=xkx=x_k,并记sk=xk+1xk,yk=f(xk+1)f(xk)s_k=x_{k+1}-x_k, y_k=\nabla f(x_{k+1})-\nabla f(x_k),则有:

ykHk+1sky_k\simeq H_{k+1}\cdot s_k

skHk+11yks_k\simeq H_{k+1}^{-1}\cdot y_k

这就是拟牛顿条件,它对迭代过程中的Hessian矩阵作约束。故近H似矩阵B和逆矩阵近似矩阵D满足:

ykBk+1sky_k\simeq B_{k+1}\cdot s_k

skDk+11yks_k\simeq D_{k+1}^{-1}\cdot y_k

DFP方法

DFP核心在于:用DkD_k来近似Hk1H_{k}^{-1},若有:

Dk+1=Dk+ΔDk,k=0,1,2,D_{k+1}=D_k+\Delta D_k,\quad k=0,1,2,\cdots

为保持D的对称性,假设有:

ΔDk=αuuT+βvvT\Delta D_k=\alpha uu^T+\beta vv^T

将其代入有

sk=Dkyk+αuuTyk+βvvTyk=Dkyk+u(αuTyk)+v(βvTyk)=Dkyk+(αuTyk)u+(βvTyk)vs_k=D_ky_k+\alpha uu^Ty_k+\beta vv^Ty_k\\ =D_ky_k+u(\alpha u^Ty_k)+v(\beta v^Ty_k)\\ =D_ky_k+(\alpha u^Ty_k)u+(\beta v^Ty_k)v

不妨令αuTyk=1,βvTyk=1\alpha u^Ty_k=1,\quad\beta v^Ty_k=-1,有

uv=skDkyku-v=s_k-D_ky_k

不妨令u=sk,v=Dkyku=s_k,\quad v=D_ky_k,有

α=1skTyk,β=1(Dkyk)Tyk=1ykTDkTyk=1ykTDkyk\alpha=\frac{1}{s_k^Ty_k},\quad\beta=-\frac{1}{(D_ky_k)^Ty_k}=\frac{-1}{y_k^TD_k^Ty_k}=\frac{-1}{y_k^TD_ky_k}

这样就构造出了一个校正矩阵ΔDk=skskTskTykDkykykTDkykTDkyk\Delta D_k=\frac{s_ks_k^T}{s_k^Ty_k}-\frac{D_ky_ky_k^TD_k}{y_k^T D_k y_k}

DFP算法步骤

DFP

We have: DkHk1,gk=f(xk)D_k\simeq H_k^{-1}, g_k=\nabla f(x_k)

  • Set x_0, tolerance and D0:=I,k:=0D_0:=I,\quad k:=0
  • while gktoleranceg_k\geq tolerance :
    1. dk:=Dkgkd_k:=-D_k\cdot g_k
    2. λk:=argmin{f(xk+λdk)}\lambda_k:=argmin\{f(x_k+\lambda d_k)\}
    3. sk:=λkdks_k:=\lambda_kd_k
    4. xk+1:=xk+skx_{k+1}:=x_k+s_k
    5. yk:=gk+1gky_k:=g_{k+1}-g_k
    6. Dk+1:=Dk+skskTskTykDkykykTDkykTDkykD_{k+1}:=D_k+\frac{s_ks_k^T}{s_k^Ty_k}-\frac{D_ky_ky_k^TD_k}{y_k^T D_k y_k}
    7. k++k++
  • end

BFGS方法

BFGS核心在于直接逼近近似HkH_{k},若有:

Bk+1=Bk+ΔBk,k=0,1,2,B_{k+1}=B_k+\Delta B_k,\quad k=0,1,2,\cdots

同样,为保持B的对称性,假设有:

ΔBk=αuuT+βvvT\Delta B_k=\alpha uu^T+\beta vv^T

将其代入有

yk=Bksk+(αuTsk)u+(βvTsk)vy_k=B_ks_k+(\alpha u^Ts_k)u+(\beta v^Ts_k)v

不妨令αuTsk=1,βvTsk=1\alpha u^Ts_k=1,\quad\beta v^Ts_k=-1 以及 u=yk,v=Bksku=y_k,\quad v=B_ks_k,有

α=1ykTsk,β=1skTBksk\alpha=\frac{1}{y_k^Ts_k},\quad\beta=\frac{-1}{s_k^TB_ks_k}

这样就构造出了一个校正矩阵ΔBk=ykykTykTskBkskskTBkskTBksk\Delta B_k=\frac{y_ky_k^T}{y_k^Ts_k}-\frac{B_ks_ks_k^TB_k}{s_k^T B_k s_k}

BFGS算法步骤

DFP

We have: BkHk,gk=f(xk)B_k\simeq H_k, g_k=\nabla f(x_k)

  • Set x_0, tolerance and B0:=I,k:=0B_0:=I,\quad k:=0
  • while gktoleranceg_k\geq tolerance :
    1. dk:=Bk1gkd_k:=-B_k^{-1}\cdot g_k
    2. λk:=argmin{f(xk+λdk)}\lambda_k:=argmin\{f(x_k+\lambda d_k)\}
    3. sk:=λkdks_k:=\lambda_kd_k
    4. xk+1:=xk+skx_{k+1}:=x_k+s_k
    5. yk:=gk+1gky_k:=g_{k+1}-g_k
    6. Bk+1:=Bk+ykykTykTskBkskskTBkskTBkskB_{k+1}:=B_k+\frac{y_ky_k^T}{y_k^Ts_k}-\frac{B_ks_ks_k^TB_k}{s_k^T B_k s_k}
    7. k++k++
  • end

关于学习中的一些补充

正定

待更