espnet中的transformer和LSTM语言模型对比实验
本文分享自华为云社区《espnet中的transformer和LSTM语言模型对比---以aishell为例》,作者: 可爱又积极 。
NLP特征提取器简介 - RNN和Transformer
近年来,深度学习在各个NLP任务中都取得了SOTA结果,我们先了解一下现阶段在自然语言处理领域最常用的特征抽取结构。
长短期记忆网络(LSTM)
传统RNN的做法是将所有知识全部提取出来,不作任何处理的输入到下一个时间步进行迭代。就像参加考试一样,如果希望事先把书本上的所有知识都记住,到了考试的时候,早期的知识恐怕已经被近期的知识完全覆盖了,提取不到长远时间步的信息是很正常的。而人类是这样做的吗?显然不是的,我们通常的做法是对知识有一个理性判断,重要的知识给予更高的权重,重点记忆,不那么重要的可能没多久就忘了,这样,才能在面对考试的时候有较好的发挥。在我看来,LSTM的结构更类似于人类对于知识的记忆方式。理解LSTM的关键就在于理解两个状态ct和at和内部的三个门机制:
![](https://img-blog.csdnimg.cn/img_convert/3198812b6cc8bfa92d779548407809e7.png)
图中我们可以看见,LSTM Cell在每个时间步接收上个时间步的输入有两个,传给下一个时间步的输出也有两个。通常,我们将c(t)看作全局信息,at看作全局信息对下一个Cell影响的隐藏状态。
遗忘门、输入门(图中的update gate)和输出门分别都是一个激活函数为sigmoid的小型单层神经网络。由于sigmoid在(0,1)范围内的取值,有效的用于判断是保留还是“遗忘”信息(乘以接近1的值表示保留,乘以接近0的值表示遗忘),为我们提供了信息选择性传输的能力。
这样看下来,是不是觉得LSTM已经十分"智能"了呢?但实际上,LSTM还是有其局限性:时序性的结构一方面使其很难具备高效的并行计算能力(当前状态的计算不仅要依赖当前的输入,还要依赖上一个状态的输出),另一方面使得整个LSTM模型(包括其他的RNN模型,如GRU)总体上更类似于一个马尔可夫决策过程,较难以提取全局信息。
GRU可以看作一个LSTM的简化版本,其将at与ct两个变量整合在一起,且讲遗忘门和输入门整合为更新门,输出门变更为重制门,大体思路没有太大变化。两者之间的性能往往差别不大,但GRU相对来说参数量更少。收敛速度更快。对于较少的数据集我建议使用GRU就已经足够了,对于较大的数据集,可以试试有较多参数量的LSTM有没有令人意外的效果。
Transformer
图中红框内为Encoder框架,黄框内为Decoder框架,其均是由多个Transformer Block堆叠而成的。这里的Transformer Block就代替了我们LSTM和CNN结构作为了我们的特征提取器,也是其最关键的部分。
![](https://img-blog.csdnimg.cn/img_convert/880886726b79f5930f926eca9729d4af.png)
作者采用Attention机制的原因是考虑到RNN(或者LSTM,GRU等)的计算限制为是顺序的,也就是说RNN相关算法只能从左向右依次计算或者从右向左依次计算,这种机制带来了两个问题:
- 时间片t的计算依赖t-1时刻的计算结果,这样限制了模型的并行能力;
- 顺序计算的过程中信息会丢失,尽管LSTM等门机制的结构一定程度上缓解了长期依赖的问题,但是对于特别长期的依赖现象,LSTM依旧无能为力。
Transformer的提出解决了上面两个问题,首先它使用了Attention机制,将序列中的任意两个位置之间的距离是缩小为一个常量;其次它不是类似RNN的顺序结构,因此具有更好的并行性,符合现有的GPU框架。
从语义特征提取能力:Transformer显著超过RNN和CNN,RNN和CNN两者能力差不太多。
长距离特征捕获能力:CNN极为显著地弱于RNN和Transformer,Transformer微弱优于RNN模型,但在比较远的距离上(主语谓语距离大于13),RNN微弱优于Transformer,所以综合看,可以认为Transformer和RNN在这方面能力差不太多,而CNN则显著弱于前两者。这部分我们之前也提到过,CNN提取长距离特征的能力收到其卷积核感受野的限制,实验证明,增大卷积核的尺寸,增加网络深度,可以增加CNN的长距离特征捕获能力。而对于Transformer来说,其长距离特征捕获能力主要受到Multi-Head数量的影响,Multi-Head的数量越多,Transformer的长距离特征捕获能力越强。
任务综合特征抽取能力:通常,机器翻译任务是对NLP各项处理能力综合要求最高的任务之一,要想获得高质量的翻译结果,对于两种语言的词法,句法,语义,上下文处理能力,长距离特征捕获等方面的性能要求都是很高的。从综合特征抽取能力角度衡量,Transformer显著强于RNN和CNN,而RNN和CNN的表现差不太多。
并行计算能力:对于并行计算能力,上文很多地方都提到过,并行计算是RNN的严重缺陷,而Transformer和CNN差不多。
espnet中的transformer和LSTM语言模型对比实验
espnet所有的例子中语言模均默认是LSTM,这里我以aishell为例,epoch设置为20,batchsize=64。
LSTM结构配置:
![](https://img-blog.csdnimg.cn/img_convert/f707e3a14d5712055af1adb56dfed402.png)
LSTM结果:
![](https://img-blog.csdnimg.cn/img_convert/d4231d3c6903507d886fccedaff6e124.png)
将语言模型换为transformer。transformer结构配置:
![](https://img-blog.csdnimg.cn/img_convert/8f0e206c97dd5729b49ccb3a19cb6a40.png)
transformer结果:
![](https://img-blog.csdnimg.cn/img_convert/3e0e7dbeb68bf1ff219b9aa5c6286cf8.png)
实验结论: transformer语言模型的loss确实比lstm要小,但由于语言模型序列信息是非常重要的,transformer只能获取模糊的位置信息,因此transformer的困惑度比lstm要大!后续应该就这一方面进行改进。
相关文章
- python语言变量命名规则有什么_Python变量命名规则(超级详细)
- c语言中malloc的作用,malloc函数-malloc函数,详解
- c语言中uint8_uint16转uint8
- Go语言 字符串加密
- Go 语言怎么解决编译器错误“err is shadowed during return”?
- R语言股票市场指数:ARMA-GARCH模型和对数收益率数据探索性分析|附代码数据
- 学生选课管理系统c语言课程设计_大一c语言学生选课系统代码
- r语言 固定效应模型_r语言coef函数
- R语言用贝叶斯线性回归、贝叶斯模型平均 (BMA)来预测工人工资|附代码数据
- 有效融合语言模型、图神经网络,文本图训练框架GLEM实现新SOTA
- c语言之父是谁-知名编程语言的发展简史
- 自监督为何有效?243页普林斯顿博士论文「理解自监督表征学习」,全面阐述对比学习、语言模型和自我预测三类方法
- 数据分享|R语言用lme4多层次(混合效应)广义线性模型(GLM),逻辑回归分析教育留级调查数据|附代码数据
- 小孩子如何学会语言?科学家使用计算机模型解释儿童语言学习过程
- 轻量型模型比肩千亿大模型,周明团队提出中文语言模型孟子,刷新CLUE纪录
- WAIC 2021 | 阿里副总裁司罗:大规模语言模型如何赋能行业、创造价值
- 【C 语言】结构体 ( 结构体 数组 作为函数参数 | 数组 在 栈内存创建 )
- 【视频】文本挖掘:主题模型(LDA)及R语言实现分析游记数据|附代码数据
- 条件语言模型中的OOD检测与选择性生成
- GPT-3解数学题准确率升至92.5%!微软提出MathPrompter,无需微调即可打造「理科」语言模型
- Meta 推出大型语言模型 LLaMA,比 GPT3.5 性能更高
- 60块15天的t4显卡服务器 如何玩转chatgpt系列语言模型
- 无需强化学习的与人类偏好对齐的语言模型:Wombat袋熊
- Go语言类型断言简述
- xmlLinux C 语言解析 XML 数据的实现方式(linuxc解析)
- Linux下使用uuid命令生成唯一标识符c语言实现方法(linuxuuidc)
- Linux下高效C语言开发FTP服务器实现(linuxc语言ftp)
- Go语言并发模型的2种编程方案