精华内容
下载资源
问答
  • 向量是如何生成的

    2020-12-19 12:48:22
    终于开了NLP的坑了(`・д・´),这次聊聊词向量是怎样生成的。现在有很多现成的模型,cbow,skip-gram,glove等,在python不同的库里面就可以调用(比如...遇到这个问题的时候,网上有个很经典的 《word2vec的...

    终于开了NLP的坑了(`・д・´),这次聊聊词向量是怎样生成的。现在有很多现成的模型,cbow,skip-gram,glove等,在python不同的库里面就可以调用(比如fasttext,genism等)。当然啦,这种百度搜索就能找到怎么import,怎么调参的内容我在这就不多叙述了。这次主要在数学层面上用实例讲讲词向量到底是怎么生成的。

    遇到这个问题的时候,网上有个很经典的 《word2vec的数学原理》上面一文解释得很详细,但小白入门会看得很蒙逼,不知道初始向量值是怎么来的,全局来调用是怎样运行的。所以我就希望写一篇文章,举一些例子,去阐述这个词向量到底是怎样产生的。

    《word2vec的数学原理》传送门 ( ・ˍ・) word2vec数学原理

    这次我们主要以基于hierarchical softmax的cbow模型讲讲。这个模型有输入层,映射层,输出层(这些层具体怎么操作后面)首先我们有一些分好词的语料库。一般泛泛而谈的话,这两者区别在于cbow是一个词预测周围的词,skip-gram是周围的词去预测中心词。

    下面我们列简单的几句话看怎么产生词向量。

    日本的/新垣结衣/演技/好

    演员/新垣结衣/演技/在线

    初始化

    在这个模型中,我们得设定好,我们生成的向量是几维的,窗口取多大。

    解释:

    维数:就是指词向量的维数,一般不能低于32维,毕竟如果语料库大,需要涵盖的信息多

    窗口:就是取某个词的前后n个作为这个词的文本。比如我取n=1,词=‘新垣结衣’,那么前后有的词就是 ‘日本的’ ‘演技’ ‘演员’‘演技’这4个词。

    首先,对于cbow,其目标函数都是似然对数函数:

    建立霍夫曼树

    首先统计词频

    这个霍夫曼树在输出层,后面会用到。我们回到输入层和映射层。

    现在我们一个6个词,组成词库。窗口长度选1,此时词库中每个词依次进入模型。

    输入层

    确定是哪几个词作为输入。比如第一个词‘日本的’,那么进入模型的就是‘日本的’前后1个词,由于‘日本的’前面没有词,所以只有后面的‘新垣结衣’进入模型。同理,如果轮到‘新垣结衣’这个词时,进入模型的就是该词前后的‘日本的’‘演技’,这两个词就是content我们接下来以第二个‘新垣结衣’这个中心词作为例子讲述下面的模型。

    映射层

    将content中的词向量加和

    对于初始化向量,网上有两种说法,一种是one-hot的形式(形如(1,0,0,0),每个词在固定位置显示1,1万个词就是1万维度),另一种是按照预设的维度随机生成。在Mikolov的论文就是以one-hot的形式,在映射层中乘以权重矩阵(这个矩阵也是随机初始化)降维成我们预设的维度。在google开源的word2vec中,看回源码可以发现其实是根据预设的维度随机生成初始化向量。假设我们预设的维度是2,初始化向量为:日本的(1,0),演技(0,1),所以映射层输出为(1,0)+(0,1)=(1,1)

    输出层

    所以其实我们要求的是:P(新垣结衣|content(新垣结衣)),词向量是附带产生的东西(当然啦,现在很多人都是拿来产生词向量),这个P就是说基于这个content的情况下,出现‘新垣结衣’这个词的概率。

    而对于cbow模型,其目标函数是:

    看回霍夫曼树,看到其路径为,每个节点都有ɵ作为结点向量,映射层产生的向量w和结点向量想乘作用于sigmoid函数,就是这个结点拐向这边的概率。

    假设我们定义向左为0,向右为1.即0为负类,1为正类。

    此时,其实每个节点中,路径每次转左或者转右,其实都是进行一种判断,这里用的判断函数是sigmoid函数,形式如下:

    X是映射层的输出函数,

    为节点对应的向量(随机初始化),最后算出来即为拐向这边的概率。

    当然啦,如果拐向另外一边,概率就是

    看回霍夫曼树

    显然,中心词是‘新垣结衣’的话,从顶端往下走的路径是 右-左 对应 0-1.所以每个节点的概率为

    c为‘新垣结衣’

    到了这里,其实我们不知道的是

    ,而X是向量随机化得到的,所以算已知。接下来就是求

    的过程。

    说了那么久,那么多功夫其实都是为了目标函数,这是我们终于和目标函数取得联系了。

    将上面的公式代回进最初列出的目标函数公式

    我们要对上述目标函数用梯度求解,看回目标函数,是代表中心词出现的概率,而参数应该是使这个概率最大,所以我们用梯度上升法求极大值。

    学习完后,我们就要考虑怎么更新词向量了。

    同理X和

    其实在目标函数中位置相同,所以可以互换而得出X的梯度

    所以按照cbow的理论,我们可以这样更新词向量

    但我们发现,窗口中每个词增减的幅度是一样的,那怎么区别呢?答案就是不同的词进模型,窗口的词(附近的词)就会不一样,最后更新得也不一样。

    假设初始时我们都是(0,0),每次都增加(1,1)(当然实际得到的结果肯定复杂很多)

    我们看看结果

    横坐标的词代表当这个进入模型后,各词的词向量变化情况,纵坐标代表每个词的词向量

    .所以词向量就是这样产生的啦o(*≧▽≦)ツ

    ###################我是可爱的分割线\("▔□▔)/\("▔□▔)/\("▔□▔)/#####################

    对于skip-gram做法类似,但有几个区别

    目标函数

    所以此时进入映射层的只有w中心词本身,这里有别于cbow模型。

    计算次数

    cbow中,每个中心词,只用在霍夫曼树找中心词对应的路径就可以了,但在skip-gram模型,遍历每个词w时,需要对w词周围的词都遍历一次霍夫曼树,显然计算量会增大,所以一般数据量小的时候很多人都推荐用skip-gram模型。

    ########################彩蛋ヾ (o ° ω ° O )##############################

    最近在看《legal high》 ,好喜欢新垣结衣跟堺雅人这对组合啊,所以拿gakki做例子了(。-`ω´-)

    附上几张剧照~

    展开全文
  • 向量场_方向向量和梯度

    1.计算梯度

    对于函数

    f ( x , y ) = x 2 s i n ( y ) f(x,y)=x^2sin(y) f(x,y)=x2sin(y)

    如何计算这个函数的梯度

    我们先计算函数的偏导

    得到 ∂ f / ∂ x \partial f/\partial x f/x ∂ f / ∂ y \partial f/\partial y f/y

    在这里插入图片描述
    梯度就是将这两个偏导打包成一个向量

    ∇ f \nabla f f表示(nabla)

    在这里插入图片描述
    在这里插入图片描述
    所以,梯度捕捉了函数的所有偏导,那是不是函数的全导?

    在这里插入图片描述

    有多少个维度的输出,向量里面就有多少个偏微分的算子
    在这里插入图片描述
    2.梯度的几何意义

    对于函数 f ( x , y ) = x 2 + y 2 f(x,y)=x^2+y^2 f(x,y)=x2+y2

    函数的输入是二维

    输出的梯度是一个一维的向量
    在这里插入图片描述
    求出函数的梯度
    在这里插入图片描述
    求出的梯度向量(对于每一个点(x,y),输出的梯度向量是这个向量的两倍)
    在这里插入图片描述
    在函数的任何一点上,沿着梯度的方向,函数增长的最快

    3.方向导数

    理解了偏导就是函数输入空间上一个分量方向的变化,比如x轴上的变化,对函数输出的影响有多大

    在这里插入图片描述
    y方向的微调,对函数输出产生的影响
    在这里插入图片描述
    方向导数是说

    有一个向量 ,假如我给定一个方向,比如 [ − 1 2 ] \begin{bmatrix} -1 \\ 2 \\ \end{bmatrix} [12]

    在这里插入图片描述

    [ − 1 2 ] \begin{bmatrix} -1 \\ 2 \\ \end{bmatrix} [12] 这个方向的微调,对函数的影响有多大

    在这里插入图片描述

    当然这个微调是极限值,这就是方向导数的定义

    在这里插入图片描述

    定义 [ − 1 2 ] \begin{bmatrix} -1 \\ 2 \\ \end{bmatrix} [12]= v ⃗ \vec{v} v

    往这个方向移动微小量,比如移动了h=0.001
    在这里插入图片描述
    方向导数函数

    在这里插入图片描述

    在这里插入图片描述
    公理化的表示就是

    有一个向量W,它的分量是[a,b],

    向量w的任何一个方向f的方向导数表示为

    ∇ v ⃗ f = ∂ f ∂ x + ∂ f ∂ y \nabla_{\vec{v}}f=\frac{\partial f}{\partial x} \quad+\frac{\partial f}{\partial y} \quad v f=xf+yf

    在这里插入图片描述

    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210720155513365.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MTQ3OTY3OA==,size_16,color_FFFFFF,t_
    这其实也是向量的点积

    在这里插入图片描述

    向量 [ a b ] \begin{bmatrix} a \\ b \\ \end{bmatrix} [ab]

    与向量f的梯度 [ ∂ f ∂ x ∂ f ∂ y ] \begin{bmatrix} \frac{\partial f}{\partial x} \quad \\ \frac{\partial f}{\partial y} \quad \\ \end{bmatrix} [xfyf]

    的点积
    在这里插入图片描述

    在这里插入图片描述

    4.梯度,方向导数与斜率

    函数 f ( x , y ) = x 2 y f(x,y)=x^2y f(x,y)=x2y

    我们取输入空间内的向量 v ⃗ = \vec{v}= v = [ 1 1 ] \begin{bmatrix} 1 \\ 1 \\ \end{bmatrix} [11]

    在这里插入图片描述

    我们来讨论函数f在v方向的方向向量

    在这里插入图片描述

    沿着向量v的方向切割函数图像

    在这里插入图片描述

    这样向量v就落在了这个切割平面上
    在这里插入图片描述
    取[-1,-1]评估方向向量

    在这里插入图片描述
    类似的,我们取切割交线上的一点求与这一点的斜率是一样

    在这里插入图片描述
    为了方便后面考虑,把向量v定义成单位长度的向量,让向量v的长度等于1

    在这里插入图片描述
    2 \sqrt{2} 2 /2

    =1.414/2

    =0.7

    sin45=0.7= 2 \sqrt{2} 2 /2/1

    在这里插入图片描述
    这个点的切线就等于函数的斜率,也是向量v方向导数

    在这里插入图片描述
    ∂ f / ∂ v ⃗ \partial f/\partial\vec{v} f/v 就表示在v方向的微调,引起函数的变化

    在这里插入图片描述
    当我们计算方向导数时候

    计算的是f的 梯度向量方向向量点积
    在这里插入图片描述
    f的梯度向量等于:
    在这里插入图片描述
    我们求的是点[-1,-1]的梯度,带入得到:
    在这里插入图片描述
    计算得到 2 + 2 / 2 \sqrt{2}+\sqrt{2}/2 2 +2 /2

    (点积计算: 2 ∗ 2 / 2 + 1 ∗ 2 / 2 2*\sqrt{2}/2+1*\sqrt{2}/2 22 /2+12 /2)
    在这里插入图片描述

    展开全文
  • 6.1.什么是SVM 6.2.支持向量机基本原理与思想 6.2.1.支持向量机 6.2.2.基本原理 6.3.课程中关于SVM介绍 6.支持向量机(SVM) 6.1.什么是SVM 以下转自:https://www.zhihu.com/question/21094489 支持向量机/support ...

    6.支持向量机(SVM)
    6.1.什么是SVM
    6.2.支持向量机基本原理与思想
    6.2.1.支持向量机
    6.2.2.基本原理
    6.3.课程中关于SVM介绍

    6.支持向量机(SVM)

    6.1.什么是SVM

    以下转自:https://www.zhihu.com/question/21094489

    支持向量机/support vector machine (SVM)。

    可以从一个了解什么是SVM,以及要做的事情。

    在很久以前的情人节,大侠要去救他的爱人,但魔鬼和他玩了一个游戏。
    魔鬼在桌子上似乎有规律放了两种颜色的球,说:“你用一根棍分开它们?要求:尽量在放更多球之后,仍然适用。”
    在这里插入图片描述
    于是大侠这样放,干的不错?
    在这里插入图片描述
    然后魔鬼,又在桌上放了更多的球,似乎有一个球站错了阵营。
    在这里插入图片描述
    SVM就是试图把棍放在最佳位置,好让在棍的两边有尽可能大的间隙。
    在这里插入图片描述
    现在即使魔鬼放了更多的球,棍仍然是一个好的分界线。
    在这里插入图片描述

    然后,在SVM 工具箱中有另一个更加重要的 trick。 魔鬼看到大侠已经学会了一个trick,于是魔鬼给了大侠一个新的挑战。
    在这里插入图片描述
    现在,大侠没有棍可以很好帮他分开两种球了,现在怎么办呢?当然像所有武侠片中一样大侠桌子一拍,球飞到空中。然后,凭借大侠的轻功,大侠抓起一张纸,插到了两种球的中间。
    在这里插入图片描述
    现在,从魔鬼的角度看这些球,这些球看起来像是被一条曲线分开了。
    在这里插入图片描述

    再之后,无聊的大人们,把这些球叫做**「data」,把棍子 叫做「classifier」, 最大间隙trick 叫做「optimization」, 拍桌子叫做「kernelling」, 那张纸叫做「hyperplane」**

    6.2.支持向量机基本原理与思想

    6.2.1.支持向量机

    SVM即支持向量机(Support Vector Machine),是有监督学习算法的一种,用于解决数据挖掘或模式 识别领域中数据分类问题。

    6.2.2.基本原理

    在这里插入图片描述

    SVM算法 即寻找一个分类器使得超平面和最近的数据点之间的分类边缘(超平面和最近的数据点之间的 间隔被称为分类边缘)最大,对于SVM算法通常认为分类边缘越大,平面越优,通常定义具有“最大间隔”的决策面就是 SVM 要寻找的最优解。并且最优解对应两侧虚线要穿过的样本点,称为“支持向量”。其处理的基本思路为:把问题转化为一个凸二次规划 问题,可以用运筹学有关思想进行求解:
    (1)目标函数
    在线性SVM算法中,目标函数显然就是那个"分类间隔",使分类间隔最大。
    (2)约束条件
    即决策面,通常需要满足三个条件:
    1)确定决策面使其正确分类。
    2)决策面在间隔区域的中轴线。
    3)如何确定支持向量因此求解SVM问题即转化为求解凸二次规划的最优化问题。

    支持向量机:就是用来分割数据点那个分割面,他的位置是由支持向量确定的(如果支持 向量发生了变化,往往分割面的位置也会随之改变), 因此这个面就是一个支持向量确定的 分类器即支持向量机。

    线性可分数据的二值分类机理:系统随机产生一个超平面并移动它,直到训练集中属于不同类别的样本点正好位于该超平面的两侧。显然,这种机理能够解决线性分类问题,但不能够保证产生的超平面是最优的。支持向量机建立的分类超平面能够在保证分类精度的同时, 使超平面两侧的空白区域最大化,从而实现对线性可分问题的最优分类。
    在这里插入图片描述

    SVM的主要思想是:建立一个最优决策超平面,使得该平面两侧距平面最近的两类样 本之间的距离最大化,从而对分类问题提供良好的泛化力(推广能力)。
    支持向量:则是指训练集中的某些训练点,这些点最靠近分类决策面,是最难分类的数据点。
    SVM: 它是一种有监督(有导师)学习方法,即已知训练点的类别,求训练点和类别之间的对应关系,以便将训练集按照类别分开,或者是预测新的训练点所对应的类别。

    6.3.课程中关于SVM介绍

    Support Vector Machine

    • 决策边界:选出来离雷区最远的(雷区就是边界上的点,要Large Margin)
      在这里插入图片描述

    距离的计算
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    约束条件:在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    最小值在(0.25, 0, 0.25)处取得
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

    • 平面方程为:
      在这里插入图片描述

    SVM求解实例
    支持向量:真正发挥作用的数据点,a值不为0的点。
    在这里插入图片描述
    soft-margin

    • 软间隔:有时候数据中有一些噪音点,如果考虑它们咱们的线就不太好了。

    • 之前的方法要求要把两类点完全分得开,这个要求有点过于严格了,我们来放松一点!

    • 为了解决该问题,引入松弛因子
      在这里插入图片描述
      在这里插入图片描述
      soft-margin

    • 新的目标函数:在这里插入图片描述

    • 当C趋近于很大时:意味着分类严格不能有错误。
      当C趋近于很小时:意味着可以有更大的错误容忍

    • C是我们需要指定的一个参数!
      在这里插入图片描述
      Soft-margin

    • 拉格朗日乘子法:
      在这里插入图片描述
      低维不可分问题

    • 核变换:既然低维的时候不可分,那我给它映射到高维呢?
      在这里插入图片描述
      低维不可分问题

    • 目标:找到一种变换的方法,也就是在这里插入图片描述
      在这里插入图片描述
      Support Vector Machine

    高斯核函数:在这里插入图片描述
    在这里插入图片描述

    展开全文
  • 文 | 橙橙子亲爱的读者,你是否被各种千亿、万亿模型的发布狂轰乱炸,应接不暇,甚至有点产生对大模型的审美疲劳?出于这个目的,今天来分享一篇研究静态词向量的小清新文章。希望大家可以在理性追热...

    文 | 橙橙子

    亲爱的读者,你是否被各种千亿、万亿模型的发布狂轰乱炸,应接不暇,甚至有点产生对大模型的审美疲劳?出于这个目的,今天来分享一篇研究静态词向量的小清新文章。希望大家可以在理性追热的同时,小冶情操。并且能够发现内在共性,有所启示。

    论文标题
    Learning Zero-Shot Multifaceted Visually Grounded Word Embeddings via Multi-Task Training

    论文链接
    https://arxiv.org/pdf/2104.07500.pdf

    词向量为什么要进行视觉增强

    词是自然语言表达语义的基本单元,从静态词向量word2vec[1],GloVe[2]到动态词向量ELMo[3],BERT[4],词向量的演变进化之路就是深度学习在NLP辉煌发展历程的灵感源泉之一。在现有词向量技术的分布式假设中,有一个非常重要的概念就是“文本上下文(Context)”,即在相似的文本上下文中出现的词在语义表示空间中会更相似。这个理念非常成功,但是也有缺陷,它直接导致了词向量的学习过分依赖于词汇的共现关系(co-occurrences),缺乏更广泛的、来源于真实世界的知识背景。一个经典的例子是Good和Bad,与它们共现的上下文词汇经常是相似的,物理含义却截然不同。

    康德曾强调过类比在科学认识活动中的重要作用,尤其是在仿生设计上。模拟和类比人类启发了神经网络、深度学习,看起来也是人工智能否通过图灵测试的关键。我们知道人类在理解词的基本概念的时候,会不由自主的和现实世界建立关联,所谓在阅读和交谈时身临其境、浮想联翩说的都是这种神奇的能力。自然语言处理中也有一种类似的技术叫做Grounding,它甚至有个更高大上的名字叫 Grounded Natural Language Processing (GNLP) ,研究目的是将自然语言和外部物理世界的丰富的感知连接在一起,从而解决各种多模态问题以及反过来加强自然语言理解能力。这种感知可以是视觉信号、声音信号、运动信号等等,所以和计算机视觉、机器人技术、图形学等学科都密不可分。“Ground(ed,ing)”这个词不是很好翻译成中文,我们可能最容易联想到的就是Ground Truth(此处应该有类比)。

    既然人类很擅长将视觉和语言建立关联(Visual-Lauguage Grounding),从而更好的理解语言。模型也可以借助视觉信息得到更好的词向量么?

    多任务视觉Grounding

    对于任意词 , 已经在文本数据上预训练好的词向量是 ,譬如word2vec,GloVe等。我们的目的是学习一个映射矩阵 ,将 Ground 到对应视觉强化的语义空间上,获得的Grounded词向量记作

    为了达成这一目的,论文设计了三个部分:

    语言模型

    设图文描述数据集为 ,其中 对应文本部分, 对应图像部分。我们使用 获得对应的词向量表示 ,我们接着学习一个映射矩阵 ,将这些表示 Ground 到对应的视觉强化的语义空间上。

    获得的Grounded词向量记作 ,其中 。为了达到这个目的,该文本对应的图像视觉信息融合到了语言模型的学习过程中。论文使用了GRU,这里比较巧妙地将视觉信息在线性映射后初始化第一个hidden state ,相当于在语言模型的学习前有一个全局的视觉背景,我们希望GRU的门控机制可以学习到外部的视觉知识如何传播到映射矩阵 中。

    同时,映射矩阵的转置也被用于进行逆向操作,即从 Grounded 空间映射回纯文本空间:

    最终,前向语言模型基于图像和之前的词来逐个生成下一个词。其中, 代表词汇表的大小, 代表batch size大小, 分别表示预测概率和Ground Truth:

    另外,论文增加了新的一个反向的GRU来加强学习能力,实现的时候将词序列逆序进行GRU建模。除两个GRU的参数不同外,其余参数都是共享的。这个设计类似于双向GRU,但是后者用在语言模型中会有会有标签泄漏的问题,所以论文这里使用了两个GRU来代替。

    图文匹配

    尽管基于上下文的词表示方法是获得高质量的词向量的有效途径,但是从目标设计的角度,却不见得能同时给多种视觉-语言任务(visual-language task)都带来增益,譬如图文检索任务需要模型具备两种模态的强相关性建模。所以本文也增加了一个图文匹配判定任务,试图让Grounded Embedding进一步增强图像和文字相关性能力。

    虽然这里模型选的简单也很符合直觉,但是想法其实和多模预训练里使用对比学习对齐视觉和语言表示空间是类似的。这里使用了第三个GRU,同样用视觉表示来初始化 ,这里用最后的hidden state 来建模整体,负样例随机采样,优化二元交叉熵:

    其中, 分别表示预测概率和Ground Truth

    正则化

    以上任务均共享预训练好的文本词向量 ,一个容易想到的问题是,它究竟要不要finetune呢?如果要进行更新,它们可能会极大的偏离原始向量,扰乱预先训练好的语义关系,特别是在有限的训练语料的情况下。如果完全不进行更新,由于这些词向量本身有偏,可能会很难映射到Grouded Embedding上去。为了兼容这两种情况,论文这里对 的学习进行了正则约束:

    其中, 控制了正则约束整体的影响, 控制调整后的词向量和最初的词向量被允许的差异程度。

    最终,模型优化的是多个任务:

    实验

    实验训练图文训练数据选择了MS-COCO,图像的视觉信息使用训练好的Inception-V3加一层tanh非线性层来提取。预训练好的文本词向量 则选择使用了经典的GloVe[2] ( ) 和 fastText[5] ( ),词表大小设置为10k。

    由于已经学到了文本空间向Grounded空间的映射矩阵 ,对于一些不在image-text训练语料中的未登录词(Oov),也可以采取这样的映射获得对应的Grounded空间,从而获得zero-shot的能力,也是论文的卖点之一。这里设原始文本词向量为GloVe和fastText,视觉增强后的Grounded 词向量为V_GloVe和V_fastText。

    如何评估词向量的好坏至今也是一个开放性问题,论文选择了intrinsic(内在评价)和 extrinsic(外在评价)两种评估方法。内在评价度量的是词向量本身的质量,忽略了它的下游任务表现。外在评价度量的是词向量在句子粒度的下游任务上的表现。

    内在评估

    内在评估在多种词汇相似度评估基准集合(Benchmark)上进行了测试。基线对比上,作者选择了纯文本训练的词向量和一些其他的Grounded 词向量模型。可以发现V_GloVe和V_fastText在各个benchmark上相对于纯文本预训练词向量GloVe和fastText均获得了稳定的效果提升,Spearman系数平均+6.5和+1.6。另外,实验也揭示了一些有趣的现象,SimLex999主要关注词向量之间的语义相似度,WSim353主要关注于相关性。V_Word Embedding看起来在语义相似度度量上提升的更多。

    细粒度内在评估

    为了进一步研究Grounded Embedding的贡献,论文在SimLex999的多个类别数据下进行了实验,分为形容词、名词、动词,以及词的具像程度。譬如Apple(苹果)这个词是一个实体词,非常具像。而Pressure(压力)这个词比较抽象,Conc-qx的分位数越高,代表词越具体。论文这里对比了Google hinton组在早年发的一篇Grounded 词向量的模型PictureBook[6]的结果,这个工作利用了大量图文搜索引擎日志数据来训练Grounded词向量。V_GloVe的表现并不落下风。我们可以看到之前的方法对于具体词的Grounding能力是做的比较好的,这也符合直觉,因为图文训练语料大多数都是在描述一个客观的实体。而V_Glove在抽象词的表现上要好于PictureBook,很大程度上归功于Grounding映射矩阵在zero-shot上的设计。

    外在评估

    外在评估是在数年的SentEval数据集上进行测试,这种评估的优势在于不需要训练数据,而是直接把词向量进行累加平均后得到句子表示,最大程度的评估词向量空间的内在结构,并且能够发现其中存在的不规律性。我们看到V_Word Embedding大幅提升了效果,Spearman系数平均+10.0。

    进一步分析

    论文接着展示了多组词向量的最近邻结果。进一步表明Grounded 词向量可以优化纯文本向量空间,从而对齐到真实物理世界的概念上。譬如我们看bird(鸟)这个词,GloVe展示的最近邻词是turtle(乌龟)、nest(鸟巢)和squirrel(松鼠)。而V_Glove的最近邻是sparrow(麻雀)、Birds(鸟),avian(鸟类)。另一个例子是抽象程度更高的词happy(高兴),我们可以看到由于纯文本预训练词向量存在强的词共现关系的假设,会得到一些无价值的词汇,譬如everyone(所有人),always(总是)。而V_Glove得到的词更符合人类的认知:pleased(高兴),delighted(高兴)。

    结论

    论文提出了一种使用视觉Grounding来增强词向量表示能力的方法。麻雀虽小,五脏俱全。论文在模型设计中使用了视觉-文本联合上下文取代纯文本上下文来进行语言模型训练,同时具备一定的zero-shot能力,其背后阐释的思想和目前火热的多模态大模型是类似的,希望对大家有所启发。

    萌屋作者:橙橙子

    拿过Kaggle金,水过ACM银,发过顶会Paper,捧得过多个竞赛冠军。梦想是和欣欣子存钱开店,沉迷于美食追剧和炼丹,游走于前端后端与算法,竟还有一颗想做PM的心!

    作品推荐

    1. 惊呆!不用一张图片,却训出个图像识别SOTA?

    寻求报道、约稿、文案投放:
    添加微信xixiaoyao-1,备注“商务合作”

    后台回复关键词【入群

    加入卖萌屋NLP/IR/Rec与求职讨论群

    后台回复关键词【顶会

    获取ACL、CIKM等各大顶会论文集!

     

    [1] Efficient Estimation of Word Representations in Vector Space https://arxiv.org/abs/1301.3781

    [2] GloVe: Global Vectors for Word Representation https://www.aclweb.org/anthology/D14-1162/

    [3] Deep contextualized word representations https://arxiv.org/abs/1802.05365

    [4] BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding https://arxiv.org/abs/1810.04805

    [5] Enriching Word Vectors with Subword Information https://arxiv.org/abs/1607.04606

    [6] Illustrative Language Understanding:Large-Scale Visual Grounding with Image Search https://www.cs.toronto.edu/~hinton/absps/picturebook.pdf

    展开全文
  • 向量,英文名叫Word Embedding,按照字面意思,应该是词嵌入。说到词向量,不少读者应该会立马想到Google出品的Word2Vec,大牌效应就是不一样。另外,用Keras之类的框架还有一个Embedding层,也说是将词ID映射为...
  • 简单证明:假设非常理想的情况下,词向量初始化为0,词“test”在语料A中出现了1次,在语料B中出现了10次,并且每次出现的上下文完全相同。那么我们得到在A中进行一步训练得到的梯度是 ,相应地在B中累积十步训练...
  • 向量化召回

    2021-03-29 09:22:21
    前言 常读我的文章的同学会注意到,我一直强调、推崇,不要孤立地学习算法,而是要梳理算法的脉络+框架... 每个ID特征经过Embedding变成一个向量,以扩展其内涵。 属于一个Field的各Feature Embedding通过Poolin
  • 本发明涉及一种中文字词向量和方面词向量联合嵌入CNN-LSTM情感分析方法。背景技术:近年来,越来越多的用户习惯在网络上发自己对某一事物的看法与评论。如何快速,准确地从互联网海量评论信息中分析所包含的用户情感...
  • end 这样改出来就是向量了答:如果你使用my(c,d),那么系统默认只返回第一个值,也就是a。 如果你需要返回a,b,那么必须指明是[a,b]=my(c,d) ---------------- 你下面那个图,c没有定义,因为你第...
  • 动态词向量算法—ELMo

    2020-12-19 17:10:05
    传统的词向量模型,例如 Word2Vec 和 Glove 学习得到的词向量是固定不变的,即一个单词只有一种词向量,显然不适合用于多义词。而 ELMo 算法使用了深度双向语言模型 (biLM),只训练语言模型,而单词的词向量是在输入...
  • matlab中如何定义向量

    千次阅读 2021-04-18 05:22:17
    Matlab中生成向量的三种方法在Matlab中,如何才能生成向量,生成向量的方法又有多少种?相信这是每一个初学者都想知道的问题。这里小编将向大家详细介绍Matlab中生成向量的三种方法。方法一:直接输入法1这是最简单...
  • 在MATLAB中向量化循环

    2021-05-08 12:15:47
    我有一些代码需要向量化,因为这会导致程序中出现很大的瓶颈。它是优化例程的一部分,具有许多可能的配置,包括短期平均值(STA),长期平均值(LTA)和灵敏度(OnSense)。时间是矢量格式,FL2onSS是主数据(Nx1的两倍),...
  • 1.向量什么?从初到末的箭头(物理角度,表示一种运动过程)有序的数字列表(计算机/数学角度)[1,2]加和数乘运算有意义的anything(抽象意义)12两种理解之间的关系就是线性代数的奥秘,即几何角度与数值角度。一个向量...
  • 一、什么是SVM(支持向量机)? 支持向量机为一个二分类模型,它的基本模型定义为特征空间上的间隔最大的线性分类器。而它的学习策略为最大化分类间隔,最终可转化为凸二次规划问题求解。 1.1、SVM(支持向量机)与...
  • SIF 的计算分为两步: 对句子中的每个词向量,乘以一个权重 ,其中 a 是一个常数(常取0.0001),p(w) 为全局语料中该词的词频,对于出现频率越高的词,其权重越小。 计算句向量矩阵的第一个主成分 u,让每个句向量...
  • R语言入门:向量的运算

    千次阅读 2021-01-17 11:34:55
    向量之间的加减乘除运算:> x >x[1] 1 2 3 4 5 6 7 8 9 10> x=x+1>x[1] 2 3 4 5 6 7 8 9 10 11> x = 1:10>x[1] 1 2 3 4 5 6 7 8 9 10> y = seq(1,100, length.out = 10)>y[1]...
  • 一文详细解释“核技巧”以及支持向量机从支持向量机开始说起什么是支持向量机线性可分支持向量机间隔最大化(支持向量机的本质)引入对偶问题求解拉格朗日对偶性对偶问题非线性支持向量机与核函数核函数的定义核技巧...
  • 前言 word2vec是如何得到词向量的?这个问题比较大。...得到你想要的processed corpus之后,将他们的one-hot向量作为word2vec的输入,通过word2vec训练低维词向量(word embedding)就ok了。不得不说word2ve
  • 首先矩阵求导(向量是其中一个特例而已)的东西很多都会有让人产生错觉的,如果要想要好好深入研究就要从矩阵代数(matrix alegbra)下手, 比如不过作为应用来讲的话,其实你需要只是一个cookbook,比如说说个人的想法1...
  • MATLAB-向量相关计算

    2021-07-12 20:43:28
    MATLAB 向量类型: 行向量向量 MATLAB 行向量: 创建行向量括在方括号中的元素的集合,用空格或逗号分隔的元素。 r = [7 8 9 10 11] 执行上述语句,返回下述结果: r = 7 8 9 10 MATLAB 列...
  • java aes 初始化向量

    2021-03-16 22:33:49
    java aes 初始化向量[2021-01-30 00:48:25]简介:php初始化方法:使用构造法construct实现,代码为【public function __construct($count,$money){$this->count = $count;$this->money = $money;}】。php初始化...
  • 但是并不知道特征值和特征向量什么含义,能做什么,也就是我为什么要求它们。 这几天抽空查了很多的资料,在这里记录一下学习心得吧! 特征值 、特征向量、方阵的关系 我们都知道,它们三者满足如下的关系 A∗X=λ...
  • 1.向量介绍计算机程序主要运行在内存中,而内存在逻辑上可以被看做是连续的地址。为了充分利用这一特性,在主流的编程语言中都存在一种底层的被称为数组(Array)的数据结构与之对应。在使用数组时需要事先声明固定的...
  • 支持向量

    2021-05-19 00:08:04
    线性可分支持向量机 给定线性可分的训练数据集,通过间隔最大化或等价地求解相应的凸二次规划问题学习得到的分离超平面为 w∗z+b∗=0w^*z+b^*=0w∗z+b∗=0 以及相应的分类决策函数 f(x)=w∗z+b∗f(x)=w^*z+b^*f(x)=w...
  • 这可以通过向量的叉乘来完成:我们取另一个向量v(显然,这个向量是不能和a共线的任何非零向量),让它和a决定一个平面x,然后让v叉乘a得到一个垂直于x的向量b,因为b垂直于x,而a在平面x上,因此b一定垂直于a,然后...
  • 答:训练两组词向量是为了计算梯度的时候求导更方便。 • 如果只用一组词向量 ,那么Softmax计算的概率公式里分母会出现一项平方项Vc*Vc ,那么再对Vc 求导就会比较麻烦。相反如果用两套词向量,求导结果就会很干净...
  • 线性代数学习之特征值与特征向量

    千次阅读 2021-10-22 17:02:44
    什么是特征值和特征向量: 在上一次线性代数学习之行列式 - cexo - 博客园学习了行列式相关的一些概念,其中也多次提到学好行列式是为了学习“特征值和特征向量”的基础,所以此次就正式进入这块内容的学习,也是...
  • 以前读书的那阵,对这几个概念总是分的不太清,比如为什么常数加了一个方向就是向量,行列式的竖线为什么变成了大括号就成了矩阵,为什么矩阵的一些计算就不能用到行列式里,为什么老师说向量的集合又是矩阵····...
  • R语言 向量知识点总结 公号:统计与数据挖掘 一、写在前面 本文,是对R语言的向量的总结,适合新手入门,老手巩固总结,顺便强调一下R语言中向量的重要性,向量被誉为R语言中的战斗机。希望你阅读完本文后,能对向量...
  • 向量在法向量所垂直的平面上的投影过程

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 160,073
精华内容 64,029
关键字:

向量是什么时候产生的