WideNet:让网络更宽而不是更深

这是新加坡国立大学在2022 aaai发布的一篇论文。WideNet是一种参数有效的框架,它的方向是更宽而不是更深。通过混合专家(MoE)代替前馈网络(FFN),使模型沿宽度缩放。使用单独LN用于转换各种语义表示,而不是共享权重。

混合专家(MoEs)

条件计算

对于每个输入,只有一部分隐藏的表示被发送到选定的专家中进行处理。与MoE一样,给定E个可训练的专家,输入用x表示,MoE模型的输出可表示为:

其中e(.)i是第i位专家的非线性变换。g(.)i是可训练路由器g(.)输出的第i个元素。当g(.)为稀疏向量时,只会激活部分专家。论文中通过MoE和提出的WideNet,每个专家都是一个FFN层。

路由

为了保证稀疏路由g(.),使用TopK()选择排名靠前的专家:

这里的f(.)为路由线性变换。ε为高斯噪声。当K<<E时,g(x)的大多数元素为零。

平衡加载

MoE的问题就是要确保每个专家模块都要处理基本相同数量的令牌,所以优化MoE需要解决下面2个主要问题:

1、把太多令牌分配给一个专家

2、单个专家收到的令牌太少

也就是说要保证将令牌平均分配到各个专家模块。

要解决第一个问题,可以增加缓冲区容量B。对于每个专家最多只保留B个令牌。如果超过B=CKNL,则丢弃所有剩余的令牌。

但是这个方法也只是解决了太多的问题,仍然不能保证所有的专家都能获得足够的令牌进行训练。所以论文采用了 Switch Transformer的方法,采用了一个负载平衡的并且可微的损失函数。

下面这个辅助损失会加到训练时的模型总损失中:

m是向量。第i个元素是分配给专家i的令牌的分数.mi的计算如下:

其中h(.)是TopK选择的索引向量。H (xj)i是H (xj)的第i个元素。

Pi是softmax后路由线性变换的第i个元素。

通过以上的损失函数实现均衡分配。当lbalance最小时,m和P都接近均匀分布。

WideNet

在不同的Transformer块中使用相同的路由和专家

WideNet采用跨Transformer块的参数共享来提高参数效率,采用MoE层来提高模型容量。WideNet在不同的Transformer块中使用相同的路由器和专家。

LN

目前来说,例如ALBERT使用的是参数共享的方法,在Transformer块之间共享所有权重。

而WideNet中只有多头注意层和FFN(或MoE)层是共享的,这意味着LN的可训练参数在块之间是不同的,也就是说每一层的LN的权重都不一样。

把论文中的的第i个Transformer块可以写成:

这里的LayerNormal(.)为:

γ和β是可训练向量。LN只需要这两个小向量。

损失函数

尽管路由的可训练参数在每个Transformer块中被重用,但由于输入表示的不同,分配也会有所不同。所以给定T次具有相同可训练参数的路由操作,使用以下损失进行优化:

其中λ=0.01用作超参数,以确保均衡分配。lmain是Transformer的主要目标。例如,在监督图像分类中,主要是交叉熵损失。

结果(CV & NLP)

ImageNet-1K (CV)

在ImageNet-1K上,WideNet-H实现了最佳性能,显著优于ViT和ViT- moe模型。

与最强基线相比,WideNet-H在可训练参数较少的情况下优于vitb 1.5%。即使对于最小的模型WideNet-B,它仍然可以与可训练参数减少4倍以上的viti - l和viti - moe - b取得相当的性能。当扩大到WideNet-L时,它已经超过了所有基线,其中vitb的可训练参数为一半,vitl的参数为0.13倍。

GLUE (NLP)

有了更多的专家,WideNet的表现远远超过ALBERT。

拥有4位专家的WideNet平均比ALBERT高出1.2%。当将专家数量E增加到16时,通过分解嵌入参数化,获得的可训练参数略低于BERT, WideNet在所有四个下游任务上的表现也优于BERT,这显示了更宽而不是更深的参数效率和有效性。

消融研究

专家越多(可训练参数)导致过拟合,尽管专家越多意味着建模能力越强。更少的路由操作时,会有明显的性能下降。

对于可训练向量的第i个元素或第j个块,计算该元素与其他块中所有向量的所有其他元素之间的距离:

式中N为Transformer块的个数,M为向量γ或β的维数。所以WideNet中的γ和β都比ViT中的y大,这意味着MoE比ViT接受更多样化的输入。

这样的结果证明,单独的LN层可以帮助建立具有共享的大型可训练矩阵(如MoE)的各种语义模型。

如果没有跨Transformer块的参数共享,也会有轻微的性能下降和显著的参数增量。对于没有参数共享的WideNet-H,在256个TPUv3核上训练时遇到内存不足的问题。

当WideNet-L比viti - l使用更少的Transformer块(即12个块)时,WideNet-L的性能比viti - l高0.7%,训练时间略少,而参数仅为13.1%,与参数共享的viti - l相比,性能则提升幅度更大。

通过使用参数共享将vitl缩放到更宽的FFN层。会有更多可训练的参数和FLOPs,但不能提高性能(4098 FFN dim到8192 FFN dim)。

论文地址:

Go Wider Instead of Deeper

https://avoid.overfit.cn/post/fd66d50b81fc4e4e83bb3bba42f41dee

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/34629.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数通王国历险记之TCP协议下的三大协议的验证实验

系列文章目录 数通王国历险记&#xff08;1&#xff09; 前言 一&#xff0c;我们要先知道PDU是什么&#xff1f; 二、TCP协议下的三大协议的验证实验 1.FTP的验证实验 1&#xff0c;拓扑图 2.将lsw4配置一下 3&#xff0c;FTP服务器端开启FTP服务&#xff1a; 4&#x…

LIN诊断实现MCU本地OTA升级

一、目标 通过PC端上位机实现MCU本地的OTA升级,本篇文章对实现的目的、需要用到的第三方工具、LIN诊断帧、升级协议、MCU端升级过程以及PC端升级过程做详细说明。 二、目的 最近在做MCU项目时需要将样机寄给客户进行验证,在客户的验证过程中要求参数可调试,如果需要修改软…

vue下基于elementui自定义表单-后端数据设计篇

vue下基于elementui自定义表单-后端篇 自定义表单目前数据表单设计是基于数据量不大的信息单据场景&#xff0c;因为不考虑数据量带来的影响。 数据表有: 1.表单模版表&#xff0c;2.表单实例表&#xff0c;3.表单实例项明细表&#xff0c;4表单审批设计绑定表 以FormJson存…

RuoYi(分离版) 使用代码生成器添加子模块(idea版)

右键总文件夹&#xff0c;选择新模块添加新模块 新建的业务模块 新建的业务模块中添加若依通用模块工具 <dependencies><dependency><groupId>com.ruoyi</groupId><artifactId>ruoyi-common</artifactId></dependency></depen…

【Thunder送书 | 第三期 】「Python系列丛书」

文章目录 前言《Python高效编程——基于Rust语言》《Python从入门到精通》《Python Web深度学习》《Python分布式机器学习》文末福利 | 赠书活动 前言 Thunder送书第三期开始啦&#xff01;前面两期都是以【文末送书】的形式开展&#xff0c;本期将赠送Python系列丛书&#xff…

学习系统编程No.25【核心转储实战】

引言&#xff1a; 北京时间&#xff1a;2023/6/16/8:39&#xff0c;实训课中&#xff0c;大一下学期最后有课的一天&#xff0c;还有两天就要期末考啦&#xff01;目前什么都还没有复习&#xff0c;不到星期天晚上&#xff0c;咱不慌&#xff0c;小小挂科&#xff0c;岂能拦得…

ElementUI plus框架Table表格cell-style属性的使用

官方文档说明&#xff1a; 例&#xff1a;设置单元格文字居中 Object方式&#xff1a; function方式&#xff1a;

NOSQL——redis的安装,配置与简单操作

一、缓存的概述 缓存是为了调节速度不一致的两个或多个不同的物质的速度&#xff0c;在中间对速度较慢的一方起到加速作用&#xff0c;比如CPU的一级、二级缓存是保存了CPU最近经常访问的数据&#xff0c;内存是保存CPU经常访问硬盘的数据&#xff0c;而且硬盘也有大小不一的缓…

抖音seo矩阵系统源码开发部署|抖音小程序接入(一)

一、 开发部署步骤&#xff1a; &#xff08;1&#xff09;申请开放平台服务商 &#xff08;2&#xff09;申请开放平台网站应用 &#xff08;3&#xff09;申请开放平台应用权限 &#xff08;4&#xff09;提交各个API接口申请文档 &#xff08;5&#xff09;审核通过技…

详解JS 作用域与作用域链、IIFE模式、js执行过程

文章目录 一、什么是作用域二. 全局作用域、函数作用域、块级作用域全局作用域函数作用域注意 if、for循环、while循环变量 块级作用域 二、什么是作用域链1. 什么是自由变量2.什么是作用域链3. 关于自由变量的取值 三、IIFE模式由来语法基本语法带参 四、JavaScript 执行过程编…

【运维工程师学习】Debian安装

【运维工程师学习】Debian安装 1、界面说明2、选择语言3、等待探测并挂载安装介质完成4、设置主机名称、用户信息5、磁盘分区6、创建分区7、最终分区为8、安装ssh9、查看ssh状态10、查看内存大小11、查询系统磁盘及分区情况12、查看各磁盘及分区剩余13、查看ip地址 选择镜像文件…

【Linux】进程信号之信号的产生

进程信号 一 一、信号入门1、信号的一些特性2、信号的处理方式信号捕捉初识 3、Linux下的信号 二、信号的产生1、通过终端按键产生信号2、调用系统函数向进程发信号a、kill函数b、raise函数c、abort函数 3. 由软件条件产生信号4、硬件异常产生信号 结语 一、信号入门 什么是信号…

PS扣签名

打开Photoshop CS6&#xff0c;依次点击“文件”-“打开”&#xff0c;把签名照导入进来。 在“选择”菜单下点击“色彩范围”。 此时鼠标形状变成了一支笔&#xff0c;点击签名上黑色的地方&#xff0c;适当调整颜色容差&#xff0c;点击“确定”完成选择。 按住CtrlJ组…

1. Netty核心功能与线程模型详解

Netty 1. 认识Netty2. 第一个Netty程序3. Netty组件3.1 EventLoop和EventLoopGroupChannelChannelPipeline和ChannelHandlerContextChannelPipeline中ChannelHandlerChannelPipeline 本文是按照自己的理解进行笔记总结&#xff0c;如有不正确的地方&#xff0c;还望大佬多多指点…

开源免费的多数据库工具Chat2DB

Chat2DB v1.0.11使用 当前使用的版本为1.0.11&#xff0c;目前已经更新到2.0.0版本。 一.Chat2DB介绍 Chat2DB 是一款开源免费的多数据库客户端工具。 能够将自然语言转换为SQL&#xff0c;也可以将SQL转换为自然语言。 支持windows、mac本地安装&#xff0c;也支持服务器端…

哈工大计算机网络课程网络层协议详解之:Internet路由BGP协议详解

哈工大计算机网络课程网络层协议详解之&#xff1a;BGP协议详解 在之前的网络层协议中&#xff0c;我们介绍了Internet网络两个自治系统内的路由协议&#xff1a;RIP协议和OSPF协议。这两个协议应该来说是自治系统内协议的两个代表性协议&#xff0c;前一个基于距离向量路由算…

vue项目业务实现,视频监控-文件流,大屏适配方案(v-scale-screen),websocket前端

最近把以前的业务场景及解决方案整理了一下&#xff0c;具体实现的工具如下&#xff1a; 监控-视频文件流>video.js videojs-contrib-hls 大屏适配方案> v-scale-screen websocket>sockjs-client webstomp-client 视频监控-文件流 使用方法 下载video插件&#xf…

异步交互技术Ajax

Ajax 概念&#xff1a;Asynchronous JavaScr And XML 异步的JavaScript和XML作用&#xff1a; 数据交换&#xff1a;通过Ajax可以给服务器发送请求&#xff0c;并获取服务响应的数据异步交互&#xff1a;可以在不重新加载整个页面的情况下&#xff0c;与服务器交换数据并更新部…

第3章 创建项目并初始化业务数据(过程记录)

项目声明和依赖 ECommerceRecommendSystem [pom.xml] 公用的声明、依赖、插件 properties 声明 log4g&#xff1a;处理日志的框架&#xff08;日志的具体实现&#xff09;sel4g&#xff1a;简单日志门面&#xff08;简单日志的接口&#xff09;mongodb-spark&#xff1a;Mong…

用隐私换便利,,,,,,您配吗?

用隐私换便利,您配吗&#xff1f; 引言 近日&#xff0c;某高校毕业生在校期间窃取学校内网数据&#xff0c;收集全校学生个人隐私信息的新闻引发了人们对互联网生活中个人信息安全问题的再度关注。在大数据时代&#xff0c;算法分发带来了隐私侵犯&#xff0c;在享受消费生活…