美文网首页
词向量原理

词向量原理

作者: 风驰电掣一瓜牛 | 来源:发表于2017-05-29 15:11 被阅读0次

了解词向量要从语言模型说起,语言模型其实就是计算任意一个句子的概率。

经典的语言模型是n-gram模型,该模型假设每个词的生成仅仅依赖前面n个词,所以从大规模语料中统计每个词的概率和基于前面n词的条件概率,就可以计算出一个句子的概率。对于没有出现的条件概率,则采用平滑方法来估计。该方法的假设太强,没有考虑更多的上下文。而且训练需要大量语料,一般的统计也只到trigram。

后来出现了神经网络语言模型,该模型训练出语言模型的同时可以输出词向量。

也就是说所有词向量模型的目标都是训练一个语言模型,最大化训练数据中每个句子的概率,词向量作为参数一起训练,当语言模型训练好的时候,词向量也就有了。

Bengio的模型

2003年bengio推出了《A Neural Probabilistic Language Model》,对每个词采用分布式表示,即词向量表示,用一个三层的神经网络训练出一个好的语言模型。

nnlm

第一层为词向量层,每个词都查表替换为词向量作为输入,第二层是一个tanh层(隐藏层),与第一层相连,第三层是一个softmax输出层,与第一层和第二层都相连。

该网络估计的是一个ngram片段的概率,输入层是n-1个词的词向量拼接而成的向量,输出是|V|个词的概率,对应一个|V|维向量。

假设词向量为m维,隐藏层节点数为h,词表大小为|V|,则

输入层参数:(n-1)m
输入层-隐藏层参数:h*(n-1)m+1(偏置)
输入层-输出层参数:|V|*(n-1)m+1(偏置)
隐藏层-输出层参数:|V|*h

训练目标就是最大化所有ngram片段(n个连续词)的似然性,可以加正则项。

词向量也是参数,采用随机梯度下降法训练,训练结束后,语言模型有了,词向量也有了。

更多词向量模型可参考: Licstar的 Deep Learning in NLP (一)词向量和语言模型

Word2Vec模型

与Bengio的模型相比,Word2Vec去掉了最耗时的非线性隐藏层的计算,改为简单的求和隐层,并提出了两种模型:

一种是CBOW模型,通过前后n个词(上下文)来预测当前词的概率,隐藏层对上下文词的词向量求和,所以节点数和词向量维度相同。

一种是Skip-gram模型,通过词w预测上下文范围内每个词的概率,所以Skip-gram 中的每个词向量表征了上下文的分布。

每种模型又有两种选择:层次softmax,或者Negative Sampling。

层次Softmax结合了哈夫曼编码,每个词的编码对应从树根到这个词的路径,路径每个节点计算出的概率的乘积就是当前预测词的概率。

# f = sigmoid(neu1 * syn1)      
Loss = -Log Likelihood = -(code[j]*logf + (1-code[j])*log(1-f))

层次softmax的思想其实借鉴了Hinton提出的层次log-bilinear模型,N元层次log-bilinear模型通过上下文预测下一个词w概率的方法为: 词w对应编码中每一位的条件概率的乘积

  • 词编码对应从树根到词的路径
  • 路径上的每个节点都是一个逻辑回归的二分类器,会输出0或者1的概率
  • 这个逻辑回归分类器的输入是:上下文向量*路径中第i个节点向量(代入sigmoid函数输出概率值)

Negative Sampling的思想就是随机找些负样本,通过计算对比损失来优化,理论上叫作噪声对比估计(Noise Contrastive Estimation),损失函数为:

# f = sigmoid(neu1 * syn1)      
Loss = -Log Likelihood = -(y*logf + (1-y)*log(1-f))

公式的推导可参考:

其他参考:

相关文章

  • 词向量原理

    了解词向量要从语言模型说起,语言模型其实就是计算任意一个句子的概率。 经典的语言模型是n-gram模型,该模型假设...

  • 知识累积

    知识累积 word2vec 原理 核心:将词变为向量,来源是网络中每个词的参数方法:hierarchic soft...

  • 利用gensim使用腾讯开源的预训练好的词向量

    腾讯开源词向量下载地址 导入词向量 未知词短语向量补齐: 样例: 输出为: 分词,词向量编码,去除标点符号(中英文...

  • 在 Keras 模型中使用预训练的词向量

    1. 什么是词向量?   简而言之,词向量技术是将词转化成为稠密向量,并且对于相似的词,其对应的词向量也相近。词向...

  • Task4 文本表示:从one-hot到word2vec

    任务: 词袋模型:离散、高维、稀疏; 分布式表示:连续、低维、稠密。word2vec词向量原理并实践,用来表示文本...

  • TensorFlow实现Word2Vec并进行代码详解

    1.代码部分 2. 词向量图词向量空间表示

  • 预训练好的词向量资源

    词向量是用来表示词的向量,通常也被认为是词的特征向量。现在已经成为自然语言处理的基础技术。词向量的好坏,会直接影响...

  • 词向量

    词向量大法 从文本语料得到词向量的话,大概来讲有如下几个步骤:分词,统计词频,构建huffman树,输入文本训练词...

  • 词向量

    1.更别致的词向量模型:Simpler GloVe - Part 2 2.

  • 词向量

    目前词向量主要用的技术 word2vec fasttext glove 1 one-host编码 one-hot编...

网友评论

      本文标题:词向量原理

      本文链接:https://www.haomeiwen.com/subject/ewnkfxtx.html