微软提出MiniViT | 把DeiT压缩9倍,性能依旧超越ResNet等卷积网络(一)

本文涉及的产品
NLP自然语言处理_高级版,每接口累计50万次
NLP自然语言处理_基础版,每接口每天50万次
NLP 自学习平台,3个模型定制额度 1个月
简介: 微软提出MiniViT | 把DeiT压缩9倍,性能依旧超越ResNet等卷积网络(一)

1简介


大规模预训练的Vision TRansformer,如ViT, CvTSwin,由于其高性能和下游任务的优越性能,最近引起了极大的关注。然而,它们通常涉及巨大的模型尺寸和大量的训练数据。例如,ViT需要使用3亿张图像来训练一个带有6.32亿参数的巨大模型,才实现了图像分类的最先进性能。同时,Swin使用2-3亿个参数,并在ImageNet-22K上进行了预训练,以在下游检测和分割任务上取得良好的性能。

数以亿计的参数消耗了相当大的存储和内存,这使得这些模型不适合涉及有限计算资源的应用程序,如边缘和物联网设备,或者需要实时预测的任务。最近的研究表明,大规模的预训练模型是过度参数化的。因此,在不影响这些预训练模型性能的情况下,消除冗余参数和计算开销是必要的。

权重共享是一种简单且有效的减少模型尺寸的技术。神经网络中权重共享的最初想法是在20世纪90年代由LeCun和Hinton提出的,最近被重新发明用于自然语言处理(NLP)中的Transformer模型压缩。最具代表性的工作是ALBERT,它引入了一种跨层权重共享的方法,以防止参数的数量随着网络深度的增加而增长。该技术可以在不严重影响模型性能的情况下显著降低模型尺寸,从而提高参数效率。然而,Weight sharingVision Transformer压缩中的有效性尚未得到很好的探索。

为了验证这一点,作者在DeiT-SSwin-B Transformer上执行跨层权重共享。出乎意料的是,这种直接使用权重共享带来了2个严重的问题:

  1. 训练不稳定:作者观察到,Weight sharing across transformer layers使训练变得不稳定,甚至随着共享层数量的增加,导致训练坍塌;
  2. 性能下降:权重共享Vision Transformer的性能与Vision Transformer相比有明显下降。例如,虽然权重共享可以将模型参数的数量减少4倍,但是它还是带来了Swin-s Transformer精度下降5.6%,。

为了调查这些结果的潜在原因,作者分析了训练过程中梯度的ℓ2-范数以及模型权重前后的中间特征表征之间的相似性。作者发现,在不同层上完全相同的权重是问题的主要原因。特别是,在权重共享过程中,不同Transformer Block中的层归一化不应该完全相同,因为不同层的特征具有不同的尺度和统计量。同时,梯度的ℓ2-范数变大,并在不同层间波动,导致训练不稳定。

最后,Central Kernel Alignment(CKA)值(一个流行的相似性度量)在最后几层显著下降,表明模型在权重共享前后生成的特征图相关性较小,这可能是性能下降的原因。

在本文中提出了一种新的技术,称为Weight Multiplexing,来解决上述问题。Weight MultiplexingWeight TransformationWeight Distillation两个组件组成,共同压缩预训练好的Vision Transformer

image.png图2

Weight Transformation的关键思想是对共享的权值进行转换,使不同层的权值略有不同,如图2所示。该操作不仅可以促进参数的多样性,而且还可以提高训练的稳定性。

更具体地说,对每个权重共享Transformer Layer多头自注意力(MSA)模块和多层感知器(MLP)模块进行了简单的线性变换。每一层都包含单独的变换矩阵,因此MLP对应的注意力权重和输出在不同层间是不同的。与共享相同的参数相比,不同层的层归一化也是分开的。因此,可以让Weight Sharing Transformer网络的优化变得更加稳定。

为了防止性能下降,作者进一步用Weight Distillation设计了Weight Multiplexing,这样嵌入在预训练的模型中的信息可以转移到权重共享的小模型中,这就可以产生更紧凑和更轻的模型。与之前仅依赖于Prediction-Level蒸馏的工作相比,本文的方法同时考虑了Attention-LevelHidden-State蒸馏,允许较小的模型更好地模拟原始预训练的大型教师模型的行为。

image.png图1

实验表明,Weight Multiplexing方法在Baseline上实现了明显的精度提高,并将预训练好的Vision Transformer压缩了2倍。例如,通过提出的Weight Multiplexing,12层的Mini-Swin-B模型比24层Swin-B高0.8%。此外,具有9M参数的MiniDeiT-B在ImageNet上达到了79.8%的Top-1位精度,比DeiT-B小9.7倍。用本文的方法压缩得到的12M微型模型可以很好地迁移到下游目标检测,在COCO验证集上实现了48.6的AP,这与使用28M参数的原始Swin-T相当。

主要贡献

  1. 系统地研究了权重共享Vision Transformer中的有效性,并分析了权重共享带来问题的原因;
  2. 提出了一种新的通用Vision Transformer压缩框架MiniViT。实验结果表明,MiniViT可以在不损失精度的前提下获得较大的压缩比。此外,MiniViT的性能也可以很好地迁移到下游任务。

2师从何处?


2.1 Vision Transformer

Transformer虽然最初是为NLP设计的,但最近在计算机视觉方面也显示出了巨大的潜力。Vision Transformer首先将输入图像分割成一系列被称为Token2D Patch。然后,使用线性投影或堆叠的CNN层将这些Patch展开并转换为d维向量(也称为Patch Embeddings)。为了保留位置信息,Positional Embeddings被添加到Patch Embeddings中。然后将组合的Embeddings输入到Transformer编码器。最后,使用一个线性层来产生最终的分类。

Transformer编码器由MSAMLP的交替组成。在每个块前后分别应用层归一化(LN)和残差连接。详细说明MSA和MLP块如下。

1、MSA

设M为Head的数量,也称为自注意力模块。给定输入序列,在第k个Head中,通过线性投影生成QueryKeyValue,分别用、和表示,其中N是Token的数量。D和d分别是Patch EmbeddingsQ-K-V矩阵的维数。然后,计算序列中每个位置的所有值的加权和。这些权重被称为注意力权重,用表示,是基于序列中2个元素之间的成对相似性,即

image.png

其中,对输入矩阵的每一行进行softmax(·)操作。最后,将一个全连接层应用于所有Head的输出的连接。

2、MLP

MLP块由2个FC层组成,其激活函数用σ(·)表示,通常为GELU。设为MLP的输入。MLP的输出可以表示为

image.png

其中,、、、分别为第1层和第2层的权重和偏差。通常设置d'>d。

2.2 Weight Sharing

image.png权重共享是一种简单而有效的提高参数效率的方法。其核心思想是跨层共享参数,如图2(a)所示从数学上讲,权重共享可以表述为一个Transformer Block f(即一个共享层)的递归更新:

image.png

其中为序列在第i层中嵌入的特征,L为层总数,θ为各层间Transformer Block的共享权值。

很多研究工作在自然语言Transformer模型中探索并验证了权重共享的有效性。它可以防止参数的数量随着网络深度的增加而增加,而不会严重影响性能,从而提高参数的效率。

相关文章
|
8天前
|
机器学习/深度学习 算法 TensorFlow
动物识别系统Python+卷积神经网络算法+TensorFlow+人工智能+图像识别+计算机毕业设计项目
动物识别系统。本项目以Python作为主要编程语言,并基于TensorFlow搭建ResNet50卷积神经网络算法模型,通过收集4种常见的动物图像数据集(猫、狗、鸡、马)然后进行模型训练,得到一个识别精度较高的模型文件,然后保存为本地格式的H5格式文件。再基于Django开发Web网页端操作界面,实现用户上传一张动物图片,识别其名称。
32 1
动物识别系统Python+卷积神经网络算法+TensorFlow+人工智能+图像识别+计算机毕业设计项目
|
7天前
|
机器学习/深度学习 人工智能 自动驾驶
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【9月更文挑战第19天】在人工智能的浩瀚星海中,卷积神经网络(CNN)如同一颗璀璨的星辰,照亮了图像处理的天空。本文将深入CNN的核心,揭示其在图像识别领域的强大力量。通过浅显易懂的语言和直观的比喻,我们将一同探索CNN的奥秘,并见证它如何在现实世界中大放异彩。
|
7天前
|
机器学习/深度学习 人工智能 算法
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
植物病害识别系统。本系统使用Python作为主要编程语言,通过收集水稻常见的四种叶片病害图片('细菌性叶枯病', '稻瘟病', '褐斑病', '稻瘟条纹病毒病')作为后面模型训练用到的数据集。然后使用TensorFlow搭建卷积神经网络算法模型,并进行多轮迭代训练,最后得到一个识别精度较高的算法模型,然后将其保存为h5格式的本地模型文件。再使用Django搭建Web网页平台操作界面,实现用户上传一张测试图片识别其名称。
54 21
植物病害识别系统Python+卷积神经网络算法+图像识别+人工智能项目+深度学习项目+计算机课设项目+Django网页界面
|
7天前
|
机器学习/深度学习 人工智能 算法
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
鸟类识别系统。本系统采用Python作为主要开发语言,通过使用加利福利亚大学开源的200种鸟类图像作为数据集。使用TensorFlow搭建ResNet50卷积神经网络算法模型,然后进行模型的迭代训练,得到一个识别精度较高的模型,然后在保存为本地的H5格式文件。在使用Django开发Web网页端操作界面,实现用户上传一张鸟类图像,识别其名称。
50 12
鸟类识别系统Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+ResNet50算法模型+图像识别
|
7天前
|
机器学习/深度学习 算法 TensorFlow
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
交通标志识别系统。本系统使用Python作为主要编程语言,在交通标志图像识别功能实现中,基于TensorFlow搭建卷积神经网络算法模型,通过对收集到的58种常见的交通标志图像作为数据集,进行迭代训练最后得到一个识别精度较高的模型文件,然后保存为本地的h5格式文件。再使用Django开发Web网页端操作界面,实现用户上传一张交通标志图片,识别其名称。
37 6
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
|
3天前
|
机器学习/深度学习 人工智能 算法
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
文本分类识别系统。本系统使用Python作为主要开发语言,首先收集了10种中文文本数据集("体育类", "财经类", "房产类", "家居类", "教育类", "科技类", "时尚类", "时政类", "游戏类", "娱乐类"),然后基于TensorFlow搭建CNN卷积神经网络算法模型。通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型,并保存为本地的h5格式。然后使用Django开发Web网页端操作界面,实现用户上传一段文本识别其所属的类别。
15 1
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
|
7天前
|
机器学习/深度学习 人工智能 算法
深度学习中的卷积神经网络(CNN)入门与实践
【9月更文挑战第19天】在这篇文章中,我们将探索深度学习的一个重要分支——卷积神经网络(CNN)。从基础概念出发,逐步深入到CNN的工作原理和实际应用。文章旨在为初学者提供一个清晰的学习路径,并分享一些实用的编程技巧,帮助读者快速上手实践CNN项目。
|
2天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络(CNN)及其应用
【9月更文挑战第24天】本文将深入探讨深度学习中的一种重要模型——卷积神经网络(CNN)。我们将通过简单的代码示例,了解CNN的工作原理和应用场景。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息。
17 1
|
3天前
|
机器学习/深度学习 人工智能 算法
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台。果蔬识别系统,本系统使用Python作为主要开发语言,通过收集了12种常见的水果和蔬菜('土豆', '圣女果', '大白菜', '大葱', '梨', '胡萝卜', '芒果', '苹果', '西红柿', '韭菜', '香蕉', '黄瓜'),然后基于TensorFlow库搭建CNN卷积神经网络算法模型,然后对数据集进行训练,最后得到一个识别精度较高的算法模型,然后将其保存为h5格式的本地文件方便后期调用。再使用Django框架搭建Web网页平台操作界面,实现用户上传一张果蔬图片识别其名称。
14 0
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
|
6天前
|
机器学习/深度学习 自动驾驶 TensorFlow
深入理解卷积神经网络(CNN)在图像识别中的应用
【9月更文挑战第20天】本文旨在通过直观的解释和代码示例,向初学者介绍卷积神经网络(CNN)的基本概念及其在图像识别领域的应用。文章将首先解释什么是CNN以及它如何工作,然后通过一个简单的Python代码示例展示如何构建一个基本的CNN模型。最后,我们将讨论CNN在现实世界问题中的潜在应用,并探讨其面临的挑战和发展方向。
23 2

热门文章

最新文章