【"基于向量空间中词表示的有效估计"论文研读】
1、论文储备知识:语言模型的概念、语言模型的发展
1.1 语言模型
(1)概念:语言模型是计算一个句子是句子的概率的模型。
(2)语言模型构建
基于专家语法规则的语言模型(无法适应语言的变化)
统计语言模型(通过概率计算刻画语言模型)
为了解决参数空间太大,样本稀疏严重的问题,提出了马尔科夫假设:下一个词的出现依赖前面一个词或几个词。
1.2 词的表示方式:
(1)One-hot:表示简单,词越多,维数越高,无法表示词-词之间的关系。
(2)SVD:可在一定程度上得到词-词的相似度,但是分解效率低,可解释性差。
(3)分布式表示(稠密表示):降维,表示词-词之间的关系
分布式表示的发展历史:
2、论文核心部分研读:
2.1word2vec的基本思想:
句子中相近的词是有联系的,用前面出现的词来预测后面的词。skip-gram使用中心词预测周围词,cbow使用周围词预测中心词。
2.2 skip-gram原理
wi为中间词,经过one-hot编码成1xV的行向量(V为所有词的总数),再与V x D的中心词向量矩阵相乘,得到1xD的向量,就是中心词的词向量,再与DxV的周围词向量矩阵相乘,得到一个1xV的向量,将此向量经过softmax激活函数,得到V个词出现的概率值,然后,根据索引找到Wi-1的词对应的概率值,经过梯度下降等方法进行训练使概率其成为最大。(一般我们训练的是W:中心词向量矩阵)
2.3 cbow原理
Wi-2,Wi-1,Wi+2,Wi+1,是要预测的中心词的四个周围词,将四个周围词的one-hot编码的向量(1xV)与周围词向量矩阵W(VxD)做乘积,得到四个1xD的向量,分别是四个周围词的词向量,将这四个词向量求和或者求平均,得到一个1xD的向量,再和所有的中心词向量矩阵W*(DxV)做乘积,得到1xV的向量,将此向量经过softmax函数,得到V个词的概率,然后根据词Wi的索引,找到对应词的概率,进行梯度下降等方式令该词概率成为该向量的最大值。
2.4 word2vec关键技术:层次softmax和负采样
当单词数很多,也就是V很大时,在上述过程中要进行很多次softmax计算,为了降低复杂度,论文采取层次softmax和负采样技术。
层次softmax
核心思想就是将多次的softmax计算,转换成多次sigmoid计算。
层次softmax的构建:
上图中的p是求在skip-gram模型下,中心词c出现的前提下,‘I’词出现的概率,激活函数使用sigmoid,求得的值大于0.5,走向分支的右边。层次softmax的效果不如负采样好,所以不做过多介绍。
负采样
核心思想:多分类变成二分类。一个中心词与周围词在一起为正样本,负样本就是在选定了中心词的前提下每次在词表中随机选取一个词与中心词在一起定为负样本,一般每次对每个中心词选3-10个负样本。对每个词输出一个正样本的概率和k个负样本的概率。基本思想:增大正样本的概率,减小负样本的概率。
skip-gram+负采样的实验步骤
1、数据预处理
2、根据批次的大小、窗口尺寸,将训练集中的中心词及其周围词组成的词对放进队列组成正例词表。
3、将训练集词频做0.75次方后做词频归一化处理。
4、构造一定大小词的集合,根据第三步计算的词频添加相应单词进集合。
5、从第四步构造的词集中根据正例词对数随机取出设定数量的词与中心词组成负样本词对。
6、对中心词与正样本词对集合和中词与负样本词对集分别进行前向传播,将正样本集误差和负样本集误差进行以下公式处理,最后用梯度下降进行误差反向传播。