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

简介: 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://ojs.aaai.org/index.php/AAAI/article/view/20858/20617

相关文章
|
10月前
|
人工智能 自然语言处理 负载均衡
WideNet:让网络更宽而不是更深
这是新加坡国立大学在2022 aaai发布的一篇论文。WideNet是一种参数有效的框架,它的方向是更宽而不是更深。通过混合专家(MoE)代替前馈网络(FFN),使模型沿宽度缩放。使用单独LN用于转换各种语义表示,而不是共享权重。
58 0
|
11天前
|
机器学习/深度学习 缓存 监控
linux查看CPU、内存、网络、磁盘IO命令
`Linux`系统中,使用`top`命令查看CPU状态,要查看CPU详细信息,可利用`cat /proc/cpuinfo`相关命令。`free`命令用于查看内存使用情况。网络相关命令包括`ifconfig`(查看网卡状态)、`ifdown/ifup`(禁用/启用网卡)、`netstat`(列出网络连接,如`-tuln`组合)以及`nslookup`、`ping`、`telnet`、`traceroute`等。磁盘IO方面,`iostat`(如`-k -p ALL`)显示磁盘IO统计,`iotop`(如`-o -d 1`)则用于查看磁盘IO瓶颈。
|
5天前
|
网络协议 算法 Linux
【Linux】深入探索:Linux网络调试、追踪与优化
【Linux】深入探索:Linux网络调试、追踪与优化
|
1天前
|
Ubuntu 网络协议 Linux
|
2天前
|
JSON 网络协议 Linux
Linux ip命令:网络的瑞士军刀
【4月更文挑战第25天】
8 1
|
3天前
|
缓存 网络协议 Linux
Linux 网络命令大全,详细归纳!
【4月更文挑战第24天】
24 3
Linux 网络命令大全,详细归纳!
|
4天前
|
网络协议 JavaScript Linux
Linux常用网络指令(下)
Linux常用网络指令(下)
12 0
|
4天前
|
Linux
Linux常用网络指令(上)
Linux常用网络指令(上)
6 0
|
4天前
|
安全 Linux 网络安全
【专栏】Linux 网络扫描工具:nmap,涨知识的时间到了!
【4月更文挑战第28天】nmap, 开源网络扫描工具,用于探测主机、网络信息,包括开放端口、服务类型、OS等。本文分三部分介绍:1) nmap简介与基本原理;2) 使用方法和高级技巧,如脚本扩展;3) 实际应用,如网络安全评估、系统管理和渗透测试。学习nmap需注意合规性,持续探索新技巧,以提升网络管理与安全能力。一起开始nmap的探索之旅吧!
|
4天前
|
安全 网络协议 Linux
【专栏】一文教你玩转 Linux 的 ping 命令,从此成为 Linux 网络高手
【4月更文挑战第28天】本文详细介绍了Linux系统中ping命令的使用,包括其基本语法、输出信息、常用参数及高级用法。通过ping,用户可测试网络连通性、诊断故障及评估性能。此外,文章还讨论了ping在不同协议、模拟网络环境及与其他命令结合使用时的场景。注意防火墙和网络环境可能影响ping结果,理解错误信息有助于网络问题排查。熟练掌握ping命令,能助你成为Linux网络专家。不断学习和实践,提升网络技能,为构建稳定网络环境贡献力量。