第三课第一章 词向量与词嵌入(二)

02.NNLM模型

2.1 神经网络语言模型的由来

神经网络语言模型最早由CMU的Wei Xu和Alex Rudnicky提出的,可以2000年其发表文章
Xu W , Rudnicky A . Can artificial neural networks learn language models?[C]// Sixth International Conference on Spoken Language Processing, ICSLP 2000 / INTERSPEECH 2000,Beijing, China, October 16-20, 2000. 2000.
神经网络语言模型主要解决传统的语言模型有两大缺点:

  • 稀疏性导致的维度诅咒,
  • 泛华能力弱
    神经网络语言模型主要包括以下三种:
  • 前馈神经网络模型
  • BP算法简介
  • 循环神经网络模型

2.2 前馈神经网络模型

神经网络模型的结构可以网上许多博客可参照,这里不多写。使用神经网络来同时学习单词间共生的概率和单词在新的低维空间中的分布。
解决泛化能力:

  • 相似单词在低维空间中挨得较近
  • 以前没有出现过的单词组合
    • 如果在新文本里出现依然可以得到较高概率
    • 如果其组成元素都在低维空间中都挨得较近

2.3 BP算法简介

BP算法,就是反向传播方法,即通过求梯度,来实现对各个参数的优化调整。具体可参照网上的博客,或者基础书籍。

2.4 循环神经网络及变种

循环神经网络主要是加入“记忆”功能,使得前面的词能够影响后面的输出。如图:
第三课第一章 词向量与词嵌入(二)_第1张图片
RNN在实际应用中会出现梯度消失的严重问题,导致无法长效记忆,出现模型过拟合。因此出现改进版的RNN,LSTM和GRU,变种的RNN主要是引入门概念,让某一信息可以长时间的记忆,LSTM和GRU可参考博客【译】理解LSTM(通俗易懂版)和GRU学习理解

03.Word2vec构建词向量

3.1 word2vec的思想

文本是一个状态机,每一个单词是一个状态
我们期望寻找状态之间的转换概率:两个状态同时出现的概率

  • 传统方法有较大缺陷
    • 存储效率低
    • 关注全局统计结果而不是局部结果
      在word2vec中,词向量本身就是模型的参数,通过对数据的建模可以获得参数的值word2vec
  • 包含两种不同的子模型
    • 连续型模型 CBOW: Continuous Bags Of Words
    • 跳跃型模型 Skip-Gram
      其实word2vec模型就是简单化的神经网络。如图:
      第三课第一章 词向量与词嵌入(二)_第2张图片
      输入是One-Hot Vector,Hidden Layer没有激活函数,Output Layer维度跟Input Layer的维度一样,用的是Softmax回归。当这个模型训练好以后,我们并不会用这个训练好的模型处理新的任务,我们真正需要的是这个模型通过训练数据所学得的参数,例如隐层的权重矩阵。
      这个模型定义数据的输入和输出一般分为CBOW(Continuous Bag-of-Words)与Skip-Gram两种模型。CBOW模型的训练输入是某一个特征词的上下文相关的词对应的词向量,而输出就是这特定的一个词的词向量。 Skip-Gram模型和CBOW的思路是反着来的,即输入是特定的一个词的词向量,而输出是特定词对应的上下文词向量。CBOW对小型数据库比较合适,而Skip-Gram在大型语料中表现更好。

3.2 CBOW

CBOW结构如图(论文中的图):
第三课第一章 词向量与词嵌入(二)_第3张图片

  • 输入层:上下文单词的one-hot. (假设单词向量空间dim为V,上下文单词个数为C)
  • 所有one-hot分别乘以共享的输入权重矩阵WVxN. (N为自己设定的数,表示词向量维度,初始化权重矩阵W)
  • 所得的向量相加求平均作为隐层向量, size为1xN.
  • 乘以输出权重矩阵W’VxN
  • 得到1xV向量激活函数处理得到V-dim概率分布,因为是one-hot,所以每一维斗代表着一个单词。
  • 概率最大的index所指示的单词为预测出的中间词与true label的one-hot做比较,误差越小越好(根据误差更新权重矩阵)
    因为要训练神经网络,因此要设定损失函数,采用梯度下降法更新权重矩阵W和W’,输入层的每个单词与矩阵W相乘得到的向量的就是我们想要的词向量(word embedding)。

3.3 Skip-Gram

结构如图:
第三课第一章 词向量与词嵌入(二)_第4张图片
与上面的CBOW相反,输入是特定的一个词的词向量,而输出是特定词对应的上下文词向量。图中的参数解释与CBOW一样。

3.4 Negative Sampling

写了又删删了又写,感觉写不出来很好地效果,推荐一篇大神博文,供大家参考《基于Negative Sampling的模型》

如果想理解word2vec的数学原力,推荐参考博文《word2vec 中的数学原理详解》
接续上个博文《第三课第一章 词向量与词嵌入(一)》
新手创作不易,如果觉得不错,请点个赞吧

你可能感兴趣的:(深度学习)