[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结合在一起;


目录
相关文章
|
11月前
|
监控 安全 网络协议
|
机器学习/深度学习 数据采集 人工智能
Python实现深度神经网络RNN-LSTM分类模型(医学疾病诊断)
Python实现深度神经网络RNN-LSTM分类模型(医学疾病诊断)
Python实现深度神经网络RNN-LSTM分类模型(医学疾病诊断)
|
11月前
|
机器学习/深度学习 算法 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实现代码。
2058 1
深度学习笔记(十三):IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU、SIOU、WIOU损失函数分析及Pytorch实现
|
存储 程序员 C语言
堆和栈之间有什么区别
【9月更文挑战第1天】堆和栈之间有什么区别
2083 0
|
运维 算法 测试技术
通用研发提效问题之实现研发提效,如何解决
通用研发提效问题之实现研发提效,如何解决
|
算法
数据结构和算法学习记录——平衡二叉树(基本介绍、平衡因子、平衡二叉树的定义、平衡二叉树的高度)
数据结构和算法学习记录——平衡二叉树(基本介绍、平衡因子、平衡二叉树的定义、平衡二叉树的高度)
473 0
|
机器学习/深度学习 测试技术 API
【Python-Keras】Keras搭建神经网络模型的Model解析与使用
这篇文章详细介绍了Keras中搭建神经网络模型的`Model`类及其API方法,包括模型配置、训练、评估、预测等,并展示了如何使用Sequential模型和函数式模型来构建和训练神经网络。
376 1
|
机器学习/深度学习 数据采集 自然语言处理
[GPT-2]论文解读:Language Models are Unsupervised Multitask Learners
[GPT-2]论文解读:Language Models are Unsupervised Multitask Learners
682 1
|
机器学习/深度学习 搜索推荐 数据挖掘
多模态融合的难点
【2月更文挑战第17天】多模态融合的难点
555 1
多模态融合的难点
|
机器学习/深度学习 算法 前端开发
【Python机器学习专栏】机器学习中的模型融合技术
【4月更文挑战第30天】模型融合,即集成学习,通过结合多个模型提升预测性能。常见方法包括:Bagging(如Random Forest)、Boosting(如AdaBoost、XGBoost)和Stacking。Python中可使用`scikit-learn`实现,例如BaggingClassifier示例。模型融合是机器学习中的强大工具,能提高整体性能并适应复杂问题。
294 0