`
isiqi
  • 浏览: 16498087 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

从这个帖子说开“稀疏向量的计算方法”

阅读更多

今天我在水木想找找fervvac (高远)发的帖子,无意间找到了这篇文章。

fervvac是我的偶像,我向他学习,要努力并且低调,帮助别人。

生活的快乐也许就是,在下班时往家赶的时候,家里人在分别了一天之后再次团聚,其乐融融。


---------------------------------------------------------------------------------------
发信人: pennyliang (pennyliang), 信区: SearchEngineTech
标 题: 稀疏向量的计算方法
发信站: 水木社区 (Sun Mar 16 09:09:12 2008), 站内

鉴于很多网友来信问此问题,我一并答复一下。

首先,我们来看什么是向量计算
假定向量A:{x1,x2,....xn}
向量B:{y1,y2,....yn}
现在要想知道A*B=?(这里的*为向量的点乘)
最直接的计算方法就是 x1*y1+x2*y2+...xn*yn (这里的*为一般乘法)
这里假定乘法和加法代价相同,浮点计算不被考虑,这样的计算方法代价为2N-1
次计算。N为向量维度。

然而,在实际环境中,N很大可能上百万,甚至亿万,而向量中大部分元素为0,
因此0和0相乘是没有意义的。

于是第一个优化的想法是将向量变为这样的模式
向量A:{<x1',loc1'>,<x2',loc2'>...<xn',locn'>}
向量B:{<y1',loc1'>,<y2',loc2'>...<yn',locn'>},这里locx表示元素的位置信
息。
每个向量都不含零元素,或者接近于零的浮点数。显然向量数量远小于n,且向
量A,B的长度取决于各自的非零元,不妨设向量A长度为m,向量B长度为n.

那么计算A*B,可以采用在向量A中循环,在向量B中二分的方法,例如找到向量A
的首原素,<x1',loc1'>,将其位置loc1'在向量B中折半查找,直到找到,或者失
败。
这样计算代价为mlogn + min(m,n),前部为查找代价,后部为加法代价,加法代
价必然比min(m,n)还要小,最大情况下为min(m,n)-1。

进一步来看,如果在计算向量A和向量B乘法时,我们已经知道了它们各自的长
度,那么可以在小的向量上循环,在大向量上二分,这样代价为min(m,n)log(max
(m,n))+min(m,n)

当然也可以不使用二分,采用哈希,假定认为哈希的代价为O(1),那么总代价为
2min(m,n)这里创建哈希也需要代价。

至此,我们由原来2N-1的计算,降低到2min(m,n),

如果N极大,而m,n也不小,这样等待一次向量计算也不短,而如果是矩阵相乘,
向量相乘只是其中的一部,那么速度也无法容忍的话,可以采用并行计算的方法,
通过切分,把一个大计算的一部分派遣到某台机器,而另一部分派遣到另一台机
器,最后综合计算结果。并行处理软件包有很多,比如MPI,都可以尝试使用。

本文只讨论思想,不涉及细节,希望给大家带来一些启发。最后我再次推销一
下这几个思想
precomputing
caching
mirroring
distributing
once-computing
有了难题都从这几个方面考虑,就有解了。。。

--
硕士要啥自行车啊


发信人: fervvac (高远), 信区: SearchEngineTech
标 题: Re: 稀疏向量的计算方法
发信站: 水木社区 (Sun Mar 16 12:40:08 2008), 站内

Nice article. Just add a few comments

1) An importnt property is that dimensions are sorted according to a
global
order and all sparse vectors encoded in that order as well. Therefore,
the
plain binary search * m times (m < n) is redundant in that the key to
probe in
the other vector is monotonically increasing. A simple rememdy is to
keep
a bookmark of the last matching position (if no match, the largest i
s.t v[i]
<x) and the next binary search only need to be done within v[i+1, |v|].

This can be viewed as a nice marriage of index-based and merge-based
approaches.
More sophisticated methods and their analysis can be found in

http://www.cs.uwaterloo.ca/~ajsaling/papers/paper-spire.pdf
http://siam.org/proceedings/alenex/2007/alx07_008sandersp.pdf

2) many application actually only want those <x, y> >= t, where t is a
threhsold
(e.g., near duplicate detection)

If the vector is of binary type (only 0 or 1), prefix filtering can be
used to
consider only those pairs s.t. their intersection (in binary case, <x,
y> is
intersection) *may* exceed t.

In the general case, one can keep tract of the maximum value among the
suffix
of the vector and use it to prune candidate pairs.

For more details, see

http://www2007.org/papers/paper342.pdf

(they've also published their source code)

分享到:
评论

相关推荐

    稀疏表达:向量、矩阵与张量

    - **Matching Pursuit与Orthogonal Matching Pursuit**:这两种方法属于贪心算法,通过逐步添加基向量来逼近目标向量,从而实现稀疏表示。正交匹配追踪进一步改进了匹配追踪,提高了精度。 #### 实际应用案例 - **...

    Java课程设计报告之稀疏矩阵与向量相乘

    总的来说,这个Java课程设计项目旨在让学生掌握稀疏矩阵的存储结构以及如何利用这种结构进行矩阵与向量的运算,这对于理解高级数值计算算法和数据结构优化有着重要的意义。通过这样的实践,学生可以更深入地理解Java...

    OMP.rar_OMP稀疏向量_matching pursuit_omp_稀疏

    在这个过程中,OMP通过与残差之间的正交投影来选择最重要的基元素,逐步构建稀疏向量。 1. **稀疏向量的概念** 稀疏向量是指大部分元素为零,只有少数元素非零的向量。在许多实际问题中,数据往往可以被表示为稀疏...

    论文研究-新的稀疏支持向量回归机算法及实验研究.pdf

    支持向量回归机是一种解决回归问题的重要方法,其预测速度与支持向量的稀疏性成正比。为了改进支持向量回归机的稀疏性,提出了一种直接稀疏支持向量回归算法DSKR(Direct Sparse Kernel Support Vector Regression)...

    数值计算方法课件:第三章 矩阵特征值与特征向量的计算.ppt

    矩阵特征值与特征向量是线性代数中一个重要的概念,它们在数值计算、科学计算、数据分析和机器学习等领域中有广泛的应用。 矩阵特征值是指矩阵的scalar满足方程式Ax = λx, 其中A是矩阵,x是非零向量,λ是标量。...

    稀疏贝叶斯.zip_formerpgq_稀疏_稀疏向量恢复_稀疏恢复_贝叶斯 恢复

    基于稀疏贝叶斯学习的稀疏向量恢复算法,里面包含多个情景下的仿真程序和说明

    基于GPU的稀疏矩阵向量乘优化.pdf

    稀疏矩阵向量乘(Sparse Matrix-Vector Multiplication,SpMV)是许多科学计算和机器学习应用程序中的一个基本操作。由于稀疏矩阵的特点,它们在计算过程中具有高度的并行性,因此可以充分利用现代GPU的计算能力来...

    稀疏矩阵向量乘的FPGA设计与实现.pdf

    稀疏矩阵向量乘是线性代数中的基本运算,广泛应用于科学计算和工程问题中。尤其在处理稀疏线性方程组求解时,SMVM是核心计算步骤,其计算时间占到整个求解过程的大部分。由于稀疏矩阵中大部分元素为零,因此采用传统...

    基于RISC-V向量指令的稀疏矩阵向量乘法实现与优化.pdf

    稀疏矩阵向量乘法作为矩阵数值计算的一个重要组成部分,具有深刻的研究意义和价值。 利用RISC-V指令集的向量可配置性和寻址特性,对基于压缩格存储的稀疏矩阵向量乘法进行向量化。同时,考虑稀疏矩阵极度稀疏和每行...

    网络游戏-训练神经网络的方法和装置以及确定稀疏特征向量的方法.zip

    总之,“网络游戏-训练神经网络的方法和装置以及确定稀疏特征向量的方法”这个主题涵盖了许多关键的AI技术和实践应用。文件中的内容可能会详细讲解这些技术的实现细节,以及如何将它们有效地整合到网络游戏的开发和...

    多维数组-矩阵的压缩存储- 稀疏矩阵(一).zip_mightyvt4_压缩稀疏矩阵_稀疏向量_稀疏矩阵压缩_结构随机矩阵

    稀疏矩阵  设矩阵A mn 中有s个非零元素,若s远远小于矩阵元素的... 将表示稀疏矩阵的非零元素的三元组按行优先(或列优先)的顺序排列(跳过零元素),并依次存放在向量中,这种稀疏矩阵的顺序 存储结构称为三元组表。

    稀疏表达论文

    当存在一个稀疏向量α使得信号x可以被字典D中的少数基向量所表示时,我们说这个字典适应于这个信号。这种表示方法最大的优点在于其稀疏性,即α中大部分元素都为零,只有少数元素非零。 稀疏性是稀疏表达的一个关键...

    基于稀疏表示和支持向量机的人脸识别算法.pdf

    基于稀疏表示和支持向量机的人脸识别算法是一种高效率和高准确率的人脸识别方法。这种方法可以将人脸图像转换为稀疏表示,然后使用支持向量机来实现人脸识别,从而提高人脸识别的速度和准确率。 此外,基于稀疏表示...

    矩阵特征值与特征向量的计算

    乘幂法的基本思想是从一个初始向量开始,通过不断乘以矩阵A并归一化,形成一个向量序列,这个序列在一定条件下会趋于某个特征向量。乘幂法简单易实现,但收敛速度依赖于矩阵特征值的模大小,模最大的特征值对应的...

    GPU稀疏矩阵向量乘的性能模型构造.pdf

    这表明我们的性能模型可以有效地预测稀疏矩阵向量乘的性能,并为评估稀疏矩阵运算开销和选择合适的存储格式提供了指导。 本文的研究结果可以为GPU处理器在稀疏矩阵向量乘中的性能优化提供指导和参考,并为大规模...

    稀疏表示和支持向量机相融合的非理想环境人脸识别.pdf

    为了解决这个问题,作者提出了一个融合稀疏表示和SVM的新方法。 首先,论文强调了非理想环境人脸特征的提取。在这种环境中,由于光照、角度、遮挡等因素的影响,传统的人脸特征可能不足以捕捉到足够的辨别信息。...

    可以用来计算压缩感知中测量矩阵和稀疏矩阵的RIP,稀疏矩阵的压缩存储方式有,matlab

    总的来说,这个主题涵盖了压缩感知理论的关键点,包括测量矩阵的设计、RIP的计算以及稀疏矩阵的高效存储。通过MATLAB这样的工具,我们可以深入理解这些概念,并实际操作以优化压缩感知系统。在处理高维、稀疏数据的...

    稀疏表示方法综述

    - **贪婪算法**:包括匹配追踪(Matching Pursuit)、正交匹配追踪(Orthogonal Matching Pursuit)等,这类方法逐步选择基向量以构建稀疏表示。 - **约束最优化方法**:如梯度投影稀疏重建(Gradient Projection ...

    基于GPU的高性能稀疏矩阵向量乘及CG求解器优化.pdf

    然而,如何高效地在GPU上实现稀疏矩阵向量乘仍然是一个亟待解决的问题。 本文提出了基于GPU的高性能稀疏矩阵向量乘算法,即“bDIA”(banded diagonal)格式和算法。与传统的稀疏矩阵存储格式和算法相比,“bDIA”...

Global site tag (gtag.js) - Google Analytics