GLU(Gated Linear Unit,门控线性单元)是一种引入门控机制的神经网络单元,由 Facebook AI Research 在论文《Language Modeling with Gated Convolutional Networks》中提出(2017年)。它常被用于提升模型的非线性建模能力,尤其在 NLP、CV 及图神经网络中都有应用。


✅ GLU 的基本形式

给定输入向量 X,GLU 将其输入分为两个部分,经过如下变换:

GLU(X)=A⊗σ(B)

其中:

  • A=XW1+b1:线性变换

  • B=XW2+b2:门控向量(也是线性变换)

  • σ:sigmoid 激活函数(将输出压缩到 0~1 之间)

  • ⊗:元素级乘法(Hadamard product)


💡 直观理解

  • A 是原始特征的变换,代表主要信息。

  • σ(B) 是一个门控向量,控制哪些部分的信息应该保留、哪些应被抑制。

  • 门控机制 能够引导模型学习哪些维度更重要、哪些可以被屏蔽,从而提升建模效果。


🧠 GLU 与其他门控机制的对比

名称 表达式 特点
GLU A⋅σ(B) 简洁高效、无状态
GRU 多门控(重置门、更新门) 时序建模能力强
LSTM 输入门、遗忘门、输出门 强记忆能力、计算开销大

GLU 适合用于非循环场景,比如 CNN、Transformer、图神经网络等。


🔧 PyTorch 实现

import torch
import torch.nn as nn

class GLULayer(nn.Module):
    def __init__(self, input_dim, output_dim):
        super(GLULayer, self).__init__()
        self.linear = nn.Linear(input_dim, output_dim * 2)  # A 和 B 共用一个 Linear

    def forward(self, x):
        x_proj = self.linear(x)
        a, b = x_proj.chunk(2, dim=-1)  # 分为两半
        return a * torch.sigmoid(b)

📌 应用场景举例

  • TabNet(结构性数据分类):大量使用 GLU 实现稀疏注意力选择特征。

  • NLP 中的 Gated CNN:代替 RNN 用于语言建模。

  • 图神经网络(GatedGCN、GaAN):增强图卷积的建模能力。

  • 生物信息学/单细胞聚类:可引入 GLU 模型提取更有效的嵌入特征。


Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐