目录
对比模型
马尔科夫假设
某一个词的出现仅依赖前面出现的几个词
前馈神经网络语言模型 (NNLM)
Feedfoward Neural Net Language Model
首先会给每一个单词分配一个index,在输入层映射成一个向量并concat,过隐藏层经过tanh激活,最终在输出层被softmax激活得到一个概率,梯度下降使得正确的单词概率最大。根据前n-1个词预测第n个位置的单词。
输入层
困惑度
L是一句话的loss,T是句子中词的个数。
循环神经网络语言模型 (RNNLM)
每个事件步预测一个词,在预测第n个词的时候用了前n-1个词的信息。就没有马尔科夫假设了,Loss也是一致的。
Word2vec
Log-linear model :将语言模型看成一个多分类问题,相当于线性分类器加上softmax。skip-gram和cbow都是log线性模型。
语言模型的基本思想:句子中的下一个词的出现和前面的词是有关系的,所以可以使用前面的词预测下一个词。
Word2vec:句子中相近的词之间有联系。Word2vec的基本思想就是用词来预测词,skip-gram使用中心词预测周围的词。cbow使用周围的词来预测中心词。(实际上是一个窗口的概念,用词来预测词)
skip-gram
定义多大的范围是周围词。
首先给出index,one-hot编码,乘以需要训练的中心词向量矩阵W,得到1D的向量,再乘以周围词的词向量矩阵,得到1V的向量。因为最后一层会经过softmax,会有一个概率,反向传播以优化得到中心词向量矩阵以及周围词向量矩阵。其中V是所有中心词的个数,D是词向量维度。
损失函数
cbow
从周围词的index,乘以周围词矩阵,通过加和或平均的方式得到中心词向量,再乘以中心词矩阵,通过softmax得到每一个中心词的概率。反向传播优化。
损失函数
vc是实际的一个中心词,vj是全部的中心词矩阵。
关键技术
Hierarchical softmax
首先是skip-gram
对于skip-gram来说,θ都是参数,代表周围词向量,Vc代表中心词向量,每一个层次的sigmoid和都为1,相当于在这个树中进行查找,找到最大概率。(为什么is会在上层:是因为权重大,huffman树要求权重大的在浅节点)
会转换成一个公式,[[n(w,j+1) = ch(n(w,j))]]是一个判定,判断下一个节点是右侧节点就是1,如果是左侧节点就是-1。
接下来说的是c-bow
U0T是周围词向量的平均
Negative sampling
原来是多分类任务,现在变成二分类任务,正样本是中心词加真正的周围词,负样本通过在词表中随机选择k个周围词组成,最大化损失函数即可。但是中心词向量矩阵和周围词向量矩阵的大小没有变化,所以参数量比层次聚类要多,但是每一次计算概率的个数要小一些。
这里展示了采样方法,是因为高频词汇 a the and这类词带的词意很少,不适用。
我们再来看C-bow的负采样
大幅度减少了计算量
Subsampling of Frequent Words
自然语言处理共识:文档或者数据集中出现频率比较高的词往往携带信息少,出现频率低的词语往往携带的信息多。
为了更多的训练含有多信息的词对,开发了重采样。
那么词频越大,被删除的几率就越大。