【深度学习】预训练的卷积模型比Transformer更好?
引言
这篇文章就是当下很火的用预训练CNN刷爆Transformer的文章,LeCun对这篇文章做出了很有深意的评论:"Hmmm"。本文在预训练微调范式下对基于卷积的Seq2Seq模型进行了全面的实证评估。本文发现:
(1)预训练过程对卷积模型的帮助与对Transformer的帮助一样大;
(2)预训练的卷积模型在模型质量和训练速度方面在某些场景中是有竞争力的替代方案。
Pre-Trained Convolution Models
Lightweight Depthwise Convolution
1.Depthwise convolutions
假设输入一个tensor
,其维度为 ,depthwise卷积定义如下:
是可学习的矩阵, 是位置 和channel 的输出。最后整体的输出维度和输入维度是一样的都是 。
举例:一个大小为64×64像素、三通道彩色图片首先经过第一次卷积运算,depthwise卷积完全是在二维平面内进行,且Filter的数量与上一层的Depth相同。所以一个三通道的图像经过运算后生成了3个Feature map,如下图所示。
Depthwise Convolution完成后的Feature map数量与输入层的depth相同,但是这种运算对输入层的每个channel独立进行卷积运算后就结束了,没有有效的利用不同map在相同空间位置上的信息。
2. Lightweight Convolutions
Lightweight Convolutions在Depthwise Convolution的基础上使用了
, 是一个具有softmax归一化核以及共享输出通道和权重的深度可分离卷积:
其中
,参数在每个 的输出通道中共享。当的时候,相当于所有通道共享所有的参数。
3. Dynamic Convolutions
Dynamic Convolutions 是Lightweight Convolutions的一种变种,该方法关键的思想是学习特定位置的核来执行轻量级卷积:
其中
是一个线性变化,参数为 ,学习的是特定位置的kennel。
Span-based Seq2Seq pre-training
本文采用span-based的Seq2Seq预训练(Raffel等人,2019)。具体来说,给定一个输入序列,我们随机mask掉
个spans,并用特殊的[mask]标记替换。然后,预训练任务是生成被mask掉的token。例如:
Inputs: The happy cat sat [mask].
Outputs: on the mat.
Convolutional Seq2Seq Architecture 本文实现的Convolutional Seq2Seq模型与Transformer的区别在于将Transformer中的multi-headed self-attention替换为卷积blocks。对于Transformer中的query-key-value,本文使用门控线性单元代替。其中每个卷积block由以下部分组成:
其中
都是学习的参数。
作者实验了lightweight convolutions、dynamic convolutions以及dilated convolutions。和(Wu等人,2019年;Gehring等人,2017年)的实验相同,本文保持编码器-解码器的attention不变。并且遵循Transformer的主干模型,在该模型中,本文使用LayerNorm和残差连接形成每个子模块。因此,每个Conv block被写为:
就是上述的各个类型的卷积。 是一个两层带RELU的全连接。
Optimization
本文采用了token-wise的交叉熵loss:
第一个sum指的是将mask掉的
个span的loss求和, 表示的是类别 在 时刻的预测值, 表示的是类别 在 时刻的ground truth。
Research Questions and Discussion
作者总结了几个希望本文能够解决的几个问题:
(1)pre-train给卷积模型带来的收益和Transformer相比怎样?卷机模型
(2)卷积模型如果通过预训练或者其他方式是否能够和Transformer模型对抗,什么情况下卷积模型表现好?
(3)使用预训练的卷积模型比预训练的Transformer有什么好 处(如果有的话)?卷积比基于自注意的Transformer更快吗?
(4)不使用预训练卷积效果不好,是否有无特定的故障模式、注意事项和原因分别是什么?
(5)某些卷积变体是否比其他变体更好?
Experiments and Analysis
数据集:
Toxicity Detection(二分类):CIVIL COMMENTS、WIKI TOXIC SUBTYPES 、
Sentiment Classification:IMDb、SST-2、Twitter Sentiment140
News Classification(四分类):AGNews
Question Classification(46类分类):TREC Semantic Parsing/Compositional
Generalization: COGS 生成给定英语句子的语义表示的任务。例如,A cat smiled → cat(x1) AND smile.agent(x2, x1).
Experimental Setup
Pre-training 数据:the Colossal Cleaned Com- monCrawl Corpus (C4)
span size: 3
optimizer: Adafactor optimizer
GPU: 16 TPU-v3 12小时
Results
可以看出,除了IMDb之外,其他的任务中,卷积模型的效果都是要优于Transformer的。
但是感觉也可以理解,因为除了替换self-attention之外,大致结构也都和Transformer是一致的,记得之前也有文章说过Transformer最有效的部分并不是self-attention?
此外作者还对比了二者的速度和操作数量变化:
可以看出卷积不仅始终比Transformer更快(即使在较短的序列中)操作更少,而且比Transformer的规模更大。卷积处理文本的长度可以线性扩展,而Transformer不能扩展到更长的序列。
????
为啥没在GLUE上测试?
那如果把Transformer整体都替换为卷积是否还会有这样的效果呢?
而且作者说目前的模型还没办法处理cross-sentence的情况。
往期精彩回顾适合初学者入门人工智能的路线及资料下载机器学习及深度学习笔记等资料打印机器学习在线手册深度学习笔记专辑《统计学习方法》的代码复现专辑
AI基础下载机器学习的数学基础专辑温州大学《机器学习课程》视频
本站qq群851320808,加入微信群请扫码:
【深度学习】预训练的卷积模型比Transformer更好?相关推荐
- 简述深度学习预训练和正则化
AI有道 一个有情怀的公众号 1 Deep Neural Network 总的来说,根据神经网络模型的层数.神经元个数.模型复杂度不同,大致可分为两类:Shallow Neural Networks和 ...
- 吴恩达【深度学习工程师】 04.卷积神经网络 第四周特殊应用(2)神经风格转换...
该笔记介绍的是<卷积神经网络>系列第四周:特殊应用(2)神经风格转换 主要内容有: 1.神经风格转换 2.卷积网络隐藏单元可视化显示 3.神经风格转换代价函数 4.内容代价函数 5.风格代 ...
- Python深度学习(使用预训练的卷积神经网络)--学习笔记(十一)
5.3 使用预训练的卷积神经网络 想要将深度学习应用于小型图像数据集,一种常用且非常高效的方法是使用预训练网络.预训练网络(pretrained network)是一个保存好的网络,之前已经在大型数据 ...
- 深度学习如何训练出好的模型
深度学习在近年来得到了广泛的应用,从图像识别.语音识别到自然语言处理等领域都有了卓越的表现.但是,要训练出一个高效准确的深度学习模型并不容易.不仅需要有高质量的数据.合适的模型和足够的计算资源,还需要 ...
- 系统回顾深度强化学习预训练,在线、离线等研究这一篇就够了
关注公众号,发现CV技术之美 本文转载自机器之心. 本文中,来自上海交通大学和腾讯的研究者系统地回顾了现有深度强化学习预训练研究,并提供了这些方法的分类,同时对每个子领域进行了探讨. 近年来,强化学习 ...
- 【深度学习】基于PyTorch的模型训练实用教程之数据处理
[深度学习]基于PyTorch的模型训练实用教程之数据处理 文章目录 1 transforms 的二十二个方法 2 数据加载和预处理教程 3 torchvision 4 如何用Pytorch进行文本预 ...
- TensorFlow2使用预训练的卷积网络(ConvNet)进行迁移学习
本案例使用预训练的模型对猫狗数据集进行分类任务.使用预训练的模型有两种方式: 一是利用特征提取器.利用预训练模型的前几层对新数据进行特征提取,最后加入分类的层即可完成新模型的创建. 二是Fine Tu ...
- 张量模型并行详解 | 深度学习分布式训练专题
随着模型规模的扩大,单卡显存容量无法满足大规模模型训练的需求.张量模型并行是解决该问题的一种有效手段.本文以Transformer结构为例,介绍张量模型并行的基本原理. 模型并行的动机和现状 我们在上 ...
- [深度学习] 自然语言处理 --- 文本分类模型总结
文本分类 包括基于word2vec预训练的文本分类,与及基于最新的预训练模型(ELMO,BERT等)的文本分类 fastText 模型 textCNN 模型 charCNN 模型 Bi-LSTM 模型 ...
最新文章
- Java项目:化妆品商城系统(java+Springboot+ssm+mysql+jsp+maven)
- AttributeError: module ‘cv2.cv2‘ has no attribute ‘xfeatures2d‘解决方法
- 求两条轨迹间的hausdorff距离_圆锥曲线三种定义间的关系
- Dancing Link讲解
- Mybatis/Ibatis,数据库操作的返回值
- linux命令行可以看图片吗,活久见!Linux命令行居然也可以用来查看图像?
- 4、组件注册-自定义TypeFilter指定过滤规则
- Centos 源码安装zabbix 2.4.5
- Linux 端口转发 端口映射
- 初学3D建模有这80G笔刷简直绝了
- 硬盘写保护软件_三星T7 Touch 1TB移动固态硬盘评测:新奇又安全的加密方式普及?...
- 千万级中文公开免费聊天语料数据分享
- 人工智能期末考试复习(贲可荣 张彦铎)
- LeGO-LOAM 系列(1): LeGO-LOAM 安装以及概述
- 房多多,没有拼多多的命
- 易特科:世界医学泰斗联姻中国IT精英
- vue-i18n插件报错Uncaught SyntaxError: Not available in legacy mode
- 天融信上网行为管理短信对接教程
- Python读取EXCEL省份数据绘制地图
- 如何编写功能测试报告?详细测试方案模板参考