选择特殊符号

选择搜索类型

热门搜索

首页 > 百科 > 电气百科

稀疏矩阵算法

稀疏矩阵算法是以稀疏矩阵作为核心数据结构的算法。
稀疏矩阵算法的最大特点是通过只存储和处理非零元素从而大幅度降低存储空间需求以及计算复杂度,代价则是必须使用专门的稀疏矩阵压缩存储数据结构。稀疏矩阵算法是典型的不规则算法,计算访存比很低,并且计算过程中的访存轨迹与稀疏矩阵的稀疏结构相关。
稀疏矩阵算法是自然科学和社会科学中许多领域进行数值模拟计算时的关键技术和性能瓶颈,为了提高稀疏矩阵算法的计算性能,需要提高相应算法在特定平台上的计算效率。

稀疏矩阵算法基本信息

稀疏矩阵算法算法

图遍历算法

图遍历算法是最基本的图算法之一,由指定节点开始,按照一定规则遍历图结构中所有的连通节点,包括宽度优先搜索(Breadth First Search,BFS)和深度优先搜索(Depth First Search, DFS)等核心算法。

作为最基本的图遍历算法,宽度优先搜索算法代表了图遍历算法的计算特性,具有非常重要的研究意义。一方面,BFS算法是最短路径、邻接查询、可达性查询等算法的实现基础,广泛应用于图分割、信念传播统计以及网络社区结构发现等领域;另一方面,BFS算法作为典型的数据密集型算法,体现了数据密集型应用对高性能计算系统的需求,广泛应用于大规模并行计算系统的数据处理能力评测,已经成为Parboil, Rodinia和Graph500等基准测试程序的核心算法。

在实际应用中,图的规模在不断增大,相应的,对图的存储和处理开销不断增加,有效地实现大规模并行BFS算法具有十分重要的意义。

稀疏线性方程组求解法

稀疏线性方程组的求解是对自然科学和社会科学中许多实际问题进行数值模拟时的关键技术之一。在高层建筑、桥梁、水坝、防洪堤的结构设计中,需对变形与应力情况进行模拟;在油气资源探测与分析、数值天气预报、飞行器的动力学分析中,需利用流体力学方程组进行模拟;在进行恒星大气分析与核爆实验时,常需利用辐射流体力学与粒子统计平衡等规律进行模拟。在对这些问题进行分析模拟时,通常利用偏微分方程建立数学模型。在对偏微分方程的离散求解过程中,稀疏线性方程组求解算法扮演着十分重要的角色。在许多不以偏微分方程建模的问题中,稀疏线性方程组求解同样发挥了重要的作用。在空中交通控制、电力线路中的最优电流问题中,需利用数学规划求解;在对采纳某项政策时在某给定条件下对国内、国际多个区域的相应经济指标进行预测时,需利用CGE模型进行分析;在可靠性分析、排队网络分析与计算机系统性能评估中,常利用具有大量状态的离散Markov链进行模拟。在这些问题的求解中,稀疏线性方程组的求解都占有重要位置,并且往往是整个计算过程中的性能瓶颈,稀疏线性方程组的高效求解是计算数学和工程应用中十分重要的课题之一。

解稀疏线性方程组的方法包括直接法(direct method)与迭代(iterative method)两类。直接法指在不考虑计算舍入误差的情况下,通过包括矩阵分解和三角方程组求解等有限步的操作求得方程组的精确解,因此又称精确法;迭代法指给定一个初始解向量,通过一定的计算构造一个向量列(一般通过逐次迭代得到一系列逼近精确值的近似解),向量列的极限为方程组理论上的精确解。迭代法对存储空间的需求低,在求解高阶非病态稀疏线性方程组方面具有一定优势。然而,迭代法不适合求解病态问题,性能因问题而异,并且面临精度控制、收敛速度慢或不收敛等问题。与迭代法相比,直接法的通用性好,求解结果精度高,性能稳定。当矩阵分解结果能够被多次后续计算重用以及多右端项时,直接法的优势尤其明显。在有限元分析、模拟电路瞬态仿真等应用领域的商用软件均采用直接法求解器作为标准的稀疏线性方程组求解器。但直接法的缺点在于对存储资源要求较高,无法处理高阶稀疏矩阵。

一般来说,迭代法的求解速度高于直接法。但是,如果使用直接法时矩阵分解过程能够被很多后续计算重复使用,则后续的三角阵求解可以非常快速实现,此时直接法在性能上具有优势。典型例子是模拟电路瞬态仿真,这时需要多次以Newton-Raphson方法求解非线性方程,每一次求解均会在工作点附近展开为线性方程,而且所有线性方程的矩阵分解方式都是固定的,因此求解该类问题最好的方法是直接法。稀疏矩阵的矩阵分解在GPU上的实现是很困难的,主要难点在于现有算法的数据依赖性导致可利用的并行性不足。此外,矩阵元素的排列顺序对计算过程中间结果矩阵的非零元素个数有很大影响,同时矩阵分解后的非零元素的分布与原来矩阵可能很不相同。

迭代法的理论基础相对复杂,并且具有多种不同的具体算法,但其基本形式均为从一个猜测解出发,通过多次迭代逐渐收敛,当误差满足一定条件时迭代中止。共扼梯度法(CG)是迭代法的主流方法之一,特别适合于特征值为良态分布的对称正定方程组;其它迭代法包括Jacobi、逐次超松弛(SOR)、广义极小剩余(GMRES)、预条件共扼梯度(PCG)等。迭代法的核心算法是稀疏矩阵向量乘(SpMV),因此实现SpMV的高效并行结构也是实现迭代法的基础。

直接法由高斯消元法发展向来,求解过程包括矩阵排序(matrix ordering)符号分解(symbolic factorization)、数值分解(numerical factorization)、三角方程组求解((triangular solves)四个步骤。其中,矩阵排序和符号分解属于预处理部分。矩阵排序通过启发算法置换稀疏矩阵的行列,试图在后续计算中维持矩阵的稀疏性或数值稳定性。符号分解则是预先对矩阵分解后的稀疏结构进行预测,预先分配存储空间并记录数据相关性。直接法的计算瓶颈在于数值分解部分和三角方程组求解部分,高效的直接法求解依赖于二者的高效实现。

对于一个稀疏线性方程组是选择直接法还是迭代法求解,一般有如下原则:对于低阶矩阵或大型带状矩阵所对应的线性方程组,用直接法求解;而对于大型(非带形)矩阵所对应的线性方程组,用迭代方法求解。实际上,选用何种方法还要看具体的应用背景,比如,对于线性规划和一些结构工程应用,只有直接法是切实可行的。对于精度要求很高的问题,还可以采用由直接法得到初始解再用迭代法进行迭代的方法求解,这种方法称为迭代精化法。

查看详情

稀疏矩阵算法造价信息

  • 市场价
  • 信息价
  • 询价

矩阵

  • 产品说明:6.5G带宽,支持EDID读写,支持DVI-D格式,面板/红外/RS-232控制;品种:数字矩阵;型号:DH-DVI16-16B;类型:视频;规格:16入/16出
  • 东华盛业
  • 13%
  • 深圳市东华盛业科技有限公司重庆销售处
  • 2022-12-07
查看价格

矩阵

  • 产品说明:6.5G带宽,支持EDID读写,支持DVI-D格式,面板/红外/RS-232控制;品种:数字矩阵;型号:DH-DVI16-8B;类型:视频;规格:16入/8出
  • 东华盛业
  • 13%
  • 深圳市东华盛业科技有限公司重庆销售处
  • 2022-12-07
查看价格

矩阵

  • 产品说明:6.5G带宽,支持EDID读写,支持DVI-D格式,面板/红外/RS-232控制;品种:数字矩阵;型号:DH-DVI16-4B;类型:视频;规格:16入/4出
  • 东华盛业
  • 13%
  • 深圳市东华盛业科技有限公司重庆销售处
  • 2022-12-07
查看价格

矩阵

  • 产品说明:6.5G带宽,支持EDID读写,支持DVI-D格式,面板/红外/RS-232控制;品种:数字矩阵;型号:DH-DVI8-16B;类型:视频;规格:8入/16出
  • 东华盛业
  • 13%
  • 深圳市东华盛业科技有限公司重庆销售处
  • 2022-12-07
查看价格

矩阵

  • 产品说明:6.5G带宽,支持EDID读写,支持DVI-D格式,面板/红外/RS-232控制;品种:数字矩阵;型号:DH-DVI4-8B;类型:视频;规格:4入/8出
  • 东华盛业
  • 13%
  • 深圳市东华盛业科技有限公司重庆销售处
  • 2022-12-07
查看价格

AI算法训练

  • AI算法训练
  • 25天
  • 3
  • 中高档
  • 含税费 | 含运费
  • 2021-07-16
查看价格

AI算法训练

  • AI算法训练
  • 60天
  • 3
  • 中高档
  • 含税费 | 含运费
  • 2021-03-31
查看价格

客流算法授权

  • 客流分析算法授权
  • 109路
  • 2
  • 华为、科达、泰科
  • 高档
  • 不含税费 | 含运费
  • 2021-05-31
查看价格

人脸算法授权

  • 人脸算法,按照接入路数收费,前端抓拍机数量
  • 1000路
  • 1
  • 高档
  • 含税费 | 含运费
  • 2019-10-30
查看价格

500万高空抛物摄像机-算法

  • 高空抛物算法
  • 42路
  • 1
  • 华为
  • 中档
  • 含税费 | 含运费
  • 2021-12-02
查看价格

稀疏矩阵算法挑战

面向算法加速器的稀疏矩阵算法并行化方法

由于算法加速器采用了与通用处理器完全不同的体系结构和编程模型,因此需要专门设计针对算法加速器的并行程序。与通用处理器相比,算法加速器能够运行更多的线程,因此一方面需要将计算任务划分为更多的子任务,实现细粒度并行;另一方面需要考虑线程间的负载均衡和数据局部性,特别是线程间的通信和同步开销。与通用处理器相比,算法加速器更容易受到不规则访存和计算的影响,因此必须通过矩阵预处理等手段提高计算的规则性和数据的局部性。

通用处理器与算法加速器协同计算策略

异构体系结构的计算单元包括通用处理器和算法加速器两部分。在学术研究中通常分别针对这两种计算单元设计并行算法,但在实际应用中,需要同时利用计算系统的所有计算资源以获取最高性能。然而,现有的针对通用处理器和算法加速器的并行算法分别采用了不同的编程模型和优化策略,无法直接互相迁移,并且在协同计算过程中,不但需要在两个平台上都能高效运行的并行程序,而且需要实现通信与计算的重叠以隐藏数据传输的开销,这些都要求对现有的算法针对异构平台进行重新设计。

面向稀疏结构特征的数据结构和算法映射

不同应用领域的稀疏矩阵往往具有不同的稀疏结构特征,这些特征因问题而异;具有不同稀疏结构特征的稀疏矩阵往往对应不同的最优存储方案以及不同的并行算法实现。在计算过程中,对于稀疏矩阵算法的不同计算阶段,会因稀疏结构导致的计算特征的不同而适合在通用处理器或算法加速器上运行或是由二者协同计算。因此,研究矩阵的稀疏结构并设计相应的数据结构和算法映射策略,能够有效提高算法对于不同矩阵和不同计算平台的适应性。 2100433B

查看详情

稀疏矩阵算法算法概念

在科学与工程领域中进行数值计算时经常需要处理大型的稀疏矩阵,这些矩阵的特征一是阶数很大,二是含有大量的零元,使得无法使用传统的稠密矩阵存储方案和算法。由于矩阵阶数太大,若存储整个矩阵,将会占用大量的存储空间,甚至会超出计算系统的存储容量,因此需要设计专门的稀疏存储方案,尽可能的减少零元素的存储。

稀疏矩阵算法是以稀疏矩阵作为核心数据结构的算法。与稠密矩阵算法相比,稀疏矩阵算法的最大特点是通过只存储和处理非零元素从而大幅度降低存储空间需求以及计算复杂度,代价则是必须使用专门的稀疏矩阵压缩存储数据结构,因而在计算过程中引入了大量的离散间接寻址操作。稀疏矩阵算法是典型的不规则算法,计算访存比很低,并且计算过程中的访存轨迹与稀疏矩阵的稀疏结构相关,很难发掘计算过程中的时空局部性,因此在传统的基于Cache的处理器上稀疏矩阵算法的计算效率很低。为了提高稀疏矩阵算法的计算效率,需要从稀疏存储数据结构和稀疏矩阵算法两方面对现有算法进行改进。

按照应用领域的不同,稀疏矩阵算法分为两类,一类是非数值计算算法,典型代表是图搜索算法,包括宽度优先搜索等核心算法;另一类则是数值计算算法,典型代表是稀疏线性方程组求解,包括稀疏矩阵向量乘、稀疏三角方程组求解以及稀疏矩阵分解等核心算法。

查看详情

稀疏矩阵算法常见问题

查看详情

稀疏矩阵算法文献

矩阵函数和函数矩阵 矩阵函数和函数矩阵

矩阵函数和函数矩阵

格式:pdf

大小:112KB

页数: 6页

矩阵函数求导 首先要区分两个概念:矩阵函数和函数矩阵 (1) 函数矩阵 ,简单地说就是多个一般函数的阵列, 包括单变量和多变量函数。 函数矩阵的求导和积分是作用在各个矩阵元素上,没有更多的规则。 单变量函数矩阵的微分与积分 考虑实变量 t 的实函数矩阵 ( )( ) ( )ij m nX t x t ×= ,所有分量函数 ( )ijx t 定义域相同。 定义函数矩阵的微分与积分 0 0 ( ) ( ) , ( ) ( ) . t t ij ijt t d d X t x t X d x d dx dx τ τ τ τ ? ? ? ??? ???= =? ??? ?? ?? ? ?? ?∫ ∫ 函数矩阵的微分有以下性质: (1) ( )( ) ( ) ( ) ( )d d dX t Y t X t Y t dt dt dt + = + ; (2) ( ) ( ) ( )( ) ( ) ( )

基于随机矩阵变换的快速PCA算法 基于随机矩阵变换的快速PCA算法

基于随机矩阵变换的快速PCA算法

格式:pdf

大小:112KB

页数: 未知

主成分分析PCA(Principle Component Analysis)是一种重要的分析方法,广泛应用于图像检索、机器学习、模式识别等领域。随着近年来数据维数越来越大,算法的稳定性、时间复杂度和内存使用成了PCA进一步应用所必须要解决的问题。为此提出一种快速算法,该算法利用随机矩阵构造卷数据降维矩阵,在保持点与点之间"核距离"不变的情况下,将待分解矩阵变换成一个低维矩阵。在没有偏差的情况下,将对原始大矩阵的分解变成对这个低维矩阵的分解,大幅降低了时间复杂度,减少了对内存的使用,同时增加了算法的稳定性,从而在根本上解决了上述3个问题。

稀疏自编码器算法原理

假设我们只有一个没有带类别标签的训练样本集合

,其中
。自编码神经网络是一种无监督学习算法,它使用了反向传播算法,并让目标值等于输入值,比如
。下图是一个自编码神经网络(图一)的示例。

自编码神经网络尝试学习一个

的函数。换句话说,它尝试逼近一个恒等函数,从而使得输出
接近于输入
。恒等函数虽然看上去不太有学习的意义,但是当我们为自编码神经网络加入某些限制,比如限定隐藏神经元的数量,我们就可以从输入数据中发现一些有趣的结构。举例来说,假设某个自编码神经网络的输入
是一张
图像(共100个像素)的像素灰度值,于是
,其隐藏层
中有50个隐藏神经元。注意,输出也是100维的
。由于只有50个隐藏神经元,我们迫使自编码神经网络去学习输入数据的'''压缩'''表示,也就是说,它必须从50维的隐藏神经元激活度向量
中'''重构'''出100维的像素灰度值输入
。如果网络的输入数据是完全随机的,比如每一个输入
都是一个跟其它特征完全无关的独立同分布高斯随机变量,那么这一压缩表示将会非常难学习。但是如果输入数据中隐含着一些特定的结构,比如某些输入特征是彼此相关的,那么这一算法就可以发现输入数据中的这些相关性。事实上,这一简单的自编码神经网络通常可以学习出一个跟主元分析(PCA)结果非常相似的输入数据的低维表示。

我们刚才的论述是基于隐藏神经元数量较小的假设。但是即使隐藏神经元的数量较大(可能比输入像素的个数还要多),我们仍然通过给自编码神经网络施加一些其他的限制条件来发现输入数据中的结构。具体来说,如果我们给隐藏神经元加入稀疏性限制,那么自编码神经网络即使在隐藏神经元数量较多的情况下仍然可以发现输入数据中一些有趣的结构。

稀疏性可以被简单地解释如下。如果当神经元的输出接近于1的时候我们认为它被激活,而输出接近于0的时候认为它被抑制,那么使得神经元大部分的时间都是被抑制的限制则被称作稀疏性限制。这里我们假设的神经元的激活函数是sigmoid函数。如果你使用tanh作为激活函数的话,当神经元输出为-1的时候,我们认为神经元是被抑制的。

注意到

表示隐藏神经元
的激活度,但是这一表示方法中并未明确指出哪一个输入
带来了这一激活度。所以我们将使用
来表示在给定输入为
情况下,自编码神经网络隐藏神经元
的激活度。

进一步,让

表示隐藏神经元

的平均活跃度(在训练集上取平均)。我们可以近似的加入一条限制

其中,

是'''稀疏性参数''',通常是一个接近于0的较小的值(比如
)。换句话说,我们想要让隐藏神经元
的平均活跃度接近0.05。为了满足这一条件,隐藏神经元的活跃度必须接近于0。

为了实现这一限制,我们将会在我们的优化目标函数中加入一个额外的惩罚因子,而这一惩罚因子将惩罚那些

有显著不同的情况从而使得隐藏神经元的平均活跃度保持在较小范围内。惩罚因子的具体形式有很多种合理的选择,我们将会选择以下这一种:

这里,

是隐藏层中隐藏神经元的数量,而索引
依次代表隐藏层中的每一个神经元。如果你对相对熵(KL divergence)比较熟悉,这一惩罚因子实际上是基于它的。于是惩罚因子也可以被表示为

其中

是一个以
为均值和一个以
为均值的两个伯努利随机变量之间的相对熵。相对熵是一种标准的用来测量两个分布之间差异的方法。(如果你没有见过相对熵,不用担心,所有你需要知道的内容都会被包含在这份笔记之中。)

这一惩罚因子有如下性质,当

,并且随着
之间的差异增大而单调递增。举例来说,在图二中,我们设定
并且画出了相对熵值
随着
变化的变化(图二)。

我们可以看出,相对熵在

时达到它的最小值0,而当
靠近0或者1的时候,相对熵则变得非常大(其实是趋向于
)。所以,最小化这一惩罚因子具有使得
靠近
的效果。

我们的总体代价函数可以表示为

其中

如之前所定义,而
控制稀疏性惩罚因子的权重。
项则也(间接地)取决于
,因为它是隐藏神经元
的平均激活度,而隐藏层神经元的激活度取决于

为了对相对熵进行导数计算,我们可以使用一个易于实现的技巧,这只需要在你的程序中稍作改动即可。具体来说,前面在后向传播算法中计算第二层(

)更新的时候我们已经计算了

我们将其换成

就可以了。

有一个需要注意的地方就是我们需要知道

来计算这一项更新。所以在计算任何神经元的后向传播之前,你需要对所有的训练样本计算一遍前向传播,从而获取平均激活度。如果你的训练样本可以小到被整个存到内存之中(对于编程作业来说,通常如此),你可以方便地在你所有的样本上计算前向传播并将得到的激活度存入内存并且计算平均激活度 。然后你就可以使用事先计算好的激活度来对所有的训练样本进行后向传播的计算。如果你的数据量太大,无法全部存入内存,你就可以扫过你的训练样本并计算一次前向传播,然后将获得的结果累积起来并计算平均激活度
(当某一个前向传播的结果中的激活度
被用于计算平均激活度
之后就可以将此结果删除)。然后当你完成平均激活度
的计算之后,你需要重新对每一个训练样本做一次前向传播从而可以对其进行后向传播的计算。对于后一种情况,你对每一个训练样本需要计算两次前向传播,所以在计算上的效率会稍低一些。

证明上面算法能达到梯度下降效果的完整推导过程不再本教程的范围之内。不过如果你想要使用经过以上修改的后向传播来实现自编码神经网络,那么你就会对目标函数

做梯度下降。使用梯度验证方法,你可以自己来验证梯度下降算法是否正确。

查看详情

若干大型稀疏非线性矩阵方程的数值解法基本信息

批准号

10601050

项目名称

若干大型稀疏非线性矩阵方程的数值解法

项目类别

青年科学基金项目

申请代码

A0504

项目负责人

郭晓霞

负责人职称

教授

依托单位

中国海洋大学

研究期限

2007-01-01 至 2009-12-31

支持经费

17(万元)

查看详情

若干大型稀疏非线性矩阵方程的数值解法中文摘要

随着现代科学技术的迅速发展,非线性矩阵方程越来越多地出现在许多科学与工程计算领域,如海洋物理,控制论以及噪音污染,交通运输等很多问题的解决最终往往归结为一个非线性矩阵方程。因此,研究非线性矩阵方程的解的存在性,敏感性以及如何求解是非常有意义的。特别地,对于如何有效、快速、准确的求出它们的解更是人们所关注的。非线性矩阵方程的数值求解已成为科学研究的热点之一。为使所设计的算法更具有效性和可执行性,我们希望算法适合在并行环境下运行,这就需要算法中的公式运算要基本,同时,要尽量使算法收敛速度快,计算量少,数值稳定。寻求满足上述条件的求解大型稀疏非线性矩阵方程的算法是我们将要研究的主要问题。对该问题的研究,将有利于其它相关学科的发展,也将促进计算机实用软件的开发。 2100433B

查看详情

相关推荐

立即注册
免费服务热线: 400-888-9639