每天五分钟自然言语了解NLP:神经网络言语模型的概述
作者头像
  • 金鸡湖创业长廊
  • 2020-06-10 21:12:20 6

在接下来的课程中,我们将深入探讨语言模型,其中主要介绍了统计语言模型,但这种模型也存在一些问题:

  • 基于统计的语言模型难以处理较大的n值。通常情况下,3-gram较为常见,更大的n值会导致计算复杂度呈指数级增长。这限制了统计语言模型在捕捉长距离上下文依赖关系方面的能力。
  • 统计语言模型无法有效表示词语之间的相似性。

为了解决这些问题,研究者提出了一种基于神经网络的语言模型。这一创新性的工作最早由Bengio等人在2003年提出,首次将深度学习的思想引入语言模型中。该模型采用三层前馈神经网络进行建模。研究还发现,通过将训练所得神经网络语言模型(Neural Net Language Model, NNLM)的第一层参数作为词的分布式表示,可以有效地获取词语之间的相似度。

其实,NNLM也是一种n-gram模型,但它的优势在于能够处理更大的n值。接下来我们将详细探讨神经网络语言模型:

语言模型的基本任务是计算一句话的概率,公式如下: [ P(S) = P(W1, W2, ..., Wn) = P(W1) times P(W2 | W1) times P(W3 | W1W2) times ... times P(Wn | W1, W2, ..., W_{n-1}) ]

这个公式反映了语言模型的核心思想,即通过上文预测当前词,从而使概率最大化。接下来,我们将介绍第一个神经网络语言模型——NNLM。

NNLM模型非常简洁,它接受当前词( Wt )之前n-1个词作为输入,然后预测当前词( Wt ),使整个概率最大化( P(Wt | W{t-1}, ..., W_{t-n+1}) )。为了方便计算,通常对概率进行对数变换,将连乘转换为连加。

在优化过程中,我们只需要关注概率的最大化,或者等价地,最小化负对数似然(-L)。这样的模型具备判断给定句子是否符合人类语言的能力。

接下来,我们详细介绍NNLM模型的具体结构:

输入层:假设每次使用前n-1个词来预测当前词( Wt ),在这个模型中,每次输入n-1个词,并将当前词( Wt )作为预测目标。每个单词( t )用one-hot编码(维度为|V|)作为原始输入,随后乘以矩阵Q(矩阵尺寸为|V|×m,其中|V|是词汇表大小,m是词向量维度)以获得词向量( C(W_t) ),维度为m。然后将所有词向量拼接成一个(n-1)×m的向量,作为神经网络的输入。

隐藏层:隐藏层的参数矩阵尺寸为(n-1)m×h,将拼接好的向量输入此层,其维度为h。随后通过非线性激活函数tanh处理,隐藏层的输入维度变为h。

输出层:输出层的参数矩阵尺寸为h×|V|,其中V代表词汇表中的总词数。隐藏层的输入经过输出层的参数矩阵,此时维度为|V|。最后,对这个|V|维向量应用softmax函数,得到|V|维的概率向量: [ P(Wt | W{t-1}, ..., W_{t-n+1}) ]

这个概率向量的每个维度对应字典中的词索引,例如字典中词( Wt )的索引是100,那么概率向量的第100维就是词( Wt )的概率。我们的目标是使这个概率最大化。对于一句话中的所有词,通过神经网络计算出每个词的概率,并进行连乘或对数相加,最终得到的目标函数如下:

[ text{目标函数} = -sum{t=1}^{T} log P(Wt | W{t-1}, ..., W{t-n+1}) ]

其中T是训练样本中的总词数。在训练时,将训练语料转换成一个长度为T的超长词序列,使用长度为n的窗口滑动,窗口的前n-1个词作为输入,第n个词作为( W_t )。

总结来说,目前更多使用循环神经网络(RNN)构建语言模型。下一篇文章我们将进一步探讨这一话题,同时NNLM中的矩阵Q实际上提供了词向量,这将在后续课程中详细讲解。

    本文来源:图灵汇
责任编辑: : 金鸡湖创业长廊
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
言语神经网络概述模型了解分钟每天自然NLP
    下一篇