文章目录
- 1 . 瑞利商的思考
- 1.1 瑞利商的定义
- 1.2 投影向量
- 2. 拉格朗日乘子法
- 3. 鞍点
- 4. 线性拟合
- 4.1 范德蒙矩阵线性拟合
- 4.2 python 代码
- 4.3 范德蒙矩阵缺点
- 5. 均值和方差
- 5.1 样本均值和方差
- 5.2 总体期望 μ \mu μ,总体方差 σ 2 \sigma^2 σ2
1 . 瑞利商的思考
1.1 瑞利商的定义
假设A是n阶实对称矩阵,x是n维非零列向量,那么瑞利商表示如下:
R
(
A
,
x
)
=
x
T
A
x
x
T
x
\begin{equation} R(A,x)=\frac{x^TAx}{x^Tx} \end{equation}
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 ∣ \begin{equation} |p_1|=|a_1|\cos(\theta),x^Ta_1=|a_1|\cos(\theta)\cdot|x|\rightarrow |p_1|=\frac{x^Ta_1}{|x|} \end{equation} ∣p1∣=∣a1∣cos(θ),xTa1=∣a1∣cos(θ)⋅∣x∣→∣p1∣=∣x∣xTa1 -
p
1
p_1
p1的单位向量为:
e 1 = x ∣ x ∣ \begin{equation} e_1=\frac{x}{|x|} \end{equation} e1=∣x∣x -
p
p
p向量为:
p 1 = ∣ p 1 ∣ ⋅ e 1 = x T a ∣ x ∣ x ∣ x ∣ = x T a 1 x x T x \begin{equation} p_1=|p_1|\cdot e_1=\frac{x^Ta}{|x|}\frac{x}{|x|}=\frac{x^Ta_1x}{x^Tx} \end{equation} p1=∣p1∣⋅e1=∣x∣xTa∣x∣x=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 ] \begin{equation} A=\begin{bmatrix}a_1&a_2&\cdots&a_n\end{bmatrix} \end{equation} A=[a1a2⋯an] - 那么瑞利商可以表示为:
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 ] \begin{equation} R(A,x)=\frac{x^T\begin{bmatrix}a_1&a_2&\cdots&a_n\end{bmatrix}x}{x^Tx}=\begin{bmatrix}\frac{x^Ta_1x}{x^Tx}&\frac{x^Ta_2x}{x^Tx}&\cdots&\frac{x^Ta_nx}{x^Tx}\end{bmatrix} \end{equation} R(A,x)=xTxxT[a1a2⋯an]x=[xTxxTa1xxTxxTa2x⋯xTxxTanx] - 小结 : 瑞利商表示的是实对称矩阵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 \begin{equation} R(A,x)=\frac{x^TAx}{x^Tx}\rightarrow R(A,x)=x^TAx,st:x^Tx=1 \end{equation} R(A,x)=xTxxTAx→R(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
)
\begin{equation} L(S,\lambda)=x^TSx-\lambda(x^Tx-1) \end{equation}
L(S,λ)=xTSx−λ(xTx−1)
- 求偏导可得:
∂ L ( S , λ ) ∂ x = 2 S x − λ ⋅ 2 x = 0 → S x = λ x \begin{equation} \frac{\partial L(S,\lambda)}{\partial x}=2Sx-\lambda \cdot 2x=0\rightarrow Sx=\lambda x \end{equation} ∂x∂L(S,λ)=2Sx−λ⋅2x=0→Sx=λx - 说明了瑞利商的偏导数为0的值一定在矩阵S的特征值
λ
\lambda
λ上和其对应的特征向量x上。
∂ L ( S , λ ) ∂ λ = − x T x + 1 = 0 → x T x = 1 \begin{equation} \frac{\partial L(S,\lambda)}{\partial \lambda}=-x^Tx+1=0\rightarrow x^Tx=1 \end{equation} ∂λ∂L(S,λ)=−xTx+1=0→xTx=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 = λ \begin{equation} R(S,x)=\frac{x^TSx}{x^Tx}=\frac{x^T\lambda x}{x^Tx}=\lambda \end{equation} 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≤λn−1≤⋯≤λ2≤λ1
arg m i n R ( S , x n ) = λ n ; arg m a x R ( S , x 1 ) = λ 1 ; \begin{equation} \arg\limits_{min}R(S,x_n)=\lambda_n;\arg\limits_{max}R(S,x_1)=\lambda_1; \end{equation} minargR(S,xn)=λn;maxargR(S,x1)=λ1; - 那么其他的特征值 λ 2 , λ 3 , ⋯ , λ n − 1 \lambda_2,\lambda_3,\cdots,\lambda_{n-1} λ2,λ3,⋯,λn−1对应的就是鞍点!!!这样我们就可以通过瑞利商来快速的找到鞍点。
3. 鞍点
在深度学习中,我们希望快速的找到极值点,一般就对损失函数求一次偏导后得到所有的极值点,但是有一种鞍点,其偏导数也为0,但是它既不是极大值点,又不是极小值点,但它的一阶偏导为0,所以我们需要排除鞍点的干扰,。如图所示:
-
鸡头法,先求最小值,再求最大值
为了求得几何上的鞍点,我们需要先求最小值,在求最大值,数学表达式如下:
λ = max y min x , z x T S x \begin{equation} \lambda=\max\limits_{y}\min\limits_{x,z}x^TSx \end{equation} λ=ymaxx,zminxTSx
-
凤尾法,先求最大值,再求最小值
λ = min x max y , z x T S x \begin{equation} \lambda=\min\limits_{x}\max\limits_{y,z}x^TSx \end{equation} λ=xminy,zmaxxTSx
-
我们可以简单理解,鸡头不如凤尾,那么我们一般是使用鸡头法,这样求得的鞍点值更小。
λ = max y min x , z x T S x \begin{equation} \lambda=\max\limits_{y}\min\limits_{x,z}x^TSx \end{equation} λ=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
\begin{equation} y=c_5x^5+c_4x^4+c_3x^3+c_2x^2+c_1x+c_0 \end{equation}
y=c5x5+c4x4+c3x3+c2x2+c1x+c0
- 这里我们可以用范德蒙矩阵进行表示:
A C = b \begin{equation} AC=b \end{equation} 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"))
- 结果:
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
)
\begin{equation} \bar{X}=\frac{1}{N}(x_1+x_2+\cdots+x_n) \end{equation}
Xˉ=N1(x1+x2+⋯+xn)
- 那么样本方差
S
2
S^2
S2由公式可得:
S 2 = 1 n − 1 ∑ i = 1 n ( x i − X ˉ ) \begin{equation} S^2=\frac{1}{n-1}\sum_{i=1}^n(x_i-\bar{X}) \end{equation} S2=n−11i=1∑n(xi−Xˉ)
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 \begin{equation} \sum_{i=1}^{\infty}p_i=1,\mu=E(x)=\sum_{i=1}^{\infty}p_ix_i \end{equation} i=1∑∞pi=1,μ=E(x)=i=1∑∞pixi - 总体方差
D ( X ) = E ( X 2 ) − [ E ( X ) ] 2 \begin{equation} D(X)=E(X^2)-[E(X)]^2 \end{equation} D(X)=E(X2)−[E(X)]2
σ 2 = ∑ i = 1 ∞ p i ( x i − μ ) 2 \begin{equation} \sigma^2=\sum_{i=1}^{\infty}p_i(x_i-\mu)^2 \end{equation} σ2=i=1∑∞pi(xi−μ)2