精华内容
下载资源
问答
  • 距离向量算法

    2012-01-16 15:15:24
    这是一段模拟路由器的源代码和可执行文件,模拟的是距离向量算法(dv),内有非阻塞socket的具体实现,包含说明文档,希望对初学者有所帮助。
  • 向量距离与范数

    千次阅读 2015-04-05 14:39:38
    欧氏距离(Euclidean Distance) 欧氏距离是最易于理解的一种距离计算方法,源自欧氏空间中两点间的距离公式。 (1)二维平面上两点a(x1,y1)b(x2,y2)间的欧氏距离: ...(3)两个n维向量a(x11,x12,…,x1n) b(x21,x2

    Do you know the definition of the Euclidean distance?

    G = rand(1, 72);
    G2 = rand(1, 72);
    D = sqrt(sum((G - G2) .^ 2));
    A more efficient method, but this matters only for much larger vectors:

    V = G - G2;
    D = sqrt(V * V’);
    Or a Matlab command:

    D = norm(G - G2);
    A good ide is to search in the documentation before asking in MATLAB Answers:

    docsearch euclidean

    1. 欧氏距离(Euclidean Distance)
      欧氏距离是最易于理解的一种距离计算方法,源自欧氏空间中两点间的距离公式。
      (1)二维平面上两点a(x1,y1)与b(x2,y2)间的欧氏距离:
      基于距离的计算方法
      (2)三维空间两点a(x1,y1,z1)与b(x2,y2,z2)间的欧氏距离:
      基于距离的计算方法
      (3)两个n维向量a(x11,x12,…,x1n)与 b(x21,x22,…,x2n)间的欧氏距离:
      基于距离的计算方法
        也可以用表示成向量运算的形式:
      基于距离的计算方法
      (4)Matlab计算欧氏距离
      Matlab计算距离主要使用pdist函数。若X是一个M×N的矩阵,则pdist(X)将X矩阵M行的每一行作为一个N维向量,然后计算这M个向量两两间的距离。
      例子:计算向量(0,0)、(1,0)、(0,2)两两间的欧式距离
      X = [0 0 ; 1 0 ; 0 2]
      D = pdist(X,’euclidean’)
      结果:
      D =
      1.0000 2.0000 2.2361

    2. 曼哈顿距离(Manhattan Distance)
      从名字就可以猜出这种距离的计算方法了。想象你在曼哈顿要从一个十字路口开车到另外一个十字路口,驾驶距离是两点间的直线距离吗?显然不是,除非你能穿越大楼。实际驾驶距离就是这个“曼哈顿距离”。而这也是曼哈顿距离名称的来源, 曼哈顿距离也称为城市街区距离(City Block distance)。
      (1)二维平面两点a(x1,y1)与b(x2,y2)间的曼哈顿距离
      基于距离的计算方法
      (2)两个n维向量a(x11,x12,…,x1n)与 b(x21,x22,…,x2n)间的曼哈顿距离
      基于距离的计算方法
      (3) Matlab计算曼哈顿距离
      例子:计算向量(0,0)、(1,0)、(0,2)两两间的曼哈顿距离
      X = [0 0 ; 1 0 ; 0 2]
      D = pdist(X, ‘cityblock’)
      结果:
      D =
      1 2 3

    3. 标准化欧氏距离(Standardized Euclidean distance )
      (1)标准欧氏距离的定义
        标准化欧氏距离是针对简单欧氏距离的缺点而作的一种改进方案。标准欧氏距离的思路:既然数据各维分量的分布不一样,好吧!那我先将各个分量都“标准化”到均值、方差相等吧。均值和方差标准化到多少呢?这里先复习点统计学知识吧,假设样本集X的均值(mean)为m,标准差(standard deviation)为s,那么X的“标准化变量”表示为:
        而且标准化变量的数学期望为0,方差为1。因此样本集的标准化过程(standardization)用公式描述就是:
      基于距离的计算方法
        标准化后的值 = ( 标准化前的值 - 分量的均值 ) /分量的标准差
        经过简单的推导就可以得到两个n维向量a(x11,x12,…,x1n)与 b(x21,x22,…,x2n)间的标准化欧氏距离的公式:
      基于距离的计算方法
        如果将方差的倒数看成是一个权重,这个公式可以看成是一种加权欧氏距离(Weighted Euclidean distance)。
      (2)Matlab计算标准化欧氏距离
      例子:计算向量(0,0)、(1,0)、(0,2)两两间的标准化欧氏距离 (假设两个分量的标准差分别为0.5和1)
      X = [0 0 ; 1 0 ; 0 2]
      D = pdist(X, ‘seuclidean’,[0.5,1])
      结果:
      D =
      2.0000 2.0000 2.8284
    4. 夹角余弦(Cosine)
      有没有搞错,又不是学几何,怎么扯到夹角余弦了?各位看官稍安勿躁。几何中夹角余弦可用来衡量两个向量方向的差异,机器学习中借用这一概念来衡量样本向量之间的差异。
      (1)在二维空间中向量A(x1,y1)与向量B(x2,y2)的夹角余弦公式:
      基于距离的计算方法
      (2) 两个n维样本点a(x11,x12,…,x1n)和b(x21,x22,…,x2n)的夹角余弦
      类似的,对于两个n维样本点a(x11,x12,…,x1n)和b(x21,x22,…,x2n),可以使用类似于夹角余弦的概念来衡量它们间的相似程度。
      基于距离的计算方法
        即:
      基于距离的计算方法
      夹角余弦取值范围为[-1,1]。夹角余弦越大表示两个向量的夹角越小,夹角余弦越小表示两向量的夹角越大。当两个向量的方向重合时夹角余弦取最大值1,当两个向量的方向完全相反夹角余弦取最小值-1。
      夹角余弦的具体应用可以参阅参考文献[1]。
      (3)Matlab计算夹角余弦
      例子:计算(1,0)、( 1,1.732)、( -1,0)两两间的夹角余弦
      X = [1 0 ; 1 1.732 ; -1 0]
      D = 1- pdist(X, ‘cosine’) % Matlab中的pdist(X, ‘cosine’)得到的是1减夹角余弦的值
      结果:
      D = 0.5000 -1.0000 -0.5000

    本文转自:百度文库http://wenku.baidu.com/view/ebde5d0e763231126edb1113.html

    1 范数
    向量的范数可以简单形象的理解为向量的长度,或者向量到零点的距离,或者相应的两个点之间的距离。

    向量的范数定义:向量的范数是一个函数||x||,满足非负性||x|| >= 0,齐次性||cx|| = |c| ||x|| ,三角不等式||x+y|| <= ||x|| + ||y||。

    常用的向量的范数:
    L1范数: ||x|| 为x向量各个元素绝对值之和。
    L2范数: ||x||为x向量各个元素平方和的1/2次方,L2范数又称Euclidean范数或者Frobenius范数
    Lp范数: ||x||为x向量各个元素绝对值p次方和的1/p次方
    L∞范数: ||x||为x向量各个元素绝对值最大那个元素的绝对值,如下:

    椭球向量范数: ||x||A = sqrt[T(x)Ax], T(x)代表x的转置。定义矩阵C 为M个模式向量的协方差矩阵, 设C’是其逆矩阵,则Mahalanobis距离定义为||x||C’ = sqrt[T(x)C’x], 这是一个关于C’的椭球向量范数。

    2 距离
    欧式距离(对应L2范数):最常见的两点之间或多点之间的距离表示法,又称之为欧几里得度量,它定义于欧几里得空间中。n维空间中两个点x1(x11,x12,…,x1n)与 x2(x21,x22,…,x2n)间的欧氏距离:

    也可以用表示成向量运算的形式:

    曼哈顿距离:曼哈顿距离对应L1-范数,也就是在欧几里得空间的固定直角坐标系上两点所形成的线段对轴产生的投影的距离总和。例如在平面上,坐标(x1, y1)的点P1与坐标(x2, y2)的点P2的曼哈顿距离为:,要注意的是,曼哈顿距离依赖座标系统的转度,而非系统在座标轴上的平移或映射。

    切比雪夫距离,若二个向量或二个点x1和x2,其坐标分别为(x11, x12, x13, … , x1n)和(x21, x22, x23, … , x2n),则二者的切比雪夫距离为:d = max(|x1i - x2i|),i从1到n。对应L∞范数。

    闵可夫斯基距离(Minkowski Distance),闵氏距离不是一种距离,而是一组距离的定义。对应Lp范数,p为参数。

    闵氏距离的定义:两个n维变量(或者两个n维空间点)x1(x11,x12,…,x1n)与 x2(x21,x22,…,x2n)间的闵可夫斯基距离定义为:

    其中p是一个变参数。

    当p=1时,就是曼哈顿距离,

    当p=2时,就是欧氏距离,

    当p→∞时,就是切比雪夫距离,

    根据变参数的不同,闵氏距离可以表示一类的距离。

    Mahalanobis距离:也称作马氏距离。在近邻分类法中,常采用欧式距离和马氏距离。

    参考资料:

    http://blog.csdn.net/v_july_v/article/details/8203674

    展开全文
  • 距离向量算法模拟

    2014-06-29 14:52:55
    使用java多线程模拟距离向量路由选路算法。
  • 二、距离向量 1)欧氏距离 欧式距离是最容易值观理解的距离度量方法。 2)曼哈顿距离 在曼哈顿街区要从一个十字路口开车到另一个十字路口,驾驶距离显然不是两点之前的直线距离。这个实际的驾驶距离就是"曼哈顿距离...

    二、距离向量

    1)欧氏距离

    欧式距离是最容易值观理解的距离度量方法。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zmCovBFn-1573195675837)(file:///C:/Users/%E6%B8%85%E9%A3%8E/Desktop/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AF%BE%E4%BB%B6/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AE%B2%E4%B9%89/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%EF%BC%88%E7%AE%97%E6%B3%95%E7%AF%87%EF%BC%89/K-%E8%BF%91%E9%82%BB%E7%AE%97%E6%B3%95/images/1.4%20%E6%AC%A7%E5%BC%8F%E8%B7%9D%E7%A6%BB2-1965410.png)]

    2)曼哈顿距离

    在曼哈顿街区要从一个十字路口开车到另一个十字路口,驾驶距离显然不是两点之前的直线距离。这个实际的驾驶距离就是"曼哈顿距离"。曼哈顿距离也称“城市街区距离”。

    在这里插入图片描述

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5mfaBqhG-1573195675846)(file:///C:/Users/%E6%B8%85%E9%A3%8E/Desktop/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AF%BE%E4%BB%B6/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AE%B2%E4%B9%89/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%EF%BC%88%E7%AE%97%E6%B3%95%E7%AF%87%EF%BC%89/K-%E8%BF%91%E9%82%BB%E7%AE%97%E6%B3%95/images/1.6%20%E6%9B%BC%E5%93%88%E9%A1%BF%E8%B7%9D%E7%A6%BB.png)]

    3)切比雪夫距离

    国际象棋中,国王可以直行、横行、斜行,所以国王走一步可以移动到相邻8个方格中的任意一个。国王从格子(x1,y1)走到格子(x2,y2)最少需要走多少步?这个距离就叫做切比雪夫距离。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oosoEmkR-1573195675848)(file:///C:/Users/%E6%B8%85%E9%A3%8E/Desktop/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AF%BE%E4%BB%B6/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AE%B2%E4%B9%89/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%EF%BC%88%E7%AE%97%E6%B3%95%E7%AF%87%EF%BC%89/K-%E8%BF%91%E9%82%BB%E7%AE%97%E6%B3%95/images/1.7%20%E5%88%87%E6%AF%94%E9%9B%AA%E5%A4%AB%E8%B7%9D%E7%A6%BB.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jh2WkPKB-1573195675849)(file:///C:/Users/%E6%B8%85%E9%A3%8E/Desktop/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AF%BE%E4%BB%B6/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AE%B2%E4%B9%89/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%EF%BC%88%E7%AE%97%E6%B3%95%E7%AF%87%EF%BC%89/K-%E8%BF%91%E9%82%BB%E7%AE%97%E6%B3%95/images/1.8%20%E5%88%87%E6%AF%94%E9%9B%AA%E5%A4%AB%E8%B7%9D%E7%A6%BB.png)]

    4)闵可夫斯基距离

    闵氏距离不是一种距离,而是一组距离的定义,是对多个距离度量公式的概括性的表示。

    两个n维变量a(x11,x12,…x1n)与b(x21,x22,…,x2n)间的闵可夫斯基距离定义为:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KCzIXBz6-1573195675850)(file:///C:/Users/%E6%B8%85%E9%A3%8E/Desktop/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AF%BE%E4%BB%B6/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AE%B2%E4%B9%89/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%EF%BC%88%E7%AE%97%E6%B3%95%E7%AF%87%EF%BC%89/K-%E8%BF%91%E9%82%BB%E7%AE%97%E6%B3%95/images/%E9%97%B5%E5%8F%AF%E5%A4%AB%E6%96%AF%E5%9F%BA%E8%B7%9D%E7%A6%BB.png)]

    其中p是一个变参数:

    • p=1的时候,就是曼哈顿距离;
    • p=2的时候,就是欧式距离;
    • p→∞的时候,就是切比雪夫距离。

    就是根据参数p的不同,闵氏距离可以表示某一种类/种的距离。

    但是:

    闵氏距离、曼哈顿距离、欧式距离和切比雪夫距离都存在明显的缺点

    • 将各个分两的量纲,也就是“单位”相同看待了。
    • 未考虑各个分量的分布(期望、方差等)可能是不同的。

    5)标准化欧氏距离

    标准化欧式距离是针对欧式距离的缺点而做的一种改进

    思路:既然数据各维分两的分布不一样,那就先将各个分量都”标准化“到均值、方差等。

    Sk表示各个维度的标准差

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-r3tPK90q-1573195675851)(file:///C:/Users/%E6%B8%85%E9%A3%8E/Desktop/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AF%BE%E4%BB%B6/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AE%B2%E4%B9%89/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%EF%BC%88%E7%AE%97%E6%B3%95%E7%AF%87%EF%BC%89/K-%E8%BF%91%E9%82%BB%E7%AE%97%E6%B3%95/images/%E6%A0%87%E5%87%86%E5%8C%96%E6%AC%A7%E5%BC%8F%E8%B7%9D%E7%A6%BB.png)]

    如果将方差的倒数看成一个权重,也可以称之为加权欧式距离

    6)余弦距离

    几何中,夹角余弦可用来衡量两个向量方向的差异;机器学习中,借用这一概念来衡量样本向量之间的差异。

    夹角余弦取值范围为[-1,1]。余弦越大表示两个向量的夹角越小,余弦越小表示两向量的夹角越大。当两个向量的方向重合时余弦取最大值1,当两个向量的方向完全相反余弦取最小值-1。

    结果越趋近于1越正相关,越趋近于-1则越负相关,越趋近于0说越无相关。

    7)汉明距离

    两个等长字符串s1与s2的汉明距离为:将其中一个变成为另一个所需要作的最小替换次数。

    汉明重量:是字符串相对于同样长度的零字符串的汉明距离,也就是说,它是字符串中非零的元素个数:对于二进制字符串来说,就是 1 的个数,所以 11101 的汉明重量是 4。因此,如果向量空间中的元素a和b之间的汉明距离等于它们汉明重量的差a-b。

    8)杰卡德距离

    杰卡德相似系数:两个集合A和B的交集元素在A和B的并集所占的比例,称为两个集合的杰卡德相似系数,用符号J(A,B)表示:
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-awI0P0cP-1573195675852)(file:///C:/Users/%E6%B8%85%E9%A3%8E/Desktop/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AF%BE%E4%BB%B6/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AE%B2%E4%B9%89/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%EF%BC%88%E7%AE%97%E6%B3%95%E7%AF%87%EF%BC%89/K-%E8%BF%91%E9%82%BB%E7%AE%97%E6%B3%95/images/%E6%9D%B0%E5%8D%A1%E5%BE%B7%E8%B7%9D%E7%A6%BB1.png)]

    杰卡德距离:与杰卡德相似系数相反,用两个集合中的不同元素占所有元素的比例来衡量两个集合的区分度:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TEeto4gQ-1573195675853)(file:///C:/Users/%E6%B8%85%E9%A3%8E/Desktop/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AF%BE%E4%BB%B6/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AE%B2%E4%B9%89/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%EF%BC%88%E7%AE%97%E6%B3%95%E7%AF%87%EF%BC%89/K-%E8%BF%91%E9%82%BB%E7%AE%97%E6%B3%95/images/%E6%9D%B0%E5%8D%A1%E5%BE%B7%E8%B7%9D%E7%A6%BB2.png)]

    9)马氏距离

    下图有两个正态分布图,它们的均值分别为a和b,但方差不一样,则图中的A点离哪个总体更近?或者说A有更大的概率属于谁?显然,A离左边的更近,A属于左边总体的概率更大,尽管A与a的欧式距离远一些。这就是马氏距离的直观解释。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LhulTMFC-1573195675854)(file:///C:/Users/%E6%B8%85%E9%A3%8E/Desktop/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AF%BE%E4%BB%B6/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AE%B2%E4%B9%89/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%EF%BC%88%E7%AE%97%E6%B3%95%E7%AF%87%EF%BC%89/K-%E8%BF%91%E9%82%BB%E7%AE%97%E6%B3%95/images/%E9%A9%AC%E6%B0%8F%E8%B7%9D%E7%A6%BB.png)]

    马氏距离是一种基于样本分布的距离

    马氏距离是由印度统计学家马哈拉诺比斯提出的,表示数据的协方差距离。它是一种有效的计算两个位置样本集的相似度的方法。

    与欧式距离不同的是,它考虑到各种特性之间的联系,即独立于测量尺度。

    **马氏距离定义:**设总体G为m维总体(考察m个指标),均值向量为μ=(μ1,μ2,… …,μm,)`,协方差阵为∑=(σij),

    则样本X=(X1,X2,… …,Xm,)`与总体G的马氏距离定义为:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o0U8KO58-1573195675854)(file:///C:/Users/%E6%B8%85%E9%A3%8E/Desktop/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AF%BE%E4%BB%B6/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E8%AE%B2%E4%B9%89/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%EF%BC%88%E7%AE%97%E6%B3%95%E7%AF%87%EF%BC%89/K-%E8%BF%91%E9%82%BB%E7%AE%97%E6%B3%95/images/%E9%A9%AC%E6%B0%8F%E8%B7%9D%E7%A6%BB1.png)]

    马氏距离也可以定义为两个服从同一分布并且其协方差矩阵为∑的随机变量的差异程度:如果协方差矩阵为单位矩阵,马氏距离就简化为欧式距离;如果协方差矩阵为对角矩阵,则其也可称为正规化的欧式距离。

    马氏距离特性:

    1.量纲无关,排除变量之间的相关性的干扰;

    2.马氏距离的计算是建立在总体样本的基础上的,如果拿同样的两个样本,放入两个不同的总体中,最后计算得出的两个样本间的马氏距离通常是不相同的,除非这两个总体的协方差矩阵碰巧相同;

    3 .计算马氏距离过程中,要求总体样本数大于样本的维数,否则得到的总体样本协方差矩阵逆矩阵不存在,这种情况下,用欧式距离计算即可。

    4.还有一种情况,满足了条件总体样本数大于样本的维数,但是协方差矩阵的逆矩阵仍然不存在,比如三个样本点(3,4),(5,6),(7,8),这种情况是因为这三个样本在其所处的二维空间平面内共线。这种情况下,也采用欧式距离计算。

    展开全文
  • 高中数学第三章空间向量与立体几何3.1空间向量及其运算距离向量路由计算素材新人教A版选修2_1
  • 距离向量路由算法

    2016-05-16 15:18:28
    距离向量路由算法
  • 距离向量算法
  • 向量距离(Distance)

    千次阅读 2019-10-31 20:31:35
    向量是一个有向线段,计算两个向量之间的距离,其实就是计算两个点之间的距 离。 在 Unity 引擎内,我们可以直接...2.用其中的一个点另外一个点进行相减,本质是两个向量中每个分量的相减运算,最终得到一个新的...

    向量是一个有向线段,计算两个向量之间的距离,其实就是计算两个点之间的距 离。

    在 Unity 引擎内,我们可以直接通过 Vector3.Distance(v1, v2)来得到 两个向量之间的距离。

    数学公式:

    \large \left ( V1,V2 \right )Distance= \left | V1-V2 \right |

    例:

    \large \left ( [1,2,3]v1,[4,5,6]v2 \right )Distance= \left | v1-v2\right |\approx 5.196

    公式解析:

    1.求两个向量之间的距离,本质就是求两个点之间的距离;

    2.用其中的一个点与另外一个点进行相减,本质是两个向量中每个分量的相减运算,最终得到一个新的向量;

    3.然后再求出这个新向量的模,就是两个向量之间的距离;

    代码实现:

        /// <summary>
        /// 计算两个向量之间的距离.
        /// </summary>
        public static float Distance(Vector3 v1,Vector3 v2)
        {
            Vector3 Vector = v1 - v2;
            return Vector.magnitude;
        }
    
    
        /// <summary>
        /// 大小/长度/模.
        /// </summary>
        public float magnitude
        {
            get
            {
                //自身各分量平方运算.
                float X = this.x * this.x;
                float Y = this.y * this.y;
                float Z = this.z * this.z;
                return Mathf.Sqrt(X + Y + Z);//开根号,最终返回向量的长度/模/大小.
            }
        }

     

    展开全文
  • 2017_2018学年高中数学第三章空间向量与立体几何3.2立体几何中的向量方法第3课时空间向量与空间角距离优化练习新人教A版选修2_120180802390
  • 段落向量与句子向量表达

    万次阅读 热门讨论 2017-05-20 17:08:27
    这是Tomas Mikolov的一篇关于段落向量和句子向量的论文。本文是我翻译加自我理解的结果,如需要更详细的介绍,请看英文文献。...2、忽略了语义特征,例如,powerfulstrong和Paris距离都是非常远的。在本文中,

    这是Tomas Mikolov的一篇关于段落向量和句子向量的论文。本文是我翻译加自我理解的结果,如需要更详细的介绍,请看英文文献。

    摘要

    许多机器翻译的算法都需要使用固定长度的词向量特征。在到达文本层面时,我我们最常用的一个固定长度的特征时词袋模型。尽管他们很流行,但是词袋模型有两大缺点:1、失去了词序特征;2、忽略了语义特征,例如,powerful与strong和Paris距离都是非常远的。在本文中,我们提出了一个段落向量,它是一个无监督算法,从变长的文本(句子、段落、文章)中学习到固定长度的词向量特征。我们的算法使用一个密集向量来表示每个文本,而这个是通过预测词出现在文本来训练的。它的结构给了我们可以克服词袋模型缺点的可能。实验结果显示,段落向量优于词袋模型,也同样优于其他文本向量表示。最终我们在几个文本分类和情感分析任务中取得了最优值。

    1 引言

    文本分类和聚类在许多应用中扮演重要作用,例如文本检索、网页搜索和垃圾邮件过滤。而这些应用的核心都是像逻辑斯蒂回归或者K-means聚类这样的机器学习算法。这些算法通常需要使用一个定长的向量来表示输入文本。由于词袋模型和n-graims模型的简单、有效和经常去的不错的准确度,因此他们是最常用文本定长向量表达方式。

    但是,词袋模型有许多缺点。词序特征会丢失,因此不同的句子,如果使用相同的单词,可能得到的是相同的向量表达。即使是n-gram模型,它也只是在较短的上下文中考虑词序,这就受到了稀疏数据和高维的约束。词袋模型和n-gram模型对于词义都是不敏感的,它们更多的会考虑词与词之间的距离。就像摘要中说的那样,powerful与strong和Paris距离都是非常远的,事实上,我们知道,powerful与strong更近。

    本文中,我们提出了段落向量,一种无监督框架来学习为每篇文本分配向量。文本可以是变长的,无论是句子还是篇章。之所以叫做段落向量是为了强调这个方法可以应用到变长文本中,无论是句子、段落还是更大的篇章单元。

    在我们的模型中,向量表达是由在段落中预测有用的词来训练的。更确切来讲,我们通过几个从段落中获取的词向量来连接成段落向量,并且对在给出的上下文中预测接下来的词。词向量和段落向量都是基于SGD和BP算法的。不同的是,词向量是共享的,而段落向量是段落间相互独立的。在预测时,段落向量通过固定的词向量来进行预测,并且训练一个新的段落向量直到收敛。

    我们的技术主要受到了最近使用神经网络学习词向量表示的工作的激励。在他们的前期工作中,每一个词都会由一个向量表示,而这个向量来源于上下文中其他词向量的拼接或者平均。例如,在2006年的Bengio的神经网络语言模型中,它使用前几个词向量的拼接来构建神经网络的输入,并且尝试去预测接下来的词。其结果就是,当模型训练完成后,词向量被映射到了一个向量空间,在这个向量空间中,具有相似语义的词会有相似的向量表示。

    接着这些成功的技术,研究者们又试图把模型扩展以从词层面到达短语级或者句子级层面。例如,一个简单的方法就是使用文本的所有词向量加权平均。一个更复杂的方法是使用矩阵操作,根据句子的短语结构分析树给出的顺序组合词向量。这两种方法都有缺陷,第一种方法和词袋模型一样丢失了词序特征,第二种方法则只能在句子层面上做,因为它依赖于短语句法分析。

    段落向量能够组合序列化变长输入的表达。不像之前的方法,它具有普适性而且可以应用于各种长度的文本:句子、段落和篇章。他不需要对特定任务进行词权重的调整,它也不需要依赖于句法分析树。在接下来的部分中,我们将会展现一些在基准数据集上的实验,这些实验充分展示了段落向量的优势。例如,在情感分析中,我们取得了最优的结果,比之前复杂的方法还要减少16%的错误率。在文本分类任务中,我们方法明显打败了词袋模型,取得了大约30%的性能提升。

    2算法

    我们从之前学习词向量的方法开始讲起。这些方法都对我们的段落向量方法有促进作用。

    2.1 词向量表示学习方法

    这一部分,我们介绍词向量的相关概念。一个著名的词向量学习框架如图1所示,其任务就是通过给出的上下文中的词可以预测当前词的向量。
    这里写图片描述
    在这个框架中,每个词都会被映射成一个独一无二的词向量,通过一个一维矩阵W(译者注:onehot编码),这一列表示着这个词在词典中的位置。通过求和或者求平均的方法来获得矩阵,这个矩阵被用来预测下一个词的词向量的特征。

    更正式的,给定一串单词w1,w2,w3,…wT,词向量模型的目标就是使得平均似然估计最大:

    预测任务通常是使用一个多类分类器,例如Softmax函数。这里,我们使用:
    这里写图片描述
    每一个yi都是一个非归一化的似然概率,对应的是每一个输出的词i,其中y的计算如下:
    这里写图片描述
    这里,U,b是softmax的参数。h是由W中抽取出的词向量的平均值或者求和构成。
    这里写图片描述
    实际应用中,层次化的Softmax(Morin&Bengio,2005;Mnih &Hinton,2008;Mikolov et all,2013c)比普通Softmax更适合快速训练。在我们的工作中,层次化的Softmax是一个二叉哈夫曼树。短编码被分配给了频率高的词。这时一个很好的加速训练的小技巧因为这样一般的词都可以得到快速训练。其代码和(Mikolov et all,2013c)用的是一样的。

    基于词向量的神经网络模型大多使用SGD方法训练,其梯度通过BP算法获得。这种模型在神经语言模型中非常常见。一个关于词向量的训练算法的具体实现在这里可以找到:code.google.com/p/word2vec/( Mikolov et all,2013a)

    当训练收敛后,拥有类似语义的单词会被映射到向量空间里相似的位置上。还是“powerful”和“strong”,他们离的更近。而且词向量间的不同,也表示着不同的意思。这就意味着距离差距也有语义差距。King-man=Queen-woman。大概就是这意思,这个可以被用来学习一个线性矩阵来翻译不同语言间的单词和短语。

    这些特性使得词向量对于一些自然语言处理的任务特别适合,例如语言模型(Bengio et al 2006;Mikolov et all 2012),自然语言理解(Collobert & Weston 2008;Zhila et all,2013),统计机器翻译(Mikolov et all 2013b;Zou et al.,2013),图像理解(Frome et al,2013)和相关性抽取(Socher et al,2013a)。

    2.2 段落向量

    我们的学习段落向量的方法是受到了学习词向量的启发。这个启发就是,我们使用词向量来预测句子中下一个单词。所以,尽管这些词向量初始化时是随机的,但是他们最终还是捕获了语义信息作为预测结果的副产品。我们将使用同样的这种方法应用到我们的段落向量中。段落向量也被用来在段落里给出上下文预测下一个词。

    在我们的段落向量框架中(图2),每一个段落也被映射成一个独立的向量,使用一个矩阵D来表示。而每个单词也被映射为一个独立的向量,使用矩阵W来表示。段落向量和词向量都被平均或者求和在一个上下文中用来预测下一个词。在实验中,我们使用平均的方法来组合这些向量。
    这里写图片描述
    更重要的,模型中唯一改变的只有式1中的h,从只是D表示变成了D和W共同表示。

    段落块可以被看成是另一个词,这个词里记载着当前上下文所缺失的信息,或者说是段落的主题。正因为这个原因,我们经常叫这个模型为分布式记忆模型——段落向量(PV-DM)

    上下文信息是按照固定长度在段落上根据滑动窗口不断采样,段落向量会被该段落产生的所有上下文窗口所共同拥有,但是不跨越段落,也就是说,不同段落的段落向量是不同的。但是不同段落的词向量是相同的。

    段落向量和词向量使用随机梯度下降方法训练,这个梯度使用的是BP算法获得。每一步的随机梯度下降,都是从一个随机段落里采样获得固定长度的上下文,通过图2种的网络计算梯度误差并且使用该梯度更新模型中的参数。

    在预测的时候,需要一个实现一个预测的步骤来进行计算一个新段落的段落向量,这也是通过梯度下降获得。在这步骤中,模型的剩余参数,包括词向量W和Softmax的权重都是固定的。

    假设这里有N个段落在语料库中,有M个词在词典里,我们想去学习段落向量。因此每段都被映射到p维里,每个词被映射到q维里,这样,模型总共拥有N*p+M*q参数,包括softmax的参数。即使当N非常大时,这些参数也有可能非常大,但是整个训练过程也是稀疏的并且高效的。

    经过训练后,段落向量就可以被用来作为段落的特征。例如可以替代词袋特征等。我们可以把这个特征直接用到机器学习算法中,例如逻辑斯蒂回归、支持向量机或者K-means聚类。

    总的来说,这个算法有2个主要步骤:1)使用无监督方法训练词向量W(译者注:和Word2vec一样);2)推测阶段获取段落向量D。第三步骤是使用D在一个标准分类器上进行标签预测,例如逻辑斯蒂分类或者支持向量机。

    段落向量的优势:段落向量的一个最主要的优势在于它不需要标注的语料。

    段落向量也克服了一些词袋模型的缺点。首先它隐含了词向量模型的最重要的特点,词的语义。也就是说,相似的语义的词会有相似的位置(译者注:意思是,相似的语义的段落也有相似的位置)。第二个优势就是它考虑了词序,就像在较短的上下文中n-gram模型所做的那样。这是非常重要的,因为n-gram模型提供了大量的段落信息,包括词序。我们的模型就有可能优于n-gram模型,因为n-gram模型可能创建出一个高维的但却稀疏的矩阵。

    2.3无词序的段落向量:分布的词袋模型

    以上的方法都是考虑了在一个文本窗口中使用词向量和段落向量的链接来预测下一个单词。另一个方法是在输入中忽略上下文单词,但是在输出中强制模型对段落中随机采样的单词进行预测。事实上,SGD的每一次迭代中,我们都会从一个文本窗口中采样,然后从这个文本窗口中随机采样一个单词并且构建一个基于段落向量的分类任务。这项技术见图三。我们叫做这种方法为PV-DBOW,与PV-DM相对应。

    除了概念上简单外,这个模型也存储更少的数据。我们只需要存储Softmax权重,而之前的模型需要存储Softmax权重和词向量。这个模型更像是词向量模型中的Skip-gram模型。
    这里写图片描述
    在我们的试验中,每个段落向量由2部分组成:一个是通过标准段落向量(PV-DM)另一个是(PV-DBOW)。PV-DM通常可以取得很好的成绩在很多任务上,但是如果和PV-DBOW搭配的话,能对多个系统都取得更连续的好的成绩,因此我们强烈推荐。

    3实验

    我们做了实验来更好的理解段落向量的表现。为此,我们在两个文本理解问题上做了基准的段落向量:情感分析和信息检索。

    对于情感分析任务,我们使用了2个数据集斯坦福情感分析树库数据集(Socher ,2013b)和IMDB数据集(Mass ,2011)。在这两个数据集中的文本长度是非常不同的,Socher每个例子都是一个单独的句子,而Mass的数据集中的例子都是好几个句子连在一起的。

    我们也使用了我们的方法在信息检索的任务上,这个任务是当给出一个查询时,判断一个文档是否应当被检索到。

    3.1 斯坦福情感树库数据集上的情感分析

    数据集:这个数据集首先被(Pang & Lee ,2005)提出来,并且被(Socher et all. 2013c)扩展作为情感分析的基准系统。它包含了11855个从烂番茄上的影视评论的句子。

    这个数据集包涵一下集合:8544个训练集,2210个测试集,1101个验证集。
    每一个句子都有一个标签,这个标签从0-1分别表示最消极到最积极。这些标签都是Amazon Mechanical Turk上由人工标记得到的。

    这个数据集附带有每个句子的具体标签以及子句法结构树,前面两个做了很多工作(译者注:此处省略),最终这个数据集可以在http://nlp.Stanford.edu/sentiment/获取。

    任务和基准线:在(Socher et all.2013)文章中,任务被分成了2个基准系统,一个细准系统使用5分类,一个基准系统分为2分类。而且既可以对整个句子进行标注也可以对所有的短语进行标注。这里使用的是对整个句子标注。

    (Socher et al. 2013b)使用和好几种方法在这个数据及上,并且发现递归神经张量网络要比词袋模型好很多。这可以被认为是影评经常非常短并且结构在判断是否是积极还是消极上具有重要作用,就像在很小的数据集上给出单词后。

    实验草案:
    我们按照(Socher et al. 2013b)的方法实现了一下。为了保证我们能够充分使用已提供的数据集,在我们的模型中,我们把每个短语都看成是一个独立的句子,因此我们是在所有的短语中训练的。

    在学习完短语和句子的向量表达后,我们使用这些来学习一个影评打分的预测器。

    在测试的时候,我们固定每个词的向量表达并且学习这个句子的向量表达,使用的是梯度下降方法。一旦句子向量表达学习完成后,我们就使用它用一个逻辑斯蒂回归来预测影评打分。

    在我们的实验中,我们使用验证集交叉验证了窗口的大小,最优的窗口大小为8.因此向量表达的分类器有两个向量组成,一个是PV-DBOW,另一个是PV-DM。在这两个中,所有的词和段落向量都是400维的。我们为了预测第8个词,我们使用的是7个词向量和一个段落向量。而特殊符号(。?!)等,我们也视作是一个普通的字符。如果这个句子小于9个词,我们使用NULL来填充。

    结果:
    我们把不同方法的错误率都放在了表1种。首先应当注意的就是传统的词袋模型(贝叶斯、SVM、二元贝叶斯)的表现非常差。这是因为词袋模型没有考虑到句子的组成,例如词序。因此有很多复杂的语言现象不能够被识别,例如讽刺。这个结果也显示递归神经网络模型这种更先进的方法,使用的句法分析而考虑了句子组成,因此表现的更好。
    这里写图片描述
    但是我们的方法由于以上所有基准系统,包括递归神经网络。而且我们也不需要句法分析。在粗颗粒度上我们降低了2.4%的错误率,相比较最好的基准系统提升了16%。

    3.2 真正的段落向量:在IMDB数据集上的情感分析

    之前都是一个句子,下面是多个句子,即使是(Socher,2013b)使用的RNTN,也是需要依靠句法分析的。我们段落是没有句法分析的,但是我们仍然可以做,因为我们不需要句法分析。(译者注:这个实验可以见http://blog.csdn.net/lenbow/article/details/52120230,但是效果没有论文的报告上的好)实验表明,我们的方法优于其他方法。

    数据集:这里同样的选取100000条来自IMDB的影评,这个工作在(Maas 2011)里讲过了。主要是25000个已标注的训练实例、25000个已标注的测试集实例和50000个未标注的实例。总共有2种标签:积极和消极。这些标签在训练集和测试集里是平均分布的。数据集可以从http://ai.Stanford.edu/amaas/data/sentiment/index.html获得。

    实验草案;
    我们使用了75000个训练样例(25000标注的50000未标注的)。然后获取已标注的实例的段落向量并把它们放到一个含有一层一藏层50个单元的神经网络并且使用一个逻辑斯蒂分类器来学习预测分类器。

    在测试时,给出一个实力句子,我们固定好其他的网络并且使用梯度下降方法学习测试样例中的段落向量。一旦向量学习完毕后,我们通过给神经网络输入这些向量来预测这些评论的情感。

    我们段落向量模型的超参数使用的和之前的那个任务一样,只是窗口大小变成了10个词。其他都没变。

    结果:实验结果如表2所示。从表中我们可以看出,词袋模型在长句中的表现很非常好,但是很难有很大的提升知道使用了词向量。最显著的改进是在2012年的(Dahl et al. 2012)的工作中,他们在词袋模型中使用了一种限制型波兹曼机。组合了这两个模型也只改进了1.5%的错误率。

    另一个重要改进工作来源于(Wang & Manning,2012).在他们尝试的方法中,NBSVM的2元特征取得了最好成绩并且提升了2%的错误率。
    这里写图片描述
    在本文中,我们提到的方法显著的低于10%的错误率,达到了7.42%,比最好的还低了1.3%,如果算相对改进的话,则改进了15%。

    3.3使用段落向量进行信息抽取

    我们开始把注意力转移到了另一个任务上,在这个任务上,我们使用定长的段落向量表达。其主要任务就是给出最热门的1000000查询,然后每个查询选取前10个结果。然后每次使用3个段落,这三个段落中,有2个是来自同一查询,另一个是随机选取的。目的是能预测出哪两个段落来自同一查询。判断的方法为段落向量化并测量之间的距离,距离近的为来自同一个查询。(译者注:这里我们不详细举例,这是Google的特权)
    这里写图片描述

    4 相关工作

    这里主要介绍了从向量表达到神经网络语言模型,以及从词袋模型到词向量表达,并且到达短语向量表达和段落向量表达的整个过程。具体可见原文。

    5 结论

    我们描述了一种无监督学习算法来从变长的文本(句子、段落)中学习到向量表达,我们称为段落向量。这些向量表达是根据上下文来预测段落中采样获得的单词。

    我们在几个文本分类任务上都做了实验,例如在斯坦福树库和IMDB数据集上的情感分析任务。在这些任务中,这种方法都是最优的。这些好的表现也表明了段落向量可以对段落的语义有表征能力。事实上,段落向量确实可以克服很多词袋模型的缺点。

    尽管现在的工作都是聚焦于文本表达,但我们的方法是可以被应用于序列化数据的表达。在无文本领域,句法分析是没有提供的,我们认为段落向量是可以取代词袋模型和n-gram模型的。

    展开全文
  • 距离向量路由选择

    千次阅读 2019-11-06 21:50:43
    距离向量路由选择 ​ 距离向量路由选择是通过对Bellman-Ford算法进行适当修改,找到任意两结点之间的最短路径。 ​ 先介绍一下Bellman-Ford算法: 1 Bellman-Ford算法 ​ 这个算法基于这样一个事实,如果结点 i 的...
  • 超平面的法向量与距离公式

    千次阅读 2020-04-21 15:46:14
    文章目录1、超平面一般表示形式2、超平面的法向量3、点到超平面的距离4、平行超平面之间的距离公式   1、超平面一般表示形式 在n维空间中,设任意点坐标为 xT=[x(1),x(2),...x(n)]T∈Rnx^T=[x^{(1)},x^{(2)},...x^...
  • 距离向量DV链路状态LS算法的区别

    千次阅读 2019-10-03 21:25:02
    距离向量DV算法链路状态LS算法最大的区别就在于:前者为分布式、迭代算法,而后者为“集中式”的算法。什么意思呢?先来看一下两种算法的原理。 距离向量路由算法(Bellman-Ford) 什么是距离向量:每个节点 iii ...
  • 另外在学习投影矩阵时,利用训练集更新策略,学习若干组投影向量,使得到的投影向量近似正交,这样既可以有效减少运算复杂度和存储复杂度,又可以使得学习到的投影向量能够通过简单的相乘近似得到原来的投影矩阵....
  • 基于距离向量算法的rip协议的实现,C++代码,运行环境VS2005
  • 常用的向量距离公式

    千次阅读 2020-03-22 18:53:27
    欧几里得度量(educlidean metric),指在m维空间中两点之间的真实距离,或者向量的自然长度,即该点到原点的距离。 import numpy as np dist = np.sqrt(np.sum(np.square(x-y))) #或者 from scipy.spatial....
  • 实现了计算机网络中距离向量(DV)算法; 开发语言:C 开发环境:VC++6.0 内有整个工程文件,可直接运行
  • NS2距离向量算法仿真程序 TCL,在NS2上运行的
  • 使用距离向量算法更新路由表

    热门讨论 2009-10-29 10:49:01
    使用C++builder编写简单模拟路由器从邻居那里接收的链路状态分组作为该程序的输入,使用距离向量算法更新路由表
  • 常用向量空间距离计算的几种方法

    千次阅读 2020-04-26 10:06:07
    常用向量空间距离包括: 1、欧式距离 2、余弦距离和余弦相似度 3、曼哈顿距离 …… 下面介绍一下常用的计算方法: 1、计算向量的余弦距离 ...3、使用sklearn计算常用向量距离 ...
  • 用弗洛伊德最短路径,实现的距离向量路由算法
  • 向量距离度量方式

    2020-07-28 17:31:19
    向量距离度量方法 欧式距离、曼哈顿距离
  • 第一篇博客part1的部分很短,就说了一个事情,SVM在试图找一个Max Margin(最大间隔)的分离超平面。OK,这个部分要补补基础,复习一下数学,为后面的学习做准备(墙裂建议数学...咱们来看看SVM涉及到的向量和空间距离
  • 向量距离和相似度

    千次阅读 2016-09-01 22:25:10
    向量之间的关系,统计学上的距离和方向的角度来分析关联性的一些常用的指标。
  • ε距离加权支持向量回归
  • RIP协议及距离向量算法(详解)

    千次阅读 多人点赞 2020-06-05 11:38:59
    RIP是一种分布式的基于距离向量的路由选择协议,是因特网的协议标准,最大优点是简单。 RIP协议要求网络中每一个路由器都维护从它自己到其他每一个目的网络的唯一最佳距离记录(即一组距离)。距离:通常为“跳数”...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 151,211
精华内容 60,484
关键字:

向量与向量的距离