Word2vec学习笔记(一)

word2vec 简介

  • word2vec 在2013年被Google开源的一种词向量计算的工具(框架). 可在百万级别的词典和亿级别的数据集上进行高效训练.

  • 该工具最终的输出结果—词向量,能够度量词的语义问题和词词之间相似关系.

  • word2vec是一个开源工具,本身不是一个算法或模型。但描述word2vec算法或模型时,实指背后用于计算词向量的模型

  • word embedding与word2vec关系: 前者是把词装换成实数向量一系列技术的统称,具有语言模型和特征学习的特点. 后者是前者的一个具体工具实现.

常见的word embedding方法

  • 基于bool表示法
  • 基于词频表示法
  • 基于TFIDF表示法:计算每个词的重要程度从而成表示词向量,可用于提取文章的关键词.
  • word2vec 词向量表示法:每个单词最后都有一个固定的表示, 而与该词出现的位置无关.
  • Bert 词向量表示法(名字不一定准确):单词的表示受上下文动态的影响.
  • 其它 。。。。

模型

模型特例(bigram)

使用特殊情况的模型示例:1 vs n vs 1,即input层:一个词,1个hidden层, 有N个神经元节点,output层:1个词。

该特例的结构简单,计算方便,更为重要的是,可通过该特例可左扩展到CBow模型,右扩展到Skip-Gram模型. 模型如下:
Word2vec学习笔记(一)

符号说明

V 语料库的大小
N 隐藏层的神经元个数
W 词向量矩阵(input→output层),权重矩阵,维度(V, N)
W’ 上下文权重矩阵(hidden层→output层),词向量矩阵,维度(N, V),vj‘ 表示该矩阵的第j行向量
X input层的输入数据,经过one-hot编码的列向量, (1,V),Xi 表示第i个分量
小写w word 词, wj表示第j个分量
uj 在已知词向量的输入, 预测输出(列)向量(V, 1)中的是第j个词的分数 (经softmax作用之后称概率值)
yj 表示softmax作用后,概率分布中是第j个词的概率值。预测结果
ti 第i个词的one-hot向量,实际标签
η 学习率(步长)

计算过程说明

Word2vec学习笔记(一)

损失函数及链式法则关系

Word2vec学习笔记(一)

用梯度下降(GD)推导权重更新方程

Word2vec学习笔记(一)

说明:

  • 当yi > ti=0 时(高估),在更新过程中,上下文的输入向量与单词的输出向量的差值越来越大

  • 当yi < ti=1 时(低估),同理,越来越小

  • 当yi ≈ ti 时(微偏),同理,越来越接近

CBow模型(多词向下文输入)

全称continuous bag of words(连续词袋模型),CBow网络结构图在直观上在特例模型的基础上进行了左扩展,即在输入层面上: 多词输入.

Word2vec学习笔记(一)

特点:

  • C个ont-hot向量同时作为input,输出一个概率分布,输入维度**(C, V, 1)**,其中C为滑动窗口大小,每个词维度均是(V, 1)

  • 隐藏的输出是由多个词向量经过求和取平均后的结果,即h = (x1W + x2W+…+xc*W)/C

Skip-Gram

在特例模型的基础上进行右扩展,即在输出层面上: 多词输出
Word2vec学习笔记(一)

特点:

  • output是C个多项式,即C个概率分布,也就是C个词都有一个对应的概率分布,维度是(C, V, 1)

计算过程说明:

​ input→hidden:同特例模型的该阶段

hidden→output:
Word2vec学习笔记(一)

模型总结

模型 计算量
cbow 训练次数=词典大小V
skip-gram 训练次数=词典大小V * 窗口大小C

说明

目前为止,特例模型(特殊的“bigram”)、cbow、skip-gram均是在未采用任何优化配置下的原始结构.,在计算时造成维度灾难,计算代价太大,故有层次softmax和负采样两种优化方式(见下文)。

模型优化

层次softmax(hierarchical softmax)

结构图

Word2vec学习笔记(一)

结构特点

  • 本质上一棵带权路径最短的二叉树—霍夫曼树
  • 词作为叶子结点,即有V个叶子,V-1个非叶节点
  • 根节点到某一叶节点(某一词)的路径是唯一的,路径长度L=路径中节点的个数(叶节点+非叶节点)
  • 每一个非叶节点均对应着一个上下文词向量

若要预测w0的概率,计算说明如下
Word2vec学习笔记(一)

示例:预测结果是w2的计算结果如下:
Word2vec学习笔记(一)

负采样(Negative Sampling)

比层次softmax更易懂,只更新采到的样本权重(W和W’),避免每次迭代都要更新多个输出词的词向量

采样公式

Word2vec学习笔记(一)

指数的默认值为0.75,属于超参数。

注意事项

  • 只考虑语料库中单词在句子中词频, 则会导致负样本中的功能词如the、of、and、a…等词频过高(基于词频表示法),故采用概率的方式采样
  • 只考虑词汇表(句子)中的词频,新词(总词数变大)会影响已有的词的概率,这种采样没有意义.

总结

  • 层次softmax:①将N分类的sigmoid改成二分类sigmoid,计算量由V变成logV

    ​ ②更新目标:上下文权重向量W’改成tree的非叶节点词向量,W依旧要更新

    ​ ③适用于低频,避免生僻词远离根节点,致使计算代价过大

  • 负采样:每次迭代只更新部分权重W’和W(部分样本更新部分权重),适用于高频、低维度的词向量