前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于词向量

关于词向量

作者头像
张凝可
发布2019-08-22 10:54:18
8650
发布2019-08-22 10:54:18
举报
文章被收录于专栏:技术圈技术圈

参考论文:Efficient Estimation of Word Representations in Vector Space

One-hot Represention

在深度学习没有如此如火如荼之前,语言模型的建立依靠的一般还是SVM,CRF等算法,为了将自然语言符号、数值化,One-hot Represention 成为了当时不错简单粗暴的词向量表示方法。 每个词都是茫茫词海中的一个1。 假设语料库中有V个词,那么语料库中的任一词都可以表示为一个长度为V的向量,另外,每个词都有一个unique的id,one-hot将向量中词id相应位置置为1,其他位置为0来表示这个词。因而,可以想象如果将V个词的one-hot represention形成V*V的矩阵,那么这个矩阵是多么稀疏。 优点:简单 缺点:1>容易形成词汇鸿沟,即不能刻词与词之间的相似性。2>当V足够大时,容易形成维数灾难

Distributed Representation

**

NNLM(Feedforward Neural Net Language Model )

** 针对One-hot Representation存在的问题,Distributed Representation最早有Hinton在1986年在《Learning distributed representations of concepts》提出,用一个具有固定长度的向量来表示一个词。Bengio在2003提出了NNLM语言模型训练词向量。NNLM的前向神经网络涉及到线性投射层(Projection Layer)和非线性隐层(Hidden Layer)。 NNLM语言模型的网络结构包括输入层、投射层、隐层和输出层。下图给出了NNLM的网络结构。

这里写图片描述
这里写图片描述

从图中可以看出,采用N-Gram训练,考虑当前词的前n-1个词进行训练,并且设置look-up Table表,look-up Table C存放了语料库中V个词的词向量,C为V*m大小的矩阵,其中,V为语料库的总词数,m为词向量的维度。输入n-1个词,n-1个词经过one-hot编码,经过投射层(在C表中查找)投射为(n-1)*m的二维矩阵,NNLM将二维形成排列为长度为(n-1)*m的一维形式输入到隐层中。隐层和输出层为普通神经网络,输出层有V个节点,代表V个词的多分类问题,每个节点

这里写图片描述
这里写图片描述

表示下一个词为i的非归一化的log概率。给出公式并未给出从输入层和投射层部分,输入层为词序列的id,投射层为从Look Up表的C中进行取值,组合成向量作为隐层输入。

这里写图片描述
这里写图片描述

存在问题: 1,训练复杂度高,NNLM需要训练的权值链接为n*d+n*d*h+h*V 其中,n为输入词,d为词向量的嵌入维,h为隐层节点个数,V为输出层词的个数,也就是输出层节点个数,第一部为输入层与投射层的链接数,第二部分为投射层与隐层的链接数,h*V为隐层与输出层的链接数。显然,NNLM的训练复杂度是比较高,之后的改进基于投射层、隐层和输出层进行改进,改进的目的都是降低训练复杂度。 2,设置大小为n的窗口,N-Gram训练模式

RNNLM(Recurrent Neural Net Language Model)

相对于NNLM,,RNNLM能够训练更为复杂的模式,Mikolov在2012年在论文《Statistical Language Models based on Neural Networks》上采用RNN训练词向量,RNNLM去掉了NNLM中的投射层,只有输入层、隐层和输出层。下图给出了RNNLM的网络结构。

这里写图片描述
这里写图片描述

RNNLM最为特别的是在时间维度进行自我展开,尤其是隐层采用了训练连接,给出在时刻t下输入层、隐层和输出的前向传播公式。

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

其中,f为sigmod函数,g为softmax函数。 RNNLM的训练复杂度为h*h+h*V,其中h=d,说明词向量的嵌入维通常与隐层节点时一致。 上面介绍的两种训练distributed represention词向量的方法,主要训练复杂度是由于隐层的非线性所导致的,通常输出层的h*V可以通过softmax树控制在h*log(V),因而word2vec模型的诞生最初的初衷就是将隐层非线性话,google的大牛提出了New Log-Liner Model(The main observation from the previous section was that most of the complexity is caused by the non-linear hidden layer in the model. While this is what makes neural networks so attractive, we decided to explore simpler models that might not be able to represent the data as precisely as neural networks, but can possibly be trained on much more data efficiently.)

COBW(Continuous Bag-of-Words Model)

COBW模型采用了词袋模型,即并不考虑训练集中词的顺序对映射产生影响,COBW是word2vec模型的重要概念之一,主要由输入层、映射层和输出层,输入层即为某个单词A周围的n-1个单词的词向量。如果n取5,则词A(可记为w(t))前两个和后两个的单词为w(t-2),w(t-1),w(t+1),w(t+2)。这个时候R=2,相对应的,那4个单词的词向量记为v(w(t-2)),v(w(t-1)),v(w(t+1)),v(w(t+2))。从输入层到映射层比较简单,将那n-1个词向量相加即可。从映射层到输出层建立层次softmax树。

这里写图片描述
这里写图片描述

。关于层次softmax树的建立将之后讲解。 COBW的训练复杂度为:n*d+d*log(V),显然将非线性的隐层转换为线性的映射层,其实也可以看作为隐层。

Skip-gram(Continuous Skip-gram Model)

Skip-gram也是word2vec模型重要概念之一,与COBW不同是,Skip-gram的输入是当前词的词向量,而输出是周围词的词向量。也就是说通过当前词来预测周围的词。网络结构如下图。

这里写图片描述
这里写图片描述

通常用C控制距离多远的词为周围词,假设C=5时,那么对于训练集中的每个词的都从(1,5)中随机选择一个数R,比如R=2,sentence=’我爱吃苹果’,则’吃’的周围词为’我’,’爱’和’苹果’,从当前词向上下出发,那么周围词,即2R个词可以看作是当前词的正确分类因而最终会形成2R的分类情况,因为输出层为周围词的词向量,可以将Skip-gram看作为Lable有2R个的多分类问题,为了降低训练复杂度,输出层仍然会用到层次softmax树。 Skip-gram的训练复杂度为C*d+C*d*log(V)

总结

word2vec模型和一般的distributed represention的相比 首先之前的n-gram的窗口设置转换为来C,表示上下文语境训练区域特征。 传统的训练词向量的方法通常存在隐层,并且设置输入层和隐层是非线性关系,而word2vec去掉了隐层,改为投射层,并且输入层和隐层之间是相对简单的线性关系。引入知乎上邱锡鹏老师的话: 1.极快的训练速度,原来的语言模型最终目标为MLE,词向量为其副产品,当不追求MLE时模型可以大幅度简化,去掉隐层,加快训练速度。 2.man-woman=king-queen的方式 3.负采样的方式

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年12月01日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • One-hot Represention
  • Distributed Representation
  • NNLM(Feedforward Neural Net Language Model )
  • RNNLM(Recurrent Neural Net Language Model)
  • COBW(Continuous Bag-of-Words Model)
  • Skip-gram(Continuous Skip-gram Model)
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档