[Bart]论文实现:Denoising Sequence-to-Sequence Pre-training for Natural Language Generation...

简介: [Bart]论文实现:Denoising Sequence-to-Sequence Pre-training for Natural Language Generation...

论文:BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension

作者:Mike Lewis, Yinhan Liu, Naman Goyal, Marjan Ghazvininejad, Abdelrahman Mohamed, Omer Levy, Ves Stoyanov, Luke Zettlemoyer

时间:2019

一、完整代码

这里我们使用python代码进行实现

# 完整代码在这里
# 这里感觉在输出端实现就好了,下次有时间在弄;

二、论文解读

BART论文名字为Denoising Sequence-to-Sequence Pre-training for Natural Language...,在这里有两个名词要考虑,一个是Sequence-to-Sequence,一个是Pre-training;前者的架构较为出名的有RNNTransformer,后者的架构较为出名的有BertGPT;但是这里要注意的是BART是一个Transformer架构;

其于Transformer不同的地方只有一个,就是input;毫无疑问,这就是一篇水文;

2.1 模型架构

模型架构就是Transformer

论文在水的时候,在画图故意不用Transformer来进行对比,而是用BertGPT来对比,很贼;

2.2 输入端

BART在输入端中采取的措施:

下面我们对其依次介绍:

Token Masking

这里采取的方式和BERT一样,使用随机的mask来regularization;

Token Deletion

这里采取的方式是随机删除一些token,注意是删除而不是使用掩码,是从源头删除,掩码的长度会改变;

Text Infilling

这里采取的方式是填充,有删除就有填充,这很好理解;

Sentence Permutation

这里是通过标点符号来切割sentences,然后对sentences进行排序,再来训练;

Document Rotation

这里就相当于说是随机打乱,没有一点规律;

2.3 微调

微调不同任务采取不同的措施,论文中的图片还挺形象的,如下所示:

Sequence Classification Tasks

这里使用transformerdecoder中隐藏层的最后一层进行文本分类,就相当于BERT中的[cls]的效果,至于为什么是最后一个,因为解码器是单向的,而最后一个是最后的输出,其是自回归模型与前面的信息进行了充分的交互;

Token Classification Tasks

看起来高大上,其本质就是在后面弄一层dense层,然后继续词的预测;这里写成classification真有意思…

Sequence Generation Tasks

GPT一样,无需解释;

Machine Translation

这个就更不用说了,这就是transformer本来的任务;

2.4 结果

使用了消融实验,结果如下所示:

不同模型之间的不同如下所示:

其中我们可以看到,BART的效果和RoBERTaXLNet的效果差不多;

其中我们可以看到,在文本总结上效果挺好的;

三、过程实现

这里感觉在输出端实现就好了,下次有时间在弄;

四、整体总结

论文好水,就是几个regularization结合在一起;


目录
相关文章
|
JavaScript
VUE3中watch与watchEffect —— 全网最详细系列
VUE3中watch与watchEffect —— 全网最详细系列
|
监控 安全 网络协议
|
机器学习/深度学习 算法 PyTorch
深度学习笔记(十三):IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU、WIOU损失函数分析及Pytorch实现
这篇文章详细介绍了多种用于目标检测任务中的边界框回归损失函数,包括IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU和WIOU,并提供了它们的Pytorch实现代码。
2637 1
深度学习笔记(十三):IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU、WIOU损失函数分析及Pytorch实现
|
运维 算法 测试技术
通用研发提效问题之实现研发提效,如何解决
通用研发提效问题之实现研发提效,如何解决
|
算法
数据结构和算法学习记录——平衡二叉树(基本介绍、平衡因子、平衡二叉树的定义、平衡二叉树的高度)
数据结构和算法学习记录——平衡二叉树(基本介绍、平衡因子、平衡二叉树的定义、平衡二叉树的高度)
698 0
|
机器学习/深度学习 数据采集 自然语言处理
[GPT-2]论文解读:Language Models are Unsupervised Multitask Learners
[GPT-2]论文解读:Language Models are Unsupervised Multitask Learners
795 1
|
机器学习/深度学习 算法 数据挖掘
机器学习中的监督学习与非监督学习
在机器学习领域,算法主要分为两大类:监督学习(Supervised Learning)和非监督学习(Unsupervised Learning)。这两种方法在数据处理和问题解决方面各有特点和应用场景。本文将详细介绍监督学习与非监督学习的基本概念、区别以及它们的常见应用。
852 0
|
XML JSON 监控
技术经验分享:Axis2实践
技术经验分享:Axis2实践
271 0
|
机器学习/深度学习 计算机视觉
【YOLOv8改进】MPDIoU:有效和准确的边界框损失回归函数 (论文笔记+引入代码)
YOLO目标检测专栏介绍了YOLO的有效改进和实战案例,包括卷积、主干网络、注意力机制和检测头的创新。提出了一种新的边界框回归损失函数MPDIoU,它基于最小点距离,能更好地处理不同宽高比的预测框,包含重叠、中心点距离和尺寸偏差的全面考虑。MPDIoU损失函数在YOLACT和YOLOv7等模型上的实验显示了优于现有损失函数的性能。此外,还介绍了WIoU_Scale类用于计算加权IoU,以及bbox_iou函数实现不同IoU变体的计算。详细实现和配置可在相应链接中查阅。
|
消息中间件 缓存 关系型数据库
云计算|OpenStack|社区版OpenStack安装部署文档(二---OpenStack运行环境搭建)
云计算|OpenStack|社区版OpenStack安装部署文档(二---OpenStack运行环境搭建)
1098 0