29 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}}$。这种向量或矩阵形式的梯度计算方法在真实神经网络中是普遍应用的,能够有效处理高维数据和大规模参数。
期望、方差、协方差
期望
E(X) = \sum_{i} x_i \cdot P(x_i)
其中: x_i
是随机变量X
的取值, P(x_i)
是 x_i
发生的概率。
性质
-
线性性:
E(aX + bY) = aE(X) + bE(Y)
-
独立变量:
E(XY) = E(X)E(Y) \quad (\text{当}X,Y\text{独立时})
-
常数处理:
E(c) = c
方差
标准差
\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)
协方差
给定两个随机变量 X
和 $Y$,其协方差计算公式为:
\text{Cov}(X,Y) = \sum_{i=1}^n (x_i - \mu_X)(y_i - \mu_Y)
其中:
x_i, y_i
为观测值\mu_X, \mu_Y
分别为X
和Y
的样本均值
直观理解:如果有X
,$Y$两个变量,$X$增大,$Y$也倾向于增大,Cov(X,Y)>0
,正相关;$X$增加,$Y$倾向于减小->负相关;否则不相关。
推广:概率分布中的协方差
\text{Cov}(X,Y) =\sum_{i=1}^n {p}_{i}({x}_{i}-{\mu }_{\mathrm{X}})({\mathcal{y}}_{i}-{\mu }_{Y})=E\left[(X-\mu_X)(Y-\mu_Y)\right]
性质
- 对称性
\text{Cov}(X, Y) = \text{Cov}(Y, X)
- 协方差的计算与变量顺序无关
- 线性性
\text{Cov}(aX + b, cY + d) = ac \cdot \text{Cov}(X, Y)
- 零自协方差
\text{Cov}(X, X) = \text{Var}(X)
- 分解性
\text{Cov}(X_1 + X_2, Y) = \text{Cov}(X_1, Y) + \text{Cov}(X_2, Y)
- 标量倍数
\text{Cov}(aX, bY) = ab \cdot \text{Cov}(X, Y)
\text{cov}(AX, AX) = A\text{cov}(X, X)A^T
推导:
(1) 展开协方差定义
\text{cov}(AX, AX) = \mathbb{E}[(AX - \mathbb{E}[AX])(AX - \mathbb{E}[AX])^T]
(2) 线性期望性质
\mathbb{E}[AX] = A\mathbb{E}[X] \\
\Rightarrow AX - \mathbb{E}[AX] = A(X - \mathbb{E}[X])
(3) 代入展开式
= \mathbb{E}[A(X - \mathbb{E}[X])(A(X - \mathbb{E}[X]))^T] \\
= \mathbb{E}[A(X - \mathbb{E}[X])(X - \mathbb{E}[X])^T A^T]
(4) 提取常数矩阵
= A \mathbb{E}[(X - \mathbb{E}[X])(X - \mathbb{E}[X])^T] A^T
(5) 协方差矩阵表示
= A \text{cov}(X, X) A^T
协方差矩阵
对于一个随机向量 $\mathbf{X} = [X_1, X_2, \dots, X_n]^T$,其中 X_1, X_2, \dots, X_n
是 n
个随机变量,协方差矩阵 \Sigma
是一个 n \times n
的矩阵,其元素表示不同随机变量之间的协方差。
(注意:每对变量指的是$\mathbf{X}$中任意两个分量之间的组合,如$X_1, X_2$)
协方差矩阵的元素是通过计算每对随机变量之间的协方差来获得的。协方差矩阵 \Sigma
的元素可以表示为:
\Sigma = \begin{bmatrix}
\text{Cov}(X_1, X_1) & \text{Cov}(X_1, X_2) & \dots & \text{Cov}(X_1, X_n) \\
\text{Cov}(X_2, X_1) & \text{Cov}(X_2, X_2) & \dots & \text{Cov}(X_2, X_n) \\
\vdots & \vdots & \ddots & \vdots \\
\text{Cov}(X_n, X_1) & \text{Cov}(X_n, X_2) & \dots & \text{Cov}(X_n, X_n) \\
\end{bmatrix}
其中:
- 对角线上的元素
\text{Cov}(X_i, X_i)
是每个变量的方差,即 $\text{Var}(X_i)$。 - 非对角线上的元素
\text{Cov}(X_i, X_j)
是变量X_i
和X_j
之间的协方差。
计算举例
假设我们有 3 个特征($n=3$)和 4 个样本($m=4$),则数据矩阵 X
的构造如下:
X =
\begin{bmatrix}
x_1^{(1)} & x_1^{(2)} & x_1^{(3)} & x_1^{(4)} \\
x_2^{(1)} & x_2^{(2)} & x_2^{(3)} & x_2^{(4)} \\
x_3^{(1)} & x_3^{(2)} & x_3^{(3)} & x_3^{(4)}
\end{bmatrix}
假设特征为:
- 第1行 $x_1$:身高(cm)
- 第2行 $x_2$:体重(kg)
- 第3行 $x_3$:年龄(岁)
对应4个样本(人)的数据:
X =
\begin{bmatrix}
170 & 165 & 180 & 155 \\
65 & 55 & 75 & 50 \\
30 & 25 & 40 & 20
\end{bmatrix}
-
中心化数据(每行减去均值):
-
计算每行均值:
\mu_1 = \frac{170+165+180+155}{4} = 167.5, \quad \mu_2 = 61.25, \quad \mu_3 = 28.75
-
中心化后的矩阵 $X_c$:
X_c = \begin{bmatrix} 2.5 & -2.5 & 12.5 & -12.5 \\ 3.75 & -6.25 & 13.75 & -11.25 \\ 1.25 & -3.75 & 11.25 & -8.75 \end{bmatrix}
-
-
计算协方差矩阵:
\text{Cov} = \frac{1}{m} X_c X_c^T = \frac{1}{4} \begin{bmatrix} 2.5 & -2.5 & 12.5 & -12.5 \\ 3.75 & -6.25 & 13.75 & -11.25 \\ 1.25 & -3.75 & 11.25 & -8.75 \end{bmatrix} \begin{bmatrix} 2.5 & 3.75 & 1.25 \\ -2.5 & -6.25 & -3.75 \\ 12.5 & 13.75 & 11.25 \\ -12.5 & -11.25 & -8.75 \end{bmatrix}
最终结果(对称矩阵):
\text{Cov} \approx \begin{bmatrix} 93.75 & 100.31 & 62.50 \\ 100.31 & 120.31 & 75.00 \\ 62.50 & 75.00 & 48.44 \end{bmatrix}
- 对角线是各特征的方差(如身高的方差为93.75)
- 非对角线是协方差(如身高与体重的协方差为100.31)
如何生成均值为0,协方差为Q的噪声?
-
生成标准正态随机变量
\mathbf{Z} \sim \mathcal{N}(0, \mathbf{I})
-
进行线性变换
\mathbf{w}_k = \sqrt{\mathbf{Q}} \cdot \mathbf{Z}
其中
\sqrt{\mathbf{Q}}
是\mathbf{Q}
的矩阵平方根。 -
验证其协方差确实为Q:
\begin{aligned} \text{Cov}(\mathbf{w}_k) &= \mathbb{E}[\mathbf{w}_k\mathbf{w}_k^T] \\ &= \sqrt{\mathbf{Q}} \cdot \mathbb{E}[\mathbf{Z}\mathbf{Z}^T] \cdot \sqrt{\mathbf{Q}}^T \\ &= \sqrt{\mathbf{Q}} \cdot \mathbf{I} \cdot \sqrt{\mathbf{Q}}^T \\ &= \mathbf{Q} \end{aligned}
Python代码示例
import numpy as np
# 定义协方差矩阵
Q = np.array([[0.1, 0.05],
[0.05, 0.2]])
# Cholesky分解
L = np.linalg.cholesky(Q) # L @ L.T = Q
# 生成标准正态随机数
Z = np.random.randn(2)
# 生成目标噪声
w = L @ Z # 等价于 np.dot(L, Z)
高斯分布
高斯分布的概率密度函数:
\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%;
数据融合
当前最优值=当前的先验估计值和观测值进行融合
我们通常会尝试最小化方差,以尽可能减小状态估计的不确定性,从而获得更可靠和准确的估计结果
拉普拉斯变换
拉普拉斯变换的定义
对于一个给定的时间域函数 ( f(t) ),其拉普拉斯变换 F(s)
定义为:
F(s) = \int_{0}^{\infty} e^{-st}f(t) \, dt
这里的 s
是一个复数,通常写作 $ s = \sigma + j\omega $,其中 \sigma
和 \omega
分别是实部和虚部。
拉普拉斯变换的作用
- 简化微分方程:拉普拉斯变换可以将微分方程转换为代数方程,从而简化求解过程。
- 系统分析:在控制理论中,拉普拉斯变换用来分析系统的稳定性和频率响应。
- 信号处理:在信号处理中,拉普拉斯变换帮助分析信号的频谱和系统的滤波特性。
例子:单一指数函数的拉普拉斯变换
假设有一个函数 $f(t) = e^{-at} $(其中 a
是一个正常数),我们想计算它的拉普拉斯变换。根据拉普拉斯变换的定义:
F(s) = \int_{0}^{\infty} e^{-st}e^{-at} \, dt = \int_{0}^{\infty} e^{-(s+a)t} \, dt
这个积分可以解为:
F(s) =
\begin{bmatrix}
\frac{e^{-(s+a)t}}{-(s+a)}
\end{bmatrix}_{0}^{\infty} = \frac{1}{s+a}
因为当 t \to \infty
时,e^{-(s+a)t}
趋向于 0,前提是 $ Re(s+a) > 0 $(即 s
的实部加 a
必须是正的)。
幂迭代
原理:每一次迭代都相当于将当前向量乘以 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 = Q \Lambda Q^T \\
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