在南方科技大学学习何炳生老师的数值分析课程期间有很多收获与感悟,由衷的感谢何老师的谆谆教导,当然我希望能将课程中所学习到的,能应用到未来科研和工作中的这部分知识,以学习笔记的方式记录下来,也希望能通过这种帖子将自己作为小白对于这些知识的通俗理解分享给大家,文中一些不够准确或错误的表达,还望大家指证。
【数值分析】学习笔记目录
本章节将分享数值分析的预备知识——范数与条件数
如果学习机器学习或者信号处理相关的课程,可以发现有一个名词——范数被屡屡提及,那什么是范数呢?
根据李庆阳、王能超、易大义老师编的《数值分析》书上的定义,范数是为了研究线性方程组近似解的误差估计和迭代法的收敛性, 对向量及矩阵的“大小”引进某种度量。
通俗的理解其实,范数运算就是一种针对向量和矩阵的运算规则(类似加,减,乘,除),通过对一向量或者矩阵的范数运算后可以得到一个标量,这个标量表征了矩阵或者向量的一些性质,而这个标量被称为这个向量或者矩阵的一个范数。
当然范数运算不止一种,也就是对于一个向量或者矩阵而言,它包含了多种范数,即一种运算规则只要满足了一定的条件,它所求解出来的值就可以被称为范数。
对任一向量 X ∈ R n X\in R^{n} X∈Rn(即一个n维的向量X,其中每个元素都是实数), 按照一定规则确定一个实数与它对应, 该实数记为 ∥ X ∥ \left \| X \right \| ∥X∥, 若 ∥ X ∥ \left \| X \right \| ∥X∥满足下面三个性质:
则称这个实数 ∥ X ∥ \left \| X \right \| ∥X∥为向量 X X X的范数
在实际使用中,有以下3种向量范数最常被使用
上述三种范数都是p-范数( ∥ X ∥ p = ( ∑ i = 1 n x i p ) 1 / p \left \| X \right \|_{p}=(\sum \limits_{ {i=1}}^{ {n}}x_{i}^{p})^{1/p} ∥X∥p=(i=1∑nxip)1/p)的特例,其中2-范数用的最多,例如最常见的两个向量之间的欧几里得距离就可以写为 ∥ X − Y ∥ 2 \left \| X-Y \right \|_{2} ∥X−Y∥2。同时在很多教材中如果省略了下标的范数,通常泛指任何一种向量范数,如无特别说明,建议按照2-范数的规则进行的运算。(Matlab中的norm函数默认计算的就是2-范数)
除了P-范数之外还有一种范数也常在凸优化问题中使用,即H-范数(可以看做是2-范数的延伸)
H-范数的定义:对任一向量 X ∈ R n X\in R^{n} X∈Rn, H H H为一对称正定矩阵,则向量 X X X的H范数记做
∥ X ∥ H = ( X T H X ) 1 / 2 \left \| X \right \|_{H}=(X^{T}HX)^{1/2} ∥X∥H=(XTHX)1/2
对于矩阵 A ∈ R n ∗ n A\in R^{n*n} A∈Rn∗n(即一个n维的矩阵A,其中每个元素都是实数), 如果某一实值函数 N ( A ) = ∥ A ∥ N(A)=\left \| A \right \| N(A)=∥A∥, 其满足下面四个性质:
则称这个实数 N ( A ) = ∥ A ∥ N(A)=\left \| A \right \| N(A)=∥A∥为矩阵 A A A的范数
知乎上的这位大佬是站在机器学习的领域进行的介绍,也很详细
如何通俗易懂地解释「范数」?.
(其他范数相关的性质和证明,请参照清华大学出版,李庆阳、王能超、易大义老师编的《数值分析》第五版内容)
由于很多实际的应用问题都可以变换成为一个求解线性方程组的过程,即 A X = b AX=b AX=b,根据一些已知条件 A A A以及观测到的结果 b b b,求解目标量或者未知参量 X X X。但如果已知已知条件 A A A以及观测到的结果 b b b存在误差或者扰动时,我们是否能求解出较为准确的 X X X?
这就需要有一个指标来衡量这个线性方程组或者说是这个问题是良态还是病态,根据定义如果由 A A A 或 b b b 的微小变化(又称扰动或摄动)引起方程组 A X = b AX=b AX=b 解的巨大变化,则称方程组为病态方程组,矩阵 A A A 称为病态矩阵。否则方程组是良态方程组,矩阵 A A A 也是良态矩阵。
而这个衡量的指标就是条件数
设 A A A为非奇异矩阵,则称
c o n d ( A ) = ∥ A ∥ ∥ A − 1 ∥ cond(A)=\left \| A \right \|\left \| A^{-1} \right \| cond(A)=∥A∥∥∥A−1∥∥
为矩阵 A A A的条件数,条件数越大,则说明问题越病态,反之,则越稳定(良态)
c o n d ( A ) 1 = ∥ A ∥ 1 ∥ A − 1 ∥ 1 cond(A)_{1}=\left \| A \right \|_{1}\left \| A^{-1} \right \|_{1} cond(A)1=∥A∥1∥∥A−1∥∥1
c o n d ( A ) ∞ = ∥ A ∥ ∞ ∥ A − 1 ∥ ∞ cond(A)_{\infty}=\left \| A \right \|_{\infty}\left \| A^{-1} \right \|_{\infty} cond(A)∞=∥A∥∞∥∥A−1∥∥∞
c o n d ( A ) 2 = ∥ A ∥ 2 ∥ A − 1 ∥ 2 = λ m a x ( A T A ) λ m i n ( A T A ) cond(A)_{2}=\left \| A \right \|_{2}\left \| A^{-1} \right \|_{2}=\sqrt{\frac{\lambda _{max}(A^{T}A)}{\lambda _{min}(A^{T}A)}} cond(A)2=∥A∥2∥∥A−1∥∥2=λmin(ATA)λmax(ATA)
当 A A A为对称矩阵时, c o n d ( A ) 2 = ∣ λ m a x ∣ ∣ λ m i n ∣ cond(A)_{2}=\frac{\left | \lambda_{max} \right |}{\left | \lambda_{min} \right |} cond(A)2=∣λmin∣∣λmax∣
(其中 λ m a x , λ m i n \lambda_{max},\lambda_{min} λmax,λmin为 的绝对值最大和最小的特征值)
通过本章节的学习,可以发现范数的实质就是一种表征了向量或者矩阵的“大小”的指标,例如单一向量的2-范数 ∥ X ∥ 2 \left \| X \right \|_{2} ∥X∥2对应了该向量距离原点的距离大小,两个向量之差的2-范数 ∥ X − Y ∥ 2 \left \| X-Y \right \|_{2} ∥X−Y∥2对应了两个向量之间的距离大小。而条件数的实质就是一种表征具体问题中系数矩阵 A A A的病态程度的指标,条件数越大即问题越病态。
有些不严谨,但个人认为范数和条件数的引入,更多的是为了方便表示很多常用的计算,对这些指标应当是更加具体的了解其在实际应用中的内涵,而不是只关注其计算规则。