首页 > 人工智能 > 自然语言 > 入门自然语言处理必看:图解词向量
词嵌入(embedding)是机器学习中最惊人的创造, 如果你有输入法打字预测的经历,那么你很有可能是词嵌入(自然语言处理的核心模型)技术的受益者。
在过去的几十年中,基于神经网络模型的词嵌入技术发展迅猛。尤其是最近,包括使用BERT和GPT2等最先进的模型进行语义化词嵌入。
Word2vec是一种有效创建词嵌入的方法,于2013年提出。除了作为词嵌入的方法之外,它的一些概念已经被证明可以有效地应用在推荐引擎和理解时序数据上。
在本文中,将讨论词嵌入的概念,以及使用word2vec生成词嵌入的机制。从一个例子开始,熟悉使用向量来表示事物,你是否知道你的个性可以仅被五个数字的列表(向量)表示?
如何用0到100的范围来表示你是多么内向/外向(其中0是最内向的,100是最外向的)? 你有没有做过像MBTI那样的人格测试,或者五大人格特质测试? 如果你还没有,这些测试会问你一系列的问题,然后在很多维度给你打分,内向/外向就是其中之一。
五大人格特质测试测试结果示例。它可以真正告诉你很多关于你自己的事情,并且在学术、人格和职业成功方面都具有预测能力。
假设我的内外向得分为38/100。 可以用这种方式绘图表示:
把范围收缩到-1到1:
当你只知道这一条信息的时候,你觉得你有多了解这个人?人性很复杂,需要添加另一测试的得分作为新维度。
可以将两个维度表示为图形上的一个点,或者作为从原点到该点的向量。
现在可以说这个向量代表了我的一部分人格。当你想要将另外两个人与我进行比较时,这种表示法就有用了。假设我突然被车撞挂了,需要找一个性格相似的人替换我,那在下图中,两个人中哪一个更像我?
处理向量时,计算相似度得分的常用方法是使用余弦相似度:
很明显,1号替身在性格上与我更相似。指向相同方向的向量(长度也起作用)具有更高的余弦相似度。
两个维度还不足以捕获有关不同人群的足够信息。心理学已经研究出了五个主要人格特征(以及大量的子特征),所以使用所有五个维度进行比较:
使用五个维度的问题是不能在二维平面绘制整齐小箭头了。在机器学习中,经常需要在更高维度的空间中思考问题。 但是余弦相似度的计算仍然有效,仍适用于任意维度:
余弦相似度适用于任意维度的数据,现在的得分比上次的得分要更合理,因为是根据被比较事物的更高维度算出的。
在本节的最后,总结两个中心思想:
通过上文的理解,继续看看训练好的词向量(也被称为词嵌入),并接着探索它们的一些有趣属性。
这是一个单词”king”的词嵌入(在维基百科上训练的GloVe向量):
[ 0.50451 , 0.68607 , -0.59517 , -0.022801, 0.60046 , -0.13498 , -0.08813 , 0.47377 , -0.61798 , -0.31012 , -0.076666, 1.493 , -0.034189, -0.98173 , 0.68229 , 0.81722 , -0.51874 , -0.31503 , -0.55809 , 0.66421 , 0.1961 , -0.13495 , -0.11476 , -0.30344 , 0.41177 , -2.223 , -1.0756 , -1.0783 , -0.34354 , 0.33505 , 1.9927 , -0.04234 , -0.64319 , 0.71125 , 0.49159 , 0.16754 , 0.34344 , -0.25663 , -0.8523 , 0.1661 , 0.40102 , 1.1685 , -1.0137 , -0.21585 , -0.15155 , 0.78321 , -0.91241 , -1.6106 , -0.64426 , -0.51042 ]
这是一个包含50个数字的列表。通过观察数值看不出什么,但是稍微给它可视化,就可以和其它词向量作比较。把上面所有这些数字放在一行:
根据它们的值对单元格进行颜色编码(如果它们接近2则为红色,接近0则为白色,接近-2则为蓝色),得到如下图片:
忽略数字仅查看单元格颜色。现在将”king”与其它单词进行比较:
上图可以看出:”Man”和”Woman”彼此之间要更加相似,相比于单词”king”来说。 这暗示着向量图示很好的展现了这些单词的信息/含义/关联。
这是另一个示例列表:
总结:
展现词嵌入奇妙属性的著名例子是类比。通过添加、减去词嵌入得到一些有趣的结果。一个经典例子是公式:”king”-“man”+”woman”:
在python中使用Gensim库,可以添加和减去词向量,它会找到与结果向量最相似的单词。该图像显示了最相似的单词列表,输出其与每个单词余弦相似性。
同样进行可视化:
虽然”king-man + woman”生成的向量并不完全等同于”queen”,但是”queen”是在整个400,000个字词嵌入中最接近它的单词。
由此已经看过训练好的词嵌入向量了,下文会详细介绍训练过程。 在开始使用word2vec之前,需要看一下词嵌入的上级概念:神经语言模型。
自然语言处理最典型的应用,应该就是智能手机输入法中对下一单词预测功能。
单词预测可以通过语言模型来实现,语言模型会从单词列表中(比如说两个词)去尝试预测可能紧随其后的单词。
在上面这个手机截屏中,可以认为该模型接收到两个绿色单词(thou shalt)并推荐了一组单词(“not” 就是其中最有可能被选用的一个):
可以把这个模型想象为如下所示的黑盒:
但事实上,该模型不会只输出一个单词。实际上,所有它知道的单词(模型的词库,可能有几千到几百万个单词)按可能性打分,输入法程序会选出其中分数最高的推荐给用户。
自然语言模型的输出就是模型所知单词的概率评分,通常把概率按百分比表示,实际使用中,40%这样的分数在输出向量组是表示为0.4
自然语言模型(请参考Bengio 2003)在完成训练后,会按下图所示的三个步骤完成预测:
第一步与本文主题最相关,因为讨论的就是Embedding。模型在经过训练之后会生成一个映射单词表所有单词的词向量矩阵。在进行预测的时候,输入法预测算法就是在这个映射矩阵中查询输入的单词的词向量,然后计算出预测值:
下文将重点放到模型训练上,来学习一下模型如何构建这个映射矩阵词向量,欢迎关注。
https://www.toutiao.com/a6729815618930868743/
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69946223/viewspace-2655248/ ,如需转载,请注明出处,否则将追究法律责任。