如果你一直在关注大型语言模型的架构,你可能会在最新的模型和研究论文中看到“SwiGLU”这个词。SwiGLU可以说是在大语言模型中最常用到的激活函数,我们本篇文章就来对它进行详细的介绍。SwiGLU其实是2020年谷歌提出的激活函数,它结合了SWISH和GLU两者的特点。 SwiGLU的中文全称是“双向门控线性单元”,它将SWISH和GLU两种激活函数进行了优化和结合,以提高模型的非线性表达能力。SWISH是一种非常普遍的激活函数,它在大语言模型中得到广泛应用,而GLU则在自然语言处理任务中表现出色。 SwiGLU的优点在于它能够同时获取SWISH的平滑特性和GLU的门控特性,从而在模型的非线性表达上更加
我们一个一个来介绍:
Swish
Swish是一个非线性激活函数,定义如下:
Swish(x) = x*sigmoid(ßx)
其中,ß 为可学习参数。Swish 可以比ReLU激活函数更好,因为它给予了更平滑的转换,这可以带来更好的优化。
Gated Linear Unit
GLU(Gated Linear Unit)定义为两个线性变换的分量积,其中一个线性变换由sigmoid激活。
GLU(x) = sigmoid(W1x+b)⊗(Vx+c)
GLU模块可以有效地捕获序列中的远程依赖关系,同时避免了LSTM和GRU等其他门控机制相关的一些梯度消失问题。
SwiGLU
我们已经说过SwiGLU是两者的结合。它是一个GLU,但不是将sigmoid作为激活函数,而是使用ß=1的swish,因此我们最终得到以下公式:
SwiGLU(x) = Swish(W1x+b)⊗(Vx+c)
我们用SwiGLU函数构造一个前馈网络
FFNSwiGLU(x) = (Swish1(xW)⊗xV)W2
Pytorch的简单实现
如果上面的数学原理看着比较麻烦枯燥难懂,我们下面直接使用代码解释。
class SwiGLU(nn.Module): def __init__(self, w1, w2, w3) -> None:super().__init__()self.w1 = w1self.w2 = w2self.w3 = w3 def forward(self, x):x1 = F.linear(x, self.w1.weight)x2 = F.linear(x, self.w2.weight)hidden = F.silu(x1) * x2return F.linear(hidden, self.w3.weight)
我们代码使用的F.silu函数与ß=1时的swish相同的,所以就直接拿来使用了。
代码可以看到,我们的激活函数中也有3个权重是可以训练的,这就是来自于GLU公式里的参数。
SwiGLU的效果对比
SwiGLU与其他GLU变体进行比较,我们可以看到SwiGLU在两种预训练期间都表现得更好。
下游任务
效果表现得最好,所以现在的llm,如LLAMA, OLMO和PALM都在其实现中采用SwiGLU。但是为什么SwiGLU比其他的好呢?
论文中只给了测试结果而且并没有说明原因,而是说:
We offer no explanation as to why these architectures seem to work; we attribute their success, as all else, to divine benevolence.
作者说炼丹成功了。
但是现在已经是2024年了我们可以强行的解释一波:
1、Swish对于负值的响应相对较小克服了 ReLU 某些神经元上输出始终为零的缺点
2、GLU 的门控特性,这意味着它可以根据输入的情况决定哪些信息应该通过、哪些信息应该被过滤。这种机制可以使网络更有效地学习到有用的表示,有助于提高模型的泛化能力。在大语言模型中,这对于处理长序列、长距离依赖的文本特别有用。
3、SwiGLU 中的参数 W1,W2,W3,b1,b2,b3W1,W2,W3,b1,b2,b3 可以通过训练学习,使得模型可以根据不同任务和数据集动态调整这些参数,增强了模型的灵活性和适应性。
4、计算效率相比某些较复杂的激活函数(如 GELU)更高,同时仍能保持较好的性能。这对于大规模语言模型的训练和推理是很重要的考量因素。
选择 SwiGLU 作为大语言模型的激活函数,主要是因为它综合了非线性能力、门控特性、梯度稳定性和可学习参数等方面的优势。在处理语言模型中复杂的语义关系、长依赖问题、以及保持训练稳定性和计算效率方面,SwiGLU 表现出色,因此被广泛采用。
论文地址
以上是为什么大型语言模型都在使用 SwiGLU 作为激活函数?的详细内容。更多信息请关注PHP中文网其他相关文章!

法律技术革命正在获得动力,促使法律专业人员积极采用AI解决方案。 对于那些旨在保持竞争力的人来说,被动抵抗不再是可行的选择。 为什么技术采用至关重要? 法律专业人员

许多人认为与AI的互动是匿名的,与人类交流形成了鲜明的对比。 但是,AI在每次聊天期间都会积极介绍用户。 每个单词的每个提示都经过分析和分类。让我们探索AI Revo的这一关键方面

成功的人工智能战略,离不开强大的企业文化支撑。正如彼得·德鲁克所言,企业运作依赖于人,人工智能的成功也同样如此。 对于积极拥抱人工智能的组织而言,构建适应AI的企业文化至关重要,它甚至决定着AI战略的成败。 西蒙诺咨询公司(West Monroe)近期发布了构建蓬勃发展的AI友好型企业文化的实用指南,以下是一些关键要点: 1. 明确AI的成功模式: 首先,要对AI如何赋能业务有清晰的愿景。理想的AI运作文化,能够实现人与AI系统之间工作流程的自然融合。AI擅长某些任务,而人类则擅长创造力、判

Meta升级AI助手应用,可穿戴式AI时代来临!这款旨在与ChatGPT竞争的应用,提供文本、语音交互、图像生成和网络搜索等标准AI功能,但现在首次增加了地理位置功能。这意味着Meta AI在回答你的问题时,知道你的位置和正在查看的内容。它利用你的兴趣、位置、个人资料和活动信息,提供最新的情境信息,这在以前是无法实现的。该应用还支持实时翻译,这彻底改变了Ray-Ban眼镜上的AI体验,使其实用性大大提升。 对外国电影征收关税是对媒体和文化的赤裸裸的权力行使。如果实施,这将加速向AI和虚拟制作的

人工智能正在彻底改变网络犯罪领域,这迫使我们必须学习新的防御技巧。网络罪犯日益利用深度伪造和智能网络攻击等强大的人工智能技术进行欺诈和破坏,其规模前所未有。据报道,87%的全球企业在过去一年中都成为人工智能网络犯罪的目标。 那么,我们该如何避免成为这波智能犯罪的受害者呢?让我们探讨如何在个人和组织层面识别风险并采取防护措施。 网络罪犯如何利用人工智能 随着技术的进步,犯罪分子不断寻找新的方法来攻击个人、企业和政府。人工智能的广泛应用可能是最新的一个方面,但其潜在危害是前所未有的。 特别是,人工智

最好将人工智能(AI)与人类智力(NI)之间的复杂关系理解为反馈循环。 人类创建AI,对人类活动产生的数据进行培训,以增强或复制人类能力。 这个AI

Anthropic最近的声明强调了关于尖端AI模型缺乏了解,引发了专家之间的激烈辩论。 这是一个真正的技术危机,还是仅仅是通往更秘密的道路上的临时障碍

印度是一个多元化的国家,具有丰富的语言,使整个地区的无缝沟通成为持续的挑战。但是,Sarvam的Bulbul-V2正在帮助弥合其高级文本到语音(TTS)T


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

SublimeText3 英文版
推荐:为Win版本,支持代码提示!

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器