论文阅读:《神经机器翻译和序列对序列模型:一个教程》中
来源:互联网 发布:unity3d 就业 编辑:程序博客网 时间:2024/05/22 13:10
4 对数线性语言模型
本节讨论另一种语言模型:对数线性语言模型。它的计算方法跟上面提到的基于计数的语言模型很不同。
4.1 模型公式化
对数线性语言模型也是计算给定前几个词的条件下下一个词的条件概率,但是方法不一样,基本分为以下几步:
- 计算特征:对数线性语言模型围绕特征这个概念。特征是“上下文中某个对预测下一个词有用的东西”。更精确地,我们定义一个特征函数
ϕ(et−1t−n+1) ,以上下文为输入,输出一个实值特征向量x∈ℝN 来用N 个特征描述上下文。- 计算得分:有了特征向量之后,我们就要用它预测每个单词的概率。为此,我们计算一个得分向量
s∈ℝ|V| 对应每个词的似然。我们用模型参数W∈ℝ|V|×N,b∈ℝN 来计算得分向量:
s=Wx+b - 计算概率:把得分向量转换成概率向量:
p=softmax(s)
解读:
4.2 学习模型参数
首先我们要定义损失函数
l ,一个表达我们在训练数据上做的有多差的函数。大多数情况下,我们假设这个损失等于负对数似然:
l(εtest;θ)=−logP(εtest⎪θ)=−∑E∈εtrainlogP(E⎪θ)
解读:这里的参数不再是
用随机梯度下降更新参数。为了要保证训练过程稳定,还有其他东西要考虑:
- 调整学习率:一开始学习率比较大,然后逐渐减少。
- 早停:通常会留出一个开发集(验证集),在这个集上测量对数似然,然后保留那个最大对似然的模型。这是为了防止过拟合。另一个防止过拟合的办法是当开发集上的对数似然停止提高的时候减小学习率。
- 洗牌顺序:有的时候顺序有所偏向,为了防止最后训练的模型更贴合结尾部分的数据,我们需要把整个数据训练的顺序洗牌。
4.3 对数线性模型的导数
略
4.4 语言模型的其他特征
对数线性模型好的原因是它允许我们灵活地选择我们认为对预测下一个词有用的特征,包括:
- 上下文特征:如之前所说。
- 上下文类:把相似的词归为一类。
- 词后缀特征:比如ing。
- 词袋特征: 跟只用句子里前n个词相反,我们可以用之前所有的词,然后不顾顺序。这样我们会损失排列信息,但是会知道哪些词会一同出现。
5 神经网络和前馈语言模型
略
6 循环神经网络语言模型
6.1 - 6.4 略
6.5 Online, Batch, and Minibatch Training
对于每一个样例进行参数更新的学习叫做online学习。与之相反,batch学习将整个训练集视为单个单元,计算这个单元的梯度,然后在遍历所有数据之后进行参数更新。
这两个更新策略各有权衡:
- online学习更快地找到一个好的答案。
- 训练结束后,batch学习更稳定,因为它不受最后看见的数据的影响。
- batch学习更容易陷入局部最优解。online学习的随机性使得模型能够跳出局部最优,找到一个全局最优。
minibatching是以上两者的折中。minibatching每次计算n个训练样例的梯度。
阅读全文
0 0
- 论文阅读:《神经机器翻译和序列对序列模型:一个教程》中
- 论文阅读:《神经机器翻译和序列对序列模型:一个教程》上
- 神经机器翻译中语言学知识的引入
- 一个序列中连续子序列的最大和
- 神经机器翻译(Neural Machine Translation)系列教程
- 神经机器翻译(Neural Machine Translation)系列教程
- TensorFlow 神经机器翻译教程-TensorFlow Neural Machine Translation Tutorial
- 神经机器翻译(Neural Machine Translation)系列教程
- 神经机器翻译(Neural Machine Translation)系列教程
- 神经机器翻译(Neural Machine Translation)系列教程
- 神经机器翻译(Neural Machine Translation)系列教程
- 神经机器翻译(Neural Machine Translation)系列教程
- 神经机器翻译(Neural Machine Translation)系列教程
- 神经机器翻译(Neural Machine Translation)系列教程
- 求一个序列中逆序对的数目
- 多语言神经机器翻译
- 神经机器翻译NMT
- 序列模型
- 面试题 14:调整数组顺序使奇数位于偶数前面
- MongoDB安装与测试
- BitmapFactory获取Bitmap图片以及解决OOM异常
- 守护进程及守护进程中两次fork问题
- redis服务端基本命令
- 论文阅读:《神经机器翻译和序列对序列模型:一个教程》中
- stm32 使用FSMC连接bank1的第三个存储区程序参考及说明
- 如何导出sql脚本文件?
- 傅里叶变换和正弦函数和欧拉公式
- Android DataBinding && MVVM [U04]
- Java实现神经网络方法
- 33333333333
- spring 中的 RowMapper 类
- 守护进程