首页
关于
Search
1
微服务
34 阅读
2
同步本地Markdown至Typecho站点
29 阅读
3
JavaWeb——后端
18 阅读
4
苍穹外卖
14 阅读
5
智能协同云图库
13 阅读
后端学习
项目
杂项
科研
论文
默认分类
登录
找到
15
篇与
科研
相关的结果
- 第 3 页
2025-03-21
PID控制器
PID控制器 PID控制器是一种常用的反馈控制系统,广泛应用于工业控制系统和各种控制系统中,用来持续调整一个过程的控制输入,以减小系统当前位置和期望位置之间的误差。PID代表比例(Proportional)、积分(Integral)、微分(Derivative)。 控制系统概述 开环控制系统 前馈控制系统尝试预先计算扰动对系统的影响,并在扰动影响系统输出之前调整输入以抵消它。 闭环控制系统 控制器接收误差信号。该系统通过反馈回路来自动调节其输出 复合控制系统 连续与离散信号 从连续信号到离散信号的转换过程涉及以下步骤: 采样:在连续信号上每隔一定时间间隔取一个值。 量化:将每个采样值映射到最接近的量化级上。 积分可以通过求和来近似,微分可以通过相邻样本之间的差分来近似。 PID公式 控制系统中的传感器会连续监测被控制对象的状态(例如,温度、压力、位置等),而PID控制器通过在固定的采样间隔收集输入信号,将其转换为离散信号,计算控制动作,然后输出到控制对象。离散PID控制的优势在于其灵活性和适应性,它可以轻松地与软件算法集成。 直观例子 **仅使用比例(P)控制无法消除稳态误差。**稳态误差是指当系统达到平衡状态时,控制系统的实际输出与期望输出之间的差异。 原因:当系统接近其期望点时,误差减小,进而控制器输出也减小。如果控制器输出减小到无法克服系统内部阻力(如摩擦力)或外部扰动的程度时,系统就无法进一步接近设定点,从而留下稳态误差。 为了解决稳态误差问题,通常会在P控制基础上加入积分(I)控制。积分控制能够累积误差,即使是很小的误差,也会随时间积累,最终产生足够的控制作用以调整系统输出,直到误差为零。 微分控制在PID控制器中的作用主要是提高系统的瞬态响应和稳定性。 $$ {k}_{d}({e}_{i}-{e}_{i-1}) $$ 它通过对误差信号的变化率(即误差的微分)进行响应,来预测系统未来的行为。如果误差在快速变化,微分项会产生一个相对较大的控制作用来尝试减缓这种变化。 相关控制知识 当系统启动时或者遇到大的扰动,会产生大的初始误差。若系统调整缓慢,积分项会在达到目标状态之前累积很大的值。这可导致控制器输出超出了实际的执行器(比如电机、阀门等)可以处理的范围。当这种情况发生时,即使误差减少,由于积分项累积的值太大,控制器的输出可能仍然处于饱和状态。 积分限幅 积分限幅可防止积分项超过预设的上限和下限。 $$ {I}_{clamped}(t)=clamp({I}_{updated(t)},{I}_{max},{I}_{min}) $$ 积分分离 当误差超过某个预定阈值时,禁用积分作用,仅使用比例(P)和微分(D)控制来快速减小误差,避免因积分作用导致的控制器输出过度响应。 if (abs(error) > threshold) { // 积分作用被分离,即暂时禁用积分作用 integral = 0; } else { // 正常积分累积 integral += error * dt; } PID控制器: def update(self, current_value): error = self.set_point - current_value # 实现积分分离逻辑 if abs(error) < self.error_threshold: self.integral += error * self.dt # 应用积分限幅 self.integral = max(min(self.integral, self.integral_limit), -self.integral_limit) else: # 误差过大时重置积分累积 self.integral = 0 derivative = (error - self.prev_error) / self.dt # PID 输出 output = self.Kp * error + self.Ki * self.integral + self.Kd * derivative self.prev_error = error return output
科研
zy123
3月21日
0
2
0
2025-03-21
传统图机器学习
传统图机器学习和特征工程 节点层面的特征工程 目的:描述网络中节点的结构和位置 eg:输入某个节点的D维向量,输出该节点是某类的概率。 节点度 (Node Degree) 定义: 节点度是指一个节点直接连接到其他节点的边数。 无向图中: 节点的度即为与其相邻的节点数。 有向图中: 通常区分为入度(有多少条边指向该节点)和出度(从该节点发出的边的数量)。 意义: 节点度直观反映了节点在网络中的直接连接能力。度高的节点通常在信息传播或资源分配中具有较大作用。 例如,在社交网络中,一个拥有大量好友的用户(高节点度)可能被视为“热门”或者“活跃”的社交人物。 节点中心性 (Node Centrality) 定义: 节点中心性是一类衡量节点在整个网络中“重要性”或“影响力”的指标。其核心思想是,不仅要看节点的直接连接数,还要看它在网络中的位置和在信息流动中的角色。 常见的指标: 介数中心性 (Betweenness Centrality): 衡量节点位于其他节点间最短路径上的频率,反映其作为“桥梁”的作用。 接近中心性 (Closeness Centrality): 衡量节点到网络中其他节点平均距离的倒数,距离越近中心性越高。 特征向量中心性 (Eigenvector Centrality): 除了考虑连接数量外,还考虑邻居节点的“重要性”,连接到重要节点会提升自身的中心性。 举例: 假设有 3 个节点,记为 $1, 2, 3$,它们构成了一条链: $$ 1 \; \leftrightarrow \; 2 \; \leftrightarrow \; 3 $$ 即只有边 $(1,2)$ 和 $(2,3)$,没有直接连接 $(1,3)$。 令邻接矩阵 $A$ 为: $$ A \;=\; \begin{pmatrix} 0 & 1 & 0\\ 1 & 0 & 1\\ 0 & 1 & 0 \end{pmatrix}. $$ 介数中心性(必经之地): $$ \displaystyle c_v \;=\; \sum_{s \neq t}\; \frac{\sigma_{st}(v)}{\sigma_{st}}, $$ 其中 $\sigma_{st}$ 表示从节点 $s$ 到节点 $t$ 的所有最短路径数; $\sigma_{st}(v)$ 表示这些最短路径当中经过节点 $v$ 的条数; 求和一般只考虑 $s \neq t$ 且 $s \neq v \neq t$ 的情形,避免把端点本身算作中间节点。 换言之,节点 $v$ 的介数中心性就是它作为“中间节点”出现在多少对 $(s,t)$ 的最短路径上。 对 3 个节点 ${1,2,3}$,不同的 $(s,t)$ 有: $(s,t)=(1,2)$:最短路径为 $(1,2)$。 路径上节点:1 → 2 中间节点:无 (1、2 是端点) $(s,t)=(1,3)$:最短路径为 $(1,2,3)$。 路径上节点:1 → 2 → 3 中间节点:2 $(s,t)=(2,3)$:最短路径为 $(2,3)$。 路径上节点:2 → 3 中间节点:无 (2、3 是端点) 节点 1 只会出现在路径 (1,2) 或 (1,3) 的端点位置;(2,3) 的最短路径不包含 1。 端点不计作中间节点,所以 $\sigma_{st}(1) = 0$ 对所有 $s\neq t\neq 1$。 因此 $$ c_1 = 0. $$ 节点 2 在 (1,3) 的最短路径 (1,2,3) 中,2 是中间节点。此时 $\sigma_{1,3}(2) = 1$; (1,2) 路径 (1,2) 中 2 是端点,(2,3) 路径 (2,3) 中 2 也是端点,因此不计入中间节点。 所以 $$ c_2 = \underbrace{\frac{\sigma_{1,3}(2)}{\sigma_{1,3}}}_{=1/1=1} ;=; 1. $$ 接近中心性(去哪儿都近): $$ c_v \;=\; \frac{1}{\sum_{u \neq v} d(u,v)}, $$ 其中 $d(u,v)$ 表示节点 $u$ 与节点 $v$ 的最短路径距离。 节点1: 与节点 2 的距离:$d(1,2)=1$。 与节点 3 的距离:$d(1,3)=2$(路径 1→2→3)。 距离和:$;1 + 2 = 3.$ 接近中心性:$; c_1 = \tfrac{1}{3} \approx 0.333.$ 其他两节点同理。 特征向量中心性 特征向量中心性要求我们求解 $$ A\,\mathbf = \lambda\,\mathbf , $$ 并选取对应**最大特征值** $\lambda$ 的特征向量 $\mathbf $ 来代表每个节点的中心性。 记 $\mathbf = (x_1,,x_2,,x_3)^T$ 这里 $x_1$ 是节点 1 的中心性值,$x_2$ 是节点 2 的中心性值,$x_3$ 是节点 3 的中心性值 方程 $A,\mathbf = \lambda,\mathbf $ 具体展开 $$ \begin{pmatrix} 0 & 1 & 0\ 1 & 0 & 1\ 0 & 1 & 0 \end{pmatrix} \begin{pmatrix} x_1\ x_2\ x_3 \end{pmatrix} ;=; \lambda \begin{pmatrix} x_1\ x_2\ x_3 \end{pmatrix}. $$ 这意味着: $$ \begin{cases} 1.; x_2 = \lambda, x_1, \ 2.; x_1 + x_3 = \lambda, x_2, \ 3.; x_2 = \lambda, x_3. \end{cases} $$ 求解最大特征值 $\lambda$ 及对应的 $\mathbf $ 通过特征多项式可知本矩阵的最大特征值为 $\sqrt{2}$。 最终(若需单位化)可以将向量归一化为 $$ \mathbf = \frac{1}{2},\begin{pmatrix} 1 \ \sqrt{2} \ 1 \end{pmatrix}. $$ 解释 节点 2 的得分最高($\tfrac{\sqrt{2}}{2}\approx 0.707$),因为它连接了节点 1 和 3,两边的贡献都能“传递”到它。 节点 1 和 3 的得分相同且略低($\tfrac{1}{2}=0.5$),因为它们都只与节点 2 相连。 聚类系数 (Clustering Coefficient) 定义: 聚类系数描述一个节点的邻居之间彼此相连的紧密程度。 对于某个节点,其局部聚类系数计算为: $$ C = \frac{2 \times \text{实际邻居间的边数}}{k \times (k-1)} $$ 其中 $k$ 为该节点的度数。 意义: 高聚类系数: 表示节点的邻居往往彼此熟识,形成紧密的小团体。 低聚类系数: 则说明邻居之间联系较少,节点更多处于桥梁位置,可能连接不同的社群。 在很多网络中,聚类系数能揭示局部社区结构和节点的协同效应。 Graphlets 定义: Graphlets 是指网络中规模较小(通常由3至5个节点构成)的非同构子图。 通过统计一个节点参与的各种 graphlet 模式的数量,我们可以构造出该节点的 Graphlet Degree Vector (GDV)。 意义: Graphlets 能捕捉节点在局部网络结构中的精细模式,比单纯的度数或聚类系数提供更丰富的信息。 在很多应用中(如生物网络分析或社交网络挖掘),通过分析节点参与的 graphlet 模式,可以更好地理解节点的功能和在整个网络中的角色。 Graphlets 被视为网络的“结构指纹”,有助于区分功能不同的节点。 连接层面的特征工程 目的:通过已知连接补全未知连接 eg: AB之间有连接,BC之间有连接,那么AC之间是否可能有连接呢? 法一:直接提取连接的特征,把连接变成D维向量(推荐)。 法二:把连接两端节点的D维向量拼接,即上一讲的节点特征拼接(不推荐,损失了连接本身的结构信息。) Distance-based Feature 核心思路: 用两个节点之间的最短路径长度(或加权距离等)作为边的特征,衡量节点对的“接近”程度。 Local Neighborhood Overlap 核心思路: 度量两个节点在其“一阶邻居”层面共享多少共同邻居,或者它们的邻居集合相似度如何。 Common Neighbors $$ \text{CN}(u,v) ;=; \bigl|,N(u),\cap,N(v)\bigr|, $$ 其中 $N(u)$ 是节点 $u$ 的邻居集合,$\cap$ 表示交集。数值越大,表示两节点在局部网络中有更多共同邻居。 Jaccard Coefficient $$ \text{Jaccard}(u,v) ;=; \frac{\bigl|,N(u),\cap,N(v)\bigr|}{\bigl|,N(u),\cup,N(v)\bigr|}. $$ 反映了两个节点邻居集合的交并比,越大则两者邻居越相似。 Adamic-Adar $$ \text{AA}(u,v) ;=; \sum_{w ,\in, N(u),\cap,N(v)} \frac{1}{\log,\bigl|N(w)\bigr|}. $$ 共同邻居数目较多、且这些邻居本身度数越小,贡献越大。常用于社交网络链接预测。(直观理解:如果AB都认识C,且C是个社牛,那么AB之间的友谊就不一定好) Global Neighborhood Overlap 核心思路: 不只看“一阶邻居”,还考虑更大范围(如 2 步、3 步乃至更多跳数)上的共同可达节点,或更广泛的结构相似度。 Katz 指标:累加节点间所有长度的路径并衰减; Random Walk:基于随机游走来度量节点对的全局可达性; Graph Embedding:DeepWalk、node2vec等,都可将多跳结构信息编码到向量表示里,再用向量相似度当作边特征。 真实情况如何编码边的特征? 在一个 边的特征工程 任务中,可以将 Distance-based Feature、Local Neighborhood Overlap 和 Global Neighborhood Overlap 等特征组合起来,形成一个完整的特征向量。 例如:对于每条边 $ (u,v) $,我们提取以下 6 种特征: 最短路径长度 $ d(u,v) $ (Distance-based Feature) 共同邻居数 $ CN(u,v) $ (Local Neighborhood Overlap) Jaccard 系数 $ Jaccard(u,v) $ (Local Neighborhood Overlap) Adamic-Adar 指标 $ AA(u,v) $ (Local Neighborhood Overlap) Katz 指数 $ Katz(u,v) $ (Global Neighborhood Overlap) Random Walk 访问概率 $ RW(u,v) $ (Global Neighborhood Overlap) 对于图中某条边 $ (A, B) $,它的特征向量可能是: $$ \mathbf{f}(A, B) = \big[ 2, 5, 0.42, 0.83, 0.31, 0.45 \big] $$ 图层面的特征工程 目的:网络相似度、图分类(已知分子结构判断是否有xx特性) 当我们要对整张图进行分类或比较(如图分类、图相似度计算等),需要将图转化为可比较的向量或特征。最朴素的想法是: Bag-of-Node-Degrees:统计每个节点的度,然后构建一个“度分布”或“度直方图”。 例如,对图 $G$,我们计算 $\phi(G) = [,\text{count of deg}=1,\ \text{count of deg}=2,\ \dots,]$。 缺点:只关注了节点度,无法区分很多结构不同、但度分布相同的图。 为解决这个不足,人们提出了更精细的“Bag-of-*”方法,把节点周围的更丰富结构(子图、子树、图形)纳入统计,从而形成更有判别力的特征。 Graphlet Kernel Graphlets:指小规模(如 3 节点、4 节点、5 节点)的非同构子图。 做法:枚举或随机采样网络中的所有小型子图(graphlets),并根据其类型计数出现频率。 比如在 4 节点层面,有 6 种不同的非同构结构,就统计每种结构出现多少次。 得到的特征:一个“graphlet type”直方图,即 $\phi(G) = \big[\text{count}(\text{graphlet}_1), \dots, \text{count}(\text{graphlet}_k)\big]$。 优点:比单纯节点度更能捕捉网络的局部模式。 缺点:当图很大时,遍历或采样 graphlet 代价较高;仅依赖小子图也可能忽略更大范围结构。 Weisfeiler–Lehman Kernel Weisfeiler–Lehman (WL) 核是一种基于迭代标签传播的方法,用于图同构测试和图相似度计算。 核心思路: 初始标签:给每个节点一个初始标签(可能是节点的类型或颜色)。 迭代更新:在每一步迭代中,将节点自身标签与其邻居标签拼接后做哈希,得到新的标签。 记录“标签多重集”:每次迭代会产生新的节点标签集合,可视为“节点子树结构”的某种编码。 Bag-of-Labels / Bag-of-Subtrees: 在每一轮迭代后,统计各类标签出现次数,累加到特征向量中。 相当于对节点子树或“局部邻域结构”做词袋统计。 优点:在保留更多结构信息的同时,计算复杂度相对可控。 缺点:仍然可能有一定的“同构测试”盲区;对于非常复杂的图,标签碰撞可能出现。 例子: 假设我们有一个简单的无向图,包含 4 个节点和 4 条边,结构如下: 1 — 2 — 3 | 4 1. 初始化标签 首先,给每个节点一个初始标签。假设我们直接用节点的度数作为初始标签: 初始标签如下: 节点 1: 1 节点 2: 3 节点 3: 1 节点 4: 1 2. 第一次迭代 在第一次迭代中,每个节点的标签会更新为其自身标签和邻居标签的拼接,然后通过哈希函数生成新的标签。 节点 1: 邻居是节点 2,标签为 3。 拼接后的标签为 (1, 3)。 假设哈希结果为 A。 节点 2: 邻居是节点 1、3、4,标签分别为 1、1、1。 拼接后的标签为 (3, 1, 1, 1)。 假设哈希结果为 B。 节点 3: 邻居是节点 2,标签为 3。 拼接后的标签为 (1, 3)。 假设哈希结果为 A。 节点 4: 邻居是节点 2,标签为 3。 拼接后的标签为 (1, 3)。 假设哈希结果为 A。 第一次迭代后的标签如下: 节点 1: A 节点 2: B 节点 3: A 节点 4: A 3. 第二次迭代 节点 1: 邻居是节点 2,标签为 B。 拼接后的标签为 (A, B)。 假设哈希结果为 C。 节点 2: 邻居是节点 1、3、4,标签分别为 A、A、A。 拼接后的标签为 (B, A, A, A)。 假设哈希结果为 D。 节点 3: 邻居是节点 2,标签为 B。 拼接后的标签为 (A, B)。 假设哈希结果为 C。 节点 4: 邻居是节点 2,标签为 B。 拼接后的标签为 (A, B)。 假设哈希结果为 C。 第二次迭代后的标签如下: 节点 1: C 节点 2: D 节点 3: C 节点 4: C 4. 停止条件 通常,WL Kernel 会进行多次迭代,直到节点的标签不再变化(即收敛)。在这个例子中,假设我们只进行两次迭代。 5.统计标签的多重集 在每次迭代后,统计图中所有节点的标签分布(即“标签多重集”),并将其作为图的特征。 初始标签多重集: 标签 1 出现 3 次(节点 1、3、4)。 标签 3 出现 1 次(节点 2)。 第一次迭代后的标签多重集: 标签 A 出现 3 次(节点 1、3、4)。 标签 B 出现 1 次(节点 2)。 第二次迭代后的标签多重集: 标签 C 出现 3 次(节点 1、3、4)。 标签 D 出现 1 次(节点 2)。 $$ \phi(G) = [\text{count}(1), \text{count}(3), \text{count}(A), \text{count}(B), \text{count}(C), \text{count}(D)]. \\ \phi(G) = [3, 1, 3, 1, 3, 1]. $$ 直观理解 初始标签:只关注节点的度数。 第一次迭代:关注节点的度数及其邻居的度数。 第二次迭代:关注节点的度数、邻居的度数,以及邻居的邻居的度数。 随着迭代的进行,WL Kernel 能够捕捉到越来越复杂的局部结构信息。
科研
zy123
3月21日
0
4
0
2025-03-21
机器学习
机器学习与深度学习 机器学习 监督学习 监督学习(Supervised Learning) 定义:所有训练数据都具有明确的标签,模型通过这些标签进行学习。 特点:模型训练相对直接,性能受限于标注数据的质量和数量。 示例:传统的分类问题,如手写数字识别、垃圾邮件检测等。 无监督学习(Unsupervised Learning) 定义:训练数据完全没有标签,模型需要自己去发现数据中的模式或结构。 特点:常用于聚类、降维、关联规则挖掘等任务,难以直接用于分类任务。 示例:聚类算法(如K-means)和主成分分析(PCA)。 半监督学习(Semi‑supervised Learning) 定义:介于监督学习和无监督学习之间,使用少量带标签的数据和大量未标签的数据共同训练模型,以在标注数据稀缺时提升分类性能。 特点:结合标签信息与数据分布结构,通过利用未标签数据的内在聚类或流形结构降低对标注数据的依赖,从而提高模型泛化能力并降低标注成本;通常依赖平滑假设和聚类假设等前提。 示例:在猫狗图像分类任务中,先使用少量已标记的猫狗图片训练初始模型,再用该模型为大量未标记图片生成“伪标签”,将这些伪标签数据与原有标记数据合并重新训练,从而获得比仅使用有标签数据更高的分类准确率。 在半监督学习中,为了避免将错误的模型预测“伪标签”纳入训练,必须对每个未标注样本的预测结果进行可信度评估,只保留高置信度、准确率更高的伪标签作为新增训练数据。 深度学习 前向传播 Mini Batch梯度下降 Batch Size(批大小) 定义 Batch Size 指在深度学习模型训练过程中,每次迭代送入网络进行前向传播和反向传播的样本数量。 特点 Batch Size 决定了梯度更新的频率和稳定性;较大的 Batch Size 能更好地利用 GPU 并行计算、减少迭代次数、加快训练速度,但会显著增加显存占用且可能降低模型泛化能力;较小的 Batch Size 则带来更大的梯度噪声,有助于跳出局部最优、提高泛化性能,但训练过程更不稳定且耗时更长。 示例:在 PyTorch 中,使用 DataLoader(dataset, batch_size=32, shuffle=True) 表示每次迭代从数据集中抽取 32 个样本进行训练。一个batch的所有样本会被打包成一个张量,一次性并行送入网络进行计算 将完整训练集分割成若干大小相同的小批量(mini‑batch),每次迭代仅使用一个 mini‑batch 来计算梯度并更新模型参数,结合了批量梯度下降(Batch GD)和随机梯度下降(SGD)的优势。 当 batch_size=1 时退化为随机梯度下降;当 batch_size=m(训练集总样本数)时退化为批量梯度下降。 通常选择 2 的幂(如32、64、128、256)以匹配 GPU/CPU 内存布局并提升运算效率。 算法流程 将训练数据随机打乱并按 batch_size 划分成多个 mini‑batch。 对每个 mini‑batch 执行: 前向传播计算输出。 计算 mini‑batch 上的平均损失。 反向传播计算梯度。 按公式更新参数: $$ \theta \leftarrow \theta - \eta \frac{1}{|\text{batch}|}\sum_{i\in \text{batch}} \nabla_\theta \mathcal{L}(x_i,y_i) $$ 遍历所有 mini‑batch 即完成一个 epoch,可重复多轮直到收敛。 Softmax 公式 假设有一个输入向量 $$ z = [z_1, z_2, \dots, z_K], $$ 则 softmax 函数的输出为: $$ \sigma(z)_i = \frac{e^{z_i}}{\sum_{j=1}^{K} e^{z_j}}, $$ 其中 $i = 1, 2, \dots, K$。 分子:对每个 $z_i$ 取自然指数 $e^{z_i}$,目的是将原始的实数扩展到正数范围。 分母:对所有 $e^{z_j}$ 求和,从而实现归一化,使得所有输出概率和为 1。 交叉熵损失 假设有三个类别,真实标签为第二类,因此用 one-hot 编码表示为: $$ y = [0,\; 1,\; 0]. $$ 假设模型经过 softmax 后输出的预测概率为: $$ \hat{y} = [0.2,\; 0.7,\; 0.1]. $$ 交叉熵损失函数的定义为: $$ L = -\sum_{i=1}^{3} y_i \log \hat{y}_i. $$ 将 $y$ 和 $\hat{y}$ 的对应元素代入公式中: $$ L = -(0 \cdot \log 0.2 + 1 \cdot \log 0.7 + 0 \cdot \log 0.1) = -\log 0.7. $$ 计算 $-\log 0.7$(以自然对数为例): $$ -\log 0.7 \approx -(-0.3567) \approx 0.3567. $$ 因此,这个样本的交叉熵损失大约为 0.3567。 残差连接 假设一个神经网络层(或一组层)的输入为 $x$,传统的设计会期望该层直接学习一个映射 $F(x)$。而采用残差连接的设计,则将输出定义为: $$ \text{Output} = F(x) + x. $$ 这里: $F(x)$ 表示经过几层变换(比如卷积、激活等)后所学到的“残差”部分, $x$ 则是直接通过捷径传递过来的输入。 为什么使用残差连接 缓解梯度消失问题 在深层网络中,梯度往往会在反向传播过程中逐层衰减,而残差连接为梯度提供了一条捷径,使得梯度可以直接从后面的层传递到前面的层,从而使得网络更容易训练。 简化学习任务 网络不必学习从零开始构造一个完整的映射,而只需要学习输入与目标之间的残差。这样可以使得学习任务变得更简单,更易收敛。 提高网络性能 在很多实际应用中(例如图像识别中的 ResNet),引入残差连接的网络能训练得更深,并在多个任务上取得更好的效果。
科研
zy123
3月21日
0
3
0
2025-03-21
卡尔曼滤波
卡尔曼滤波 卡尔曼滤波(Kalman Filter)是一种用于线性动态系统状态估计的递归最优滤波算法,它在噪声环境下对系统状态进行估计,并常用于目标跟踪、导航和控制等领域。 卡尔曼滤波假设系统可以用状态空间模型描述,模型包括两个部分: 状态转移模型:描述系统状态如何从上一时刻转移到当前时刻。 测量模型:描述通过传感器获得的测量值与系统状态之间的关系。 这两个模型中均包含随机噪声,分别记为过程噪声和测量噪声。卡尔曼滤波的目标就是在已知这些噪声统计特性的前提下,利用当前和过去的测量值来对系统状态进行最优估计。 引入 公式 状态转移模型 设系统的状态向量为 $\mathbf _k$,控制输入为 $\mathbf{u}_k$,过程噪声为 $\mathbf{w}_k$(假设均值为0,协方差矩阵为 $\mathbf{Q}$,维度和状态向量一致),状态转移模型可写为: $$ \mathbf _k = \mathbf{A} \mathbf _{k-1} + \mathbf{B} \mathbf{u}_{k-1} + \mathbf{w}_{k-1} $$ 其中: $\mathbf{A}$ 是状态转移矩阵, $\mathbf{B}$ 是控制输入矩阵。 测量模型 设测量向量为 $\mathbf{z}_k$,测量噪声为 $\mathbf{v}_k$(假设均值为0,协方差矩阵为 $\mathbf{R}$),测量模型为: $$ \mathbf{z}_k = \mathbf{H} \mathbf _k + \mathbf{v}_k $$ 其中: $\mathbf{H}$ 是测量矩阵。 这里是真实状态、真实测量、过程噪声、测量噪声。在卡尔曼滤波的预测和更新阶段中,只需在每个时刻把新测得的 $z_k$ (再加上可用的控制输入 $u_{k-1}$)喂进去,滤波器就会自动递推状态估计。 递归过程 卡尔曼滤波的递归过程主要分为两大步:预测(Prediction) 和 更新(Update)。 注意:$\hat{\mathbf }_k^-$右上角的'-'符号是区分预测状态和更新后的状态。 预测步骤 状态预测: 利用系统的状态转移模型,将上一次的状态估计 $\hat{\mathbf }{k-1}$ 通过转移矩阵 $\mathbf{A}$(和控制输入 $\mathbf{B} \mathbf{u}{k-1}$)预测到当前时刻的状态: $$ \hat{\mathbf }k^- = \mathbf{A} \hat{\mathbf }{k-1} + \mathbf{B} \mathbf{u}_{k-1} $$ 这里 $\hat{\mathbf }_k^-$ 称为先验状态估计,它反映了系统在没有新测量数据情况下的预期状态。 协方差预测: 同时,将上一次状态的不确定性(协方差矩阵 $\mathbf{P}_{k-1}$)传播到当前时刻,并加上过程噪声 $\mathbf{Q}$ 的影响: $$ \mathbf{P}k^- = \mathbf{A} \mathbf{P}{k-1} \mathbf{A}^\mathrm{T} + \mathbf{Q} $$ 这个预测协方差反映了预测状态的置信程度,不确定性通常会因过程噪声的加入而增大。 更新步骤 当时刻 $k$ 新的测量值 $\mathbf{z}_k$ 到达时,我们使用它来校正预测结果。 卡尔曼增益的计算: 卡尔曼增益 $\mathbf{K}_k$ 衡量了预测的不确定性与测量不确定性之间的权衡。计算公式为: $$ \mathbf{K}_k = \mathbf{P}_k^- \mathbf{H}^\mathrm{T} \left(\mathbf{H} \mathbf{P}_k^- \mathbf{H}^\mathrm{T} + \mathbf{R}\right)^{-1} $$ 当预测的置信度较低($\mathbf{P}_k^-$较大)时,卡尔曼增益较大,说明更多地信任测量值;反之,则更多地依赖预测值。 状态更新: 根据卡尔曼增益修正先验状态,将测量的偏差信息(即测量值与预测值之间的差异,也叫创新)加权融合: $$ \hat{\mathbf }_k = \hat{\mathbf }_k^- + \mathbf{K}_k \left(\mathbf{z}_k - \mathbf{H} \hat{\mathbf }_k^- \right) $$ 这个更新后的状态 $\hat{\mathbf }_k$ 就是当前时刻的后验状态估计,它综合了预测和测量两方面的信息。 协方差更新: 更新后的协方差表示在新的测量信息下的不确定性: $$ \mathbf{P}_k = (\mathbf{I} - \mathbf{K}_k \mathbf{H}) \mathbf{P}_k^- $$ 一般来说,经过更新后,状态的不确定性会降低(即协方差矩阵的数值减小)。 疑问: 状态转移模型:为什么包含噪声? 状态转移模型描述的是系统状态的真实动态行为,它是一个理论模型,表示状态如何从 $\mathbf _{k-1}$ 演化到 $\mathbf k$。由于现实系统存在不确定性(如建模误差、外部扰动等),这些无法精确建模的部分被抽象为**过程噪声 $\mathbf{w}{k-1}$**。因此,模型写作: $$ \mathbf _k = \mathbf{A} \mathbf _{k-1} + \mathbf{B} \mathbf{u}_{k-1} + \mathbf{w}_{k-1} $$ 状态预测:为什么不带噪声? 在卡尔曼滤波的预测步骤中,我们计算的是状态的期望值(即最优估计),而非真实状态本身。由于噪声 $\mathbf{w}_{k-1}$ 的均值为零,它在预测时的期望贡献为零: $$ \mathbb{E}[\mathbf _k] = \mathbf{A} \mathbb{E}[\mathbf _{k-1}] + \mathbf{B} \mathbf{u}_{k-1} + \mathbb{E}[\mathbf{w}_{k-1}] = \mathbf{A} \hat{\mathbf }_{k-1} + \mathbf{B} \mathbf{u}_{k-1} $$ 协方差预测:噪声的体现 虽然噪声的均值在状态预测中被忽略,但其随机性会导致不确定性累积。因此,协方差预测公式中显式加入了 $\mathbf{Q}$: $$ \mathbf{P}_k^- = \mathbf{A} \mathbf{P}_{k-1} \mathbf{A}^\mathrm{T} + \mathbf{Q} $$ 扩展卡尔曼滤波 扩展卡尔曼滤波(Extended Kalman Filter,简称 EKF)是一种针对非线性系统状态估计问题的滤波方法。传统的卡尔曼滤波要求系统的状态转移和观测模型都是线性的,而在实际问题中,很多系统往往存在非线性特性。 EKF 的核心思想就是对非线性模型进行局部线性化,然后在线性化后的模型上直接套用标准卡尔曼滤波(KF)的预测和更新公式。 非线性系统模型 假设系统的状态转移和观测模型为非线性的: 状态转移模型: $$ \mathbf k = f(\mathbf {k-1}, \mathbf{u}{k-1}) + \mathbf{w}{k-1} $$ 观测模型: $$ \mathbf{z}_k = h(\mathbf _k) + \mathbf{v}k $$ 其中,$f(\cdot)$ 和 $h(\cdot)$ 为非线性函数,$\mathbf{w}{k-1}$ 和 $\mathbf{v}_k$ 分别表示过程噪声和测量噪声(均假设为零均值高斯噪声)。 线性化 为了使用卡尔曼滤波方法,扩展卡尔曼滤波需要对非线性函数进行局部线性化。具体做法是使用泰勒展开在当前状态估计附近进行一阶近似,计算函数的雅可比矩阵: 状态转移函数 $f$ 的雅可比矩阵: $$ F_k = \left.\frac{\partial f}{\partial \mathbf }\right|{\mathbf =\hat{\mathbf }{k-1}, \mathbf{u}=\mathbf{u}_{k-1}} $$ 观测函数 $h$ 的雅可比矩阵: $$ H_k = \left.\frac{\partial h}{\partial \mathbf }\right|_{\mathbf =\hat{\mathbf }_k^-} $$ 滤波过程 扩展卡尔曼滤波的递归过程与标准卡尔曼滤波类似,但在每一步都需要用雅可比矩阵替换原来的线性模型矩阵: 预测步骤: 状态预测: $$ \hat{\mathbf }k^- = f(\hat{\mathbf }{k-1}, \mathbf{u}_{k-1}) $$ 协方差预测: $$ \mathbf{P}k^- = F_k \mathbf{P}{k-1} F_k^\mathrm{T} + \mathbf{Q} $$ 这里 $F_k$ 是在 $\hat{\mathbf }_{k-1}$ 处计算得到的雅可比矩阵。 更新步骤: 计算卡尔曼增益: $$ \mathbf{K}_k = \mathbf{P}_k^- H_k^\mathrm{T} \left(H_k \mathbf{P}_k^- H_k^\mathrm{T} + \mathbf{R}\right)^{-1} $$ 状态更新: $$ \hat{\mathbf }_k = \hat{\mathbf }_k^- + \mathbf{K}_k \left(\mathbf{z}_k - h(\hat{\mathbf }_k^-)\right) $$ 协方差更新: $$ \mathbf{P}_k = (\mathbf{I} - \mathbf{K}_k H_k) \mathbf{P}_k^- $$ 通过这样的线性化步骤,EKF 能够对非线性系统进行状态估计,虽然由于线性化近似可能带来一定误差,但在大多数情况下能达到较好的效果。 雅各比矩阵定义 雅可比矩阵(Jacobian Matrix)是一个多变量函数各个分量对各个变量的偏导数组成的矩阵。它反映了在某一点处函数的局部线性化近似,也就是该函数在这一点的“导数”信息。在扩展卡尔曼滤波中,为了对非线性状态转移函数 $f(\mathbf , \mathbf{u})$ 或观测函数 $h(\mathbf )$ 进行线性化,我们需要计算它们在当前估计点的雅可比矩阵。 示例 1:状态转移函数的雅可比矩阵 假设系统的状态为 $\mathbf = \begin{bmatrix} x_1 \ x_2 \end{bmatrix}$(例如,$x_1$ 表示位置,$x_2$ 表示速度),状态转移函数定义为: $$ f(\mathbf ) = \begin{bmatrix} f_1(x_1, x_2) \\ f_2(x_1, x_2) \end{bmatrix} = \begin{bmatrix} x_1 + x_2 + 0.1 x_1^2 \\ x_2 + 0.05 x_1 \end{bmatrix} $$ 这里函数中的非线性项为 $0.1 x_1^2$ 和 $0.05 x_1$。 求雅可比矩阵 雅可比矩阵 $F$ 是一个 $2 \times 2$ 矩阵,其中每个元素为: $$ F_{ij} = \frac{\partial f_i}{\partial x_j} $$ 计算各个偏导数: 对 $f_1(x_1, x_2) = x_1 + x_2 + 0.1 x_1^2$: $\frac{\partial f_1}{\partial x_1} = 1 + 0.2x_1$ $\frac{\partial f_1}{\partial x_2} = 1$ 对 $f_2(x_1, x_2) = x_2 + 0.05 x_1$: $\frac{\partial f_2}{\partial x_1} = 0.05$ $\frac{\partial f_2}{\partial x_2} = 1$ 因此,雅可比矩阵为: $$ F = \begin{bmatrix} 1 + 0.2x_1 & 1 \\ 0.05 & 1 \end{bmatrix} $$ 示例 2:观测函数的雅可比矩阵 假设观测函数为: $$ h(\mathbf ) = \begin{bmatrix} h_1(x_1, x_2) \\ h_2(x_1, x_2) \end{bmatrix} = \begin{bmatrix} \sqrt{x_1} \\ x_2 \end{bmatrix} $$ 这里假设传感器对位置进行非线性测量(取平方根),而速度直接测量。 求雅可比矩阵 计算各个偏导数: 对 $h_1(x_1, x_2) = \sqrt{x_1}$: $\frac{\partial h_1}{\partial x_1} = \frac{1}{2\sqrt{x_1}}$ $\frac{\partial h_1}{\partial x_2} = 0$(因为 $h_1$ 与 $x_2$ 无关) 对 $h_2(x_1, x_2) = x_2$: $\frac{\partial h_2}{\partial x_1} = 0$ $\frac{\partial h_2}{\partial x_2} = 1$ 因此,雅可比矩阵为: $$ H = \begin{bmatrix} \frac{1}{2\sqrt{x_1}} & 0 \\ 0 & 1 \end{bmatrix} $$ 无迹卡尔曼(UKF) UKF 具体步骤(分步解析) 符号 含义 维度 $ \mathbf $ 系统状态向量 $ n \times 1 $ $ P $ 状态协方差矩阵 $ n \times n $ $ \mathbf{z} $ 观测向量 $ m \times 1 $ $ f(\cdot) $ 非线性状态转移函数 - $ h(\cdot) $ 非线性观测函数 - $ Q $ 过程噪声协方差 $ n \times n $ $ R $ 观测噪声协方差 $ m \times m $ $ \mathcal{X} $ Sigma点集合 $ n \times (2n+1) $ $ W^{(m)} $ 均值权重 $ 1 \times (2n+1) $ $ W^{(c)} $ 协方差权重 $ 1 \times (2n+1) $ $ \alpha, \beta, \kappa $ UKF调参参数(控制Sigma点分布) 标量 建模: $$x_k = f(x_{k-1}) + w_k$$ $$y_k = h\left(x_k\right) + v_k$$ Step 1: 生成Sigma点(确定性采样) 目的:根据当前状态均值和协方差,生成一组代表状态分布的采样点。 公式: $$ \begin{aligned} \mathcal{X}_0 &= \hat{\mathbf }_{k-1|k-1} \\ \mathcal{X}_i &= \hat{\mathbf }_{k-1|k-1} + \left( \sqrt{(n+\lambda) P_{k-1|k-1}} \right)_i \quad (i=1,\dots,n) \\ \mathcal{X}_{i+n} &= \hat{\mathbf }_{k-1|k-1} - \left( \sqrt{(n+\lambda) P_{k-1|k-1}} \right)_i \quad (i=1,\dots,n) \end{aligned} $$ **符号说明**: $ \sqrt{(n+\lambda) P} $:协方差矩阵的平方根(如Cholesky分解)。 $ \left( \sqrt{(n+\lambda) P} \right)_i $ 表示平方根矩阵的第 $ i $ 列。 $ \lambda = \alpha^2 (n + \kappa) - n $:缩放因子($ \alpha $控制分布范围,通常取1e-3;$ \kappa $通常取0)。 为什么是 $ 2n+1 $ 个点?1个中心点 + $ 2n $个对称点,覆盖状态空间的主要方向。 示例: 假设状态 $ \mathbf = [x, y]^T $,$ n = 2 $,$ P = \begin{bmatrix} 4 & 0 \ 0 & 1 \end{bmatrix} $,$ \lambda = 0 $: 计算平方根矩阵(Cholesky分解): $$ \sqrt{(n+\lambda) P} = \sqrt{2} \cdot \begin{bmatrix} 2 & 0 \ 0 & 1 \end{bmatrix} = \begin{bmatrix} 2.828 & 0 \ 0 & 1.414 \end{bmatrix} $$ 生成 Sigma 点: $$ \begin{aligned} \mathcal{X}_0 &= \hat{\mathbf } \ \mathcal{X}_1 &= \hat{\mathbf } + [2.828, 0]^T = [\hat + 2.828, \hat{y}] \ \mathcal{X}_2 &= \hat{\mathbf } + [0, 1.414]^T = [\hat , \hat{y} + 1.414] \ \mathcal{X}_3 &= \hat{\mathbf } - [2.828, 0]^T = [\hat - 2.828, \hat{y}] \ \mathcal{X}_4 &= \hat{\mathbf } - [0, 1.414]^T = [\hat , \hat{y} - 1.414] \ \end{aligned} $$ Step 2: 计算Sigma点权重 目的:为每个Sigma点分配权重,用于后续计算均值和协方差。 公式: $$ \begin{aligned} W_0^{(m)} &= \frac{\lambda}{n + \lambda} \quad &\text{(中心点均值权重)} \\ W_0^{(c)} &= \frac{\lambda}{n + \lambda} + (1 - \alpha^2 + \beta) \quad &\text{(中心点协方差权重)} \\ W_i^{(m)} = W_i^{(c)} &= \frac{1}{2(n + \lambda)} \quad (i=1,\dots,2n) \quad &\text{(对称点权重)} \end{aligned} $$ **符号说明**: $ \beta $:高阶矩调节参数(高斯分布时取2最优)。 权重作用:中心点通常权重较大,对称点权重均等。 Step 3: 预测步骤(时间更新) 目的:将Sigma点通过非线性状态方程传播,计算预测状态和协方差。 子步骤: 传播Sigma点: $$ \mathcal{X}{i,k|k-1}^* = f(\mathcal{X}{i,k-1}, \mathbf{u}_{k-1}), \quad i=0,1,...,2n $$ (每个Sigma点独立通过 $ f(\cdot) $ 计算) 计算预测均值和协方差: $$ \hat{\mathbf }{k|k-1} = \sum{i=0}^{2n} W_i^{(m)} \mathcal{X}_{i,k|k-1}^* $$ $$ P_{k|k-1} = \sum_{i=0}^{2n} W_i^{(c)} \left( \mathcal{X}{i,k|k-1}^* - \hat{\mathbf }{k|k-1} \right) \left( \mathcal{X}{i,k|k-1}^* - \hat{\mathbf }{k|k-1} \right)^T + Q_k $$ 符号说明: $\mathcal{X}_{k-1}$:上一时刻生成的Sigma点集合($2n+1$个点) $\mathcal{X}_{k|k-1}^*$:通过状态方程传播后的Sigma点集合 $ Q_k $:过程噪声(表示模型不确定性)。 Step 4: 观测更新(测量更新) 目的:将预测的Sigma点通过观测方程传播,计算卡尔曼增益并更新状态。 子步骤: 生成观测Sigma点: $$ \mathcal{Z}{i,k|k-1} = h(\mathcal{X}{i,k|k-1}^*), \quad i=0,...,2n $$ 计算观测预测统计量: $$ \hat{\mathbf{z}}{k|k-1} = \sum{i=0}^{2n} W_i^{(m)} \mathcal{Z}_{i,k|k-1} $$ $$ P_{z_k z_k} = \sum_{i=0}^{2n} W_i^{(c)} \left( \mathcal{Z}{i,k|k-1} - \hat{\mathbf{z}}{k|k-1} \right) \left( \mathcal{Z}{i,k|k-1} - \hat{\mathbf{z}}{k|k-1} \right)^T + R_k $$ $$ P_{x_k z_k} = \sum_{i=0}^{2n} W_i^{(c)} \left( \mathcal{X}{i,k|k-1}^* - \hat{\mathbf }{k|k-1} \right) \left( \mathcal{Z}{i,k|k-1} - \hat{\mathbf{z}}{k|k-1} \right)^T $$ 符号说明: $ P_{z_k z_k} $:观测自协方差(含噪声 $ R_k $)。 $ P_{x_k z_k} $:状态-观测互协方差。 计算卡尔曼增益和更新状态: $$ K_k = P_{x_k z_k} P_{z_k z_k}^{-1} $$ $$ \hat{\mathbf }{k|k} = \hat{\mathbf }{k|k-1} + K_k (\mathbf{z}k - \hat{\mathbf{z}}{k|k-1}) $$ $$ P_{k|k} = P_{k|k-1} - K_k P_{z_k z_k} K_k^T $$
科研
zy123
3月21日
0
2
0
2025-03-21
数学基础
数学基础 求解一阶非齐线性微分方程 考虑方程 $$ 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^ $$ 第四步:求 $u(x)$ 对 $u'(x)$ 积分: $$ u(x) = \int x e^ 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}{( _{i}-\overline )}^{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}( {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) 概率密度函数 定义: 概率密度函数是描述连续型随机变量在某个取值点附近的可能性"密度"的函数。注意: PDF在某一点的值不是概率,而是概率的"密度"。 实际概率是通过对PDF在某个区间内积分得到的(比如 $P(a \leq X \leq b) = \int_a^b f(x)dx$)。 PDF的全域积分必须等于1(即所有可能性的总和为100%)。 例子: 假设某人的每日通勤时间 $X$ 是一个连续随机变量,其PDF可能是一个钟形曲线(如正态分布)。PDF在 $x=30$ 分钟处的值 $f(30)$ 表示"30分钟附近"的概率密度,而 $P(25 \leq X \leq 35)=0.4$ 表示约有40%的概率通勤时间会落在这个区间。 指数分布 定义: 指数分布是一种常见的连续型概率分布,通常用于描述"事件间隔时间"或"无记忆性"的过程。比如: 客服电话的间隔时间。 灯泡的寿命。 地震发生的间隔时间。 概率密度函数(PDF): 指数分布的PDF公式为: $$ f(x) = \lambda e^{-\lambda x} \quad (x \geq 0) $$ 其中: $\lambda$ 是率参数(单位时间内事件发生的平均次数)。 $1/\lambda$ 是事件的平均间隔时间。 无记忆性:已经等待了时间 $t$,再等待额外时间 $s$ 的概率与从头开始等待 $s$ 的概率相同(即 $P(X > t+s \mid X > t) = P(X > s)$)。 例子: 假设某网站用户访问的间隔时间服从 $\lambda = 0.5$(平均每2分钟1次访问),则: PDF为 $f(x) = 0.5 e^{-0.5x}$。 用户在接下来1分钟内访问的概率是 $P(0 \leq X \leq 1) = \int_0^1 0.5 e^{-0.5x} dx \approx 0.393$。 高斯分布 高斯分布的概率密度函数: $$ \mathcal{f}(\mathcal )=\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 $ 必须是正的)。 拉普拉斯矩阵 拉普拉斯矩阵及其性质 对于一个无向图 $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}$ 幂迭代 幂迭代方法是一种常用的数值迭代算法,主要用于计算矩阵的主特征值(即具有最大模长的特征值)及其对应的特征向量。 收敛原理 在多数实际问题中,矩阵的特征值中存在一个绝对值最大的特征值。根据线性代数理论: 任取一个非零初始向量(且在主特征向量方向上的分量不为0) 通过不断与矩阵相乘并归一化,该向量会逐渐趋近于主特征向量方向 其他较小特征值对应的分量会被逐渐"削弱" 算法步骤 选取初始向量 选择非零初始向量 $$x^{(0)}$$ 迭代更新 每次迭代计算: $$ x^{(k+1)} = A x^{(k)} $$ 并进行二范数归一化以保持数值稳定性 收敛判断 当相邻迭代向量足够接近时停止,此时: 归一化向量 ≈ 主特征向量 特征值估计(瑞利商(Rayleigh Quotient)): $$ \lambda^{(k)} = \frac{(x^{(k)})^T A x^{(k)}}{(x^{(k)})^T x^{(k)}} $$ 瑞利商(Rayleigh Quotient)推导: 假设 $x$ 是 $A$ 的一个近似特征向量(比如幂迭代法得到的 $x^{(k)}$),我们希望找到一个标量 $\lambda$ 使得 $A x \approx \lambda x$。 为了找到最优的 $\lambda$,可以最小化残差 $| A x - \lambda x |^2$: $$ \| A x - \lambda x \|^2 = (A x - \lambda x)^T (A x - \lambda x) $$ 展开后: $$ = x^T A^T A x - 2 \lambda x^T A x + \lambda^2 x^T x $$ 对 $\lambda$ 求导并令导数为零: $$ \frac{d}{d\lambda} \| A x - \lambda x \|^2 = -2 x^T A x + 2 \lambda x^T x = 0 $$ 解得: $$ \lambda = \frac{x^T A x}{x^T x} $$ 这就是 **瑞利商** 的表达式: $$ \lambda^{(k)} = \frac{(x^{(k)})^T A x^{(k)}}{(x^{(k)})^T x^{(k)}} $$
科研
zy123
3月21日
0
9
0
上一页
1
2
3