【T5中的激活函数】GLU Variants Improve Transformer

news2025/3/10 15:11:24

【mT5中的激活函数】GLU Variants Improve Transformer

  • 论文信息
    • 阅读评价
  • Abstract
  • Introduction
  • Gated Linear Units (GLU) and Variants
  • Experiments on Text-to-Text Transfer Transformer (T5)
  • Conclusion

论文信息

名称内容
论文标题GLU Variants Improve Transformer
论文地址https://arxiv.org/abs/2002.05202
发表时间2020-02-12
研究领域NLP, 激活函数, FNN
提出方法GEGLU(激活函数)

阅读评价

  论文在各种激活函数之间做了对比实验,探究应用不同激活函数的FNN对T5模型的影响。最终GEGLU效果最好。

  个人感受:只能说太细了!真是不给其他人一点活路,连激活函数他都要做个实验取个最好的。


  以下是对论文每个部分的简单介绍。

Abstract

  门控线性单元(Gated Linear Units, GLU)由两个线性投影的分量乘积组成,其中一个投影首先通过sigmoid函数。对于GLU中的激活函数,也是调参中的一个点。论文在FFN中应用了GLU的一些变体,发现其中一些变体的质量优于通常使用的ReLUGELU激活。

Introduction

  介绍了四种基于不同激活函数的FFN。

  Transformer 论文中提出的前馈网络(Feed-Forward Network, FNN)是一个两层的全连接神经网络,它在 Transformer 模型中起到了重要的作用。这个网络的结构是:

F F N ( x , W 1 , W 2 , b 1 , b 2 ) = m a x ( 0 , x W 1 + b 1 ) W 2 + b 2 FFN(x, W_1, W_2, b_1, b_2) = max(0, xW_1 + b_1)W_2 + b_2 FFN(x,W1,W2,b1,b2)=max(0,xW1+b1)W2+b2

  其中, x x x 是输入, W 1 W_1 W1 W 2 W_2 W2 是权重矩阵, b 1 b_1 b1 b 2 b_2 b2 是偏置向量。这个公式首先通过一个线性变换 x W 1 + b 1 xW_1 + b_1 xW1+b1,然后通过ReLU激活函数,最后再通过另一个线性变换 W 2 W_2 W2 和偏置 b 2 b_2 b2

  在 T5 论文中,作者对前馈网络进行了一些调整,取消了偏置项。这样做的目的是为了简化模型和提高训练效率。调整后的前馈网络结构是:

F F N R e L U ( x , W 1 , W 2 ) = m a x ( 0 , x W 1 ) W 2 FFN_{ReLU}(x, W_1, W_2) = max(0, xW_1)W_2 FFNReLU(x,W1,W2)=max(0,xW1)W2

  这个公式中,去掉了偏置项 b 1 b_1 b1 b 2 b_2 b2,只保留了ReLU激活函数和两个权重矩阵。

  除了ReLU激活函数,还有一些其他的激活函数被用于前馈网络中。例如,基于高斯误差函数的激活函数GELU可以用于前馈网络,其结构是:

F F N G E L U ( x , W 1 , W 2 ) = G E L U ( x W 1 ) W 2 FFN_{GELU}(x, W_1, W_2) = GELU(xW_1)W_2 FFNGELU(x,W1,W2)=GELU(xW1)W2

  GELU激活函数可以更好地模拟神经网络的随机正则化行为,从而提高模型的性能。

  另一个被用于前馈网络的激活函数是SwishSwish激活函数是一个自门控的激活函数,它可以自动调节每个神经元的输出。基于Swish激活函数的前馈网络结构是:
F F N S w i s h ( x , W 1 , W 2 ) = S w i s h ( x W 1 ) W 2 FFN_{Swish}(x, W_1, W_2) = Swish(xW_1)W_2 FFNSwish(x,W1,W2)=Swish(xW1)W2

  Swish激活函数在某些情况下可以提高神经网络的性能,因此在设计前馈网络时,可以根据具体的应用场景选择合适的激活函数。

【注】为什么FNN里面要有激活函数?
————————————
答:1)提供非线性拟合能力,没有激活函数的模型只是线性层的累加。2)部分激活函数如ReLU能够缓解梯度消失问题,加快模型速度。

Gated Linear Units (GLU) and Variants

  GLU的公式为:

G L U ( x , W , V , b , c ) = σ ( x W + b ) ⊗ ( x V + c ) GLU(x, W, V, b, c) = σ(xW + b) ⊗ (xV + c) GLU(x,W,V,b,c)=σ(xW+b)(xV+c)

  在GLU的基础上,取消激活函数,称之为BilinearBilinear公式为:

B i l i n e a r ( x , W , V , b , c ) = ( x W + b ) ⊗ ( x V + c ) Bilinear(x, W, V, b, c) = (xW + b) ⊗ (xV + c) Bilinear(x,W,V,b,c)=(xW+b)(xV+c)

  因此在GLU的基础上,作者认为可以产生以下变体:

R e G L U ( x , W , V , b , c ) = m a x ( 0 , x W + b ) ⊗ ( x V + c ) G E G L U ( x , W , V , b , c ) = G E L U ( x W + b ) ⊗ ( x V + c ) S w i G L U ( x , W , V , b , c , β ) = S w i s h β ( x W + b ) ⊗ ( x V + c ) ReGLU(x, W, V, b, c) = max(0, xW + b) ⊗ (xV + c) \\ GEGLU(x, W, V, b, c) = GELU(xW + b) ⊗ (xV + c) \\ SwiGLU(x, W, V, b, c, β) = Swishβ(xW + b) ⊗ (xV + c) ReGLU(x,W,V,b,c)=max(0,xW+b)(xV+c)GEGLU(x,W,V,b,c)=GELU(xW+b)(xV+c)SwiGLU(x,W,V,b,c,β)=Swishβ(xW+b)(xV+c)

  基于上述的激活函数,产生以下FNN变体:

F F N G L U ( x , W , V , W 2 ) = ( σ ( x W ) ⊗ x V ) W 2 F F N B i l i n e a r ( x , W , V , W 2 ) = ( x W ⊗ x V ) W 2 F F N R e G L U ( x , W , V , W 2 ) = ( m a x ( 0 , x W ) ⊗ x V ) W 2 F F N G E G L U ( x , W , V , W 2 ) = ( G E L U ( x W ) ⊗ x V ) W 2 F F N S w i G L U ( x , W , V , W 2 ) = ( S w i s h 1 ( x W ) ⊗ x V ) W 2 FFN_{GLU}(x, W, V, W_2) = (σ(xW ) ⊗ xV )W_2\\ FFN_{Bilinear}(x, W, V, W_2) = (xW ⊗ xV )W_2\\ FFN_{ReGLU}(x, W, V, W_2) = (max(0, xW ) ⊗ xV )W_2\\ FFN_{GEGLU}(x, W, V, W_2) = (GELU(xW ) ⊗ xV )W_2\\ FFN_{SwiGLU}(x, W, V, W_2) = (Swish_1(xW ) ⊗ xV )W_2 FFNGLU(x,W,V,W2)=(σ(xW)xV)W2FFNBilinear(x,W,V,W2)=(xWxV)W2FFNReGLU(x,W,V,W2)=(max(0,xW)xV)W2FFNGEGLU(x,W,V,W2)=(GELU(xW)xV)W2FFNSwiGLU(x,W,V,W2)=(Swish1(xW)xV)W2

Experiments on Text-to-Text Transfer Transformer (T5)

在这里插入图片描述

图1 基于不同FNN的T5模型在段落填充任务上的困惑度

  如图1,GEGLUSwiGLU表现最好。

在这里插入图片描述

图2 基于不同FNN的T5模型在GLUE任务上的结果

  如图2,GLU家族表现最好。

在这里插入图片描述

图3 基于不同FNN的T5模型在SuperGLUE任务上的结果

  如图3,GLU家族表现最好。

Conclusion

【注】建议读下这部分的原文,乐死。以下是原段落:

We have extended the GLU family of layers and proposed their use in Transformer. In a transfer-learning setup, the new variants seem to produce better perplexities for the de-noising objective used in pre-training, as well as better results on many downstream language-understanding tasks. These architectures are simple to implement, and have no apparent computational drawbacks. We offer no explanation as to why these architectures seem to work; we attribute their success, as all else, to divine benevolence(上帝的仁慈).

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI绘画:实例-利用Stable Diffusion ComfyUI实现多图连接:区域化提示词与条件设置

在Stable Diffusion ComfyUI中,有一种高级技巧可以让用户通过细致的区域化提示词来控制图像的不同部分,从而实现多图连接的效果。这种方法允许艺术家在同一画布上展现多个场景,创造出富有层次和故事性的图像。以下是实现这一效果的详细步骤。…

【与C++的邂逅之旅】--- 内联函数 auto关键字 基于范围的for循环 nullptr

关注小庄 顿顿解馋૮(˶ᵔ ᵕ ᵔ˶)ა 博主专栏: 💡 与C的邂逅之旅 💡 数据结构之旅 上篇我们了解了函数重载和引用,我们继续学习有关C的一些小语法— 内联函数,auto关键字,基于范围的for循环以及 nullptr&…

element-ui empty 组件源码分享

今日简单分享 empty 组件的源码实现,主要从以下三个方面: 1、empty 组件页面结构 2、empty 组件属性 3、empty 组件 slot 一、empty 组件页面结构 二、empty 组件属性 2.1 image 属性,图片地址,类型 string,无默认…

Docker 安装 | 部署MySQL 8.x 初始设置

1、准备工作 如果不想看前面的废话请直接右边目录跳到 运行容器 处 默认你已经有 docker 环境。 Windows 推荐 Docker Desktop (下载地址)并基于 WSL2 运行 Docker 环境 mac 推荐 Orbstack (下载地址)(这个很节省资源&…

C++之函数提高(HM)

目录 1.函数默认参数(缺省参数) 2.占位参数 3.函数重载 4.类和对象--封装 (1)圆类: (2)访问权限 (3)struct&&class (4)立方体类的…

适用于车载设备无钥匙进入系统汽车用晶振FA-238A

汽车用晶振FA-238A是一款适用于车载设备无钥匙进入系统的耐高温晶振。汽车用晶振FA-238A是爱普生推出一的款MHz表贴式晶体单元,具有很好的预率性能,符合AEC-0200标准,其封装尺寸仅为3.2x2.5x0.7mm,工作温度范围在-40℃~125℃之间&…

Linux云计算之网络基础9——园区网络架构项目

要求构建大型园区网络架构,方案如下: 园区A 园区c 公司B 要求: 1、A公司园区网络 一台汇聚层三层交换机,两台接入层二层交换机。 出口有一台路由器。 2、A园区有五台服务器。 分别为两台 WEB 服务器,…

Spring Boot Mockito (三)

Spring Boot Mockito (三) 这篇文章主要是讲解Spring boot 与 Mockito 集成测试。 前期项目配置及依赖可以查看 Spring Boot Mockito (二) - DataJpaTest Spring Boot Mockito (一) - WebMvcTest Tag("Integration") SpringBootTest // TestMethodOrder(MethodOr…

分布式系统架构中的相关概念

1.1、衡量网站的性能指标 响应时间:指执行一个请求从开始到最后收到响应数据所花费的总体时间。并发数:指系统同时能处理的请求数量。 并发连接数:指的是客户端向服务器发起请求,并建立了TCP连接。每秒钟服务器连接的总TCP数量请…

MySQL 主从复制架构搭建及其原理

前言 系统的性能瓶颈一般出现在数据库上,以 mysql 为例,如果存在高并发的写请求,势必会有锁表,锁数据行的情况发生,这时候如果有读请求刚好访问到被锁的数据,那么读请求会阻塞,直到写请求处理完…

ctypes 封装c语言

一&#xff0c;python与C类型对应关系 最左边一列的ctypes type&#xff0c;以替代C库中的各种类型。 二&#xff0c;不带参数的调用 1&#xff0c;target.c #include <stdio.h>void hello_world(){printf("hello downey!!\r\n"); } 2&#xff0c;执行命令…

CKA 基础操作教程(二)

Kubernetes Deployment 理论学习 Kubernetes Deployment &#xff08;部署&#xff09;是一种 Kubernetes 资源对象&#xff0c;用于定义和管理容器化应用程序的部署和更新。Deployment 提供了一种声明性的方式来定义应用程序的期望状态&#xff0c;并负责确保所需数量的 Pod…

【简单讲解下Tauri】

&#x1f308;个人主页:程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

Qt | Qt 的重要文件简介(推荐)

一、项目文件(pro 文件)及其语法 1、项目文件(pro 文件)的作用是列举项目中的源文件, 2、pro 文件的语法形式为:“变量 操作符 值”,比如 QT += widgets,多个值之间使用空格分开。 3、pro 文件的注释:从“#”开始,直至本行结束。 4、pro 文件的操作符见下表 5、pro 文…

Filter Listener Interceptor

文章目录 第一章 Filter1. 目标2. 内容讲解2.1 Filter的概念2.2 Filter的作用2.3 Filter的入门案例2.3.1 案例目标2.3.2 代码实现2.3.2.1 创建ServletDemo012.3.2.2 创建EncodingFilter 2.4 Filter的生命周期2.4.1 回顾Servlet生命周期2.4.1.1 Servlet的创建时机2.4.1.2 Servle…

JSON的定义和基本使用

1、JSON的特点: JSON是一种轻量级的数据交换格式&#xff0c;是由字符串化的键值对构成。基于网络的前后端通信&#xff0c;数据在服务端和客户端之间进行传输&#xff0c;采用的就是JSON的格式来进行交互。JSON采用完全独立于语言的文本格式&#xff0c;JSON的数据格式完全独…

【VSCode】修改插件地址

不想放在原始C盘下面C:\Users\{用户}\.vscode\extensions为了后续存储空间考虑&#xff0c;想通过添加环境变量创建名为VSCODE_EXTENSIONS的环境变量&#xff0c;内容指向vs Code扩展所在目录即可 直接配置环境变量&#xff0c;不要在有空格的文件夹下面 变量名称&#xff1a;…

C语言要点细细梳理——番外:运算符优先级

C语言中的运算符优先级决定了在没有括号的情况下&#xff0c;表达式中的各个部分应如何求值。这个优先级是固定的&#xff0c;并且遵循一定的规则。当运算符的优先级相同时&#xff0c;运算的方向&#xff08;从左到右或从右到左&#xff09;则称为运算符的结合性。 下面是一个…

中间件漏洞!!!

上次好像记得讲过了框架漏洞&#xff0c;&#xff08;weblogic不是&#xff09;那么&#xff0c;今天我们就来讲一些中间件的漏洞 1.Apache解析漏洞 众所周知&#xff0c;Apache是一个非常出名的中间件&#xff0c;本来呢&#xff0c;他是不存在漏洞的&#xff0c;但是如果用…

OpenAI推出VoiceEngine语音引擎技术:让声音更逼真,更富情感

继openAI GPT3.5免登录后&#xff0c;OpenAI最近推出了一款名为VoiceEngine的语音引擎技术&#xff0c;这技术能通过简单的文本输入和15秒的音频样本&#xff0c;就能生成跟原始说话者声音一模一样的语音&#xff0c;不仅逼真&#xff0c;还充满了情感。 这VoiceEngine技术&am…