当前位置:   article > 正文

LLama的激活函数SwiGLU 解释

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]

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. from scipy.stats import norm
  4. def gelu(x):
  5. return x * norm.cdf(x)
  6. def relu(x):
  7. return np.maximum(0, x)
  8. def swish(x, beta=1):
  9. return x * (1 / (1 + np.exp(-beta * x)))
  10. def swiglu(x, W, V, b, c):
  11. return swish(x*W + b) * (x*V + c)
  12. x_values = np.linspace(-5, 5, 500)
  13. gelu_values = gelu(x_values)
  14. relu_values = relu(x_values)
  15. swish_values = swish(x_values)
  16. swish_values2 = swish(x_values, beta=0.5)
  17. 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
  18. plt.plot(x_values, gelu_values, label='GELU')
  19. plt.plot(x_values, relu_values, label='ReLU')
  20. plt.plot(x_values, swish_values, label='Swish')
  21. plt.plot(x_values, swish_values2, label='Swish (beta=0.5)')
  22. plt.plot(x_values, swiglu_values, label='SwiGLU')
  23. plt.title("GELU, ReLU, Swish, and SwiGLU Activation Functions")
  24. plt.xlabel("x")
  25. plt.ylabel("Activation")
  26. plt.grid()
  27. plt.legend()
  28. 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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/498128
推荐阅读
相关标签
  

闽ICP备14008679号