从统计语言模型到预训练语言模型---神经网络语言模型

2023-09-21 07:51:55

随着神经网络的发展,神经语言模型(Neural Network Language Models,NNLM)展现出了比统计语言模型更强的学习能力,克服了N-gram语言模型的维度灾难,并且大大提升了传统语言模型的性能。神经网络先进的结构使其能有效的建模长距离上下文依赖,以词向量(Word Embedding)为代表的分布式表示的语言模型,深刻地影响了自然语言处理领域的其他模型与应用。

神经网络语言模型的主要代表

前馈神经网络语言模型

在具体实现上,前馈神经网络语言模型与N-gram语言模型计算条件概率的方法是简单的用词频做除法然后归一化不同,该方法将所考虑的问题建模后先为其构造一个目标函数,然后对这个目标函数进行优化,从而求得一组最优的参数(即上述的参数量),最后再利用这组参数对应的模型来预测整个句子成立的概率。利用最大化对数似然,将目标函数设计为:

其中,Context代表词w的上下文,对应N-gram就是词w的前N-1个词,θ为待定参数集,这样将计算所有的条件概率转化为了最优化目标函数,求解得到θ的过程。 因此,通过选取合适模型可以使得θ参数的个数远小于N-gram模型中参数的个数,这可以解决参数解的问题;利用神经网络最后一层的softmax进行归一化求解,得到的概率是平滑的,也解决了语言模型稀疏性的问题。前馈神经网络语言模型沿用了马尔可夫假设,即下一时刻的词只与过去n-1个词相关,通过将词映射到低维向量,从而解决了维度灾难问题。其主要由输入层、隐藏层和输出层构成。在输入层中,由文本组成的词序列转化为模型可接受的低维稠密向量。先给每个词在连续空间中赋予一个向量(词向量),再通过神经网络去学习这种分布式表征。

前馈神经网络语言模型示例

  • 优点:利用神经网络去建模当前词出现的概率与其前n-1个词之间的约束关系,但这种方式相比n-gram具有更好的泛化能力,只要词表征足够好,从而很大程度地降低了数据稀疏带来的问题。尽管与统计语言模型的直观性相比,神经网络的黑盒子特性决定了NNLM的可解释性较差,但这并不妨碍其成为一种非常好的概率分布建模方式。总结起来,优点可以是1)长距离依赖,具有更强的约束性;2)避免了数据稀疏所带来的OOV问题;3)好的词表征能够提高模型泛化能力。

  • 缺点:这个结构的缺点也比较明显,仅包含了有限的前文信息,并且无法解决长距离依赖。并且,模型训练时间长;神经网络黑盒子,可解释性较差。

循环神经网络语言模型

在语言的应用场景中,固定长度的历史并不总能提供有效信息,有时候需要依赖长期历史才能有效完成任务,这时就需要新的神经网络模型来处理长序列问题了。举例来说,对于以下这个长序列,采用较短的固定长度的历史就无法判断后面的“他”是指“小李”,

添加图片注释,不超过 140 字(可选)

为了解决定长信息依赖的问题,Mikolov 于2010年发表的论文 Recurrent neural network based language model 正式揭开了循环神经网络(RNN:Recurrent Neural Network)在语言模型中的强大历程,并随后出现LSTM、GRU等变体。 而循环神经网络(RNN)在处理序列信息时具有优势,其上一时刻的模型隐藏层状态会作为当前时刻模型的输入,因此每一时刻的隐藏层状态都会维护所有过去词的信息。因此循环神经网络语言模型不再基于马尔可夫假设,每个时刻的单词都会考虑到过去所有时刻的单词,词之间的依赖通过隐藏层状态来获取。不过尽管如此,循环神经网络在处理长序列时可能会遇到梯度消失或梯度爆炸的问题导致训练失效。当序列较长时,序列后部的梯度很难反向传播到前面的序列,比如10个元素以前,这就产生了梯度消失问题。对于梯度爆炸可以采用算法来控制梯度上线,也就是所谓的“梯度裁剪”。而对于梯度消失,则需要采用一些使用了特殊门控组件的循环神经网络,也就是所谓的 Gated RNN。

循环神经网络语言模型

长短期记忆神经网络语言模型

为了解决RNN的长期依赖和梯度消失问题,LSTM被提出。长短期记忆神经网络(Long Short-Term Memory,LSTM)是一种 Gated RNN,适合被用于处理和预测时间序列中间隔和延迟非常长的重要事件。

标准的RNN 中只包含着单个tanh 层的重复模块,而 LSTM 存在着更多以特殊方式进行交互的神经网络。这些特殊模块可以决定信息的遗忘和记忆,实现对重要信息的长期记忆。

长短期记忆神经网络语言模型

相比于原始的 RNN 的隐层 (hidden state),LSTM 增加了一个细胞状态 Ct(cell state),这是信息记忆的地方, 从每个单元中流过时,通过控制门来决定信息的增删。LSTM 的门结构主要有 3 个,为“遗忘门”,“输入门”和 “输出门”。通过门控组件来决定什么信息需要被长期记忆,而哪些信息则是不重要的可以遗忘的,以此保持长期记忆的能力。遗忘门结合上一隐藏层状态值和当前输入,通过sigmoid函数,决定舍弃哪些旧信息;输入门和tanh决定从上一时刻隐藏层激活值和当前输入值中保存哪些新信息,输出门结合tanh决定上一时刻隐藏层激活值、当前输入值以及当前细胞状态中哪些信息输出为本时刻的隐藏层状态。

打一个比较通俗的比方,RNN 就像只依靠记忆,对最近发生的事情印象深刻,但很容易遗忘过去比较久的事情。LSTM 就像借助一个日记本来辅助记忆,可以把想要记住的信息写在日记里(输入门),但是由于本子的大小是有限的,因此需要擦除一些不必要的记忆(遗忘门),这样来维持长期的记忆。

PS:欢迎扫码关注微信公众号^-^.

更多推荐

黄金代理前景如何,有得搞吗?

现货黄金代理这个职业时常都听人说过了,随着近期现货黄金走势不断出现行情,尤其是美国通胀严重,地缘政治局势频发,黄金走势不断获得支撑而走高。在这样的背景下,现货黄金代理这个职业的前景如何呢?其实对于现代人来说,进行现货黄金代理是很好的选择,近些年现货黄金投资人数不断上涨的趋势,所以现货黄金代理也是是除了比特币等加密货币品

go语言基础--面向对象杂谈

面向过程所谓的面向过程就是:强调的是步骤、过程、每一步都是自己亲自去实现的。面向对象所谓的面向对象其实就是找一个专门做这个事的人来做,不用关心具体怎么实现的。所以说,面向过程强调的是过程,步骤。而面向对象强调的是对象,也就是干事的人。在程序中,可以通过属性和方法(函数)来描述类。属性就是特征,方法(函数)就是行为。面向

ARM架构过程调用标准AAPCS(学习)

AAPCS是ARM架构的处理器规定的一些标准。参数和返回值传递,对于简单的情况,输入参数由R0-R3分别用来记录第1到4个参数。当传递的参数超过4个时,就需要借助栈来保存参数。函数的返回值通常保存在R0中,若返回值为64位,R1也用来保存返回值。函数调用中的寄存器用法。函数或子程序应该保持R4-R11、R13和R14的

Vue学习笔记总结

目录1、Vue核心1.1什么是vue?1.2什么是mvvm?​编辑1.3插值表达式{{}}2.Vue中的常用指令2.1内容渲染指令2.2条件渲染指令2.3事件绑定指令2.4属性绑定指令2.5列表渲染指令2.5.1小案例-小黑的书架2.6v-for中的key2.7双向绑定指令3.指令修饰符3.1什么是指令修饰符?3.2按

esbuild中文文档-基础配置项(General options - Tsconfig、Tsconfig raw)

文章目录TsconfigTsconfigraw结语哈喽,大家好!我是「励志前端小黑哥」,我带着最新发布的文章又来了!老规矩,小手动起来~点赞关注不迷路!esbuild简单介绍esbuild为了突破了JavaScript语言的瓶颈,采用了Go语言编写,构建速度与同代码量下的webpack对比提升在10倍以上,开创了构建工

(并查集) 1971. 寻找图中是否存在路径 ——【Leetcode每日一题】

❓1971.寻找图中是否存在路径难度:简单有一个具有n个顶点的双向图,其中每个顶点标记从0到n-1(包含0和n-1)。图中的边用一个二维整数数组edges表示,其中edges[i]=[ui,vi]表示顶点ui和顶点vi之间的双向边。每个顶点对由最多一条边连接,并且没有顶点存在与自身相连的边。请你确定是否存在从顶点sou

为何学linux及用处

目前企业使用的操作系统无非就是国产类的,windows和linux类。我们要提升自己的技能,需要学习这两款。我记得在大学时期,学习过windows以及linux,但当时觉得又不常用,就学的模棱两可。毕业之后,你会发现,其实这两种操作系统是很主流的。为什么学?下面就是一些工作中遇到的例子分享一下。我记得在企业中有次遇到数

一款固定资产设备管理系统、对常用资产设备进行信息化管理

一、开源项目简介EAM固定资产设备管理系统,满足中小企业基本需求,对常用资产设备进行信息化管理,包含自定义支持各类设备、自带导入导出、维护工作统计、采购管理、文档管理、合同管理等功能。实现企业对资产的基本管理,包含对资产的登记、维修、调拨、转移等基本功能的支持,并提供对资产的耗材、库存进行管理,有完善的组织架构,非常适

2023/09/17

文章目录1.vscode展开所有代码快捷键ctrl+k+j2.git删除所有stash或指定stashgitstashdrop[可选stash名]3.vue在函数默认参数后增加新参数4.gitpush添加“-u”参数5.vscode快捷输入符号$的使用6.WebGL之什么是GLB&GLTF文件?7.WebGL之什么是H

Appium混合页面点击方法tap的使用

原生应用开发,是在Android、IOS等移动平台上利用官方提供的开发语言、开发类库、开发工具进行App开发;HTML5(h5)应用开发,是利用Web技术进行的App开发。目前,市面上很多app都是原生和h5混合开发,这样做的好处在于:1)开发效率高,节约时间同一套代码Android和IOS基本都可用。2)更新和部署比

SpringMVC之JSON返回及异常处理

目录JSON处理导入依赖配置Spring-mvc.xml@ResponseBody注解使用测试目录JSON处理导入依赖配置Spring-mvc.xml@ResponseBody注解使用测试Jackson定义用法常用注解统一异常处理为什么要全局异常处理?异常处理思路SpringMVC异常分类综合案例异常处理方式一异常处理

热文推荐