如果想在试验阶段从这个语言模型取样词,我们可以在每一时刻 t 贪婪地选择最高概率的词 p(w_t \: | \: w_{t-1} \cdots w_{t-n+1}),或者用定向搜索。举个例子,我们可以用它来生成像运用了 LSTM 作为解码器的 Karpathy 的 Char-CNN 中的任意文本序列。 经典神经语言模型 Bengio 等人在 2013 年 [1] 提出的经典神经语言模型包含一个前向传播神经网络,它有一个隐藏层,用来预测文本序列的下一个单词,如图 2 所示。
图 2: 经典神经语言模型(Bengio 等人,2013 年) 他们的模型的最大化目标函数就是我们在上文中介绍的典型的神经语言模型的目标(为了简洁,我们忽略规范化(regularization)这一项):
f(w_t , w_{t-1} , \cdots , w_{t-n+1}) 是这个模型的输出,即 softmax 计算出的概率 p(w_t \: | \: w_{t-1} , \cdots , w_{t-n+1})。n 在这里就是传入这个模型的之前 n 个词的数量。 Bengio 等人首先提出词嵌入模型,它是一个在实数范围 R 内的词特征向量。他们的架构非常经典,是目前各种改进方法的原型。他们原始模型中的基础模块依然能在现在的许多神经网络和其他词嵌入模型中找到。 嵌入层:一个用索引向量和词嵌入矩阵相乘得出的词嵌入层; 中间层:一个可包含一层或多层的中间层,例如,一个可以将之前出现的 n 个词非线性地组合在一起的全连接层(fully-connected layer); Softmax 层:一个最终层,输出词汇库 V 中词的概率分布。 另外,Bengio 等人发现了目前最先进模型中存在的两个核心问题: 他们发现 2. 中间层可以由一个 LSTM 替代,这个已被最新神经语言模型使用。 他们发现最后的 softmax 层(更确切地说,是标准化项)是神经网络的瓶颈,因为计算 softmax 的计算复杂度与词汇库 V 中词的数量成正比,而个数量通常为成百上千,乃至几百万。 因此,如何在一个大词汇库中用较低的计算成本计算 softmax,成为了建立神经语言模型和词嵌入模型的一个关键挑战。 C&W 模型 在 Bengio 等人对神经语言模型的的最初探索以后,计算机计算能力和算法还尚不允许在大词汇库上的训练。词嵌入模型的研究因而止步不前。 Collobert 和 Weston [4](因此被称为 C&W)在 2008 年展示了词嵌入模型在一个充分大的数据库中如何向下游任务携带语法和语义,并且提升性能。他们 2011 年的论文充分解释了他们的做法。 他们的解决方法避免了对于 softmax 层的昂贵计算,其方法是采用另一个目标函数:Collobert 和 Weston 的神经网络输出是正确词序列相对于不正确词序列高出的分数 f_θ,而不是 Bengio 等人的论文中用来最大化基于之前的词出现的下一个词概率的的交叉熵标准。他们为了这个目标函数采用了一个成对排名的标准,如下所示:
他们的模型从所有包含 n 个词的窗口 X 中取样得到正确的窗口 x。对于每一个窗口 x,用 V 中的 w 代替 x 的中间词来产生一个不正确的版本 x(w),而模型的目标就是最大化模型对于正确的窗口和不正确窗口的分数的距离。如图 3 所示,他们的模型架构类似于 Bengio 等人的模型。
图 3: 去掉了排名目标的 C&W 的模型(Collobert 等人,2011 年) 计算后的语言模型能够生成具有许多语义关系的词嵌入,例如国家能够聚类在一起,语法上接近的词在向量空间上相邻。他们的排名函数避免了 softmax 的复杂计算,且保持了 Bengio 等人论文中计算同样昂贵的完全相连的中间层(2.)(见图 3 中的 HardTanh 层)。他们对于 130000 个词的模型需要花费 7 周来训练的有一部分原因在于此。 (责任编辑:本港台直播) |