词向量的评判标准可以分为内部标准(Intrinsic Criteria或Intrinsic Evaluation)和外部标准(External Criteria或External Evaluation)。只有彻底地了解了这些词向量的标准,我们才知道如何在实际的场景中选择适合的词向量,什么样的词向量才更适合模型以及业务效果。
内部评估就是不考虑下游任务,仅从词向量本身能否准确地表示语义来评判词向量的好坏,即主要衡量单词之间的句法和语义关系。内部评估可以进一步分为:绝对内在评估(Absolute Intrinsic Evaluation)和比较内在评估(Comparative Intrinsic Evaluation)。
1.绝对内在评估
绝对内在评估直接衡量给定两个单词之间的句法和语义关系。它共有4种类型的评估。
1)相关性。对于两个单词,它们之间的余弦相似度应该和人类主观评价的得分有较高的相关性,即评估词向量模型在两个词之间的语义相关性,如学生与作业,中国与北京等。
具体方法由监督模式实现,首先需要一份标记文件,一般可以由人工标注:
上述文件代表了词语之间的语义相关性,我们利用标注文件与训练出来的词向量相似度进行比较,如词向量之间的余弦距离等,确定损失函数,便可以得到一个评价指标。但这种方法首先需要人工标注,且标注的准确性对评估指标影响非常大。
2)词向量类比。假设给了一对单词( a , b )和一个单词 c ,任务是找到一个单词 d ,使得 c 与 d 之间的关系相似于 a 与 b 之间的关系,例如,Queen-king+man=women。在给定词嵌入的前提下,一般是通过在词向量空间寻找离( b-a + c )形式最近的词向量来找到 d ,如图1-8所示。
图1-8 词向量类比案例
3)分类。分类是指把词聚类成不同的堆,查看聚类是否准确。
4)选择偏好。选择偏好是指判断某名词是更倾向做某个动词的主语还是宾语,例如一般顺序是he runs而不是runs he。
2.比较内在评估
给出一个查询词,将词嵌入模型产生的结果呈现给用户,让用户选出最相关的,然后统计结果。我们可以采用用户直接反馈的形式进行评估,这样可以避免需要定义指标的问题。
此外,我们可以制作更符合词嵌入评估任务的查询清单,比如考虑词频、词性、类别、是否是抽象词四个方面,从这四个方面进行评估。
3.内在评估的特点
内在评估具有以下几个特点:在特定的子任务上对词向量进行评估(例如评估词向量时可以正确预测词性标签,或者评估同义词是否具有相似的向量结构);评估速度快,易于计算;能够帮助理解这个系统;除非与实际任务建立了关联,否则不清楚是否真正有用。
外在评估是指评估单词嵌入模型对特定任务的贡献。外在评估大致分成两种方法,一种是直接用于下游任务,通过对下游任务的评价来评判词向量的好坏;另一种是对特征进行可视化。
1.应用到下游任务评估方法
这种评估方法是通过词向量在下游任务表现的优劣来评价词向量的好坏。将词向量作为输入,以此衡量下游任务性能指标的变化。使用此类评估方式存在一个隐含的假设,即单词嵌入质量是有固定排名的。也就是说,嵌入模型无论在什么任务里的表现排名应该基本一致。因此,更高质量的嵌入必定会改善任何下游任务的结果。常见的下游任务如下:
1)命名实体识别,判断一个词是不是某种实体的名字,比如人名、组织名、地点名、歌名等;
2)词义消歧,判断近义词、多义词;
3)词性标注;
4)句法分析;
5)文本分类等。
2.可视化评估方法
词向量的另一种评估方法是借助可视化来评估词向量,例如借助t-SNE等,一般主要是通过图形等方式将抽象的词向量具体化。
(1)什么是t-SNE?
t-SNE的主要用途是可视化和探索高维数据。它由Laurens van der Maatens和Geoffrey Hinton在 Visualizing Data Using t-SNE [1] 中提出。t-SNE的主要目标是将多维数据集转换为低维数据集。相比其他降维算法,t-SNE的数据可视化效果最好。如果我们将t-SNE应用于 n 维数据,它将智能地将 n 维数据映射到3维甚至2维数据,并且原始数据的相对相似性非常好。与PCA一样,t-SNE不是线性降维技术,它遵循非线性,这是它可以捕获高维数据的复杂流形结构的主要原因。
(2)t-SNE的工作原理
首先,t-SNE将通过选择一个随机数据点并计算该数据点与其他数据点的欧氏距离来创建概率分布。从所选数据点附近的数据点开始计算将获得更多的相似度值(通过计算该点与其他数据点的欧氏距离获得),而从距离所选数据点较远的数据点开始计算将获得较少的相似度值。根据相似度值,它将为每个数据点创建相似度矩阵。因为很难将超过3维的数据集可视化,所以为了举例,我们假设上面的图是多维数据的可视化表示。
由图1-9可知,我们可以说 X 1的邻域(与每个点最接近的点的集合) N ( X 1)={ X 2, X 3, X 4, X 5, X 6},这意味着 X 2、 X 3、 X 4、 X 5和 X 6与 X 1的相邻。它将在相似度矩阵中获得较大的值。
图1-9 t-SNE案例
另一方面, X 20远离 X 1,这样它将在相似度矩阵中获得较小的值。
其次,它将根据正态分布将计算出的相似距离转换为联合概率。通过以上计算,t-SNE将所有数据点随机排列在所需的较低维度上,如图1-10所示。
图1-10 低维度可视化效果
t-SNE将再次对高维数据点和随机排列的低维数据点进行相同的计算。但是在这一步中,它根据 t 分布分配概率。这就是t-SNE的名字来源,使用 t 分布的目的是减少拥挤的问题。如图1-11所示, t 分布看起来很像正态分布,但尾部通常更胖,这意味着数据的可变性更高。注意,对于高维数据,该算法根据正态分布分配概率。
图1-11 t 分布
对于较低维的数据点,t-SNE将创建另一个相似度矩阵,之后使用t-SNE算法对两个相似度矩阵进行比较,并通过一些复杂的数学运算,如KL散度,扩大两个数据点的差异。KL散度(度量一个概率分布与另一个概率分布如何不同的度量指标)通过将两个分布之间相对于数据点位置的值最小化,帮助t-SNE保留数据的局部结构。最后,该算法能够得到与原始高维数据相似度较高的低维数据点。t-SNE是一种不确定性算法,导致每次运行结果都会略有变化,不会保留群集之间的距离。虽然不能在每次运行中保留方差,但可以使用超参数来保留每个类之间的距离。该算法涉及许多计算,因此,时间复杂度和空间复杂度都非常高,但是它可以巧妙地处理异常值。
注意,在现实任务中进行评估,可能需要很长时间才能得到评估结果;有时无法确定具体是什么原因导致任务表现出现差异,因此难以合理地对词向量进行评估,需要长时间通过大量实践不断地总结评估的经验。