摘 要:词向量作为自然语言处理的基础技术,随着大数据和深度神经网络的发展,其算法也随之得到了更好的发展,尤其是近些年来各类新式算法和思想层出不穷,使得自然语言处理的准确度得到极大的提升。在阐述各个词向量算法的同时,穿插例子和图表,使大众更加清晰透彻理解算法的过程和优缺点。通过对词向量算法的发展进行整体的回顾,加深对词向量的理解,在解决问题的前提下为正确选用哪种词向量而做出更好的判断。
关键词:词向量;独热编码;向量空间模型;静态词向量;动态词向量
中图分类号:TP391 文献标识码:A 文章编号:2096-4706(2021)05-0036-04
Research on the Development Stages of Word Embedding Algorithm
LI Mengning
(School of Statistics,University of International Business and Economics,Beijing 100029,China)
Abstract:As a fundamental technology of natural language processing(NLP),word embeddings algorithm has gained better development with the development of big data and deep neural networks. Especially in recent years,all kinds of new algorithms and ideas emerge in an endless stream,which makes the accuracy of NLP get a huge improvement. It introduces samples and charts while elaborating each word embedding algorithm,and makes the public understand the process and advantages and disadvantages of the algorithm more clearly. Through the overall review of the development of word embedding algorithm,we can deepen the understanding of word embedding,and make a better judgment for selecting which word embedding correctly under the premise of solving problems.
Keywords:word embedding;one-hot encoding;vector space model;static word embedding;dynamic word embedding
0 引 言
词向量(Word embedding),又称词嵌入,通俗的来讲就是将一个词语(Word)转换成向量(Vector),用特定向量来代表特定词语。这么做的目的就是将自然语言中的词汇进行量化,把自然语言处理(NLP)中的问题抽象转换成数学问题,以便于后续的机器学习使用。所以词向量算法的好坏直接影响后续自然语言处理结果的精确度。
词向量的发展是一个从简单到复杂的过程。算法从数理计算到机器学习,语义表示也越来越精确合理。从独热编码到VSM解决了维度灾难的问题,从VSM到Word2Vec解决了语义问题,从Word2Vec到Bert解决了一词多义的问题。历经这一系列的发展,词向量在语义理解、翻译、情感分析、关键词提取、生成摘要等各个方面都发挥显著的作用。
1 One-Hot编码
One-Hot编码,又称独热编码。学术上的解释是用N位状态寄存器编码N个状态,每个状态都有独立的寄存器位,且只有一位寄存器的状态是有效的。通俗的来讲,在对词汇进行编码的时候,有N个词就使用N位数字,每一个词汇对应其中的一位,该位填充1,其他位都填充于0。下文举例说明:
假设我们语料库里有4句话:
今天天气晴
明天天气阴
今天天气阴
明天天气晴
首先将上述4句话拆分成词汇,分别为:
今天、天气、晴
明天、天气、阴
今天、天气、阴
明天、天气、晴
将上述拆分后的词汇都统计出来,得到:今天、明天、天气、晴、阴,共5个词,就需要用5位数字表示,其实本质上就是长度为5的一维数组,如表1所示。
得到词汇对应的One-Hot编码后,我们可以将上述4句话进行编码。词汇用一维数组表示,句子则需要用二维数组来表示,如表2所示。
One-Hot編码是为了处理离散变量问题诞生的,比如枚举型变量中有性别的男或女,季节的春、夏、秋、冬,等,对于这些相对独立的语义用One-Hot编码来表示,其优点就是相对于序列(1,2,3,4)这种编码,在欧式空间上变量间两两距离是相等的,符合离散变量的语义。但在用于词向量表示的同时也暴露出两个缺点:(1)维度灾难:上述例子中仅有简单的4句话和5个词,却需要一个大小是4×3×5的三维数组来表示整个语料库。如果扩展到实际的语料库中,会包含上千个词汇,仅仅对于一个词汇的向量就需要上千位来表示,并且这上千位的数字中,仅有一位是1,其他全是0。出现了维度灾难,导致的结果是信息密度太小并且大大增加计算量。(2)语义鸿沟:表示离散变量时欧式距离相等的优点,在表示词汇存在关系的语料库时,就变成了缺点。“今天”和“明天”的语义比较相似,“晴”和“阴”的语义比较相似。但是这4个词汇的欧式距离却都相等,语义无法在编码中表示出来,出现了语义鸿沟。
2 VSM
VSM全称Vectorspacemodel,即空间向量模型,由Salton等人于20世纪70年代提出,并成功地应用于著名的SMART文本检索系统。VSM是用空间向量来表示文本,并且通过计算向量之间的相似度来判断文本的相似程度。
VSM可以使用TF-IDF算法将文章转化为空间向量。TF-IDF算法是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度,TF-IDF的算法为:
TF=某个词在文章中出现的次数/文章的总词数
IDF=log(语料库的文档总数/包含该词的文档数+1)
TF-IDF=TF×IFD
从上述公式可以看出,词的重要性随着它在文章中出现的次数成正比增加,但同时会随着它在语料库的出现频率反比下降。
我们仍然以例1中的4句话为例,使用TF-IDF算法计算这4句话的空间向量值,如表3所示。
根据余弦相似度公式:
计算空间向量的余弦相似度来判断4个句子相互之间的相似程度,余弦相似度结果如表4所示。
從表4中结果可以看出,与我们主观上得到的相似性结果是一致的。
VSM相比于One-Hot模型有以下提高:(1)维度灾难的问题:同样的语料库,从4×3×5大小的三维数组压缩到4×5大小的二维数组,极大地减少了后续的计算量。(2)解决一部分语义的问题:VSM的向量可以计算两段文本的相似程度。
VSM多用于文章关键词提取、文章的分类等任务。但同时存在以下缺点:(1)词向量只能代表全文,不能代表单个词汇。(2)词向量是通过统计方法计算得到的,其本身是数量关系,只能计算相似度,并不能完全代表其语义。
3 Word2Vec
Word2Vec算法由Mikolov于2013年提出,该算法通过上下文来学习语义,从而解决词向量语义表示的问题。Word2Vec由两个经典模型组成:CBOW(Continuous Bag-of-Words)和Skip-gram,其中CBOW的作用是通过上下文的词向量推理中间词,Skip-gram的作用是通过中心词推理上下文。
假设有一个句子“今天天气晴”,两个模型的算法思路为:
CBOW:从句子中选择一个词作为中心词,其他词作为上下文。比如“天气”作为中间词,“今天”和“晴”作为上下文。使用机器学习的手段,以“今天”和“晴”作为已知条件推测出“天气”。这样中心词“天气”的语义就会传播到上下文“今天”和“晴”里;
Skip-gram:同理选择“天气”作为中心词, “今天”和“晴”作为上下文。同样使用机器学习的手段,这次中心词“天气”作为已知条件,去推测出“今天”和“晴”。这样上下文“今天”和“晴”的语义就会传播到中心词“天气”里。
根据上述原理,Word2Vec的两种模型的具体算法实现如图1所示。
两个模型的算法除了输入输出略有区别,其他结构基本一致,以CBOW模型的算法为例详细说明,公式为:
首先将输入的上下文词汇以one-hot的方式编码,每个词汇转换成一个1×V大小的张量,V指语料库的大小,当前语料库的大小为5,所以这里就是一个1×5大小的张量。
设定一个期望的词向量大小N,这里为了简化图示,设定N为3(实际中N的大小通常为100~200之间),设定一个V×N大小的参数张量W,例中的张量W大小便是5×3。输入X与W相乘后并求和,得到大小1×N的隐藏层张量;
再将大小为1×N隐藏层张量乘以张量W',得到1×V的输出层,张量W'可由隐藏层和输出层大小推测出其大小为N×V;
将输入层1×V的张量做softmax归一化处理,得到相对于每个语料库的词汇的概率;
最后将实际结果的词汇进行one-hot编码,计算输出结果概率的损失函数,再反向传播训练参数W和参数W';
最终训练完成后的大小为V×N的参数张量W就是全部语料库的词向量,如果想要得到某一个词的词向量,比如第3个词,取W[2]即可。
由于语料库本身会很庞大,V的值会变得很大,导致上述的算法存在性能问题,所以该算法只能作为理想中的算法。为了解决性能问题,这里采用了“负采样”方式来简化加速训练。
负采样是指从语料库中选取几个错误的样本,用于代替正确的样本,连同其他正确的输入输出词汇一并作为输入进行训练,训练的结果为1或0,代表所有输入样本是否是正确的。这样就将一个V维的分类问题转换为2维分类问题,极大地简化了计算量。公式为:
详细算法如图2所示。
根据上述算法逐步描述实现过程:(1)构建训练样本。以“今天天气晴”为例,构建训练样本如表5所示。(2)将张量X1和X2分别乘以大小为V×N的参数张量W和W',得到2个大小为1×N隐藏层。两个隐藏层做点积得到1个大小为1×N的隐藏层。(3)求和并使用sigmod激活函数将数值转换成1/0的二分结果。(4)根据实际结果Y计算损失函数,再反向传播训练参数W和W'。(5)最终W作为语料库的词向量。
从上述算法可得,Word2Vec有别于传统的算法,采取的是机器学习算法来计算词向量,由于仅以文中举例的4句话作实例,语料数量太少,不能作为实际的语料库以得到很好的训练效果。因此不再具体展示具体计算结果,直接给出结论,Word2Vec的优缺点有:(1)Word2Vec解决了语义表示的问题,而且通过研究发现,语义代表的向量之间还有计算关系,以向量表示的“妈妈”“爸爸”“男人”和“女人”之间,存在“妈妈”-“女人”+“男人”=“爸爸”这样的数学关系。(2)Word2Vec属于静态词向量,对于多义词的表示不够灵活。例如“苹果”这一词,既是一种水果,又是一个科技公司品牌。一个向量无法表示两个语义。
4 Bert
BERT(Bidirectional Encoder Representations from Transformers)模型于2018年由Google提出,模型采用表义能力更强的双向Transformer网络结构来对语言模型进行训练,是一种通过大量语料训练得来的一个通用的“语言理解”模型,是第一个用在预训练NLP上的无监督的、深度双向系统。
Bert作为动态词向量,很好地解决了一词多义的问题。解决思路是通过预训练得到语料库的词向量。在词汇具体使用场景里,使用词汇的上下文根据预训练的词向量动态的计算出该词汇的词向量。
5 结 论
通过以举例的方式来描述算法是为了便于读者更好的理解算法,所舉的例子比较简单,也许不太贴切和符合实际,所得结果仅作示例,不代表实际结果。读者如果对于算法感兴趣可以参考更多的文章对其有更深入具体的理解。
从上述对各个算法的概述,可以了解词向量从无到有,逐步完善的发展历程:独热编码解决了从无到有的问题,与此同时带来了维度灾难的问题;VSM解决维度灾难的问题,却没有办法表示具体词汇语义的问题;Word2Vec解决具体词汇语义的表示问题,又遇到了一词多义的问题;Bert解决了一词多义的问题。而Bert作为一个比较新的算法,后续的应用过程中必然会发现其存在的缺点,也必定会有新的算法来解决遇到的问题。期待词向量算法能够在应用中不断推陈出新,愈加完善,也有助于自然语言处理更好的处理现实问题。
参考文献:
[1] MIKOLOV T,YIH W T,ZWEIG G. Linguistic Regularities in Continuous Space Word Representations [C]//Proceedings of the 2013 Conference of the North American Chapter of the Association for Computational Linguistics:Human Language Technologies (NAACL-HLT-2013).Association for Computational Linguistics,2013:746-751.
[2] DEVLIN J,CHANG M W,LEE K,et al. BERT:Pre-training of Deep Bidirectional Transformers for Language Understanding [J/OL].arXiv:1810.04805v1 [cs.CL].(2018-10-11).https://arxiv.org/abs/1810.04805v1.
[3] RONG X. word2vec Parameter Learning Explained [J/OL].arXiv:1411.2738v4 [cs.CL].(2014-11-11).https://arxiv.org/abs/1411.2738.
[4] LEVY O,GOLDBERG Y. Neural word embedding as implicit matrix factorization [C]//NIPS14:Proceedings of the 27th International Conference on Neural Information Processing Systems. Cambridge:MIT Press,2014:2177-2185.
[5] 严红.词向量发展综述 [J].现代计算机(专业版),2019(8):50-52.
[6] 刘胜杰,许亮.基于词嵌入技术的文本表示研究现状综述 [J].现代计算机,2020(1):40-43.
作者简介:李孟宁(1991.11—),男,汉族,河北石家庄人,研究生在读,研究方向:自然语言处理。