当前位置:AIGC资讯 > AIGC > 正文

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()

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

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

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

LLaMA:Open and Efficient Foundation Models

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

LLaMA Explained | Papers With Code

更新时间 2024-06-13