混合专家模型前传-------SwiGLU(Switch-Gated Linear Unit)门控线性单元激活函数

部署运行你感兴趣的模型镜像

经典前馈神经网络:output = Linear2(ReLU(Linear1(x)))

llama中的前馈神经网络:output = Linear2(Silu(Linear1(x))\bigodotLinear3(x))

SwiGLU(Switch-Gated Linear Unit)门控线性单元激活函数

SwiGLU 是一种新型的激活函数,由 Shazeer (2020) 在论文 “Gated Linear Units for Efficient and Scalable Deep Learning” 中提出。它被用在 深度学习模型的前馈神经网络(FFN)层,如 LLaMAGPT-3 和其他大型 Transformer 模型中。SwiGLU 的设计核心是基于门控机制(gating mechanism),它通过引入两个线性路径的输出,并结合逐元素乘法,实现了对信息的动态控制。这种门控结构类似于在 LSTM 和 GRU 等门控循环网络中的思想,但它被应用在 Transformer 的前馈网络(FFN)层中,用于增强网络的非线性表达能力和训练效率。

SwiGLU = GELU(Linear1(x))\bigodotLinear2(x)

GELU(Gaussian Error Linear Unit)是一个非线性激活函数,它与ReLU激活函数类似,但它比 ReLU 更平滑,适用于深度模型。

为什么要使用SwiGLU而不是ReLU?

ReLU容易丢失负值信息,负值梯度为0可能导致死神经元

SwiGLU更平滑的梯度流动,训练更稳定,高效计算适合大规模模型

门控机制为什么高效?

参数学习:在训练过程中,网络通过反向传播算法学习门控单元的参数。这些参数决定了门控单元如何以及在何种程度上开启或关闭,从而让网络学会在特定任务中哪些信息是有用的。

优化和泛化:通过训练,门控机制能够优化网络在特定任务上的性能,并且由于其灵活性,它们通常具有良好的泛化能力。

门控机制通过训练过程中的参数学习和优化,为神经网络提供了一种强大且灵活的方式来管理和利用信息。这种能力并非来自预定义的函数规定,而是通过模型自身学习到的。

Llama架构中的激活函数

在实际实现LLaMA架构的时候,LLaMA官方却没有用广受好评的GELU函数,而是使用了SILU激活函数。SiLU 是一种平滑的非线性激活函数,全称为 Sigmoid-Weighted Linear Unit。它是由 Sigmoid 函数与输入的乘积构成的激活函数,具有较好的梯度流动特性,常用于深度神经网络的激活层中。SiLU 在许多深度学习任务中表现优于传统的激活函数(如 ReLU),并且已经被应用在 Transformer 等现代架构中(例如,EfficientNet 以及一些 NLP 模型)。

                                                                 SiLU(x) = x\cdot \sigma (x)

因此在LLaMA的前馈神经网络中我们实现的实际上是——

                                output(x) = Linear2(SiLU(Linear1(x))\bigodotLinear3(x))

您可能感兴趣的与本文相关的镜像

Llama Factory

Llama Factory

模型微调
LLama-Factory

LLaMA Factory 是一个简单易用且高效的大型语言模型(Large Language Model)训练与微调平台。通过 LLaMA Factory,可以在无需编写任何代码的前提下,在本地完成上百种预训练模型的微调

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值