行列式、奇异矩阵、矩阵范数、条件数、AdaGrad

note

    • 行列式:$det(A)$
    • 奇异矩阵
    • 矩阵范数
    • 条件数
    • AdaGrad

行列式: d e t ( A ) det(A) det(A)

n阶矩阵(方阵) A A A的行列式是一个标量,如何计算就不啰嗦了.

1、物理意义
A n × n A^{n\times n} An×n表示一个n维空间到n维空间的线性变换: f : R n → R n f:R^n\to R^n f:RnRn, 是一个压缩或拉伸, 即scale操作。而 d e t ( A ) det(A) det(A)就是这个缩放尺寸。

(1) 假想原来空间中有一个 n n n维的立方体(随便什么形状),其中立方体内的每一个点都经过这个线性变换,变成 n n n维空间中的一个新立方体。
(2) 原来立方体有一个体积 V 1 V_{1} V1,新的立方体也有一个体积 V 2 V_{2} V2
(3) 行列式 d e t ( A ) det(A) det(A)是一个数对不对?这个数其实就是 V 2 ÷ V 1 V_{2} \div V_{1} V2÷V1
2、性质
d e t ( A ) × d e t ( B ) = d e t ( A B ) det(A)\times det(B)=det(AB) det(A)×det(B)=det(AB)

奇异矩阵

奇异矩阵就是说该矩阵不是满秩的。

  1. 首先,看这个矩阵是不是方阵。
  2. 再看此矩阵的行列式|A|是否等于0,若等于0,称矩阵A为奇异矩阵; 若不等于0,称矩阵A为非奇异矩阵。
  3. 可逆矩阵和非奇异矩阵是一个意思。
    A矩阵不可逆(奇异矩阵)的充要条件:
    <=> |A| = 0
    <=> A的列(行)向量组线性相关
    <=> R(A) <=> AX=0 有非零解
    <=> A有特征值0.
    <=> A不能表示成初等矩阵的乘积
    <=> A的等价标准形不是单位矩阵

矩阵范数

1-范数: ∣ ∣ A ∣ ∣ 1 = max ⁡ j ∑ i = 1 m ∣ a i , j ∣ ||A||_1 = \max_j\sum_{i=1}^m|a_{i,j}| A1=maxji=1mai,j, 列和范数,即所有矩阵列向量绝对值之和的最大值,matlab调用函数norm(A, 1), python调用为np.linalg.norm(A, ord=1) 。

2-范数: ∣ ∣ A ∣ ∣ 2 = λ 1 , λ 1 ||A||_2 = \sqrt{\lambda_1},\lambda_1 A2=λ1 λ1 A T A A^TA ATA的最大特征值,又称为谱范数matlab调用函数norm(x, 2), python调用为np.linalg.norm(A, ord=2) 。

∞ \infty -范数: ∣ ∣ A ∣ ∣ ∞ = max ⁡ i ∑ j = 1 N ∣ a i , j ∣ ||A||_\infty = \max_i\sum_{j=1}^N|a_{i,j}| A=maxij=1Nai,j,行和范数,即所有矩阵行向量绝对值之和的最大值,matlab调用函数norm(A, inf), python调用为np.linalg.norm(A, ord=np.inf) 。

F-范数: ∣ ∣ A ∣ ∣ F = ( ∑ i = 1 m ∑ j = 1 n ∣ a i , j ∣ 2 ) 1 2 ||A||_F=\left(\sum_{i=1}^m\sum_{j=1}^n|a_{i,j}|^2\right)^{\frac{1}{2}} AF=(i=1mj=1nai,j2)21,Frobenius范数,即矩阵元素绝对值的平方和再开平方,matlab调用函数norm(A, ’fro‘),python调用为np.linalg.norm(A, ord=‘fro’) 。

核范数: ∣ ∣ A ∣ ∣ ∗ = ∑ i = 1 n λ i , λ i ||A||_* = \sum_{i=1}^{n}\lambda_i, \quad \lambda_i A=i=1nλi,λi是A的奇异值,即奇异值之和。

条件数

条件数定义为: c o n d ( A ) = ∣ ∣ A ∣ ∣ ∗ ∣ ∣ A − 1 ∣ ∣ cond(A)=||A||*||A^{-1}|| cond(A)=AA1 ∣ ∣ A ∣ ∣ ||A|| A是矩阵的某一种范数。
Condition number是一个矩阵(或者它所描述的线性系统)的稳定性或者敏感度的度量,如果一个矩阵的condition number在1附近,那么它就是well-conditioned的,如果远大于1,那么它就是ill-conditioned的,如果一个系统是ill-conditioned的,它的输出结果就不要太相信了。
这是因为若 y = A x y=Ax y=Ax,给 x x x一个微小的扰动量 Δ x \Delta x Δx,输出的结果会变化很大,即 y ′ = A ( x + Δ x ) y'=A(x+\Delta x) y=A(x+Δx) ∣ y ′ − y ∣ |y'-y| yy是一个难以容忍的值。

AdaGrad

'''
AdaGrad
优点:抑制梯度大的维度的下降速度,增大梯度小的维度的下降速度
缺点:随着迭代,步长越来越小,在非凸问题上容易卡在鞍点和局部极小值
'''
grad_squared = 0
while True:
    dx = compute_gradient(x)
    grad_squared += dx * dx
    x -= learning_rate * dx / (np.sqrt(grad_squared) + 1e-7)

对于条件数很大的矩阵,比如一个维度有很大的梯度,另一个维度有很小的梯度,我们除以这个梯度平方的累加和会使梯度小的维度学习率增大,而梯度大的维度学习率降低。

【参考链接】
1、奇异值和特征值
2、计算矩阵/向量的范数:numpy.linalg.norm()
3、cs231n优化算法

你可能感兴趣的:(algorithm)