39 KiB
数学基础
求解一阶非齐线性微分方程
考虑方程
y' + y = x
第一步:求齐次方程的通解
先求对应的齐次方程
y' + y = 0
其解为
y_h = Ce^{-x}
其中 C
为任意常数。
第二步:设特解形式
利用常数变易法,令特解取形式
y_p = u(x) e^{-x}
其中 u(x)
为待定函数。
第三步:求导并代入原方程
计算 y_p
的导数:
y_p' = u'(x)e^{-x} - u(x)e^{-x}
将 y_p
和 y_p'
代入原方程 $y' + y = x$:
\bigl[u'(x)e^{-x} - u(x)e^{-x}\bigr] + u(x)e^{-x} = u'(x)e^{-x} = x
因此有:
u'(x) = x e^{x}
第四步:求 $u(x)$
对 u'(x)
积分:
u(x) = \int x e^{x} dx
计算积分,可以用分部积分法:令
\begin{cases}
u = x, \quad dv = e^x dx,\\[1mm]
du = dx, \quad v = e^x,
\end{cases}
得:
\int x e^x dx = x e^x - \int e^x dx = x e^x - e^x + C_1 = e^x (x-1) + C_1
注意这里求得的常数 $C_1$可以忽略,因为它会与齐次解合并。故我们取
u(x) = e^x (x-1)
第五步:构造特解并给出通解
将 u(x)
带回特解形式:
y_p = u(x)e^{-x} = e^x (x-1) e^{-x} = x-1
因此,原方程的通解为齐次解与特解的和:
y = y_h + y_p = Ce^{-x} + (x-1)
梯度下降
我们可以用一个简单的线性层作为例子,展示如何利用向量和矩阵计算梯度并更新参数。假设有一个全连接层,其计算公式为
y = W x + b
其中
x \in \mathbb{R}^2
是输入向量W \in \mathbb{R}^{2\times2}
是权重矩阵b \in \mathbb{R}^2
是偏置向量y \in \mathbb{R}^2
是输出向量
我们使用均方误差(MSE)作为损失函数,定义为
L = \frac{1}{2} \|y - y_{\text{true}}\|^2 = \frac{1}{2} \sum_{i=1}^{2}(y_i - y_{\text{true}, i})^2
设定具体数值
-
输入向量:
x = \begin{pmatrix} 1 \\ 2 \end{pmatrix}
-
权重矩阵:
W = \begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix}
-
偏置向量:
b = \begin{pmatrix} 1 \\ 1 \end{pmatrix}
-
真实输出:
y_{\text{true}} = \begin{pmatrix} 7 \\ 13 \end{pmatrix}
步骤 1:前向传播
计算输出 $y$:
y = W x + b = \begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix} \begin{pmatrix} 1 \\ 2 \end{pmatrix} + \begin{pmatrix} 1 \\ 1 \end{pmatrix}
首先计算矩阵乘法:
W x = \begin{pmatrix} 1\cdot1 + 2\cdot2 \\ 3\cdot1 + 4\cdot2 \end{pmatrix} = \begin{pmatrix} 1+4 \\ 3+8 \end{pmatrix} = \begin{pmatrix} 5 \\ 11 \end{pmatrix}
再加上偏置 b
得到
y = \begin{pmatrix} 5+1 \\ 11+1 \end{pmatrix} = \begin{pmatrix} 6 \\ 12 \end{pmatrix}
计算损失 $L$:
L = \frac{1}{2} \left[(6-7)^2 + (12-13)^2\right] = \frac{1}{2} \left[(-1)^2 + (-1)^2\right] = \frac{1}{2} (1+1) = 1
步骤 2:反向传播,计算梯度
首先,我们定义误差向量为
e = y - y_{\text{true}} = \begin{pmatrix} 6-7 \\ 12-13 \end{pmatrix} = \begin{pmatrix} -1 \\ -1 \end{pmatrix}
由于损失函数
L = \frac{1}{2}\|y - y_{\text{true}}\|^2
对 y
的偏导数为
\frac{\partial L}{\partial y} = y - y_{\text{true}} = e = \begin{pmatrix} -1 \\ -1 \end{pmatrix}
接下来,我们利用链式法则将梯度传递到 W
和 $b$。
1. 梯度对 W
的求导
对于输出层有
y = W x + b
每个元素 y_i
对 W_{ij}
的偏导数为
\frac{\partial y_i}{\partial W_{ij}} = x_j
利用链式法则,损失对 W_{ij}
的梯度为
\frac{\partial L}{\partial W_{ij}} = \frac{\partial L}{\partial y_i} \cdot \frac{\partial y_i}{\partial W_{ij}} = e_i \, x_j
用矩阵形式写就是:
\frac{\partial L}{\partial W} = e \cdot x^\top
将数值代入:
e = \begin{pmatrix} -1 \\ -1 \end{pmatrix}, \quad x^\top = \begin{pmatrix} 1 & 2 \end{pmatrix}
所以,
\frac{\partial L}{\partial W} = \begin{pmatrix} -1 \\ -1 \end{pmatrix} \begin{pmatrix} 1 & 2 \end{pmatrix} = \begin{pmatrix} -1\cdot1 & -1\cdot2 \\ -1\cdot1 & -1\cdot2 \end{pmatrix} = \begin{pmatrix} -1 & -2 \\ -1 & -2 \end{pmatrix}
2.梯度对 b
的求导
由于 $y = W x + b$,且对 b
的偏导数为 1,
\frac{\partial L}{\partial b} = \frac{\partial L}{\partial y} \cdot \frac{\partial y}{\partial b} = e \cdot 1 = e = \begin{pmatrix} -1 \\ -1 \end{pmatrix}
步骤 3:使用梯度下降更新参数
设定学习率 $\eta = 0.1$,更新公式为
W_{\text{new}} = W - \eta \frac{\partial L}{\partial W}, \quad b_{\text{new}} = b - \eta \frac{\partial L}{\partial b}
更新 $W$
W_{\text{new}} = \begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix} - 0.1 \cdot \begin{pmatrix} -1 & -2 \\ -1 & -2 \end{pmatrix} = \begin{pmatrix} 1 + 0.1 & 2 + 0.2 \\ 3 + 0.1 & 4 + 0.2 \end{pmatrix} = \begin{pmatrix} 1.1 & 2.2 \\ 3.1 & 4.2 \end{pmatrix}
更新 $b$
b_{\text{new}} = \begin{pmatrix} 1 \\ 1 \end{pmatrix} - 0.1 \cdot \begin{pmatrix} -1 \\ -1 \end{pmatrix} = \begin{pmatrix} 1 + 0.1 \\ 1 + 0.1 \end{pmatrix} = \begin{pmatrix} 1.1 \\ 1.1 \end{pmatrix}
总结
在这个例子中,我们展示了如何用向量和矩阵的形式计算一个简单全连接层的前向传播、损失以及对参数 W
和 b
的梯度。关键步骤如下:
- 前向传播:计算
y = W x + b
得到输出,再计算损失L = \frac{1}{2}\|y - y_{\text{true}}\|^2
- 反向传播:
- 计算误差向量
e = y - y_{\text{true}}
- 利用链式法则得出梯度:
\frac{\partial L}{\partial W} = e \cdot x^\top
\frac{\partial L}{\partial b} = e
- 计算误差向量
- 参数更新:通过梯度下降将参数沿负梯度方向调整
这样,我们就得到了更新后的参数 W_{\text{new}}
和 $b_{\text{new}}$。这种向量或矩阵形式的梯度计算方法在真实神经网络中是普遍应用的,能够有效处理高维数据和大规模参数。
范数
L2范数定义:
对于一个向量 $\mathbf{w} = [w_1, w_2, \dots, w_n]$,L2 范数定义为
\|\mathbf{w}\|_2 = \sqrt{w_1^2 + w_2^2 + \dots + w_n^2}
假设一个权重向量为 $\mathbf{w} = [3, -4]$,则
\|\mathbf{w}\|_2 = \sqrt{3^2 + (-4)^2} = \sqrt{9+16} = \sqrt{25} = 5.
用途:
-
正则化(L2正则化/权重衰减):在训练过程中,加入 L2 正则项有助于防止模型过拟合。正则化项通常是权重的 L2 范数的平方,例如
\lambda \|\mathbf{w}\|_2^2
其中
\lambda
是正则化系数。 -
梯度裁剪:在 RNN 等深度网络中,通过计算梯度的 L2 范数来判断是否需要对梯度进行裁剪,从而防止梯度爆炸。
具体例子:
假设我们有一个简单的线性回归模型,损失函数为均方误差(MSE):
L(\mathbf{w}) = \frac{1}{2N} \sum_{i=1}^N (y_i - \mathbf{w}^T \mathbf{x}_i)^2
其中,N
是样本数量,y_i
是第 i
个样本的真实值,\mathbf{x}_i
是第 i
个样本的特征向量,\mathbf{w}
是权重向量。
加入 L2 正则项后,新的损失函数为:
L_{\text{reg}}(\mathbf{w}) = \frac{1}{2N} \sum_{i=1}^N (y_i - \mathbf{w}^T \mathbf{x}_i)^2 + \lambda \|\mathbf{w}\|_2^2
在训练过程中,优化算法会同时最小化原始损失函数和正则项,从而在拟合训练数据的同时,避免权重值过大。
梯度更新
在梯度下降算法中,权重 \mathbf{w}
的更新公式为:
\mathbf{w} \leftarrow \mathbf{w} - \eta \nabla L_{\text{reg}}(\mathbf{w})
其中,\eta
是学习率,\nabla L_{\text{reg}}(\mathbf{w})
是损失函数关于 \mathbf{w}
的梯度。
对于加入 L2 正则项的损失函数,梯度为:
\nabla L_{\text{reg}}(\mathbf{w}) = \nabla L(\mathbf{w}) + 2\lambda \mathbf{w}
因此,权重更新公式变为:
\mathbf{w} \leftarrow \mathbf{w} - \eta (\nabla L(\mathbf{w}) + 2\lambda \mathbf{w})
通过加入 L2 正则项,模型在训练过程中不仅会最小化原始损失函数,还会尽量减小权重的大小,从而避免过拟合。正则化系数 \lambda
控制着正则化项的强度,较大的 \lambda
会导致权重更小,模型更简单,但可能会欠拟合;较小的 \lambda
则可能无法有效防止过拟合。因此,选择合适的 \lambda
是使用 L2 正则化的关键。
Frobenius 范数
对于一个矩阵 $A \in \mathbb{R}^{m \times n}$,其 Frobenius 范数定义为
\|A\|_F = \sqrt{\sum_{i=1}^{m}\sum_{j=1}^{n} a_{ij}^2}
这个定义与向量 L2 范数类似,只不过是对矩阵中所有元素取平方和后再开平方。
如果矩阵 A
的奇异值为 $\sigma_1, \sigma_2, \ldots, \sigma_n$,则:
\|A\|_F = \sqrt{\sum_{i=1}^n \sigma_i^2}
这使得 Frobenius 范数在低秩近似和矩阵分解(如 SVD)中非常有用。
迹和 Frobenius 范数的关系:
\|A\|_F^2 = \text{tr}(A^* A)
这表明 Frobenius 范数的平方就是 A^* A
所有特征值之和。而 A^* A
的特征值开方就是A的奇异值。
权重为向量的情况
当模型的输出是标量时(如单变量线性回归或二分类逻辑回归):
-
输入特征:$\mathbf{x}_i \in \mathbb{R}^d$(向量)
-
权重形状:$\mathbf{w} \in \mathbb{R}^d$(向量)
-
预测公式:
\hat{y}_i = \mathbf{w}^\top \mathbf{x}_i
其中
\hat{y}_i
是标量输出。
权重为矩阵的情况
当模型的输出是向量时(如多变量回归、神经网络全连接层):
-
输入特征:$\mathbf{x}_i \in \mathbb{R}^d$(向量)
-
输出维度:$\hat{\mathbf{y}}_i \in \mathbb{R}^m$(向量)
-
权重形状:$W \in \mathbb{R}^{m \times d}$(矩阵)
-
预测公式:
\hat{\mathbf{y}}_i = W \mathbf{x}_i + \mathbf{b}
其中
\mathbf{b} \in \mathbb{R}^m
是偏置向量。
方差等
标准差
\sigma =\sqrt{\frac{\textstyle\sum_{i=1}^{n}{({x}_{i}-\overline{x})}^{2}}{n}}
方差
Var(X)=\mathrm{E}[{(X-\mu) }^{2}]= {\sigma}^{2}
性质
Var(X)=\mathrm{E}({X}^{2})-{[\mathrm{E}(X)]}^{2} \\
Var(kX)={k}^{2}Var(X)
若X和Y是独立的随机变量
Var(X+Y)=Var(X)+Var(Y)
协方差
\sum {p}_{i}({x}_{i}-{\mu }_{\mathrm{X}})({\mathcal{y}}_{i}-{\mu }_{Y})
\\ Cov\begin{pmatrix}X,Y
\end{pmatrix}=\mathrm{E}\begin{bmatrix}\begin{pmatrix}\mathrm{X}-{\mu }_{\mathrm{X}}
\end{pmatrix}
\begin{pmatrix}Y-{\mu }_{Y}
\end{pmatrix}
\end{bmatrix}\\
Cov(X,Y)=E(XY)-E(X)E(Y)
性质:
X Y表示随机变量
协方差矩阵
协方差矩阵计算了不同维度之间的协方差,它是一个对称矩阵
性质:
A为n阶矩阵,X为n维随机向量
\text{cov}(AX, AX) = A\text{cov}(X, X)A^T
推导:
高斯分布
高斯分布的概率密度函数:
\mathcal{f}(\mathcal{x})=\frac{1}{\sqrt{2\pi }\sigma }\exp \begin{pmatrix}-\frac{{(x-u)}^{2}}{2{\sigma }^{2}}
\end{pmatrix}
- x 在 μ-σ 和 μ+σ 之间的样本数量占到整个样本数量的 68.2%;
- x 在 μ-2σ 和 μ+2σ 之间的样本数量占到整个样本数量的 95.4%;
- x 在 μ-3σ 和 μ+3σ 之间的样本数量占到整个样本数量的99.6%;
数据融合
当前最优值=当前的先验估计值和观测值进行融合
我们通常会尝试最小化方差,以尽可能减小状态估计的不确定性,从而获得更可靠和准确的估计结果
拉普拉斯变换
矩阵运算
特征值和特征向量
设矩阵:
A = \begin{bmatrix} 2 & 1 \\ 0 & 3 \end{bmatrix}
步骤 1:求特征值
构造特征方程:
\det(A - \lambda I) = \det\begin{bmatrix} 2-\lambda & 1 \\ 0 & 3-\lambda \end{bmatrix} = (2-\lambda)(3-\lambda) - 0 = 0
解得:
(2-\lambda)(3-\lambda) = 0 \quad \Longrightarrow \quad \lambda_1 = 2,\quad \lambda_2 = 3
步骤 2:求特征向量
-
对于 $\lambda_1 = 2$: 解方程:
(A - 2I)\mathbf{x} = \begin{bmatrix} 2-2 & 1 \\ 0 & 3-2 \end{bmatrix}\begin{bmatrix} x_1 \\ x_2 \end{bmatrix} = \begin{bmatrix} 0 & 1 \\ 0 & 1 \end{bmatrix}\begin{bmatrix} x_1 \\ x_2 \end{bmatrix} = \begin{bmatrix} x_2 \\ x_2 \end{bmatrix} = \begin{bmatrix} 0 \\ 0 \end{bmatrix}
从第一行 $x_2 = 0$。因此特征向量可以写成:
\mathbf{v}_1 = \begin{bmatrix} 1 \\ 0 \end{bmatrix} \quad (\text{任意非零常数倍})
-
对于 $\lambda_2 = 3$: 解方程:
(A - 3I)\mathbf{x} = \begin{bmatrix} 2-3 & 1 \\ 0 & 3-3 \end{bmatrix}\begin{bmatrix} x_1 \\ x_2 \end{bmatrix} = \begin{bmatrix} -1 & 1 \\ 0 & 0 \end{bmatrix}\begin{bmatrix} x_1 \\ x_2 \end{bmatrix} = \begin{bmatrix} -x_1+x_2 \\ 0 \end{bmatrix} = \begin{bmatrix} 0 \\ 0 \end{bmatrix}
从第一行得
-x_1 + x_2 = 0
或 $x_2 = x_1$。因此特征向量可以写成:\mathbf{v}_2 = \begin{bmatrix} 1 \\ 1 \end{bmatrix} \quad (\text{任意非零常数倍})
设一个对角矩阵:
D = \begin{bmatrix} d_1 & 0 \\ 0 & d_2 \end{bmatrix}
\lambda_1 = d_1,\quad \lambda_2 = d_2
对角矩阵的特征方程为:
\det(D - \lambda I) = (d_1 - \lambda)(d_2 - \lambda) = 0
因此特征值是:
\lambda_1 = d_1,\quad \lambda_2 = d_2
-
对于 $\lambda_1 = d_1$,方程
(D-d_1I)\mathbf{x}=\mathbf{0}
得到:\begin{bmatrix} 0 & 0 \\ 0 & d_2-d_1 \end{bmatrix}\begin{bmatrix} x_1 \\ x_2 \end{bmatrix} = \begin{bmatrix} 0 \\ (d_2-d_1)x_2 \end{bmatrix} = \begin{bmatrix} 0 \\ 0 \end{bmatrix}
若 $d_1 \neq d_2$,则必须有 $x_2=0$,而
x_1
可任意取非零值,因此特征向量为:\mathbf{v}_1 = \begin{bmatrix} 1 \\ 0 \end{bmatrix}
-
对于 $\lambda_2 = d_2$,类似地解得:
\mathbf{v}_2 = \begin{bmatrix} 0 \\ 1 \end{bmatrix}
矩阵乘法
全连接神经网络
其中:
-
a^{(0)}
是输入向量,表示当前层的输入。 -
\mathbf{W}
是权重矩阵,表示输入向量到输出向量的线性变换。 -
b
是偏置向量,用于调整输出。 -
\sigma
是激活函数(如 ReLU、Sigmoid 等),用于引入非线性。 -
输入向量 $a^{(0)}$:
a^{(0)} = \begin{pmatrix} a_0^{(0)} \\ a_1^{(0)} \\ \vdots \\ a_n^{(0)} \end{pmatrix}
这是一个
n+1
维的列向量,表示输入特征。 -
权重矩阵 $\mathbf{W}$:
\mathbf{W} = \begin{pmatrix} w_{0,0} & w_{0,1} & \cdots & w_{0,n} \\ w_{1,0} & w_{1,1} & \cdots & w_{1,n} \\ \vdots & \vdots & \ddots & \vdots \\ w_{k,0} & w_{k,1} & \cdots & w_{k,n} \\ \end{pmatrix}
这是一个
k \times (n+1)
的矩阵,其中k
是输出向量的维度,n+1
是输入向量的维度。 -
偏置向量 $b$:
b = \begin{pmatrix} b_0 \\ b_1 \\ \vdots \\ b_k \end{pmatrix}
这是一个
k
维的列向量,用于调整输出。
-
在传统的连续时间 RNN 写法里,常见的是
\sum_{j} W_{ij} \, \sigma(x_j),
这代表对所有神经元
j
的激活\sigma(x_j)
做加权求和,再求和到神经元 $i$。如果拆开来看,每个输出分量也都含一个求和 $\sum_{j}$:
-
输出向量的第 1 个分量(记作第 1 行的结果):
(W_r x)_1 = 0.3 \cdot x_1 + (-0.5) \cdot x_2 = 0.3 \cdot 2 + (-0.5) \cdot 1 = 0.6 - 0.5 = 0.1.
-
输出向量的第 2 个分量(第 2 行的结果):
(W_r x)_2 = 1.2 \cdot x_1 + 0.4 \cdot x_2 = 1.2 \cdot 2 + 0.4 \cdot 1 = 2.4 + 0.4 = 2.8.
-
-
在使用矩阵乘法时,你可以写成
y = W_r \, \sigma(x),
其中
\sigma
表示对x
的各分量先做激活,接着用W_r
乘上去。这就是把“$\sum_j \dots$”用矩阵乘法隐藏了。
\begin{pmatrix}
0.3 & -0.5\\
1.2 & \;\,0.4
\end{pmatrix}
\begin{pmatrix}
2\\
1
\end{pmatrix}
=
\begin{pmatrix}
0.3 \times 2 + (-0.5) \times 1\\[6pt]
1.2 \times 2 + 0.4 \times 1
\end{pmatrix}
=
\begin{pmatrix}
0.6 - 0.5\\
2.4 + 0.4
\end{pmatrix}
=
\begin{pmatrix}
0.1\\
2.8
\end{pmatrix}.
奇异值
定义
对于一个 m \times n
的矩阵 $A$,其奇异值是非负实数 $\sigma_1, \sigma_2, \ldots, \sigma_r$($r = \min(m, n)$),满足存在正交矩阵 U
和 $V$,使得:
A = U \Sigma V^T
其中,\Sigma
是对角矩阵,对角线上的元素即为奇异值。
主要特点
- 非负性:奇异值总是非负的。
- 对角矩阵的奇异值是对角线元素的绝对值。
- 降序排列:通常按从大到小排列,即 $\sigma_1 \geq \sigma_2 \geq \ldots \geq \sigma_r \geq 0$。
- 矩阵分解:奇异值分解(SVD)将矩阵分解为三个矩阵的乘积,
U
和V
是正交矩阵,\Sigma
是对角矩阵。 - 应用广泛:奇异值在数据降维、噪声过滤、图像压缩等领域有广泛应用。
计算
奇异值可以通过计算矩阵 A^T A
或 A A^T
的特征值的平方根得到。
步骤 1:计算 $A^T A$
首先,我们计算矩阵 A
的转置 $A^T$:
A^T = \begin{pmatrix} 3 & 0 \\ 0 & -4 \end{pmatrix}
然后,计算 $A^T A$:
A^T A = \begin{pmatrix} 3 & 0 \\ 0 & -4 \end{pmatrix} \begin{pmatrix} 3 & 0 \\ 0 & -4 \end{pmatrix} = \begin{pmatrix} 9 & 0 \\ 0 & 16 \end{pmatrix}
步骤 2:计算 A^T A
的特征值
接下来,我们计算 A^T A
的特征值。特征值 \lambda
满足以下特征方程:
\det(A^T A - \lambda I) = 0
即:
\det \begin{pmatrix} 9 - \lambda & 0 \\ 0 & 16 - \lambda \end{pmatrix} = (9 - \lambda)(16 - \lambda) = 0
解这个方程,我们得到两个特征值:
\lambda_1 = 16, \quad \lambda_2 = 9
步骤 3:计算奇异值
奇异值是特征值的平方根,因此我们计算:
\sigma_1 = \sqrt{\lambda_1} = \sqrt{16} = 4
\sigma_2 = \sqrt{\lambda_2} = \sqrt{9} = 3
结果
矩阵 A
的奇异值为 4 和 3。
矩阵的迹
迹的定义
对于一个 n \times n
的矩阵 $B$,其迹(trace)定义为矩阵对角线元素之和:
\text{tr}(B) = \sum_{i=1}^n B_{ii}
迹与特征值的关系
对于一个 n \times n
的矩阵 $B$,其迹等于其特征值之和。即:
\text{tr}(B) = \sum_{i=1}^n \lambda_i
其中 \lambda_1, \lambda_2, \ldots, \lambda_n
是矩阵 B
的特征值。
应用到 $A^ A$*
对于矩阵 $A^* A$(如果 A
是实矩阵,则 $A^* = A^T$),它是一个半正定矩阵,其特征值是非负实数。
A^* A
的迹还与矩阵 A
的 Frobenius 范数有直接关系。具体来说:
\|A\|_F^2 = \text{tr}(A^* A)
迹的基本性质
迹是一个线性运算,即对于任意标量 c_1, c_2
和矩阵 $A, B$,有:
\text{tr}(c_1 A + c_2 B) = c_1 \text{tr}(A) + c_2 \text{tr}(B)
对于任意矩阵 $A, B, C$,迹满足循环置换性质:
\text{tr}(ABC) = \text{tr}(CAB) = \text{tr}(BCA)
注意:迹的循环置换性不意味着 $\text{tr}(ABC) = \text{tr}(BAC)$,除非矩阵 A, B, C
满足某些特殊条件(如对称性)。
酉矩阵
酉矩阵是一种复矩阵,其满足下面的条件:对于一个 n \times n
的复矩阵 $U$,如果有
U^* U = U U^* = I,
其中 U^*
表示 U
的共轭转置(先转置再取复共轭),而 I
是 n \times n
的单位矩阵,那么 U
就被称为酉矩阵。简单来说,酉矩阵在复内积空间中保持内积不变,相当于在该空间中的“旋转”或“反射”。
如果矩阵的元素都是实数,那么 U^*
就等于 $U^T$(转置),这时酉矩阵就退化为正交矩阵。
考虑二维旋转矩阵
U = \begin{bmatrix}
\cos\theta & -\sin\theta \\
\sin\theta & \cos\theta
\end{bmatrix}.
当 \theta
为任意实数时,这个矩阵满足
U^T U = I,
所以它是一个正交矩阵,同时也属于酉矩阵的范畴。
例如,当 $\theta = \frac{\pi}{4}$(45°)时,
U = \begin{bmatrix}
\frac{\sqrt{2}}{2} & -\frac{\sqrt{2}}{2} \\
\frac{\sqrt{2}}{2} & \frac{\sqrt{2}}{2}
\end{bmatrix}.
对称非负矩阵分解
A≈HH^T
1. 问题回顾
给定一个对称非负矩阵 $$A\in\mathbb{R}^{n\times n}$$,我们希望找到一个非负矩阵 H\in\mathbb{R}^{n\times k}
使得
A \approx HH^T.
为此,我们可以最小化目标函数(损失函数)
f(H)=\frac{1}{2}\|A-HH^T\|_F^2,
其中 \|\cdot\|_F
表示 Frobenius 范数,定义为矩阵所有元素的平方和的平方根。
\| A - H H^T \|_F^2
表示矩阵 A - H H^T
的所有元素的平方和。
2. 梯度下降方法
2.1 计算梯度
目标函数(损失函数)是
f(H)=\frac{1}{2}\|A-HH^T\|_F^2.
\|M\|_F^2 = \operatorname{trace}(M^T M),
因此,目标函数可以写成:
f(H)=\frac{1}{2}\operatorname{trace}\Bigl[\bigl(A-HH^T\bigr)^T\bigl(A-HH^T\bigr)\Bigr].
注意到 A
和HH^T
都是对称矩阵,可以简化为:
f(H)=\frac{1}{2}\operatorname{trace}\Bigl[\bigl(A-HH^T\bigr)^2\Bigr].
展开后得到
f(H)=\frac{1}{2}\operatorname{trace}\Bigl[A^2 - 2AHH^T + (HH^T)^2\Bigr].
其中 \operatorname{trace}(A^2)
与 H
无关,可以看作常数,不影响梯度计算。
计算 \nabla_H \operatorname{trace}(-2 A H H^T)
\nabla_H \operatorname{trace}(-2 A H H^T) = -4 A H
计算 \nabla_H \operatorname{trace}((H H^T)^2)
\nabla_H \operatorname{trace}((H H^T)^2) = 4 H H^T H
将两部分梯度合并:
\nabla_H f(H) = \frac{1}{2}(4 H H^T H - 4 A H )= 2(H H^T H - A H)
2.2 梯度下降更新
设学习率为 $$\eta>0$$,则梯度下降的基本更新公式为:
H \leftarrow H - \eta\, \nabla_H f(H) = H - 2\eta\Bigl(HH^T H - A H\Bigr).
由于我们要求 H
中的元素保持非负,所以每次更新之后通常需要进行投影:
H_{ij} \leftarrow \max\{0,\,H_{ij}\}.
这种方法称为投影梯度下降,保证每一步更新后 H
满足非负约束。
3. 举例说明
设对称非负矩阵:
A = \begin{bmatrix} 2 & 1 \\ 1 & 2 \end{bmatrix}, \quad k=1, \quad H \in \mathbb{R}^{2 \times 1}
初始化 $$H^{(0)} = \begin{bmatrix} 1 \ 1 \end{bmatrix}$$,学习率 $$\eta = 0.01$$。
迭代步骤:
-
初始
H^{(0)}
:H^{(0)} = \begin{bmatrix} 1 \\ 1 \end{bmatrix}, \quad H^{(0)}(H^{(0)})^T = \begin{bmatrix} 1 & 1 \\ 1 & 1 \end{bmatrix}.
目标函数值:
f(H^{(0)}) = \frac{1}{2} \left( (2-1)^2 + 2(1-1)^2 + (2-1)^2 \right) = 1.
-
计算梯度:
HH^T H = \begin{bmatrix} 2 \\ 2 \end{bmatrix}, \quad AH = \begin{bmatrix} 3 \\ 3 \end{bmatrix},
\nabla_H f(H^{(0)}) = 2 \left( \begin{bmatrix} 2 \\ 2 \end{bmatrix} - \begin{bmatrix} 3 \\ 3 \end{bmatrix} \right) = \begin{bmatrix} -2 \\ -2 \end{bmatrix}.
-
更新
H
:H^{(1)} = H^{(0)} - 2 \cdot 0.01 \cdot \begin{bmatrix} -2 \\ -2 \end{bmatrix} = \begin{bmatrix} 1.04 \\ 1.04 \end{bmatrix}.
-
更新后目标函数:
H^{(1)}(H^{(1)})^T = \begin{bmatrix} 1.0816 & 1.0816 \\ 1.0816 & 1.0816 \end{bmatrix},
f(H^{(1)}) = \frac{1}{2} \left( (2-1.0816)^2 + 2(1-1.0816)^2 + (2-1.0816)^2 \right) \approx 0.8464.
一次迭代后目标函数值从 1.0
下降至 0.8464
幂迭代
原理:每一次迭代都相当于将当前向量乘以 A
后再归一化。由于矩阵 A
作用下,初始向量中 v_1
分量对应的系数会按 \lambda_1
的 k
次幂增长,而其他特征向量分量增长较慢(因为它们对应的特征值模较小),故随着迭代次数的增加,向量逐渐趋向于 v_1
的方向。
拉普拉斯矩阵
拉普拉斯矩阵及其性质
对于一个无向图 (G = (V, E)),其拉普拉斯矩阵 L
通常定义为
L = D - A,
其中:
D
是度矩阵,一个对角矩阵,其对角元$d_i$
为顶点i
的度数;A
是邻接矩阵,反映了图中各顶点之间的连接关系。
示例: 考虑一个简单的无向图,该图包含三个顶点:1, 2, 3,以及两条边: - 边 (1, 2) - 边 (2, 3)
邻接矩阵 (A)
A = \begin{pmatrix}
0 & 1 & 0 \\
1 & 0 & 1 \\
0 & 1 & 0
\end{pmatrix}.
度矩阵 (D)
D = \begin{pmatrix}
1 & 0 & 0 \\
0 & 2 & 0 \\
0 & 0 & 1
\end{pmatrix}.
拉普拉斯矩阵 (L)
将上面两个矩阵相减得到
L = \begin{pmatrix}
1 & 0 & 0 \\
0 & 2 & 0 \\
0 & 0 & 1
\end{pmatrix}
-
\begin{pmatrix}
0 & 1 & 0 \\
1 & 0 & 1 \\
0 & 1 & 0
\end{pmatrix}
=
\begin{pmatrix}
1 & -1 & 0 \\
-1 & 2 & -1 \\
0 & -1 & 1
\end{pmatrix}.
令常数向量
\mathbf{1} = \begin{pmatrix} 1 \\ 1 \\ 1 \end{pmatrix},
则有
L\mathbf{1} = \begin{pmatrix}
1 \cdot 1 + (-1) \cdot 1 + 0 \cdot 1 \\
-1 \cdot 1 + 2 \cdot 1 + (-1) \cdot 1 \\
0 \cdot 1 + (-1) \cdot 1 + 1 \cdot 1
\end{pmatrix}
=
\begin{pmatrix}
1 - 1 + 0 \\
-1 + 2 - 1 \\
0 - 1 + 1
\end{pmatrix}
=
\begin{pmatrix}
0 \\
0 \\
0
\end{pmatrix}.
这说明常数向量 $\mathbf{1}$
是 L
的零空间中的一个向量,即零特征值对应的特征向量。
主要性质
- 对称性
由于对于无向图,邻接矩阵 A
是对称的,而度矩阵 D
本身也是对称的(因为它是对角矩阵),所以拉普拉斯矩阵 L
也是对称矩阵。
- 正半定性
对于任意实向量 (x),都有:
x^T L x = \sum_{(i,j) \in E} (x_i - x_j)^2 \ge 0.
这说明 L
是正半定矩阵,即其所有特征值均非负。
- 零特征值与连通分量
- 对于任意图,都有
L \mathbf{1} = \mathbf{0},
其中 $$\mathbf{1} = (1, 1, \ldots, 1)^T$$,因此 0
一定是 L
的一个特征值。
因为拉普拉斯矩阵的定义为 $L = D - A$,其中每一行的元素之和为零,所以当向量所有分量都相等时,每一行的加权求和自然等于零。
- 更进一步,零特征值的重数等于图的连通分量(独立的子图)个数。也就是说,如果图
G
有k
个连通分量,则L
的零特征值重数为 (k)。
简单证明思路
考虑图中每个连通分量,对于某个连通分量内的所有顶点,可以构造一个特征向量,使得在该连通分量中所有分量取相同常数,而在其他部分取零。由于该连通分量内部的任意两个顶点都是连通的,该特征向量满足 (Lx = 0)。这样,对于每个连通分量都可以构造出一个线性无关的零特征值特征向量,从而零特征值的重数至少为连通分量的数量;进一步证明可以证明重数不会超过这个数量。
- 谱分解及应用
由于 L
是对称正半定矩阵,其可以进行谱分解:
L = U \Lambda U^T,
其中 U
是正交矩阵,$\Lambda$) 是包含 \(L
所有非负特征值的对角矩阵。
这一性质使得拉普拉斯矩阵在谱聚类、图分割等应用中非常有用。
总结
拉普拉斯矩阵 L = D - A
是描述图结构的重要工具,具有如下主要性质:
- 对称性:
L
是对称矩阵; - 正半定性:任意向量
x
有 (x^T L x \ge 0); - 零特征值:
L
总有零特征值,且其重数与图的连通分量个数相等; - 谱分解:
L
可进行正交谱分解,广泛应用于图的聚类与分割等领域。
这些性质不仅在理论上非常重要,而且在图论和数据分析等实际问题中有广泛的应用。
平均拉普拉斯矩阵:
归一化拉普拉斯矩阵
为了在某些应用中(例如谱聚类、图卷积网络等)获得更好的数值性质和归一化效果,我们可以构造 对称归一化拉普拉斯矩阵,记为 $$L_{sym}$$,定义为
L_{sym} = D^{-1/2} L D^{-1/2} = I - D^{-1/2} A D^{-1/2},
其中
D^{-1/2}
表示度矩阵的逆平方根,I
为单位矩阵。
D = \begin{pmatrix}
4 & 0 & 0 \\
0 & 9 & 0 \\
0 & 0 & 16
\end{pmatrix}.
D^{-1/2} = \begin{pmatrix}
\frac{1}{2} & 0 & 0 \\
0 & \frac{1}{3} & 0 \\
0 & 0 & \frac{1}{4}
\end{pmatrix}.
主要特点
-
归一化:
通过D^{-1/2}
的两侧预处理,将不同顶点的度数影响消除,使得矩阵在谱分解时能更好地反映图的结构。 -
对称性:
L_{sym}
是对称矩阵,这意味着它可以进行正交谱分解,其特征值均为实数。 -
谱性质:
L_{sym}
的特征值都位于区间[0, 2]
内。这一性质对于很多图论算法的稳定性和收敛性分析都非常重要。
Fiedler向量
根据谱分解理论,L
的特征值满足
x 0 = \lambda_1 \le \lambda_2 \le \cdots \le \lambda_n.
其中,\lambda_1 = 0
对应的特征向量通常为所有分量相同的常数向量。而 Fiedler 向量 就是对应于 \lambda_2
(第二小的特征值)的特征向量。
图的谱划分
-
构建图的拉普拉斯矩阵
- 根据给定的图结构,构建图的拉普拉斯矩阵 L。
-
计算 Fiedler 向量
- 求解拉普拉斯矩阵 L 的第二小特征值对应的特征向量,即 Fiedler 向量。
-
根据 Fiedler 向量进行图划分
- 将 Fiedler 向量的元素按大小排序。
- 找到 Fiedler 向量元素值为 0 附近的分界点,将图划分为两个子图。
Fiedler 向量在连接紧密的顶点上的取值往往比较接近
Fiedler 向量 :xv = \begin{pmatrix}0.8 \\0.7 \\0.6 \\-0.5 \\-0.6 \\-0.7\end{pmatrix}.
- 正值部分:对应顶点 1, 2, 3;
- 负值部分:对应顶点 4, 5, 6。
经过这种划分后,通常会发现:
- 子图内部:顶点之间的连接较为紧密(边较多),
- 子图之间:连接较弱(边较少或只有一两条边)。
-
递归划分子图(可选)
- 对划分得到的两个子图,分别递归应用上述步骤(1-3步),进一步将其划分为更小的子图。
- 这样可以将原图层层划分为多个子图。
-
确定最终聚类结果
- 根据上述划分过程得到的多个子图,就对应了图的最终聚类结果。
- 每个子图内的节点被认为属于同一个聚类。
谱聚类
谱聚类的基本思想是通过图的特征向量将数据点映射到低维空间中,然后在这个低维空间中使用传统的聚类技术。
1.构造相似性图
-
数据表示:
给定数据点 $${x_1, x_2, \ldots, x_n}$$。 -
相似性矩阵 $$W$$:
根据数据点之间的距离或相似性构造矩阵 $$W$$。常见方法包括:-
Gaussian 核函数:
W_{ij} = \exp\Bigl(-\frac{\|x_i - x_j\|^2}{2\sigma^2}\Bigr),
只有当
x_i
与x_j
彼此接近时,W_{ij}
才较大;衡量数据点之间的距离并将其映射为一个 [0, 1] 之间的相似性值。其中
\sigma
为尺度参数,当\sigma
较小时,只有非常接近的数据点才会被认为是相似的 -
K近邻图:仅连接每个点与其
k
个最近邻之间的边,其余 $$W_{ij} = 0$$。
-
2.构造图拉普拉斯矩阵
- 对称归一化拉普拉斯矩阵
- 未归一化的拉普拉斯矩阵
3.计算特征向量
对选定的拉普拉斯矩阵(例如 $$L_{sym}$$)进行特征分解,求出前 k
个最小特征值对应的特征向 量。
注意:对于未归一化的拉普拉斯矩阵,零特征值对应的特征向量通常是常数向量,所以在分 解时忽略这个解,选择第二小开始的 k
个特征向量。
4.构造嵌入空间
-
形成矩阵 $$U$$:
将求得的k
个特征向量作为列组成矩阵U = \begin{pmatrix} u_1(1) & u_2(1) & \cdots & u_k(1) \\ u_1(2) & u_2(2) & \cdots & u_k(2) \\ \vdots & \vdots & \ddots & \vdots \\ u_1(n) & u_2(n) & \cdots & u_k(n) \end{pmatrix}.
其中,每一行对应原数据点在低维空间中的表示。 例:
-
归一化(可选):
对于对称归一化的情况,可以对U
的每一行做归一化处理,使得每一行变为单位向量,这一步有助于后续聚类的稳定性。
5.聚类
使用 k-means 等传统聚类算法:
在低维嵌入空间中,每一行表示一个数据点的低维表示,然后对这些点进行聚类。
得到每个数据点对应的簇标签。
谱聚类示例(6个数据点分成3类)
假设数据点为
x_1=1,\quad x_2=2,\quad x_3=5,\quad x_4=6,\quad x_5=10,\quad x_6=11.
直观上我们希望将它们分为3类:
- 类1:靠近 1、2
- 类2:靠近 5、6
- 类3:靠近 10、11
1. 构造相似性矩阵 $$W$$
采用 Gaussian 核函数
W_{ij}=\exp\Bigl(-\frac{(x_i-x_j)^2}{2\sigma^2}\Bigr).
取 $$\sigma=2$$(参数可调),则分母为 $$2\sigma^2=8$$。
计算部分相似性(近似值):
-
x_1,x_2: \; |1-2|^2=1,\quad W_{12}=\exp(-1/8)\approx0.8825.
-
x_1,x_3: \; |1-5|^2=16,\quad W_{13}=\exp(-16/8)=\exp(-2)\approx0.1353.
-
x_1,x_4: \; |1-6|^2=25,\quad W_{14}=\exp(-25/8)\approx0.0439.
-
x_1,x_5: \; |1-10|^2=81,\quad W_{15}=\exp(-81/8)\approx0.00004.
-
x_1,x_6: \; |1-11|^2=100,\quad W_{16}=\exp(-100/8)\approx0.00001.
-
x_2,x_3: \; |2-5|^2=9,\quad W_{23}=\exp(-9/8)\approx0.3247.
-
x_2,x_4: \; |2-6|^2=16,\quad W_{24}=\exp(-16/8)=\exp(-2)\approx0.1353.
-
x_2,x_5: \; |2-10|^2=64,\quad W_{25}=\exp(-64/8)=\exp(-8)\approx0.000335.
-
x_2,x_6: \; |2-11|^2=81,\quad W_{26}=\exp(-81/8)\approx0.00004.
-
x_3,x_4: \; |5-6|^2=1,\quad W_{34}=\exp(-1/8)\approx0.8825.
-
x_3,x_5: \; |5-10|^2=25,\quad W_{35}=\exp(-25/8)\approx0.0439.
-
x_3,x_6: \; |5-11|^2=36,\quad W_{36}=\exp(-36/8)=\exp(-4.5)\approx0.0111.
-
x_4,x_5: \; |6-10|^2=16,\quad W_{45}=\exp(-16/8)=\exp(-2)\approx0.1353.
-
x_4,x_6: \; |6-11|^2=25,\quad W_{46}=\exp(-25/8)\approx0.0439.
-
x_5,x_6: \; |10-11|^2=1,\quad W_{56}=\exp(-1/8)\approx0.8825.
由于 W
是对称矩阵,对角元一般取 0(或1,根据需求),我们构造相似性矩阵 W
为
W=\begin{pmatrix}
0 & 0.8825 & 0.1353 & 0.0439 & 0.00004 & 0.00001 \\
0.8825 & 0 & 0.3247 & 0.1353 & 0.000335& 0.00004 \\
0.1353 & 0.3247 & 0 & 0.8825 & 0.0439 & 0.0111 \\
0.0439 & 0.1353 & 0.8825 & 0 & 0.1353 & 0.0439 \\
0.00004& 0.000335&0.0439 & 0.1353 & 0 & 0.8825 \\
0.00001& 0.00004 & 0.0111 & 0.0439 & 0.8825 & 0
\end{pmatrix}.
- 构造度矩阵 $$D$$
D_{ii}=\sum_{j=1}^6 W_{ij}.
近似计算:
- 对于 $$x_1$$:
D_{11}\approx0.8825+0.1353+0.0439+0.00004+0.00001\approx1.0617.
- 对于 $$x_2$$:
D_{22}\approx0.8825+0.3247+0.1353+0.000335+0.00004\approx1.3429.
- 对于 $$x_3$$:
D_{33}\approx0.1353+0.3247+0.8825+0.0439+0.0111\approx1.3975.
- 对于 $$x_4$$:
D_{44}\approx0.0439+0.1353+0.8825+0.1353+0.0439\approx1.241.
- 对于 $$x_5$$:
D_{55}\approx0.00004+0.000335+0.0439+0.1353+0.8825\approx1.0617.
- 对于 $$x_6$$:
D_{66}\approx0.00001+0.00004+0.0111+0.0439+0.8825\approx0.9375.
构造度矩阵:
D=\begin{pmatrix}
1.0617 & 0 & 0 & 0 & 0 & 0\\[0.5em]
0 & 1.3429 & 0 & 0 & 0 & 0\\[0.5em]
0 & 0 & 1.3975 & 0 & 0 & 0\\[0.5em]
0 & 0 & 0 & 1.2410 & 0 & 0\\[0.5em]
0 & 0 & 0 & 0 & 1.0617 & 0\\[0.5em]
0 & 0 & 0 & 0 & 0 & 0.9375
\end{pmatrix}.
3. 构造拉普拉斯矩阵 $$L$$
未归一化拉普拉斯矩阵定义为
L = D - W.
例如,矩阵的第 1 行为:
L_{1\cdot}=(1.0617,\ -0.8825,\ -0.1353,\ -0.0439,\ -0.00004,\ -0.00001),
其它行类似。
4. 特征分解与构造低维嵌入
为了分成 3 类,通常我们取图拉普拉斯矩阵(或归一化拉普拉斯矩阵)的前 k=3
个最小特征值对应的特征向量。
(注意:对于未归一化拉普拉斯矩阵,第一个特征值为 0,对应常数向量;但在归一化方法中,所有 3 个特征向量通常都有实际意义。)
假设经过特征分解后,我们得到了三个特征向量
u_1,\; u_2,\; u_3,
每个都是 6 维向量。将它们按列排列构成矩阵
U=\begin{pmatrix}
u_1(1) & u_2(1) & u_3(1) \\[0.3em]
u_1(2) & u_2(2) & u_3(2) \\[0.3em]
u_1(3) & u_2(3) & u_3(3) \\[0.3em]
u_1(4) & u_2(4) & u_3(4) \\[0.3em]
u_1(5) & u_2(5) & u_3(5) \\[0.3em]
u_1(6) & u_2(6) & u_3(6)
\end{pmatrix}.
每一行 i
表示数据点 x_i
在 3 维低维嵌入空间中的表示。
假设得到的低维表示(示例数值):
-
x_1: \; (0.9,\ 0.2,\ 0.1)
-
x_2: \; (0.8,\ 0.3,\ 0.2)
-
x_3: \; (-0.1,\ 0.8,\ 0.1)
-
x_4: \; (-0.2,\ 0.7,\ 0.0)
-
x_5: \; (0.1,\ -0.2,\ 0.9)
-
x_6: \; (0.0,\ -0.1,\ 1.0)
5. 在低维空间上使用 k-means 聚类
利用 k-means 算法对 6 个数据点的 3 维向量进行聚类。
在本例中,k-means 会尝试将点分为 3 类。
根据上述低维表示,很容易看到:
- 数据点
x_1
和x_2
聚在一起; - 数据点
x_3
和x_4
聚在一起; - 数据点
x_5
和x_6
聚在一起。
最终得到的聚类结果:
- 类1:
\{x_1, x_2\}
- 类2:
\{x_3, x_4\}
- 类3:
\{x_5, x_6\}
谱分解
一个对称矩阵可以通过其特征值和特征向量进行分解。对于一个 n \times n
的对称矩阵 $$A$$,其谱分解可以表示为:
A = \sum_{i=1}^{n} \lambda_i x_i x_i^T
其中,\lambda_i
是矩阵 A
的第 i
个特征值,x_i
是对应的特征向量。
推导过程
-
特征值和特征向量的定义
对于一个对称矩阵 $$A$$,其特征值和特征向量满足:A x_i = \lambda_i x_i
其中,
\lambda_i
是特征值,x_i
是对应的特征向量。 -
谱分解
将这些特征向量组成一个正交矩阵Q
A = Q \Lambda Q^T
Q = \begin{bmatrix} x_1 & x_2 & \cdots & x_n \end{bmatrix},
Q \Lambda = \begin{bmatrix} \lambda_1 x_1 & \lambda_2 x_2 & \cdots & \lambda_n x_n \end{bmatrix}.
Q \Lambda Q^T = \begin{bmatrix} \lambda_1 x_1 & \lambda_2 x_2 & \cdots & \lambda_n x_n \end{bmatrix} \begin{bmatrix} x_1^T \\ x_2^T \\ \vdots \\ x_n^T \end{bmatrix}.
Q \Lambda Q^T = \lambda_1 x_1 x_1^T + \lambda_2 x_2 x_2^T + \cdots + \lambda_n x_n x_n^T.
可以写为
A = \sum_{i=1}^{n} \lambda_i x_i x_i^T.
-
网络重构
在随机网络中,网络的邻接矩阵A
通常是对称的。利用预测算法得到的谱参数\{\lambda_i, x_i\}
后,就可以用以下公式重构网络矩阵:A(G) = \sum_{i=1}^{n} \lambda_i x_i x_i^T