首页 > 编程知识 正文

词向量可视化,词向量表示方法

时间:2023-05-06 10:28:18 阅读:33082 作者:1941

最近,深度学习技术飞速发展,为语音识别、图像识别、自然语言处理(NLP )提供了有力的工具,为这些领域今后的快速发展提供了新的契机。

深度学习给自然语言处理带来的最令人兴奋的突破是字向量(word embedding )技术。 词向量技术将词转换为密集向量,并且相对于相似的词,对应的词向量也接近。

在自然语言处理APP应用中,单词向量作为深度学习模型的特征输入。 因此,最终模型的效果很大程度上取决于词向量的效果。

接下来,介绍单词向量技术,分享使用单词向量的经验。

一、语言表示

在自然语言处理任务中,首先需要考虑单词是如何在计算机上显示的。 通常有两种显示方式:一种是热re presentation,另一种是分布式re presentation。

1.1离散表示(one-hot representation ) )

传统的基于规则或统计的自然语义处理方法将单词视为原子符号

被称为one-hot representation。 one-hot representation将每个单词表示为长向量。 此向量的维是同义词大小,向量中只有一个维的值为1,其馀维为0,该维表示当前语言。

例如:

苹果[ 0,0,0,1,0,0,0,0,0,0,…]

one-hot representation相当于给每个单词分配id,这样的表达无法表明单词和单词的关系。 one-hot representation还提供了非常大的特征空间,但它具有许多应用任务可以在高维空间中线性分离的优点。

1.2分布式表示(分布式优先级) )。

word embedding是指将单词转换为分布式表示形式,也称为单词向量。 分布

公式将词表示为一定长度的连续密集向量。

方差表示好处:

(1)词语之间存在相似关系:

语言之间存在“距离”的概念,对很多自然语言处理的任务非常有帮助。

)2)包含更多信息:

单词向量可以包含更多的信息,每个维度都有特定的意义。 采用one-hot特征时,可以减少特征向量,而语言向量是不可能的。

二、如何生成单词向量

本节简要介绍单词向量的生成技术。 生成单词向量的方法有很多,但这些方法基于这样的想法:任何一个单词的意思都可以用其周边词来表示。 生成单词向量的方式分为基于统计的方法和基于语言模型(language model )的方法。

2.1基于统计方法

2.1.1共现矩阵

通过计数预先指定大小的窗口内word的共现次数,将word周边的共现词的次数设为当前word的vector。 具体来说,通过由大量的词汇文本构建共现矩阵来定义word representation。

例如,这些数据包括:

Ilike深度学习。

I like NLP。

I enjoy flying。

其共现矩阵如下

矩阵定义的单词向量在一定程度上缓解了one-hot向量相似度为0的问题,但没有解决数据稀疏和维数灾难的问题。

2.1.2 SVD (奇异值分解) )

基于co-occurrence矩阵得到的离散词向量存在较高的维和稀疏性问题

问题是,自然的解决思路之一是降低原始词向量的维数,得到密集的连续词向量。

对2.1.1中的矩阵,进行SVD分解,得到矩阵正交矩阵u,将u归一化后得到的矩阵如下:

SVD得到了word的密集(dense )矩阵。 这个矩阵具有很多良好的性质。 语义相近的词在向量空间相近,可以在一定程度上反映word之间的线性关系。

2.2语言模型(语言模型)。

语言模型生成语向量通过训练神经网络语言模型nnlm [ neuralnetworklanguagemodel ],语向量是语言模型的附带产出。 NLM背后的基本思想是预测语境环境中出现的词语,这种语境环境的预测本质上也是对共现统计特征的学习。

作为使用有名的neural network language model生成单词向量的方法,有Skip-gram、CBOW、LBL、NNLM、CW、GloVe等。 其次,以目前应用最广泛的CBOW模型为例,介绍如何利用语言模型生成单词向量。

2.2.1 cbow (连续后台) )。

有很多用于生成word的“分布式re presentation”模型,可以生成矢量效果

果实差异不大(矢量生成的效果取决于良好的训练数据)。 本节以CBOW模型中分层的softmax为例,介绍使用神经网络生成单词向量的方法。

CBOW模型是在上下文已知的情况下预测当前词出现的概率的模型。 上下文选择采用的窗口方式是只将当前单词窗口范围内的单词作为上下文。 中心语的概率公式如下

p (wt (wt|wt-k,wt-(k-1 ),wt-1,wt 1,wt 2…,wt k )=p (wt|context ) ) ) ) ) ) )

CBOW模型

去掉了最耗时的隐层,从输入层到隐层的操作是对上下文词向量进行求和(word2vec代码对以上下文词向量的加权平均来表示context)。
从隐层到输出层则利用上下文词向量和做为输入,输出的是窗口中心位置所有词出现的概率。利用softmax求中心词概率,公式表示如下:
p(w_t│context)=e^(-g(w_t,context))/(∑_(v∈V)▒e^(-g(v,context)) )
其中,context表示上下文词向量和,V表示词表,wt表示中心词,g表示能量函数。由上式可看出,分母计算比较密集,时间复杂度O|V|。由上式可以看出,分母的计算复杂度与词表规模相关,当语料较大时,计算变的非常耗时。解决这一问题是对词进行多分类/聚类,例如,5000词的语料,聚成100类,则时间复杂度由5000缩减至50。

CBOW采用了一种Hierarchical softmax技术,利用哈夫曼树对词表进行分类,用一连串的二分类来近似多分类。

加入哈夫曼树后,中心词的概率可表示入下:
p(w_t│context)=∏(i=1)^k▒〖p(d_i |q_i,context)〗=∏(i=1)^k▒〖σ(v_context^T*q_i)〗
其中,v_context^T为窗口内词的词向量的加权平均,q_i为结点i的结点向量,σ(*)为神经网络激活函数。从公式中可以看出,中心词的概率是从根节点到词所在的叶节点所走过路径概率的乘积。
对中心词概率做极大似然估计,可得到模型的损失函数。损失函数如下:
Loss=-Likelihood=-(1-code[j])log σ(v_context^T*q_i )-code[j]log⁡(1- σ(v_context^T*q_i ))
code[j]为结点j的哈夫曼编码。有了损失函数,就可以通过梯度下降法求得词向量。注意,损失函数中有2个带求参数,分别为〖词向量(v〗_context^T)和结点向量〖(q〗_i)。
可以看出,CBOW模型是一个语言模型。在训练好后,语言模型的参数v_context^T作为副产出,得到词向量。

三.词向量的训练
本节将分享我使用词向量的一些经验。

3.1词向量效果的影响因素
(1)增加词向量的维度能够增加词向量效果。
(2)在同一领域语料下,语料越多越好,增加不相关领域语料将会降低词向量效果。
(3)大的上下文窗口学到的词向量更反映主题信息,而小的上下文窗口学到的词向量更反映词的功能和上下文语义信息。
(4)语料的纯度越高(杂质少),词向量效果越好。因此,在利用语料训练词向量时,进行预处理能够提高词向量的效果。

3.2词向量的歧义问题

例如,词”苹果”可以指代水果也可以指代苹果手机。在对“苹果”
进行训练时,将会对其对应的词向量向两个方向拉伸,进而造成词向量歧义。
词向量的歧义将会对词向量的应用效果产生影响。例如,对苹果进行序列标注,指代手机的苹果应打上品牌词标签,而指代水果的苹果对应打上产品词标签。对同一个词打上多种不同的标签而采用同一个词向量,将降低词性标注的效果。
通常解决这一问题是对词向量进行聚类,以多个向量来表示同一个词。
例如,在RNNs分词项目时,发现字向量的歧义问题将影响分词效果。因此,我按品类对字进行了聚类,得到的聚类效果如下:

左边是颜色中红色的红,可以看出它与其它颜色的距离较近。右边是手
机品类红米手机的“红”,可以看到它最相似的词是“小”字,因为在京东的商品title里,手机品类中红米手机和小米手机出现的次数较多,进而使得“红”字和“小”字的语境相似。

3.3 词向量其它
还可以利用NNLM方法,将我们感兴趣的其它实体生成向量。例如,我曾利用word2vec将每个sku(商品id)embedding成向量。我们将每个用户某个月购买的母婴类商品按序进行排列做为一条训练样本,例如:

其中,第一列user_id +’#’+用户婴儿年龄。其余列为用户购买的sku集合,并且购买的sku按购买时间顺序排列。
我们将训练样本输入到word2vec中进行训练,得到每个sku的向量表示。通过这种训练样本的构建方式,使用户在相同年龄段(婴儿)购买的商品相似。例如,在我们的向量中,如下两个商品相似:

我们利用sku向量做为特征,训练模型预测用户年龄,准确率达90%。

四.总结
深度学习模型具有比传统模型更强的特征抽取能力。在自然语言处理中,传统统计特征包含的信息量过少,这也一直限制着深度学习在自然语言处理中的应用。词向量由于包含了更丰富的信息,使得深度学习能够处理绝大多数自然语言处理应用。
词向量虽然为深度学习在自然语言处理领域带来了希望,但目前词向量仍有许多不完善的地方,例如:
虽然知道词向量比统计特征包含更多信息,但并不知道词向量包含了哪些
信息(如每维特征代表的意义)。
词向量的训练采用无监督方式,不能很好的利用先验信息。
词向量是神经网络语言模型的副产物,其损失函数不是由具体应用构建。
因此,不是词向量训练的越好,应用效果就越好。

随着词向量研究的深入,这些问题都将会得到解决。深度学习在自然语言
处理领域的前景将会更加光明。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。