简介

此篇文章是对macbert4csc模型的一次尝试与思考,废话不多说,看内容。

模型结构

这个模型分成两部分:

  1. 使用BertForMaskedLM对预训练模型做mask训练。
  2. 对预测的结果输入linear,判断预测的结果和真实的结果是否相同,即二分类。

举例:
比如错句为我和你在一其,正确的句子为我和你在一起,错句输入MLM,得到的结果假设为我和你在一器。然后输入linear判别器,判断和正确的句子做二分类。最后两个loss进行相加。

思考

为什么选择macbert

首先看看什么是macbert,全称是(MLM as corrector),它是哈工大和讯飞一起训练的模型。主要做的内容有两点:

  1. 修改bert mask预处理代码,将bert做[mask]的地方用同义词来替代。同时引入全词mask。
  2. 替换NSP任务,使用SOP来替代。

第一条的做法好处是下游任务一般不会有[mask],那么就不会带来预训练模型和下游任务不匹配的问题。
第二条的做法好处是简单来讲就是更能理解句子的语义性(合理以及通顺)。

为什么代码没有在错字地方做mask

这个问题就是为什么选择macbert做微调,因为macbert对mlm中做mask替代的地方用了同义词替换。

和electra有什么关系

这个问题是我自己强行加进来的,哈哈。。

先来看下electra的结构图。

electra模型分成两部分:

  1. 生成器。例如上图,对thepainting[MASK],然后使用生成器进行训练获取结果, 其中the对了,painting对应了car
  2. 将生成的结果送入判别器,和原句做二分类,发现painting生成错了。

其loss计算方式如下所示:

有木有发现,两者其实还蛮像的,哈哈。

下面是正经思考:

  1. 错字识别是否可以使用electra模型来训练?
  2. 其中 λ是否可以进行借鉴?

回答1:我觉得阔以,甚者我觉得结果要比macbert4csc更好,为什么?

  1. 实验结果,macbert4csc的训练结果没有electra的结果好,你可以说不是同一类型的任务。
  2. macbert做同义词替换,如果没有对应的同义词呢,或者说同义词替换更关注实体词呢,错字是有可能哪里都可能错的。
    但是,这些想法都是有些牵强的,只有自己跑出来才知道结果。

回答2:我觉得阔以,因为对于多loss,一般没有好的解决方法,明明超参数,只能实验呗。作者在这里选择了50,因为他认为
二分类相比mlm的交叉熵更容易一些,所以给予了更大的权重。

但是我觉得还可以有另外一种思路来参考,即灾难性遗忘,它是说下游任务对预训练模型进行fine-tune,会对预训练模型造成干扰,那么loss计算时可以分成两部分,pretrained loss和fine-tune loss,一般按经验fine-tune loss权重为0.5。

改进

一. 调整λ值

作者这里使用0.7/0.3的权重分配给MLM和sigmoid二分类,这里我对其做了如下调整:

ID MLM weight sigmoid二分类 weight dev metric
1 1 0.5 epoch26:0.9168
2 1 5 epoch35:0.914
3 1 50

1. ID(1)

以macbert eval.py为准进行测试,记得把macbert_model_dir改成自己的。

以epoch 26的模型为准:

12
Sentence Level: acc:0.7040, precision:0.8545, recall:0.6087, f1:0.7109, cost time:5.35 sSentence Level: acc:0.7955, precision:0.8093, recall:0.7661, f1:0.7871, cost time:10.53 s

和”shibing624/macbert4csc-base-chinese”进行对比,发现recall要高了不少,结果效果更好了些~。

2. ID(2)

dev metric 在epoch 35的时候为0.914,相比ID(1)在epoch 26 0.9168的结果,发现收敛速度变的慢了。
故这个忽略。

3. ID(3)

dev metric 在epoch 35的时候为0.9112,虽说还有小量上涨可能,但是train metric已经过拟合了,这个结果让我觉得…,emmmm,这些超参没有达到想象中的区别哇。

2. 对hidden_states分配权重

作者在进行二分类的时候使用了最后一层的hidden_states,那么是否可以对所有的hiddeen_states分配不同的权重。为什么?前面的layer更偏向浅层语义信息,比如词法,句法等,越往后代表的含义可能更深层次,本来就是预测词对不对,搞那么深不一定适合。
回头尝试尝试。

macbert4csc纠错相关推荐

  1. linux命令输入错误怎么弄,Linux下用shopt命令来帮我们自动纠错输入cd 错误

    下面是关于shopt命令的一些参数的用法 选项 含义 cdable_vars 如果给cd内置命令的参数不是一个目录,就假设它是一个变量名,变量的值是将要转换到的目录 cdspell 纠正cd命令中目录 ...

  2. AAAI 2020 | MaskGEC:通过动态掩蔽改善语法纠错

    作者 | 涂心琪 审稿 | 李梓盟 今天给大家介绍北京大学计算语言学教育部重点实验室的Zewei Zhao和Houfeng Wang在AAAI 2020发表的文章"MaskGEC: Impr ...

  3. 自然语言处理NLP之文本摘要、机器翻译、OCR、信息检索、信息抽取、校对纠错

    自然语言处理NLP之文本摘要.机器翻译.OCR.信息检索.信息抽取.校对纠错 目录

  4. 纠错工具之 - Proovread

    纠错工具之 - Proovread weixin_34198881 BioInf-Wuerzburg/proovread - Github 主要是来解读 proovread 发表的文章,搞清楚它内在的 ...

  5. 更高效的PacBio长read纠错算法的研究

    更高效的PacBio长read纠错算法的研究 更高效的PacBio长read纠错算法的研究 中文摘要 第三代PacBio测序技术的长read已越来越广泛的应用于各类测序项目中,而降低其约15%的错误率 ...

  6. Bi-level error correction for PacBio long reads. PacBio长读数的两级纠错

    Bi-level error correction for PacBio long reads. PacBio长读数的两级纠错 作者: Liu Yuansheng; Lan Chaowang; Blu ...

  7. 混合和可扩展的纠错算法,用于长读的插入缺失和替换错误

    混合和可扩展的纠错算法,用于长读的插入缺失和替换错误 Arghya Kusum Das, 萨彦·高斯瓦米( Sayan Goswami) 李基成& 承钟公园 BMC基因组学 卷 20,产品编号 ...

  8. LoRDEC 利用二代数据纠错PacBio 数据( lordec-src_0.9.tar.bz2)

    LoRDEC是一个利用二代测序短序列reads 矫正三代测序长reads 的工具,利用准确度高的NGS数据构建de Bruijn Graph(DBG)对三代长Reads进行纠错,适用于PacBio和O ...

  9. 三代测序数据纠错的方法、装置和计算机可读存储介质与流程

    三代测序数据纠错的方法.装置和计算机可读存储介质与流程 文档序号:15616049发布日期:2018-10-09 21:24 导航: X技术> 最新专利>计算;推算;计数设备的制造及其应用 ...

最新文章

  1. java web项目调用rest接口404
  2. php twig扩展,如何写一个自定义的 Twig 扩展
  3. PP面向订单生产模式探讨
  4. leetcode 790. Domino and Tromino Tiling | 790. 多米诺和托米诺平铺(暴力递归->DP)
  5. ExtJS4.2学习(21)动态菜单与表格数据展示操作总结篇2
  6. iOS 利用UIDocumentInteractionController打开和预览文档
  7. 下列有关计算机图形的叙述中错误的是,计算机图形学(9-16)-中国大学mooc-题库零氪...
  8. 计算机应用基础模块2客观题答案 文档,卓顶精文2019计算机应用基础网上形考答案模块2 Word 2010 文字处理系统客观题答案...
  9. u-boot移植随笔:u-boot shell与ASCII码
  10. eclipse+Maven安装和配置
  11. shell linux中用shell写一个占用CPU的脚本
  12. MySQL字符集设置及字符转换(latin1转utf8)
  13. 微信公共号开发简单入门
  14. linux命令-ll之按时间、大小顺序排列显示
  15. golang导入私有仓库报错:“server response: not found:xxx: invalid version: git ls-remote -q origin in xxx“
  16. Integrate就医服务平台
  17. 黑马培训教学SSM整合中Security遇到的问题org.springframework.security.access.AccessDeniedException: Access is denied
  18. Vss2005安装配置
  19. 2022年全球及中国手术感控行业头部企业市场占有率及排名调研报告
  20. 计算机类SCI检索源刊,期刊影响因子排名

热门文章

  1. 火山小视频伪原创怎么做
  2. c语言float转bcd码
  3. python在屏幕上输出hello world_Python语言中,len(' hello world!')的输出结果为()。...
  4. CSS设置滚动条样式
  5. 非对称加密之RSA算法
  6. 04-ET框架的事件系统
  7. 游戏开发第13课-cocoscreator 实现倒水
  8. 骑缝章 Java_Java 在PDF中添加骑缝章
  9. python resample函数_python resample() 函数
  10. 自己写的实用VBA代码合集√