1.GloVe
根据第一讲的内容,我们已经了解了查找词嵌入的两种主要方法。第一种是基于计数的,依赖于矩阵因子化(如LSA, HAL)。虽然这些方法有效地利用了全局统计信息,但它们主要用于捕获单词相似性,而在单词类比、确定次优向量空间结构等任务中表现不佳。另一种方法是基于浅窗口的(例如,skipg -gram和CBOW mod- els),它通过在本地上下文窗口进行预测来学习单词嵌入。这些模型展示了捕获单词相似性以外的复杂语言模式的能力,但未能利用全局共现统计信息。
相比之下,GloVe由一个加权最小二乘模型组成,该模型训练全局词与词的共现计数,从而有效地利用统计数据。该模型生成了一个具有意义的子结构的词向量空间。该算法在单词类比任务上的性能达到了目前最高的水平,并在多个单词相似性任务上超过了现有的其他方法。
GloVe公式推导参考:https://blog.csdn.net/coderTC/article/details/73864097
2.Evaluation
到目前为止,我们已经讨论了在语义空间中训练和发现自然语言单词的潜在向量表示的Word2Vec和GloVe方法。在这里我们将讨论如何定量地评估这些技术生成的字向量的质量。
2.1内部评价
词向量的内在评价是指通过嵌入技术(如Word2Vec或GloVe)对特定中间子任务(如类比合成)生成的一组词向量的评价。这些子任务通常计算简单且快速,因此允许我们帮助理解用于生成单词vector的系统。一个内在的评价通常应该返回一个数字,这个数字表示那些字向量在评价子任务上的性能。
让我们考虑一个示例,其中我们的最终目标是创建一个使用单词向量作为输入的问题回答系统作为输入。这样做的一个方法是训练一个机器学习系统:
1. 将单词作为输入;2. 将它们转换为字向量;3.使用字向量作为一个复杂的机器学习系统的输入;4. 通过该系统将输出词向量映射回自然语言词;5. 以语言作为答案
当然,在回答系统中,我们需要创建最佳的字向量表示语句,因为它们用于下游子系统(如深度神经网络)。为了在实践中做到这一点,我们需要调优Word2Vec子系统中的许多超参数(例如字向量表示的维数)。虽然理想化的方法是在Word2Vec子系统的任何参数改变之后对整个系统进行再训练,但是从工程的角度来看,这是不切实际的,因为步骤3中的机器学习系统是典型的具有数百万参数的深度神经网络,需要很长时间来训练。在这种情况下,我们想要提出一个简单的内在评价技术,它可以提供一个字到字向量子系统的“好”度量。显然,要求是内在评价与最终的任务绩效呈正相关。
2.2外部评价
单词向量的外部评价是通过嵌入技术生成的一组单词向量对当前实际任务的评价。这些任务通常很复杂,而且计算速度很慢。以我们上面的例子为例,这个允许从问题中评估答案的系统就是外部评价系统。通常,对一个表现不佳的外部评估系统进行优化不允许我们确定哪个子系统有问题,这激发了对内部评估的需求。
2.3 总结
内在的评价:
•对特定的中间任务进行评估
•计算速度比较快
•帮助理解子系统
•需要与实际任务正相关来确定有用性
外在的评价:
•是对真实任务的评估
•计算性能可能很慢
•不清楚子系统是问题所在,还是其他子系统,还是内部的相互作用
•如果替换子系统可以提高性能,那么更改可能是好的
3.Training
我们通过在一个更简单的内部任务上使用外部任务的词向量进行初始化来达到优化效果的。在许多情况下,这些预先训练好的词向量是外部任务的最佳词向量的表示,它们在处理外部任务时表现得很好。然而,也有可能对预先训练好的词向量进行进一步训练(即再训练),以使其表现得更好。
然而,重新训练单词向量是有风险的。如果我们使用外部任务对单词向量进行再训练,我们需要确保训练集足够大,能够覆盖词汇表中的大多数单词。这是因为Word2Vec或GloVe会产生与语义相关的单词表示,这些单词会位于单词空间的同一部分。当我们在一小组词汇上重新训练这些单词时,这些单词在单词空间中发生了移位,结果,在最后一项任务中的表现实际上可能会下降。因此,如果训练数据集很小,就不应该对词向量进行再训练。如果训练集很大,对预加载对词向量进行再训练可以提高模型的效果。
参考:http://web.stanford.edu/class/cs224n/readings/cs224n-2019-notes02-wordvecs2.pdf