以下为《.word2vec算法思想》的无排版文字预览,完整内容请下载
推荐系统的功能是帮助用户主动的找到满足偏好的个性化物品并推荐给用户
4.word2vec算法思想
什么是word2vec?你可以理解为word2vec就是将词表征为实数值向量的一种高效的算法模型,其利用深度学习的思想,可以通过训练,把对文本内容的处理简化为 K 维向量空间中的向量运算,而向量空间上的相似度可以用来表示文本语义上的相似。
Word2vec输出的词向量可以被用来做很多 NLP 相关的工作,比如聚类、找同义词、词性分析等等。如果换个思路,?把词当做特征,那么Word2vec就可以把特征映射到 K 维向量空间,可以为文本数据寻求更加深层次的特征表示?。
Word2vec 使用的词向量不是我们上述提到的One-hot Representation那种词向量,而是 Distributed representation 的词向量表示方式。其基本思想是?通过训练将每个词映射成 K 维实数向量(K 一般为模型中的超参数),通过词之间的距离(比如 cosine 相似度、欧氏距离等)来判断它们之间的语义相似度.其采用一个?三层的神经网络?,输入层-隐层-输出层。有个核心的技术是?根据词频用Huffman编码?,使得所有词频相似的词隐藏层激活的内容基本一致,出现频率越高的词语,他们激活的隐藏层数目越少,这样有效的降低了计算的复杂度。而Word2vec大受欢迎的一个原因正是其高效性,Mikolov 在论文中指出,一个优化的单机版本一天可训练上千亿词。
这个三层神经网络本身是?对语言模型进行建模?,但也同时?获得一种单词在向量空间上的表示?,而这个副作用才是Word2vec的真正目标。
与潜在语义分析(Latent Semantic Index, LSI)、潜在狄立克雷分配(Latent Dirichlet Allocation,LDA)的经典过程相比,Word2vec利用了词的上下文,语义信息更加地丰富。
Word2Vec实际上是两种不同的方法:Continuous Bag of Words (CBOW) 和 Skip-gram。CBOW的目标是根据上下文来预测当前词语的概率。Skip-gram刚好相反:根据当前词语来预测上下文的概率(如下图所示)。这两种方法都利用人工神经网络作为它们的分类算法。起初,每个单词都是一个随机 N 维向量。经过训练之后,该算法利用 CBOW 或者 Skip-gram 的方法获得了每个单词的最优向量。
/
取一个适当大小的窗口当做语境,输入层读入窗口内的词,将它们的向量(K维,初始随机)加和在一起,形成隐藏层K个节点。输出层是一个巨大的二叉 树,叶某某代表语料里所有的词(语料含有V个独立的词,则二叉树有|V|个叶某某)。而这整颗二叉树构建的算法就是Huffman树。这样,对于叶某某的 每一个词,就会有一个全局唯一的编码,形如"010011",不妨记左某某为1,右子树为0。接下来,隐层的每一个节点都会跟二叉树的内节点有连某某,于是 对于二叉树的每一个内节点都会有K条连某某,每条边上也会有权值。
/
?
对于语料库中的某个词w_t,对应着二叉树的某个叶子节点,因此它必然有一个二进制编码,如"010011"。在训练阶段,当给定上下文,要预测后 面的词w_t的时候,我们就从二叉树的根节点开始遍历,这里的目标就是预测这个词的二进制编号的每一位。即对于给定的上下文,我们的目标是使得预测词的二 进制编码概率最大。形象地说,我们希望在根节点,词向量和与根节点相连经过 logistic 计算得到 bit=1 的概率尽量 内容过长,仅展示头部和尾部部分文字预览,全文请查看图片预览。 仅需要做很少的手动工作。但是由于文本的长度各异,我们可能需要利用 所有词向量的平均值作为分类算法的输入值,从而对整个文本文档进行分类处理。
词向量的用法最常见的有两种: 1. 直接用于神经网络模型的输入层。如 C&W 的 SENNA 系统中,将训练好的词向量作为输入,用前馈网络和卷积网络完成了词性标注、语义角色标注等一系列任务。再如 Socher 将词向量作为输入,用递归神经网络完成了句法分析、情感分析等多项任务。 2. 作为辅助特征扩充现有模型。如 Turian 将词向量作为额外的特征加入到接近 state of the art 的方法中,进一步提高了命名实体识别和短语识别的效果。
[文章尾部最后300字内容到此结束,中间部分内容请查看底下的图片预览]请点击下方选择您需要的文档下载。
以上为《.word2vec算法思想》的无排版文字预览,完整内容请下载
.word2vec算法思想由用户“未满一千天”分享发布,转载请注明出处