《自然语言处理综论(Speech and Language Processing)》第七章笔记

7 Neural Networks and Neural Language Models (神经网络和神经语言模型)


本章主要介绍了神经网络以及应用神经网络的语言模型。神经网络由神经单元组成,每个神经单元将输入值乘以一个权重向量weight,添加一个偏差bias,再应用一个非线性激活函数( s i g m o i d sigmoid sigmoid/ t a n h tanh tanh/ r e l u relu relu)。在全连接前馈网络中,第i层的每个单元与第 i + 1 i+1 i+1层的每个单元相连,通过梯度下降等优化算法进行训练,通过误差反向传播,利用计算图上的逆向微分计算网络损失函数的梯度。神经语言模型利用神经网络作为概率分类器,计算给定前n个单词的下一个单词的概率。其可以利用预训练的嵌入embedding,也可以从零开始学习embedding。

神经网络的构建块是单个计算单元,从本质上讲,其是对输入加权求和再加上偏差项; z = w x + b z=wx+b z=wx+b,非线性函数 f f f将应用于 z z z将其激活,输出 y y y y = a = f ( z ) y=a=f(z) y=a=f(z)。常见的激活函数 f ( ) f() f()包括 s i g m o i d sigmoid sigmoid t a n h tanh tanh R e L U ReLU ReLU s i g m o i d sigmoid sigmoid x x x映射到[0,1]为S型, t a n h tanh tanh x x x映射为[-1,1], R e L U ReLU ReLU y = m a x ( x , 0 ) y=max(x,0) y=max(x,0) t a n h tanh tanh可以平滑进行微分,将离群值映射岛郡治,ReLU接近线性; t a n h tanh tanh s i g m o i d sigmoid sigmoid z z z值高导致 y y y饱和saturated,接近1,导数接近零,可能导致梯度消失vanishing gradient。

构建可计算二元输入的逻辑AND和OR功能的感知器非常容易,但XOR异或很难,因为其不是线性可分linearly seperatable问题。解决XOR问题的方法是需要具有非线性激活函数的单元网络。而简单线性单元组成的网络始终可以被简化为一个单层线性单元,无法解决XOR问题。
最简单的神经网络是前馈神经网络feedforward network,是一个多层网络,单元之间没有循环连接,有时也称之为多层感知机multi-layer perceptrons MLP, 其中每一层都是全连接(full connected)。对于训练神经网络,首先需要一个损失函数loss function,来对系统输出和真实输出gold output之间的距离建模,通常使用用于逻辑回归的损失函数,即交叉熵损失cross-entropy loss。为了找到使损失函数最小的参数,使用梯度下降优化算法。梯度下降需要知道损失函数的梯度,该向量包含损失函数相对于每个参数的偏导数,这就需要误差反向传播error backpropagation或逆向微分reverse differentiation的算法。

交叉熵损失知识对应于正确类的输出概率的对数,因此也称之为负对数似然损失negative log likelihood loss。计算损失函数的梯度需要损失函数相对于每个参数的偏导数。计算图是计算数学表达式的过程表示,其中的计算被分解成独立的操作,每个操作被建模为图中的一个节点,计算图的重要性来自于向后传递,它用于计算权重更新所需的导数。

神经网络中的优化是一个非凸优化问题,可以使用各种形式的正则化来防止过拟合,比如丢弃dropout,在训练期间从网络中随机丢弃一些单元及其连接。

神经语言模型相比于n-gram不需要平滑,可以处理更长的历史,可以在类似单词的上下文中进行概括。同时对于给定大小的数据集,神经语言模型有更高的预测精度,但比传统语言模型慢很多。前馈神经LM是一种标准的前馈网络,以时间t处的一些之前的单词的表示作为输入,并输出可能的下一个单词的概率分布。先验上下文是由前一个单词的嵌入来表示的。将之前的上下文表示作为嵌入,而不是具体精确词汇,这允许神经语言模型比n-gram更好地泛化到不可见的数据。假设有一个嵌入字典E,为词汇表V中的每个单词提供embedding,在时间t有一个移动窗口,带有一个embbeding向量,表示三个先前单词中的每个单词,这三个向量被拼接在一起产生一个 x x x为神经网络的输入层,输出是 s o f t m a x softmax softmax,其概率分布在单词上, y n y_n yn是下一个单词 w t w_t wt V n V_n Vn的概率。依赖另一种算法已经学会了输入单词的嵌入表示形式是预训练pretraining。正向传递的流程是,先从E中选择三个embedding,给定前三个词,查找其索引,创建三个独热向量,将每个独热向量乘以嵌入矩阵E,得到第一隐藏层的第一部分为projection layer。由于E的每一行是一个单词的嵌入,而输入时单词 V i V_i Vi的单列向量 x i x_i xi,输入 w w w的投影层位 E x i = e i Ex_i=e_i Exi=ei,即单词嵌入,将三个单词嵌入拼接起来。乘以 W W W并通过 R e L U ReLU ReLU等激活函数得到隐藏层 h h h,乘以 U U U,最终应用 s o f t m a x softmax softmax,输出层的每个节点 i i i估算概率。

为了训练模型,设置所有参数 E E E W W W U U U b b b,做梯度下降,在计算图上使用误差反向传播来计算梯度。训练不仅设置了 W W W U U U,当预测即将到来的单词时,学习每个单词的嵌入 E E E,能最好地预测之后单词。

参考

Speech and Language Processing 电子版
7 Neural Networks and Neural Language Models
自然语言处理综述 中文版

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值