Soft-Masked-Bert网络细节解读
大家好,我是隔壁小王。
Soft-Masked-Bert是复旦大学和字节跳动联合发布的在bert基础上针对文本纠正的网络模型,这里对其细节进行一个梳理。
考虑到我另外一个网络中有讲过bert的细节,因此这里姑且把bert作为一个黑盒,详细介绍下smbert相比与bert改动的部分。
首先上图:
别看它这个图挺唬人,其实改动非常简单,该网络主要加入的是一个错别字的检测网络部分也就是图中的Detection Nerwork。
假设输入的句长是128,embedding后的维度是768,batchsize就定为16好了,那么bert的embedding部分不会变,依旧是token_embedding+position_embedding+segment_embedding,得到的维度是(16,128,768),接下来将这些输入接入到一个双向的GRU里,输出是(16,128,1536)。此时接一个全链接(1536,768)再变回(16,128,768)。此时得到的结果就是图中的pi,也就是说该tensor表示的是当前我这个字是是否是错别字的可能性,当然此处只是检测,该改成啥它还不管。
接下来会有一个e-mask这样的embedding与上述embedding想加,实际上就是第103个字符“[MASK]”的embedding值,维度是(128, 768),接下来按照这个方法计算就可以了:
这里要注意的是pi在计算前会经过一个sigmoid,换句话说,当这个自被认为是错别字时,pi就接近1,否则则接近0。
最终得出的 ei' 就是一个与bert输入同维度的embeddings:(16,128,768)。接下来的事就都是跟bert一模一样的事了。
最后,还有个残差计算,bert的12层transformer block的结果(16,128,768)要与最开始的输入embedding: ei(16,128,768)进行想加,结果也是(16,128,768),然后接全链接和softmax就可以了。
本人的复现源码如下:
https://github.com/whgaara/pytorch-soft-masked-bertgithub.com
最后说说测试效果:
因为bert的预训练模型本身就很强大,其实很多基于bert改动的网络在预训练的基础上进行finetune后的结果都不会太差。再考虑到训练的速度,本人没用使用任何预训练模型,只是随机找了一些古诗进行了训练,默认16个epoch,测试集就是将这些古诗随机位置替换一个随机的字,用训练好的模型进行纠正,咱们看看结果如何:
最后说说测试效果:
因为bert的预训练模型本身就很强大,其实很多基于bert改动的网络在预训练的基础上进行finetune后的结果都不会太差。再考虑到训练的速度,本人没用使用任何预训练模型,只是随机找了一些古诗进行了训练,默认16个epoch,测试集就是将这些古诗随机位置替换一个随机的字,用训练好的模型进行纠正,咱们看看结果如何:
Bert epoch0:
EP_0 mask loss:0.15134941041469574
EP:0 Model Saved on:../../checkpoint/finetune/mlm_trained_128.model.ep0
top1纠正正确率:0.81
top5纠正正确率:0.91
Bert epoch8:
EP_train:8: 100%|| 170/170 [00:53<00:00, 3.20it/s]
EP_8 mask loss:0.010850409045815468
EP:8 Model Saved on:../../checkpoint/finetune/mlm_trained_128.model.ep8
top1纠正正确率:0.94
top5纠正正确率:0.98
Bert epoch15:
EP_train:15: 100%|| 170/170 [00:53<00:00, 3.21it/s]
EP_15 mask loss:0.002929957117885351
EP:15 Model Saved on:../../checkpoint/finetune/mlm_trained_128.model.ep15
top1纠正正确率:0.97
top5纠正正确率:0.99
soft-masked-bert epoch0:
EP_0 mask loss:0.11019379645586014
EP:0 Model Saved on:../checkpoint/finetune/mlm_trained_128.model.ep0
top1纠正正确率:0.88
top5纠正正确率:0.91
soft-masked-bert epoch8:
EP_train:8: 100%|| 170/170 [01:01<00:00, 2.74it/s]
EP_8 mask loss:0.011160945519804955
EP:8 Model Saved on:../checkpoint/finetune/mlm_trained_128.model.ep8
top1纠正正确率:0.93
top5纠正正确率:0.98
soft-masked-bert epoch15:
EP_train:15: 100%|| 170/170 [01:01<00:00, 2.75it/s]
EP_15 mask loss:0.0014254981651902199
EP:15 Model Saved on:../checkpoint/finetune/mlm_trained_128.model.ep15
top1纠正正确率:0.94
top5纠正正确率:0.98
总结下:smbert收敛快一点,但是结果没有bert好,速度也会慢一点。令我疑惑的是smbert最后加的残差网络,ei是带有错字信息的输入内容,好不容易纠错完的结果最后再加一个带有错误信息的原始输入,不是很懂。上面的smbert就是我将残差去掉以后的结果,如果将残差加上,正确率还要降1个点,我想这正论证了我的想法。当然,git上的代码没有任何部分缺失的。
Soft-Masked-Bert网络细节解读相关推荐
- NLP突破性成果 BERT 模型详细解读 bert参数微调
https://zhuanlan.zhihu.com/p/46997268 NLP突破性成果 BERT 模型详细解读 章鱼小丸子 不懂算法的产品经理不是好的程序员 关注她 82 人赞了该文章 Goo ...
- 从Attention到Bert——1 Attention解读
下一篇从Attention到Bert--2 transformer解读 文章目录 1 Attention的发展历史 2015-2017年 2 Attention的原理 3 Multi-Head Att ...
- 论文浅尝 | 使用孪生BERT网络生成句子的嵌入表示
论文笔记整理:吴杨,浙江大学计算机学院,知识图谱.NLP方向. https://www.ctolib.com/https://arxiv.org/abs/1908.10084 动机 谷歌的 BERT ...
- Faster RCNN超详细入门 02 网络细节与训练方法
文章目录 前言 论文结构 Abstract Introduction Related Work Region Proposal Network Experiments Conclusion 网络架构 ...
- YOLOV7详细解读(一)网络架构解读
YOLOV7详细解读 网络架构解读 YOLOV7详细解读 前言 一.YOLOV7是什么? 二.网络架构 1.架构图总览 2.CBS模块解读 3.CBW模块解读 4.REP模块解读 5.MP模块解读 6 ...
- Pytorch Bert源码解读
Bert 源码解读 从 CV 转 NLP 有小半年了,一直在用 Bert 系列做一些自然语言理解任务,包括命名实体识别.关系抽取,文本结构化等信息抽取任务.之前开发任务紧,Bert 拿来就用了,很多代 ...
- 孪生网络图像相似度_论文浅尝 | 使用孪生BERT网络生成句子的嵌入表示
论文笔记整理:吴杨,浙江大学计算机学院,知识图谱.NLP方向. https://www.ctolib.com/https://arxiv.org/abs/1908.10084 动机 谷歌的 BERT ...
- Pytorch构建网络细节总结
Pytorch构建网络细节总结 optimizer.step() 和 scheduler.step() 的区别 定义: 区别: .to(device)与.cuda()的区别 .to(device) 可 ...
- 用于乒乓球运动分析的深度网络TTNet解读
用于乒乓球运动分析的深度网络TTNet解读 深度学习与乒乓球运动分析的有趣融合 问题难点 相关工作 OpenTTGames数据集 提出的方法 结果 深度学习与乒乓球运动分析的有趣融合 首先,这是基于深 ...
- NLP新秀:BERT的优雅解读
恰逢春节假期,研究了一下BERT.作为2018年自然语言处理领域的新秀,BERT做到了过去几年NLP重大进展的集大成,一出场就技惊四座碾压竞争对手,刷新了11项NLP测试的最高纪录,甚至超越了人类的表 ...
最新文章
- 算力超英伟达?华为推出两款“昇腾”芯片;五大AI战略正式公布
- 【数据挖掘】高斯混合模型 ( 与 K-Means 每个步骤对比 | 初始参数设置 | 计算概率 | 计算平均值参数 | 计算方差参数 | 计算高斯分布概率参数 | 算法终止条件 )
- P3225 [HNOI2012]矿场搭建
- RabbitMQ之监控(1)
- Flexible 弹性盒子模型之CSS flex-shrink 属性
- 3.3 其他因素3.3.1 Fork子进程
- Ubuntu18.04下C++编译tensorflow并在QT中使用
- 图书馆管理系统UML各种图
- 苹果手机温度测试软件,苹果手机测温神器上线啦!
- 3d max材质贴图
- c百分号输出格式汇总
- 打桩(Stubbing), Mocking 和服务虚拟化的差异
- 空间换时间小例子(2)
- 计算机多媒体技术的应用,计算机多媒体技术及其应用.ppt
- 盛世昊通:数字汽车的未来由谁来书写
- Python 、Sqlite3数据库、单片机 、RC522 -公交卡管理系统(含部分源码)#可刷卡登陆
- 读,写,删,复集合脚本
- 〖OKaimi点金胜手_2019年4月〗走地大球分析系统|万胜
- 社交网络SNS的好友推荐算法
- 仿360影视网站模板html
热门文章
- c语言maxval函数,fortran语言常用函数
- PySpark 之 连接变换 union、intersection、subtract、cartesian
- Laravel和Vue提供支持的VueFileManager v2.0.2私有云盘多用户网盘程序源码
- 卸载 Notepad++ !事实已证明,它更牛逼……
- Moveit更换默认规划器KDL为TraceIk
- Appro DM36x IPNC 4.0 开发环境配置
- FPGA芯片供电总结
- Reactjs项目构建
- Ubuntu下切换root用户认证失败解决方案
- 春天的致富梦ZZNU