一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于比率对数的向量相似度计算方法及系统与流程

2022-02-24 13:02:05 来源:中国专利 TAG:


1.本发明涉及数据处理的技术领域,具体地,涉及一种基于比率对数的向量相似度计算方法及系统。


背景技术:

2.向量:在数学和物理学中,向量被定义为既有大小又有方向的量(与之相对的是“标量”,标量是只有大小没有方向的量)。向量有1个或多个维度,每个维度的值的数据类型通常是浮点型实数。向量通常用大写字母表示。下面是一个向量的示例:a=(0.3,1.2,5.4,0.9)。相似度:本文的相似度,指的是两个向量在多大程度上相似。直观上,两个向量如果在各个维度上的数值都比较接近,那么这2个向量比较相似。实际情况可能比这要复杂。余弦相似度:采用余弦公式(下文会有详细介绍)计算两个向量的相似度的结果,就是两个向量的余弦相似度。
3.常见的相似度计算方法:向量的相似度计算是很多搜索算法、比较算法的基础,应用较广。而向量的相似度计算方法,常用的有以下几种:1、余弦相似度(cosine);2、欧氏距离(euclidean);3、曼哈顿距离(manhattan distance);4、皮尔逊相关系数(pc:pearson correlation coefficient);5、斯皮尔曼(等级)相关系数(src:spearman rank correlation);6、杰卡德相似系数(jaccard距离);7、simhash 汉明距离(hamming distance)。先看欧式距离和曼哈顿距离。它们的计算结果主要体现的是个体数值的绝对差异,并不适合“相似程度”的计算。再看皮尔逊相关系数和斯皮尔曼(等级)相关系数。它们主要比较因变量和自变量间相关性如何,也不适合“相似程度”的计算。其次是杰卡德相似系数(jaccard距离),它是用来衡量两个集合差异性的一种指标,而通常情况下,向量的元素并不被看作集合里的元素,向量本身也不被看作集合,所以jaccard距离也不适合一般意义上的向量的相似度计算。然后看看simhash 汉明距离,它具有特定的应用场景,就是文本的快速(但是不精准)的匹配,它直接的计算结果是比特序列之间的汉明距离,所以不具有广泛的适用性。余弦相似度:最后看看余弦相似度。余弦相似度确实是目前应用最为广泛的向量相似度计算方法,比如在自然语言处理任务中,经常要计算两个词的语义相似度,最常见的做法就是计算两个词的词向量的余弦相似度。余弦相似度公式用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,这就叫“余弦相似度”。余弦相似度计算公式如下:
[0004][0005]
其中,similaritity表示相似度;θ表示角度;a、b代表两个维度大小相同的向量,a
·
b表示向量的内积,即∑ai×bi
;ai和bi分布表示向量a,b的每个维度的值;i表示向量维
度的序号,例如ai表示向量a的第i个序号;n表示向量维度的个数。而在上式等号最右边的式子的分母中,每个根号,和中间式子分母中的‖a‖和‖b‖的含义是一样的,分别是两个向量各自的模长。
[0006]
虽然余弦相似度是目前应用最广泛的最重要的向量相似度计算方法,但是经过仔细的研究和测试,如图1所示,用cosine代表余弦相似度计算公式。上图中向量a与向量b、向量c的cosine计算结果如下:cosine(a,b)=0.95;cosine(a,c)=0.99。可以看出cosine计算结果有两个问题:第一个问题是结果偏大,两个结果都接近于1;第二个问题是在空间距离上较近的两个向量(a和b)反而没有较远的两个向量(a和c)的相似度大。词向量的相似度计算几乎都采用余弦相似度公式,至今没有发现其不合适的原因分析:由于词向量数据比较特殊,它具有聚类特性(如图2所示),也就是说,在向量空间上,相似的词向量已经比较靠近,而不相似的词向量则已经远离,所以cosine的计算结果虽然有的结果在一个类里面并不合理,但是误差扩散到类之间的可能性却比较小,所以并没有暴露出问题(另外,词向量毕竟是通过神经网络训练出来的,它的效果好坏与训练语料和神经网络的函数逼近特性都有关系,即使出现小的偏差也很难判断一定是余弦相似度公式所导致的;事实上,确实也可以观察到余弦相似度计算出来的相似的两个词向量,从人的直觉上感觉并不很相似的特殊情况,比如图2中的“公交”和“德国”)。图2中分布在分割线左侧的圆点表示地理和社会机构;分布在分割线右侧的圆点表示动物。
[0007]
公开号为cn108052485a的中国发明专利文献公开了一种向量相似度的分布式计算方法和装置,存储介质和节点,所述方法应用于任一计算节点,包括:该计算节点接收其他计算节点分发的与该计算节点存储的元素同一行的元素,得到所述目标矩阵中所述元素所在的行向量;计算该行向量的转置向量与该行向量的乘积,得到中间矩阵;并将自身计算得到的每一中间矩阵广播到其他计算节点上;该计算节点在接收到其他计算节点发送的其他行向量对应的中间矩阵后,将接收到的所述中间矩阵与自身计算得到的每一中间矩阵相加,得到内积矩阵;根据所述内积矩阵中的每一元素计算所述目标矩阵中两两列向量之间的相似度。
[0008]
针对上述中的相关技术,发明人认为上述方法存在以下问题:1、结果普遍偏高;2、对于有些应用场景,结果不合理,与人的直觉判断相去甚远;3、虽然余弦相似度在计算过程中已经做了归一化处理(除以模长),但是仍然存在在向量空间上距离较远的两个向量的相似度可能高于距离较近的两个向量的相似度。


技术实现要素:

[0009]
针对现有技术中的缺陷,本发明的目的是提供一种基于比率对数的向量相似度计算方法及系统。
[0010]
根据本发明提供的一种基于比率对数的向量相似度计算方法,包括如下步骤:
[0011]
步骤s1:对实际问题的数据对象进行数学建模,得到对应的向量,基于比率对数计算多个向量的相似度;
[0012]
步骤s2:根据向量的相似度比较已经被表示为向量的数据对象的相似性。
[0013]
优选的,在所述步骤s1中,把两向量逐个维度地计算比值,并把逐个维度计算的比值进行相乘,相乘的结果作为两向量的相似度。
[0014]
优选的,在所步骤s1中,先对每个比值求自然对数,将求过自然对数的比值相加,再把相加的结果进行指数运算得到相似度。
[0015]
优选的,在步骤s1中,输入相同维度的两向量;初始化变量和参数;根据向量中是否有维度的值为预定值的情况执行不同的对数计算;再根据两向量同维度的值的正负符号是否相同分别计算正比值的对数和负比值的对数,然后分别将正比值的对数相加和将负比值的对数相加;根据分别所得的正比值的对数和所得的负比值的对数和求得原始相似度,原始相似度进行归一化后作为最终输出的相似度。
[0016]
优选的,在所述步骤s1中,两向量包括第一向量和第二向量,两向量中是否有维度的值为预定值的情况包括两向量有维度值均为预定值、第一向量有维度值为预定值、第二向量有维度值为预定值和两向量有维度值均不为预定值。
[0017]
根据本发明提供的一种基于比率对数的向量相似度计算系统,包括如下模块:
[0018]
模块m1:对实际问题的数据对象进行数学建模,得到对应的向量,基于比率对数计算多个向量的相似度;
[0019]
模块m2:根据向量的相似度比较已经被表示为向量的数据对象的相似性。
[0020]
优选的,在所述模块m1中,把两向量逐个维度地计算比值,并把逐个维度计算的比值进行相乘,相乘的结果作为两向量的相似度。
[0021]
优选的,在所模块m1中,先对每个比值求自然对数,将求过自然对数的比值相加,再把相加的结果进行指数运算得到相似度。
[0022]
优选的,在模块m1中,输入相同维度的两向量;初始化变量和参数;根据向量中是否有维度的值为预定值的情况执行不同的对数计算;再根据两向量同维度的值的正负符号是否相同分别计算正比值的对数和负比值的对数,然后分别将正比值的对数相加和将负比值的对数相加;根据分别所得的正比值的对数和所得的负比值的对数和求得原始相似度,原始相似度进行归一化后作为最终输出的相似度。
[0023]
优选的,在所述模块m1中,两向量包括第一向量和第二向量,两向量中是否有维度的值为预定值的情况包括两向量有维度值均为预定值、第一向量有维度值为预定值、第二向量有维度值为预定值和两向量有维度值均不为预定值。
[0024]
与现有技术相比,本发明具有如下的有益效果:
[0025]
1、本发明普适性较好;本发明相比最常用的余弦相似度计算公式,ratiolog对向量具有较广泛的适应性,首先,在词向量即分布式词嵌入(distributed word embedding)的相似度计算效果上和余弦相似度的效果不相上下之外;
[0026]
2、本发明的ratiolog方法的可解释性较好,比较直观,也就是向量的所有维度上的相似度的综合决定了整个向量的相似度;而每个维度上的相似度就是该维度上的比率;
[0027]
3、本发明不受归一化影响或影响较小;ratiolog受归一化(normalization)操作的影响较小。
附图说明
[0028]
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
[0029]
图1为二维空间上的3个向量示意图;
[0030]
图2为词向量聚类特性表示图;
[0031]
图3为本发明完整的java代码图;
[0032]
图4为本发明ratiolog算法流程图。
具体实施方式
[0033]
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
[0034]
本发明实施例公开了一种基于比率对数的向量相似度计算方法,如图3和图4所示,包括如下步骤:步骤s1:对实际问题的数据对象进行数学建模,得到对应的向量,基于比率对数计算多个向量的相似度。在实际应用中,向量是在对实际问题中的对象进行数学建模后得到的数学结构的一种表示,即对数学对象进行向量化。对象的向量化使得对象之间的相似度计算变得很方便,比如,想得到一个中文的词比如“喜爱”的近义词,可以先获取一个中文词向量表(网络上可以下载训练好的中文词向量表),遍历每个词的词向量,并分别和“喜爱”的词向量进行相似度计算,取比如前十个词,就可以作为“喜爱”的近义词。基于向量计算两个对象的相似度,有非常多的应用场景,这里就不一一列举。
[0035]
把两向量逐个维度地计算比值,并把逐个维度计算的比值进行相乘,相乘的结果作为两向量的相似度。先对每个比值求自然对数,将求过自然对数的比值相加,再把相加的结果进行指数运算得到相似度。
[0036]
输入相同维度的两向量;初始化变量和参数;根据向量中是否有维度的值为预定值的情况执行不同的对数计算;再根据两向量同维度的值的正负符号是否相同分别计算正比值的对数和负比值的对数,然后分别将正比值的对数相加和将负比值的对数相加;根据分别所得的正比值的对数和所得的负比值的对数和求得原始相似度,原始相似度进行归一化后作为最终输出的相似度。两向量包括第一向量和第二向量,两向量中是否有维度的值为预定值的情况包括两向量有维度值均为预定值、第一向量有维度值为预定值、第二向量有维度值为预定值和两向量有维度值均不为预定值等四种情况。预定值包括0。
[0037]
步骤s2:根据向量的相似度比较已经被表示为向量的数据对象的相似性。向量相似度可以计算已经被表示为向量的两个数据对象之间的相似性。数据对象可以是颜色系统中的三原色,可以是自然语言处理中的词向量,等等。
[0038]
本发明是结果比较合理、适用性强、可解释性好的基于比率对数的向量相似度计算:ratiolog。ratiolog的中文译文为比率对数。ratiolog向量相似度计算的主要思路是:把两个向量逐个维度地计算比值,并把所有维度的比值进行相乘,相乘的结果作为两个向量的相似度。由于比值的绝对值在[0,1]区间,多个维度的比值相乘会很快趋近于0,所以改为先对每个比值求自然对数再把它们相加,再把结果进行指数运算得到最终的相似度(结果的取值范围也是[0,1])。比率对数:将两个数相除(求比率)的结果,再用自然对数表示。这种做法可以将多个这样的结果进行相加,最终的结果再取以自然对数为底的指数,就可以得到多个比率进行相乘的结果,避免直接相乘造成结果快速趋近于0的问题。
[0039]
算法流程(java代码实现):在具体实现的过程中,考虑了维度的数值的正负号、0
值等问题。完整的java代码如图3所示,(vec1(简称v1)和vec2(简称v2)是待计算相似度的两个维度相同的向量),且算法如表1所示。
[0040]
表1向量相似度计算的ratiolog表
[0041]
[0042][0043]
如图4所示,算法流程:输入两个同维度向量,初始化变量和参数(具体的值请参考java代码实现),根据向量中是否有维度的值为0的4种情况执行不同的log计算;再根据两个向量同维度的值的正负符号是否相同分别计算正比值的log和负比值的log,将结果相加;根据所得的对数和求得原始相似度,归一化后输出最终的相似度。本文中的log均表示
自然对数,自然对数是以自然常数e为底的对数。
[0044]
示例说明:如表2所示,下面是两个向量的样例,及其采用ratiolog方法计算相似度的中间结果和最终结果(结果显示这两个向量的相似度很接近0,符合实际,因为这两个向量的各个维度的值是随意设置的)。
[0045]
表2 ratiolog方法计算两个向量的相似度的样例表
[0046][0047]
ratiolog方法的优势与效益:ratiolog方法具有3个方面的优势。优势1、普适性较好。相比最常用的余弦相似度计算公式,ratiolog对向量具有较广泛的适应性,首先,在词向量即分布式词嵌入(distributed word embedding)的相似度计算效果上和余弦相似度的效果不相上下之外。下面是7个词分别通过余弦相似度方法和ratiolog方法找到的最相似的10个词的结果对比。可以看出,虽然二者结果不完全一致,但是很难判断哪个更好。结果对比如下:
[0048]
愿意[肯,乐意,心甘情愿,自愿,甘愿,乐于,有权,愿,肯为];
[0049]
愿意[肯,乐意,自愿,公平,肯于,愿不愿意,宁愿,公平合理,乐于]。
[0050]
拒绝[回绝,断然拒绝,否认,反驳,否决,婉拒,答应,反对,严词拒绝];
[0051]
拒绝[回绝,断然拒绝,妥协,答应,同意,反悔,反对,否认,服软]。
[0052]
恨[怨,痛恨,怨恨,憎恨,妒忌,嫉妒,嫉恨,自私,深恨];
[0053]
恨[嫉妒,痛恨,憎恨,忌妒,忌恨,断子绝孙,瞧不起,妒忌,嫉恨]。
[0054]
聪明[精明,笨,聪慧,讨人喜欢,实诚,狡猾,聪明伶俐,聪明能干,明白事理];
[0055]
聪明[有远见,有志气,诚实,头脑好,聪明伶俐,聪明绝顶,笨,聪明能干,出色]。
[0056]
愚蠢[卑劣,可耻,自以为是,卑鄙,可笑,不负责任,无耻,卑鄙无耻,残忍];愚蠢[可耻,狂妄自大,卑劣,无知,狂妄,可笑,卑鄙无耻,幼稚,离经叛道]。
[0057]
光明[圣光,暗黑,神圣,圣灵,诸神,永夜,创世,永恒,海神];
[0058]
光明[光辉,天主,诸神,神庭,神职,曼荼罗,帝王,圣光,天宫]。
[0059]
黑暗[迷雾,黑夜,深渊,虚无,黑暗世界,浓雾,星空,幽暗,阴影];
[0060]
黑暗[荒漠,黑夜,阴影,火海,深渊,沙漠,沼泽地,黑暗世界,梦魇]。
[0061]
另外,在以下几种类型的向量的相似度计算中,ratiolog的计算结果比余弦相似度的结果更加合理:1)图节点标签向量:图节点标签向量中往往存在比较多的0值元素。余弦相似度计算结果几乎完全不合理;而ratiolog的计算结果十分符合人的感觉。如表3所示,下面四组测试数据便能充分显示ratiolog的结果更符合人的直觉判断。
[0062]
表3对于图节点标签向量ratiolog和余弦相似度两种方法的计算结果对照表
[0063][0064]
2)rgb颜色:如表4所示,下面四组测试数据同样显示了ratiolog的结果更符合人的直觉判断。余弦相似度的值显著偏高。此处可以根据表4中提供的值,在windows的“画图”中展现两种颜色,看相似度计算结果和实际颜色的相似程度,感受对比效果。rgb英文全称为red green blue,中文译文红绿蓝,red表示红色值;green表示绿色值;blue表示蓝色值。
[0065]
表4对于rgb颜色ratiolog和余弦相似度两种方法计算结果对照表
[0066][0067]
3)随机产生的向量:ratiolog对两个随机向量相似度的计算结果比余弦相似度更趋近于0(统计意义上),这说明ratiolog的结果更加合理,因为两个随机向量的相似度理论上是很低的、趋于0的。
[0068]
下面是随机产生的10对100维float型向量的相似度计算结果。可以看出总体上ratiolog产生的结果更趋于0。float中文译文为浮点型。例如cosine=0.1280,ratiolog=0.0292;cosine=-0.069,ratiolog=-0.008;cosine=-0.141,ratiolog=-0.045;cosine=-0.079,ratiolog=-0.074;cosine=-0.057,ratiolog=-0.031;cosine=-0.160,ratiolog=-0.051;cosine=0.1902ratiolog=0.1035;cosine=-0.091,ratiolog=-0.089;cosine=0.0755,ratiolog=0.0437;cosine=0.1240,ratiolog=0.0443。
[0069]
优势2、可解释性较好。ratiolog方法的可解释性较好,比较直观,也就是向量的所有维度上的相似度的综合决定了整个向量的相似度;而每个维度上的相似度就是该维度上的比率。而余弦相似度的计算方法是归一化的向量内积。
[0070]
优势3、不受归一化影响或影响较小。ratiolog受归一化(normalization)操作的
影响较小。而余弦相似度对归一化前后的向量相似度的计算结果是不一致的(因为归一化之前的两个向量的模长是不一样的,在归一化的时候各自都要除以模长),所以它的结果是不稳定的甚至是存疑的。比如有两组向量(a,b)和(a,c),其中a,b,c表示维度相同的3个向量,a、b、c的模长分别是l1、l2、l3。归一化之前的相似度分别是s1=cosine(a,b)和s2=cosine(a,c)。归一化之后的相似度分别是s1'=cosine(a,b)/(l1*l2)和s2'=cosine(a,c)/(l1*l3)。s1'/s2'=(cosine(a,b)/(l1*l2))/(cosine(a,c)/(l1*l3))=s1/s2*l3/l2≠1;所以s1'/s2'≠s1/s2!也就是说,归一化之前,a可能与b更相似;归一化之后,a可能与c更相似!
[0071]
归一化的方法常见的有以下三种,详细看看各种归一化方法对它们的影响程度。
[0072]
第一种归一化方法:全体向量在同一个维度上进行等比例缩放。同一个维度等比例缩放最常见的就是对数据的物理单位进行转化,这个操作中数据预处理中是比较常见的。cosine会受此影响,而ratiolog则完全不受其影响。比如下面有三组关于人的特征向量(3个维度分别是年龄、体重和身高):a=(3岁,13kg,1.00m),b=(10岁,33kg,1.50m),c=(23岁,68kg,1.75m)。对体重和身高进行缩放以后,变为:a=(3岁,28.66磅,100cm),b=(10岁,72.75磅,150cm),c=(23岁,149.9磅,175cm)。缩放前的相似度:cosine(a,b)=0.997,cosine(a,c)=0.993,cosine(b,c)=0.999;ratiolog(a,b)=0.428,ratiolog(a,c)=0.242,ratiolog(b,c)=0.565。缩放后的相似度:cosine(a,b)=0.984,cosine(a,c)=0.907,cosine(b,c)=0.966;ratiolog(a,b)=0.428,ratiolog(a,c)=0.242,ratiolog(b,c)=0.565。
[0073]
从以上结果的对比中,不仅能够看出ratiolog的结果没有受到数据缩放的影响,而且归一化前后的结果都比余弦相似度更加合理。
[0074]
第二种归一化方法:标准归一化(也称为z-score标准化):将原始数据集归一化为均值为0、方差为1的数据集。操作过程如下图所示。x
*
,x,μ和δ都是一个n维向量,其中x表示归一化前的向量,x
*
表示归一化后的向量:
[0075][0076]
可知,每个维度上的值xi除了减去一个平均值μi,还要再除以方差δi进行缩放;其中下标i表示第i个维度序号。减去平均值对ratiolog的结果确实有影响,除以方差却没有影响,因为对同一个维度的xi每个都进行同等缩放。而对余弦相似度有影响的,除了减去平均值,还有缩放,所以余弦相似度受到更大的影响。
[0077]
第三种归一化方法:最小最大归一化:将原始数据用线性化的方法转换到[0,1]的范围,归一化公式如下:
[0078][0079]
最小最大归一化对余弦相似度和ratiolog的影响程度和标准归一化对它们的影响程度是类似的,也是余弦相似度受到更大影响。
[0080]
通过几种数据标准化对余弦相似度和对ratiolog的影响大小的对比,可以看出ratiolog虽然有时候也受影响,但是总体比余弦相似度要小得多。可能以前人们对标准化
结果对相似度计算的影响没有充分的认识,也就对其影响没有足够的关注。希望通过以上对比能够改变人们的这个认识。而且,通过以上对几种应用场景的对比可以看出,即使不进行标准化,余弦相似度的结果往往也会偏大而且没有ratiolog的结果合理。
[0081]
ratiolog方法的不足:由于ratiolog在实际计算过程中涉及到指数和对数的计算,速度比余弦相似度要慢大概一个数量级,这是一个弱势。在计算密集型的应用中可以考虑在向量级别上或者在维度级别上并行计算,进而可以舒缓性能。
[0082]
本发明实施例还公开了一种基于比率对数的向量相似度计算系统,包括如下模块:模块m1:对实际问题的数据对象进行数学建模,得到对应的向量,基于比率对数计算多个向量的相似度。把两向量逐个维度地计算比值,并把逐个维度计算的比值进行相乘,相乘的结果作为两向量的相似度。先对每个比值求自然对数,将求过自然对数的比值相加,再把相加的结果进行指数运算得到相似度。输入相同维度的两向量;初始化变量和参数;根据向量中是否有维度的值为预定值的情况执行不同的对数计算;再根据两向量同维度的值的正负符号是否相同分别计算正比值的对数和负比值的对数,然后分别将正比值的对数相加和将负比值的对数相加;根据分别所得的正比值的对数和所得的负比值的对数和求得原始相似度,原始相似度进行归一化后作为最终输出的相似度。两向量包括第一向量和第二向量,两向量中是否有维度的值为预定值的情况包括两向量有维度值均为预定值、第一向量有维度值为预定值、第二向量有维度值为预定值和两向量有维度值均不为预定值。
[0083]
模块m2:根据向量的相似度比较已经被表示为向量的数据对象的相似性。
[0084]
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置、模块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
[0085]
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本技术的实施例和实施例中的特征可以任意相互组合。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献