热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

[NLP论文阅读]TheFixedSizeOrdinallyForgettingEncodingMethodforNeuralNetworkLanguageModels

论文原文:TheFixed-SizeOrdinally-ForgettingEncodingMethodforNeuralNetworkLanguageModels引言这篇文章提出

论文原文:The Fixed-Size Ordinally-Forgetting Encoding Method for Neural Network Language Models

引言

这篇文章提出了一种学习不定长序列表示的方法,并将该方法用于前反馈神经网络的语言模型(feedforward neural network language models, FNN-LMs),得到了不错的实验数据。作者通过用FOFE编码的序列替换FNN-LMs中原有的输入层实现了对FNN语言模型的改进。

Fixed-size Ordinally Forgetting Encoding

给定词表大小(vocabulary size)为K,FOFE使用one-hot编码来表示,每一个单词,即一个K维向量来表示单词。FOFE使用下列公式对不定长序列进行编码:
zt=αzt1+et(1tT)
其中,zt表示从输入序列中由第一个单词w1直到第t个单词wt组成的子序列的FOFE编码(假设z0=0),α是forgeting factor(常数),et是单词wt对应的one-hot向量。
那么,zT就可以看作是对序列w1,w2,...,wT的一种向量表示。
举例来说,如果词表为
A=[1,0,0]
B=[0,1,0]
C=[0,0,1]
那么,通过计算可以得到
ABC=[α2,α,1]
ABCBC=[α4,α+α3,1+α2]

FOFE编码有2个比较好的性质:
1. 如果0<α≤0.5,那么FOFE对任意K和T都是唯一的。
2. 如果0.5<α<1,那么FOFE对于大多数K和T都是唯一的,只有有限个α的取值是例外。

模型

[NLP论文阅读] The Fixed-Size Ordinally-Forgetting Encoding Method for Neural Network Language Models
传统的神经概率语言模型(Bengio提出的)在输入层用的是one-hot向量,然后通过词向量矩阵映射成一个低维的实值向量(如果是n-gram模型,词向量维度为m,那么就将前n-1个单词对应的词向量首尾相连成一个m(n-1)维的向量),然后通过隐藏层的计算,在输出层形成输出。

在这篇文章中,作者的做的改动在输入层。作者将原本输出层的one-hot向量替换成了FOFE编码。使用FOFE编码前n-1个单词的过程中,会渐渐弱化出现较早的单词对最终编码的影响,这也就是说,作者认为距离目标词越近的单词已接近对目标词的影响更大。并且,使用FOFE编码可以减小在投影层的生成的向量的维度,如果是1阶的FOFE FNN-LMs,那么投影层的维度就是m(词向量的维度),但是这不会降低复杂度。

实验

作者在2个数据集进行了对比实验。
1. the Penn Treebank(PTB) corpus(约有1000000单词,词表大小为10000)
2. The Large Text Compression Benchmark(LTCB),在这个数据集作者使用了enwik9数据集,是enwiki-20060303-pages-articles.xml的头109字节数据,其中训练集153M, 验证集8.9M, 测试集8.9M, 词表大小为80000,不在词表中的单词用标记。

通常评价一个语言模型的好坏使用的指标是迷惑度/困惑度/混乱度(preplexity),其基本思想是给测试集的句子赋予较高概率值的语言模型较好,当语言模型训练完之后,测试集中的句子都是正常的句子,那么训练好的模型就是在测试集上的概率越高越好,具体公式如下:
PP(W)=P(w1w2...wN)1N

链式规则: PP(W)=Ni=11P(wi|w1...wi1)N

如果是bigram: PP(W)=Ni=11P(wi|wi1)N

preplexity越小,句子概率越大,语言模型越好。

作者设计了2种FOFE-FNNLM模型,分别是1st-order FOFE-FNNLM和2nd-order FOFE-FNNLM,前者在输入层使用zt作为输入,后者则使用ztzt1作为输入。

在实验中,α的取值为0.7。

在PTB上的实验结果:
[NLP论文阅读] The Fixed-Size Ordinally-Forgetting Encoding Method for Neural Network Language Models

在LTCB上的实验结果:
[NLP论文阅读] The Fixed-Size Ordinally-Forgetting Encoding Method for Neural Network Language Models

总结

作者在Conclusions中写道:

Next, FOFE may be combined with neural networks (Zhang and Jiang, 2015; Zhang et. al., 2015b) for other NLP tasks, such as sentence modeling/matching, paraphrase detection, machine translation, question and answer and etc.

从实验结果来看,作者提出的对序列进行编码的FOFE方法是有效的,并且和RNN相比,这个方法简单,训练速度更快,可以在句子建模中进行尝试。

2017.10.18 上海。


推荐阅读
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 本文介绍了如何使用JSONObiect和Gson相关方法实现json数据与kotlin对象的相互转换。首先解释了JSON的概念和数据格式,然后详细介绍了相关API,包括JSONObject和Gson的使用方法。接着讲解了如何将json格式的字符串转换为kotlin对象或List,以及如何将kotlin对象转换为json字符串。最后提到了使用Map封装json对象的特殊情况。文章还对JSON和XML进行了比较,指出了JSON的优势和缺点。 ... [详细]
  • 本博文基于《Amalgamationofproteinsequence,structureandtextualinformationforimprovingprote ... [详细]
  • Opencv提供了几种分类器,例程里通过字符识别来进行说明的1、支持向量机(SVM):给定训练样本,支持向量机建立一个超平面作为决策平面,使得正例和反例之间的隔离边缘被最大化。函数原型:训练原型cv ... [详细]
  • 重入锁(ReentrantLock)学习及实现原理
    本文介绍了重入锁(ReentrantLock)的学习及实现原理。在学习synchronized的基础上,重入锁提供了更多的灵活性和功能。文章详细介绍了重入锁的特性、使用方法和实现原理,并提供了类图和测试代码供读者参考。重入锁支持重入和公平与非公平两种实现方式,通过对比和分析,读者可以更好地理解和应用重入锁。 ... [详细]
  • EzPP 0.2发布,新增YAML布局渲染功能
    EzPP发布了0.2.1版本,新增了YAML布局渲染功能,可以将YAML文件渲染为图片,并且可以复用YAML作为模版,通过传递不同参数生成不同的图片。这个功能可以用于绘制Logo、封面或其他图片,让用户不需要安装或卸载Photoshop。文章还提供了一个入门例子,介绍了使用ezpp的基本渲染方法,以及如何使用canvas、text类元素、自定义字体等。 ... [详细]
  • 开源Keras Faster RCNN模型介绍及代码结构解析
    本文介绍了开源Keras Faster RCNN模型的环境需求和代码结构,包括FasterRCNN源码解析、RPN与classifier定义、data_generators.py文件的功能以及损失计算。同时提供了该模型的开源地址和安装所需的库。 ... [详细]
  • 如何使用Python从工程图图像中提取底部的方法?
    本文介绍了使用Python从工程图图像中提取底部的方法。首先将输入图片转换为灰度图像,并进行高斯模糊和阈值处理。然后通过填充潜在的轮廓以及使用轮廓逼近和矩形核进行过滤,去除非矩形轮廓。最后通过查找轮廓并使用轮廓近似、宽高比和轮廓区域进行过滤,隔离所需的底部轮廓,并使用Numpy切片提取底部模板部分。 ... [详细]
  • 在IDEA中运行CAS服务器的配置方法
    本文介绍了在IDEA中运行CAS服务器的配置方法,包括下载CAS模板Overlay Template、解压并添加项目、配置tomcat、运行CAS服务器等步骤。通过本文的指导,读者可以轻松在IDEA中进行CAS服务器的运行和配置。 ... [详细]
  • 1Lock与ReadWriteLock1.1LockpublicinterfaceLock{voidlock();voidlockInterruptibl ... [详细]
author-avatar
手机用户2602923713
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有