LLama的激活函数SwiGLU 解释

目录

Swish激活函数

1. Swish函数公式

LLaMA模型中的激活函数

1. SwiGLU激活函数

2. SwiGLU激活函数的表达式

3. SwiGLU激活函数的优势


Swish激活函数

Swish是一种激活函数,其计算公式如下:

1. Swish函数公式

Swish(x) = x * sigmoid(x)

其中,sigmoid(x)是sigmoid函数,计算公式为:

sigmoid(x) = 1 / (1 + exp(-x))

Swish函数结合了线性函数和非线性函数的特点,能够自适应地调整激活函数的形状,因此在某些深度学习模型中,Swish函数的表现优于常见的ReLU函数。

LLaMA模型中的激活函数

在LLaMA模型中,使用的激活函数是SwiGLU[1][2][3]。

1. SwiGLU激活函数

SwiGLU是LLaMA模型在前馈神经网络(FFN)阶段使用的激活函数[2:1]。它取代了ReLU非线性函数,以提高模型的性能[3:1]。

2. SwiGLU激活函数的表达式

SwiGLU是Gated Linear Units(GLU)激活函数的一种变体,其公式为:

SwiGLU(x,W, V, b, c) = Swish_1(xW + b) ⊗ (xV + c)

其中,Swish_β(x) = x σ(β x),σ为sigmoid函数,⊗为逐元素乘[1][2][3]。

3. SwiGLU激活函数的优势

SwiGLU的优势主要体现在以下几个方面:

3.1 提升性能:SwiGLU被应用于Transformer架构中的前馈神经网络(FFN)层,用于增强性能[1:1][2:1][3:1]。

3.2 可微性:SwiGLU是处处可微的非线性函数[1:2]。

3.3 自适应性:GLU是一种类似于长短期记忆网络(LSTM)带有门机制的网络结构,通过门机制控制信息通过的比例,来让模型自适应地选择哪些单词和特征对预测下一个词有帮助[3:2]。

import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import norm

def gelu(x):
   return x * norm.cdf(x)

def relu(x):
   return np.maximum(0, x)

def swish(x, beta=1):
   return x * (1 / (1 + np.exp(-beta * x)))

def swiglu(x, W, V, b, c):
   return swish(x*W + b) * (x*V + c)

x_values = np.linspace(-5, 5, 500)
gelu_values = gelu(x_values)
relu_values = relu(x_values)
swish_values = swish(x_values)
swish_values2 = swish(x_values, beta=0.5)
swiglu_values = swiglu(x_values, 1, 1, 0, 0) # Here you need to set the parameters W, V, b, and c according to your needs

plt.plot(x_values, gelu_values, label='GELU')
plt.plot(x_values, relu_values, label='ReLU')
plt.plot(x_values, swish_values, label='Swish')
plt.plot(x_values, swish_values2, label='Swish (beta=0.5)')
plt.plot(x_values, swiglu_values, label='SwiGLU')
plt.title("GELU, ReLU, Swish, and SwiGLU Activation Functions")
plt.xlabel("x")
plt.ylabel("Activation")
plt.grid()
plt.legend()
plt.show()

  1. 大模型基础|激活函数|从ReLU 到SwiGLU - 知乎

  2. 为什么大型语言模型都在使用 SwiGLU 作为激活函数? - 腾讯云

  3. 大模型系列:SwiGLU激活函数与GLU门控线性单元原理解析


  1. LLaMA:Open and Efficient Foundation Models

  2. llama2介绍(模型结构+参数计算)

  3. LLaMA Explained | Papers With Code

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

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

相关文章

基于CANoe从零创建以太网诊断工程(2)—— TCP/IP Stack 配置的三种选项

🍅 我是蚂蚁小兵,专注于车载诊断领域,尤其擅长于对CANoe工具的使用🍅 寻找组织 ,答疑解惑,摸鱼聊天,博客源码,点击加入👉【相亲相爱一家人】🍅 玩转CANoe&…

Confluence 快捷键大揭秘:提高效率的小窍门

使用 Confluence 快捷键的好处有: 1.提高工作效率; 2.更流畅地进行编辑、导航和管理操作; 3.减少误操作; 4.展现专业水平。 更多精彩内容: 成为 Jira 大师:效率达人的必备秘诀 Jira Cloud 项目管理专栏 PMO…

怎样把PDF分割成多个文件?有哪些方法可以分割PDF文件?这几个方法成功率很高!

一,引言 PDF分割,即将一个完整的PDF文档拆分为多个较小的部分,是许多用户在处理 PDF文件时经常需要执行的操作。无论是为了单独提取某个章节、创建电子书章节、还是为了在多个设备间轻松共享,PDF分割都显得非常实用。本文将详细介…

AI大模型语音实时对话聊天机器人实现:ollama、funasr;支持语音实时语音打断;回音消除噪声抑制

ASR:funasr(1.0.19) LLM:ollama(Qwen) TTS(edge_tts) 支持语音实时语音打断:这是通过子进程的控制创建与杀掉,这里是通过有人再次说话就打断tts 回音消除噪声抑制:喇叭的tts播报影响到麦克风的识别了,播报的声音被错误的识别;这里可以jd买个回音消除的麦克风设备;或者有…

python 10实验

实验内容: 使用线性回归算法预测儿童身高 实验目的: 理解线性回归算法的原理,了解线性回归算法适用的问题类型,能够使用线性回归算法解决问题 实验内容: 一个人的身高除了随年龄变大而增长以外,在一定程…

revit\navisworks各种安装问题

You have entered a nonvalid serial number ,怎么都不给你一个机会输出序列号,怎么办? step1: C:\Program Files (x86)\Common Files\Autodesk Shared\AdskLicensing目录下找到uninstall.exe,右键管理员模式运行,会…

动态活码二维码怎么制作?在线二维码生成器的使用技巧

二维码是如何生成的呢?现在二维码与我们的工作和生活息息相关,越来越多的场景都会有不同类型的二维码,比如常见的有视频、图片、文件、问卷、文本等等类型的内容。面对不同用途需求来制作二维码来为其他人提供内容展示,提升用户获…

Chisel 入门(2)运算符

Chisel 入门(2) 运算符 逻辑运算符 ChiselExplanationwidth!x逻辑非1x && y逻辑与1x||y逻辑或1 位操作运算符 ChiselExplanationwidthin Verilog~x位反w(x)~ signal_xx & y位与max(w(x), w(y))signal_x & signal_yx | y位或max(w(x), w(y))signal_x | sign…

Oracle数据库的AI能力分析,释放企业数据价值

解锁Oracle数据库的AI潜力 Oracle数据库提供了一系列的AI能力,旨在帮助企业和开发者更高效地利用人工智能技术。以下是Oracle数据库AI能力的一些关键点:1. AI向量相似性搜索:Oracle Database 23c引入了AI Vector Search功能,该功…

基于B2C的网上拍卖系统——秒杀与竞价

点击下载源码和论文https://download.csdn.net/download/liuhaikang/89222887 课题背景及意义 随着网络的进一步普及和电子商务的高速发展,越来越多的人们开始在网络中寻求方便。网上网物具备了省时、省事、省心、高效等特点,从而受到越来越多人的欢迎。…

SpringCloud系列(16)--将服务提供者Provider注册进Zookeeper

前言:在上一章节中我们说明了一些关于Eureka自我保护模式,而且自上一章节起关于Eureka的知识已经讲的差不多了,不过因为Eureka已经停更了,为了安全考虑,我们要用还在更新维护的注册中心来取代Eureka,而本章…

C语言:复习

文章目录 思维导图数组和指针库函数的模拟实现判断大小端 最近知识学的差不多了,因此开始复习,本篇开始的是对于C语言的复习 思维导图 下面就依据下图,进行内容的整理 数组和指针 这个模块算是C语言中比较大的一个模块了,具体概…

Three.js——基础材质、深度材质、法向材质、面材质、朗伯材质、Phong材质、着色器材质、直线和虚线、联合材质

个人简介 👀个人主页: 前端杂货铺 🙋‍♂️学习方向: 主攻前端方向,正逐渐往全干发展 📃个人状态: 研发工程师,现效力于中国工业软件事业 🚀人生格言: 积跬步…

如何使用rdtsc和C/C++来测量运行时间(如何使用内联汇编和获取CPU的TSC时钟频率)

本文主要是一个实验和思维扩展,是一个初步的尝试,旨在研究一些时间测量实现和在 C/C 中内联汇编和汇编函数的使用方法。除非你有特殊用途,不然不要使用汇编指令来实现这个功能。在“扩展阅读”部分会列出了一些不需要内联汇编实现的方法。 写…

猫头虎分享已解决Bug || TypeError: Cannot read property ‘map‘ of undefined**

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

4.25 C高级

思维导图 作业 2.输入两个数,实现两个数的排序 3.输入一个数,计算是否是水仙花 if ((g*g*gs*s*sb*b*bnum)) then echo YES else echo no fi 4.输入一个成绩实现登记判断 90-100A 80-89B 70-79C 60-69D 0-59E

“追忆似水年华 展望美好未来”——生命故事小组忆童趣活动

在人生的长河中,童年是明亮色彩的日子,但随着岁月的流逝,这些回忆有时会变得模糊,为唤起他们对美好童年的回忆,2024年4月9日上午9点,由成都市社会组织社区和社工人才服务中心支持,新都区民政局指…

OpenHarmony语言基础类库【@ohos.util.HashMap (非线性容器HashMap)】

HashMap底层使用数组链表红黑树的方式实现,查询、插入和删除的效率都很高。HashMap存储内容基于key-value的键值对映射,不能有重复的key,且一个key只能对应一个value。 HashMap和[TreeMap]相比,HashMap依据键的hashCode存取数据&…

文旅元宇宙解决方案|人工智能、虚拟数字人、导览系统深度应用

随着数字技术的飞速发展,文旅行业正迎来一场前所未有的变革。道可云文旅元宇宙平台以其前瞻性的技术视野和创新的解决方案,为各级文旅主管部门、旅游景区、博物馆、艺术展览馆等单位提供了全新的智慧景区导览、元宇宙场景搭建、AR场景开发以及数字人导游…

市场上免费且高效的云渲染平台,渲染100邀请码7788

在当今数字化时代,云渲染服务因其便捷性和高效性而日益受到追捧,广泛应用于建筑设计、影视制作和视觉艺术等多个领域。它不仅能够显著缩短项目完成的时间,还能大幅提升工作效率。 接下来,我们将探讨一些市场上公认的优质且免费的…