Deep Learning(深度学习)之词向量的内部任务评价和外部任务评价方法

Posted 等待破茧

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Deep Learning(深度学习)之词向量的内部任务评价和外部任务评价方法相关的知识,希望对你有一定的参考价值。

关键词:

       内部任务评价(Intrinsic Evaluation)和 外部任务评价(extrinsic evaluations)。超参数影响下的类比评价任务。人类决策和词向量距离的相关性。结合上下文处理歧义。窗口分类。

       这个课堂笔记我们将会对词向量(也就是词嵌入)的内部任务评价和外部任务评价方法进行讨论。主要的内容是单词类比(word analogies)技术,我们会把它当做内部任务评价的技术并展示其相关示例,它会在词向量的调谐(tune)中发挥重要作用。我们还会讨论如何训练模型的权重/参数,并关注用来进行外部任务评价的词向量。最后,我们会简单地提到人工神经网络,它在自然语言处理中表现极好。

1、词向量的评价

       在前面的Lecture1中,我们讨论了Word2Vec和GloVe等词嵌入的方法。它们用来训练和发现词汇在语义空间中的向量表示。今天我们来探讨如何对词向量的效果进行评价。

1.1 内部任务评价

      内部任务评价是对在特定子任务(如完成单词类比)中生成的词向量进行的评价,这些词向量可以由词嵌入技术(如Word2Vec和GloVe)生成。这些子任务往往很简单,计算速度很快,可以帮助我们理解生成这些词向量的系统。一个内部任务评价往往返回一个数值,来表示这些词向量在子任务上的表现。


 
图1:左侧子系统(红)训练消耗较大,通过替换为一个简单的内部任务评价子系统(绿)来优化。 

内部任务评价的特点如下

  • 一般是在一个特定的子任务中进行评测
  • 计算很快
  • 有助于理解相关的系统
  • 在实际的NLP任务中表现好坏,可能需要外部关联实际应用

咱们考虑一个例子,比如我们的目标是要建立一个以词向量为输入,能够回答问题的系统。一种方法是训练一个机器学习的模型,主要步骤如下:

  1. 输入词语
  2. 将词语转换成词向量
  3. 将词向量作为一个复杂的机器学习系统的输入
  4. 把系统的输出映射到自然语言词汇
  5. 生成词语组成答案

显然,为了训练这样一个问答系统,我们需要为下游机器学习系统(比如深度神经网络)建立一个最优的词向量表示。这在实际操作中,就需要我们调节Word2Vec 子系统中的许多超参数(如向量维度)。 尽管最理想的方法是每次调整参数后重新训练整个系统,但这在工程上是不现实的。因为这里的机器学习系统(第3步)一般都是一个含有几百万参数的深度神经网络,需要极长时间去训练。等得花儿都谢了。 所以,我们希望有一个简单的内部任务评价方法来评价词向量生成系统的好坏。显然,其中一个要求是内部任务评价结果和整个系统的最终精度是正相关的。

1.2 外部任务评价

       外部任务评价是对在实际任务中产生的词向量进行的评价。这些任务通常是很复杂的,且它们的计算过程比较缓慢。在我们前面使用的例子中,允许基于问题对答案进行评估的系统是一种外部任务评价系统。一般来讲, 优化外部评价系统的时候我们无从知晓是哪个子系统除了问题,所以需要进一步进行内部任务评价。

外部任务评价的特点如下

  • 在一个实际任务中进行评测
  • 需要花很长的时间来计算精度
  • 不太清楚是否是某个子系统或者其他子系统,又或是几个子系统互相作用引起的问题
  • 如果替换原有的子系统后获得精度提升,则说明替换很可能是有效的

1.3内部任务评价示例: 词向量类比

  一个比较流行的内部任务评价是词向量类比的。 在词向量类比中,我们先输入一组不完整的类比:

  a:b::c:?

  内部任务评价系统找出最大化余弦相似度的词向量

  我们可以直观地解释这个衡量指标。理想情况下,我们想得到xb?xa=xd?xc(例如,王后–国王 = 女演员 – 男演员)。于是xb?xa+xc=xd, 所以我们只需要找出一个与xb?xa+xc的标准化内积(比如余弦相似度)取最大值的词向量就可以了 。

使用内部任务评价的时候需要比较谨慎,要考虑到训练文集的各个方面。例如,如下形式的类比 


城市1 : 城市 1所属州 : : 城市2 : 城市2所属州 
 
表1:语义词向量类比(内部评价)会因为同名城市而产生问题 

      美国有许多同名村镇,所以很多州都符合正确答案。比如在美国至少有十个地方叫Phonix,所以Arizona不一定是唯一的正确答案。 再看以下类比形式: 


首都城市1 : 国家1 : : 首都城市2 : 国家2 
 
表2: 这些是语义词向量类比(内部任务评价),此类比存在的问题在于国家在不同时期会有不同的首都 

      上面这个例子中的城市只是近期的国家首都。比如,1997年之前Kazakhstan的首都是Almaty。如果我们用来训练的文集比较旧,就很容易出现问题。 
       之前的两个例子说明了如何使用词向量进行语义测试。我们还可以使用词向量类比进行语法测试。下面的内部任务评价能够评估词向量获取形容词最高级的能力。


 
表3:语法词向量类比(内部评价)在形容词最高级上的测试 

         类似的,下面的内部任务评价能够测试词向量捕捉过去式的能力

 

表 4: 这些是语法词向量类比(内部任务评价),此类比可评估获取过去式的能力 
1.4 内部任务评价调节示例: 类比评测

       我们在内部任务评价任务中调整(tuning)一个词嵌入技术时,可能会考虑一些参数:

• 词向量的维度 
• 资料库的大小 
• 资料源/类型 
• 上下文窗口的大小 
• 上下文的对称性

       大家还能想到其他在这个阶段可以调整的超参数吗? 
       我们现在探索一些词向量生成技术(如Word2Vec和GloVe)中可以用内部任务评价调节的参数。我们先看一下在超参数相同的情况下,词向量生成方法在类比评测中的表现。


 
表5:比较不同参数和数据集情况下各种模型的性能 

我们从上表中主要可以看到3点:

  • 精度和使用的模型高度相关: 
    这一点并不意外,因为这些生成词向量的方法所依据的特性是完全不同的(如同时出现的次数,奇异向量等。)
  • 文集量越大,精度越高: 
    这是因为,例子越多,生成的系统学习到的经验就更丰富。比如在完成词汇类比的例子中,系统如果之前没有接触测试词,就可能会生成错误的结果。
  • 如果维度特别低或特别高,精度就会比较低 
    低维度词向量无法捕捉文集中不同词语的不同意义。这可以视为我们模型复杂度过低而导致的高偏差。比如 “king”, “queen”, “man”, “woman” 这几个词,我们需要至少2个维度像”gender” 如 “leadership” 来把它们编译成 2-字节 词向量。 过低的维度将无法捕捉四个词之间的语义差别,而过高的维度将捕捉到一些对泛化能力没有用的噪音– 即高方差的问题。


tip3: GloVe 一般在使用中间词的两侧大小为8的窗口时表现较好 
 
图2:图中能看出训练时间对训练精度的帮助 


 
图3:我们可以看到随着文集增大精度的改善 


 

图4:我们可以看到GloVe的精度随着向量维度及上下文窗口大小的改变而改变 
1.5 内在评价的例子:相关性评价

       另外一个评测词向量质量的简单方法是人为对两个词的相似度在一个固定区间内打分(比如说 0-10),再跟对应向量的余弦相适度进行对比。这个方法曾在多个包含人为评价的数据集上实施过。


 

表6:这里我们看到不同生成方法产生的词向量的相似度,与人为评价的相关性。 
1.6 延伸阅读:处理多义性

       可能有些同学也想到了,有时候我们会遇到一些特殊的情况:在我们生活中,有时候同一个单词在它的不同上下文和语境下,有着不同的含义/用法,这时候我们希望我们希望用不同的词向量来捕捉到这个单词的不同用法。举个例子说,“跑(run)”既是一个名词又是一个动词,在不同语境中,它可能是不同的词性。Huang等人(2012)在论文《Improving Word Representations Via Global Context And Multiple Word Prototypes》中描述了如何在自然语言处理中解决上面提到的问题。他们提出的方法本质在于以下几点:

  1. 针对目标单词出现的所有位置,收集固定大小的语境窗口(例如,此单词之前的5个单词至此单词之后的5个单词)
  2. 用上下文中词向量的加权平均(用idf-weighting)来表示每段上下文(当前语境) 。
  3. 应用球面k均值算法对第二步中的结果进行聚类。
  4. 最后,每一次的单词出现都被重新标签成它所属的类,并且针对这个类,来训练相对应的词向量

2 对外在性任务进行训练

       前面我们着重讨论了内在性任务,并且强调了它们在生成优质词嵌入技术(词向量)中的重要性。当然,最终目的是利用词向量解决外部的实际问题。 这里我们讨论处理外部任务的一般方法。

2.1 问题描述

       大多数的NLP外部任务都可以被描述成分类任务。比如说,我们可以对句子做情感分类,判断其指代的情况是褒义,贬义还是中性的。 类似的,在命名实体识别(NER)中,我们需要找出上下文中的中心词所属的类别。例如输入为“Jim bought 300 shares of Acme Corp. in 2006”, 我们期望分类完成后的输出是, “”[Jim]人名bought 300 shares of [Acme Corp.]机构名in [2006]时间.”

 
图5:针对词向量的分类问题,上图是一个二维词向量分类问题,用简单的线性分类器,比如逻辑回归和支持向量机完成分类 

对于这样的问题,我们一般有以下形式的训练集:

     其中 x(i) 是用某种方法生成的d纬词向量。 y(i)  是一个C维 one-hot 编码向量(译者注:one-hot,“独热”,意为只有一个元素为1,其余元素均为0),用来表示我们最终要预测的标签(感情色彩, 其他词, 专名, 买/卖决策, 等)。在一般的机器学习任务中, 我们通常固定输入数据和目标标签,然后用最优化技术(诸如梯度下降法,L-BFGS法,牛顿法等)训练权重。在自然语言处理中,我们引入了重训练的想法,也就是针对外在性任务时,重新训练输入的词向量。接下来我们讨论何时需要进行这样的操作,以及为什么考虑这么做。

以上是关于Deep Learning(深度学习)之词向量的内部任务评价和外部任务评价方法的主要内容,如果未能解决你的问题,请参考以下文章

Deep Learning —— Andrew Ng

446Deep Learning

Deep Learning(深度学习)之Deep Learning学习资源

Spark MLlib Deep Learning Deep Belief Network (深度学习-深度信念网络)2.3

机器学习(Machine Learning)&深度学习(Deep Learning)资料

Deep Learning(深度学习)之Deep Learning的基本思想