当前位置:   article > 正文

线性代数|机器学习-P20鞍点和极值

线性代数|机器学习-P20鞍点和极值

1 . 瑞利商的思考

1.1 瑞利商的定义

假设A是n阶实对称矩阵,x是n维非零列向量,那么瑞利商表示如下:
R ( A , x ) = x T A x x T x

R(A,x)=xTAxxTx
R(A,x)=xTxxTAx

  • 在看到上面式子时候,感觉很奇怪,为什么瑞利商就能够计算出鞍点和极值点的位置?我发现瑞利商的形式就像投影公式样。。。

1.2 投影向量

假设我们有两个向量 x , a 1 x,a_1 x,a1,我们想求向量 a 1 a_1 a1在向量x方向上的投影向量 p 1 p_1 p1

在这里插入图片描述

  • ∣ p 1 ∣ |p_1| p1
    ∣ p 1 ∣ = ∣ a 1 ∣ cos ⁡ ( θ ) , x T a 1 = ∣ a 1 ∣ cos ⁡ ( θ ) ⋅ ∣ x ∣ → ∣ p 1 ∣ = x T a 1 ∣ x ∣
    |p1|=|a1|cos(θ),xTa1=|a1|cos(θ)|x||p1|=xTa1|x|
    p1=a1cos(θ),xTa1=a1cos(θ)xp1=xxTa1
  • p 1 p_1 p1的单位向量为:
    e 1 = x ∣ x ∣
    e1=x|x|
    e1=xx
  • p p p向量为:
    p 1 = ∣ p 1 ∣ ⋅ e 1 = x T a ∣ x ∣ x ∣ x ∣ = x T a 1 x x T x
    p1=|p1|e1=xTa|x|x|x|=xTa1xxTx
    p1=p1e1=xxTaxx=xTxxTa1x
  • 小结:
    当我们对一个向量 a 1 a_1 a1进行瑞利商时,得到了居然是这个向量 a 1 a_1 a1在给定 x 1 x_1 x1向量上的投影向量,我们发现投影向量中只需要知道 x x x向量的方向,跟 x x x的大小无关,这点很重要,
  • 转换:
    -那么我们有一个矩阵实对称A,它可以由如下组成:
    A = [ a 1 a 2 ⋯ a n ]
    A=[a1a2an]
    A=[a1a2an]
  • 那么瑞利商可以表示为:
    R ( A , x ) = x T [ a 1 a 2 ⋯ a n ] x x T x = [ x T a 1 x x T x x T a 2 x x T x ⋯ x T a n x x T x ]
    R(A,x)=xT[a1a2an]xxTx=[xTa1xxTxxTa2xxTxxTanxxTx]
    R(A,x)=xTxxT[a1a2an]x=[xTxxTa1xxTxxTa2xxTxxTanx]
  • 小结 : 瑞利商表示的是实对称矩阵A在给定x向量的投影向量组合。这里x的大小不影响投影向量的值。所以为了后续计算,我们可以定义 x T x = 1 x^Tx=1 xTx=1,这样瑞利商问题可以变成如下:
    R ( A , x ) = x T A x x T x → R ( A , x ) = x T A x , s t : x T x = 1
    R(A,x)=xTAxxTxR(A,x)=xTAx,st:xTx=1
    R(A,x)=xTxxTAxR(A,x)=xTAx,st:xTx=1
  • 那么瑞利商的极值问题就变成了一个二次型 x T A x x^TAx xTAx在约束条件下的 x T x = 1 x^Tx=1 xTx=1的最优化问题。一般我们解决最优化问题,会引入拉格朗日乘子法:

2. 拉格朗日乘子法

我们的目标是要求实对称矩阵S的二次型 x T S x x^TSx xTSx x T x = 1 x^Tx=1 xTx=1的约束情况下的最优化问题:这里为了方便,一般用S来表示实对称矩阵来代替上面的A,不影响后续理解和计算。纯粹为了方便。
L ( S , λ ) = x T S x − λ ( x T x − 1 )

L(S,λ)=xTSxλ(xTx1)
L(S,λ)=xTSxλ(xTx1)

  • 求偏导可得:
    ∂ L ( S , λ ) ∂ x = 2 S x − λ ⋅ 2 x = 0 → S x = λ x
    L(S,λ)x=2Sxλ2x=0Sx=λx
    xL(S,λ)=2Sxλ2x=0Sx=λx
  • 说明了瑞利商的偏导数为0的值一定在矩阵S的特征值 λ \lambda λ上和其对应的特征向量x上。
    ∂ L ( S , λ ) ∂ λ = − x T x + 1 = 0 → x T x = 1
    L(S,λ)λ=xTx+1=0xTx=1
    λL(S,λ)=xTx+1=0xTx=1

    本来都是约束条件。
  • 那问题就简单了,瑞利商的极值问题的点分别为特征值 λ 1 , λ 2 , ⋯   , λ n \lambda_1,\lambda_2,\cdots,\lambda_n λ1,λ2,,λn,其对应的特征向量 x 1 , x 2 , ⋯   , x n x_1,x_2,\cdots,x_n x1,x2,,xn
  • 那么我们代入到瑞利商原来式子中,可得极值特解方程,注意不是一般式:
    R ( S , x ) = x T S x x T x = x T λ x x T x = λ
    R(S,x)=xTSxxTx=xTλxxTx=λ
    R(S,x)=xTxxTSx=xTxxTλx=λ
  • 由于 λ n ≤ λ n − 1 ≤ ⋯ ≤ λ 2 ≤ λ 1 \lambda_n\le \lambda_{n-1}\le\cdots\le\lambda_2\le\lambda_1 λnλn1λ2λ1
    arg ⁡ m i n R ( S , x n ) = λ n ; arg ⁡ m a x R ( S , x 1 ) = λ 1 ;
    argminR(S,xn)=λn;argmaxR(S,x1)=λ1;
    minargR(S,xn)=λn;maxargR(S,x1)=λ1;
  • 那么其他的特征值 λ 2 , λ 3 , ⋯   , λ n − 1 \lambda_2,\lambda_3,\cdots,\lambda_{n-1} λ2,λ3,,λn1对应的就是鞍点!!!这样我们就可以通过瑞利商来快速的找到鞍点。

3. 鞍点

在深度学习中,我们希望快速的找到极值点,一般就对损失函数求一次偏导后得到所有的极值点,但是有一种鞍点,其偏导数也为0,但是它既不是极大值点,又不是极小值点,但它的一阶偏导为0,所以我们需要排除鞍点的干扰,。如图所示:
在这里插入图片描述

  • 鸡头法,先求最小值,再求最大值
    为了求得几何上的鞍点,我们需要先求最小值,在求最大值,数学表达式如下:
    λ = max ⁡ y min ⁡ x , z x T S x

    λ=maxyminx,zxTSx
    λ=ymaxx,zminxTSx
    在这里插入图片描述

  • 凤尾法,先求最大值,再求最小值
    λ = min ⁡ x max ⁡ y , z x T S x

    λ=minxmaxy,zxTSx
    λ=xminy,zmaxxTSx
    在这里插入图片描述

  • 我们可以简单理解,鸡头不如凤尾,那么我们一般是使用鸡头法,这样求得的鞍点值更小。
    λ = max ⁡ y min ⁡ x , z x T S x

    λ=maxyminx,zxTSx
    λ=ymaxx,zminxTSx

  • 我们就把一个鞍点问题转换成对偶问题,通过瑞利商和拉格朗日乘子法结合求得鞍点。

4. 线性拟合

4.1 范德蒙矩阵线性拟合

假设我们二维平面上有 6 个点,根据多项式拟合条件来说,6个点可以用一个五次方函数进行拟合。比如说我们平面上如果需要确定一条直线 ( y = k x + b ) (y=kx+b) (y=kx+b),一般需要两个点,确定一个抛物线 ( y = a x 2 + b x + c ) (y=ax^2+bx+c) (y=ax2+bx+c),一般需要三个点,所以6个点可以用
y = c 5 x 5 + c 4 x 4 + c 3 x 3 + c 2 x 2 + c 1 x + c 0

y=c5x5+c4x4+c3x3+c2x2+c1x+c0
y=c5x5+c4x4+c3x3+c2x2+c1x+c0

  • 这里我们可以用范德蒙矩阵进行表示:
    A C = b
    AC=b
    AC=b
  • A为范德蒙矩阵,C为相关系数。
    在这里插入图片描述

4.2 python 代码

  • jupyter 下运行
import numpy as np
import matplotlib.pyplot as plt

# 生成6个随机点
np.random.seed(42)  # 固定随机种子以获得可重复的结果
x = np.random.rand(6)
y = np.random.rand(6)

# 构造范德蒙矩阵
V = np.vander(x, increasing=True)

# 求解系数向量
a = np.linalg.solve(V, y)

# 生成用于绘制拟合曲线的x值
x_fit = np.linspace(0, 1, 100)
y_fit = np.polyval(a[::-1], x_fit)

# 绘制原始点和拟合曲线
plt.scatter(x, y, color='red', label='Original Points')
plt.plot(x_fit, y_fit, color='blue', label='Fitted Polynomial')
plt.xlabel('x')
plt.ylabel('y')
plt.title('Vandermonde Matrix Polynomial Fitting')
plt.legend()
plt.grid(True)
plt.show()

# 输出结果
print("随机生成的点:")
for xi, yi in zip(x, y):
    print(f"({xi:.4f}, {yi:.4f})")

print("\n范德蒙矩阵:")
print(V)

print("\n多项式系数:")
print(a)

# 打印多项式表达式
poly_str = "P(x) = " + " + ".join([f"{a[i]:.4f}x^{i}" for i in range(len(a))])
print("\n多项式:")
print(poly_str.replace("x^0", "").replace(" + -", " - ").replace("x^1", "x"))
  • 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
  • 结果:
    在这里插入图片描述
    在这里插入图片描述

4.3 范德蒙矩阵缺点

我们之前在P18快速奇异值那章节学过,范德蒙矩阵的缺点是其矩阵的逆的秩特别大,不好求,导致计算范德蒙矩阵的逆是巨复杂的。还有就是希尔伯特矩阵。

5. 均值和方差

5.1 样本均值和方差

假设我们有N个样本 x 1 , x 2 , ⋯   , x n x_1,x_2,\cdots,x_n x1,x2,,xn,那么样本 X ˉ \bar{X} Xˉ均值为
X ˉ = 1 N ( x 1 + x 2 + ⋯ + x n )

X¯=1N(x1+x2++xn)
Xˉ=N1(x1+x2++xn)

  • 那么样本方差 S 2 S^2 S2由公式可得:
    S 2 = 1 n − 1 ∑ i = 1 n ( x i − X ˉ )
    S2=1n1i=1n(xiX¯)
    S2=n11i=1n(xiXˉ)

5.2 总体期望 μ \mu μ,总体方差 σ 2 \sigma^2 σ2

  • 总体期望
    假设有无穷个样本 x i x_i xi,每个样本对应的概率为 p i p_i pi,那么可得:
    ∑ i = 1 ∞ p i = 1 , μ = E ( x ) = ∑ i = 1 ∞ p i x i
    i=1pi=1,μ=E(x)=i=1pixi
    i=1pi=1,μ=E(x)=i=1pixi
  • 总体方差
    D ( X ) = E ( X 2 ) − [ E ( X ) ] 2
    D(X)=E(X2)[E(X)]2
    D(X)=E(X2)[E(X)]2

    σ 2 = ∑ i = 1 ∞ p i ( x i − μ ) 2
    σ2=i=1pi(xiμ)2
    σ2=i=1pi(xiμ)2
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/918549
推荐阅读
相关标签
  

闽ICP备14008679号