Word Representation in Vector Space
摘要
当初的自然语言处理经常将单词看成原子,单词之间没有相似性,如:one-hot编码处理。这样做有一定的好处,比如:简单、鲁棒而且在大量数据上训练的简单模型效果要比少量数据上训练的好。
随着最近几年机器学习技术的进步,有了在更大的数据集上训练更复杂模型的可能性;而且应该优于简单模型。可能最成功的概念是使用单词的分布式向量表示。例如,基于语言模型的神经网络就明显优于N-gram分布表示(distributional representation)
论文的目标是使用一亿左右大小的数据集进行训练
值得一提的是:
分布表示(distributional representation):是基于分布假设理论,利用共生矩阵来获取词的语义表示,可以看成是一类获取词表示的方法。
分布式表示(distributed representation),描述的是把文本分散嵌入到另一个空间,一般从是从高维空间嵌入到低维空间。
虽然分布式表示是在分布表示的原理上构建的,事实上它们是两个完全不同的概念,要注意区分。
模型构建
训练复杂度:E-训练周期;T:训练集的词个数;Q:根据模型结构而定(多是根据模型的参数进行定义)所有模型训练使用mini-batch梯度下降,Adagrad自适应的学习率
训练环境:
并行训练:framework—DistBelief
并行的运行相同模型的多个副本,每个副本通过一个中央服务器更新梯度
训练数据集:使用Google News corpus 有6B tokens,取前1m最频繁的词汇
Feedforward Neural Net Language Model (NNLM)
input: N个1-V向量
input与project之间: 权重 N*D
模型复杂度:Q = N ×D +N ×D ×H +H ×V
复杂度主要在project和hidden之间,因为投影层是稠密的
N:输入前10个词,D:投影层神经元个数500-2000,H:隐藏层神经元个数500-1000,V:词汇表的大小,输出维度
解决方法:分层的softmax,训练中使用不规范的模型避免归一化,使用二叉树表示词汇log(V),但是这种加速并不重要因为计算瓶颈在NDH,因此提出了一种结构没有隐藏层,只依赖于softmax
Recurrent Neural Net Language Model (RNNLM)
基于语言模型的循环神经网络RNNLM
优势:不需要制定上下文长度、理论上RNN比浅层NN有效表示复杂模式
RNN没有投影层,使用recurrent matrix连接隐藏层
允许形成短期记忆,因为可以基于当前输入和之前时间的隐藏层状态
WordVec
包含CBOW(Continuous Bag-of-Words)和Skip-gram(Continuous Skip-gram Model)两种模型,前者由上下文输出当前词后者由当前词输出上下文
CBOW
CBOW包括:输入层、投影层和输出层。以样本
(
C
o
n
t
e
x
t
(
w
)
,
w
)
(Context(w),w)
(Context(w),w)为例(假设
C
o
n
t
e
x
t
(
w
)
Context(w)
Context(w)由
w
w
w前后各
c
c
c个词构成)
1.输入层:包含
C
o
n
t
e
x
t
(
w
)
Context(w)
Context(w)中
2
c
2c
2c个词的词向量
v
(
C
o
n
t
e
x
t
(
w
)
1
)
,
v
(
C
o
n
t
e
x
t
(
w
)
2
)
,
.
.
.
,
v
(
C
o
n
t
e
x
t
(
w
)
2
c
∈
R
m
)
v(Context(w)_1),v(Context(w)_2),...,v(Context(w)_{2c} \in \R^m )
v(Context(w)1),v(Context(w)2),...,v(Context(w)2c∈Rm)这里
m
m
m的含义是词向量的长度。
2.投影层:将输入层的
2
c
2c
2c个向量做求和累加,即
x
w
=
∑
i
=
1
2
c
v
(
C
o
n
t
e
x
t
(
w
)
i
)
x_w = \sum_{i=1}^{2c}v(Context(w)_i)
xw=i=1∑2cv(Context(w)i)
3.输出层对应一颗二叉树,以语料中出现过的词当叶子结点,以各词在语料中出现的次数当权值构造出来的Huffman树。在这个Huffman树中,叶子结点共
(
N
=
∣
D
∣
)
(N=|\mathcal{D}|)
(N=∣D∣)中的词,非叶子结点
N
−
1
N-1
N−1个
Skip-gram
输入层:只包含当前样本的中心词
w
w
w 的词向量
v
(
w
)
∈
R
m
v(w) \in \R^m
v(w)∈Rm
投影层:恒等投影,将
v
(
w
)
v(w)
v(w)投影到
v
(
w
)
v(w)
v(w)。因此这个投影层其实是多于的,之所以保留主要是方便和CBOW作对比
输出层:也是一颗Huffman树
结论:
1.与流行的神经网络模型(前馈和递归)相比,使用非常简单的模型结构训练高质量的词向量是可能的。因为计算复杂度低得多,可以从更大的数据集中计算非常精确的高维单词向量。
2.使用DistBelief,能够在trillion words 基础上训练CBOW和skip-gram,训练词汇数量级变大
-
如果使用更多的数据集和高维度的词向量会有更高的准确率,但是同时也耗费更多的时间
-
使用两倍的数据训练效果和迭代三次的效果相似,而且速度还略微加速了
参考博客: