当前位置: 首页 > news >正文

Gated CNN:卷积门控

paper: Language Modeling with Gated Convolutional Networks

这篇论文提出了一种基于卷积的语言模型,使用简化的门控机制来提升效率。与传统的循环神经网络(RNN)相比,这种方法可以并行处理序列,从而显著降低计算延迟。尽管它是有限上下文模型,但在处理长依赖时依然表现出色,在WikiText-103和Google Billion Words等大规模数据集上取得了优异的表现,是首个能与RNN竞争的非循环方法。

在这里插入图片描述

什么是Gated CNN?

Gated CNN的核心思想是使用卷积层代替循环结构。与RNN相比,卷积层的计算可以并行,这让Gated CNN能够更快地处理长文本。同时,通过堆叠卷积层,模型可以捕捉更大的上下文,尽管它的上下文范围是有限的,但在实践中已证明这种方法可以达到甚至超越RNN的表现。

Gated CNN的工作原理

Gated CNN的基本流程如下:

词嵌入表示:首先,输入句子中的每个词都会被表示为一个词向量(word embedding)。这个向量包含了词的语义信息,是模型理解上下文的基础。

卷积操作与门控:词向量作为输入,经过多层卷积操作。在每一层卷积中,输出门会为每个词分配权重,用于控制信息的传递强度。卷积层的输出会根据输出门的权重进行筛选,只有重要的信息才能被有效地传递到下一层。

叠加卷积层:通过多层卷积的叠加,模型能够扩展感受野,从而在有限的卷积层中捕捉较大的上下文信息。这个过程相当于从局部到全局的逐步理解,使模型不仅能关注到邻近的词,还能感知到整个句子结构。

残差连接:为了保证信息传递的稳定性,Gated CNN引入了残差连接(Residual Connection),即每一层的输入都会直接添加到输出中,避免信息在多层传递过程中丢失。残差连接的存在可以提高模型的深度和稳定性。

自适应Softmax:在最后的输出层,Gated CNN使用了一种改进的softmax函数——自适应softmax。自适应softmax会根据词的频率调整计算资源的分配,为高频词分配更多容量,为低频词分配更少容量。这一改进有效降低了内存需求,并加快了训练和测试的速度。

h l ( X ) = ( X ∗ W + b ) ⊙ σ ( X ∗ V + c ) h_l(X) = (X \ast W + b) \odot \sigma(X \ast V + c) hl(X)=(XW+b)σ(XV+c)

其中:

  • X X X 是输入特征图,表示每层的输入数据;
  • W W W V V V是可学习的卷积核参数,控制不同特征的生成;
  • b b b c c c是偏置项;
  • σ \sigma σ是 sigmoid 函数,将输出压缩到 0 到 1 之间,公式为:
    σ ( x ) = 1 1 + e − x \sigma(x) = \frac{1}{1 + e^{-x}} σ(x)=1+ex1
  • ∗ \ast 表示卷积操作;
  • ⊙ \odot 表示逐元素乘积,用来实现门控机制。

Gated Linear Unit(GLU)VS Gated Tanh Unit(GTU)

Gated CNN采用了门控线性单元(Gated Linear Unit, GLU)而不是传统的门控 Tanh 单元(Gated Tanh Unit, GTU)。GLU不使用 tanh 函数,而直接使用 𝑋 本身。因为tanh会将信息压缩到 -1 到 1 的范围,这会导致多层叠加时信息逐渐消失。而GLU通过直接使用 𝑋保持了信息的强度,帮助梯度在多层间稳定地传播。

举例说明

首先

将每个词转换为向量表示(词嵌入)。假设每个词被嵌入到一个 4 维向量空间中。句子中的词变成以下形式:
“我” → [ 0.2 , 0.5 , 0.1 , 0.3 ] [0.2, 0.5, 0.1, 0.3] [0.2,0.5,0.1,0.3]
“喜欢” → [ 0.6 , 0.7 , 0.2 , 0.5 ] [0.6, 0.7, 0.2, 0.5] [0.6,0.7,0.2,0.5]
“喝” → [ 0.3 , 0.4 , 0.9 , 0.2 ] [0.3, 0.4, 0.9, 0.2] [0.3,0.4,0.9,0.2]
“咖啡” → [ 0.8 , 0.3 , 0.7 , 0.6 ] [0.8, 0.3, 0.7, 0.6] [0.8,0.3,0.7,0.6]

将这些词嵌入组合起来,我们得到输入矩阵 X X X

X = [ 0.2 0.5 0.1 0.3 0.6 0.7 0.2 0.5 0.3 0.4 0.9 0.2 0.8 0.3 0.7 0.6 ] X = \begin{bmatrix} 0.2 & 0.5 & 0.1 & 0.3 \\ 0.6 & 0.7 & 0.2 & 0.5 \\ 0.3 & 0.4 & 0.9 & 0.2 \\ 0.8 & 0.3 & 0.7 & 0.6 \end{bmatrix} X= 0.20.60.30.80.50.70.40.30.10.20.90.70.30.50.20.6

步骤 2:卷积操作与门控机制

每一层中,模型会对 X X X 进行卷积操作,并通过门控机制选择性地传递信息。

假设我们在卷积层有两个卷积核 W W W V V V,分别用于生成主要特征和门控信号:

卷积核 W W W 用于提取主要特征。假设 W W W 的大小为 2 × 4 2 \times 4 2×4
卷积核 V V V 用于生成门控信号。同样假设 V V V 的大小为 2 × 4 2 \times 4 2×4

步骤 3: 卷积生成特征图:

使用 W W W 卷积 X X X,加上偏置项 b b b,生成主要特征图: X ∗ W + b X * W + b XW+b
使用 V V V 卷积 X X X,加上偏置项 c c c,生成门控信号: X ∗ V + c X * V + c XV+c

4. 门控机制:将门控信号通过 sigmoid 函数压缩到 0 到 1 之间:

σ ( X ∗ V + c ) \sigma(X * V + c) σ(XV+c)

然后对主要特征和门控信号逐元素相乘,实现选择性信息传递:

h l ( X ) = ( X ∗ W + b ) ⊙ σ ( X ∗ V + c ) h_l(X) = (X * W + b) \odot \sigma(X * V + c) hl(X)=(XW+b)σ(XV+c)

假设我们得到了以下结果:

主要特征图 X ∗ W + b X * W + b XW+b [ 0.5 0.8 0.3 0.7 ] \begin{bmatrix} 0.5 & 0.8 \ 0.3 & 0.7 \end{bmatrix} [0.50.8 0.30.7]
门控信号 σ ( X ∗ V + c ) \sigma(X * V + c) σ(XV+c) [ 0.9 0.1 0.7 0.8 ] \begin{bmatrix} 0.9 & 0.1 \ 0.7 & 0.8 \end{bmatrix} [0.90.1 0.70.8]
则输出 h l ( X ) h_l(X) hl(X) 为:

h l ( X ) = [ 0.5 × 0.9 0.8 × 0.1 0.3 × 0.7 0.7 × 0.8 ] = [ 0.45 0.08 0.21 0.56 ] h_l(X) = \begin{bmatrix} 0.5 \times 0.9 & 0.8 \times 0.1 \\ 0.3 \times 0.7 & 0.7 \times 0.8 \end{bmatrix} = \begin{bmatrix} 0.45 & 0.08 \\ 0.21 & 0.56 \end{bmatrix} hl(X)=[0.5×0.90.3×0.70.8×0.10.7×0.8]=[0.450.210.080.56]

5.堆叠卷积层(层次化的上下文捕捉)

堆叠卷积层的主要目的是通过逐层扩展感受野(即模型感知上下文的范围),从而逐步捕捉整个句子的上下文信息。在每一层中,模型会卷积输入特征并经过门控机制进行筛选。

假设我们堆叠了 3 层卷积,每层的感受野会逐渐增加:

第 1 层卷积:该层卷积只能捕捉到局部上下文。对于“我喜欢喝咖啡”这句话,第 1 层可能只能看到相邻的两个词。假设该层输出主要关注“我”和“喜欢”。

第 2 层卷积:这层的感受野扩大了一些,可能能够覆盖整个短语“喜欢喝”。因此,该层能够识别到“喜欢”和“喝”之间的关系,并进一步理解用户在描述一个动作。

第 3 层卷积:随着层数加深,感受野已经扩展到整个句子。此时模型可以关注到完整的句子“我喜欢喝咖啡”的含义,并更好地理解上下文,为下一个词的预测提供更完整的信息。

经过堆叠卷积,模型能够逐层提取特征,从相邻词组到整个句子的理解逐步加深,实现了层次化的上下文捕捉。

6.残差连接

在多层卷积的堆叠过程中,信息传递可能会因为层数的增加而逐渐衰减甚至丢失。为了解决这个问题,Gated CNN 引入了残差连接,也就是说,每层的输出都加入了该层的输入。

7. 自适应Softmax输出

模型的最后一步是通过 Softmax 层 来计算每个词的概率,输出最有可能的下一个词。但对于像语言模型这样的大词汇量任务,标准 Softmax 的计算成本很高,因为它需要为每个词计算概率。

自适应 Softmax 是一种改进的 Softmax 方法,它将词汇按出现频率分成不同的组:

高频词(如“的”、“是”、“在”)分配更多计算资源,因为它们在训练和预测中出现频率更高。
低频词(如“珊瑚礁”、“阿尔茨海默”)分配较少计算资源,从而节省内存和计算量。
在我们的例子中,假设我们有以下词汇预测候选:

高频词:如“茶”、“糖”
中频词:如“牛奶”
低频词:如“奶昔”
自适应 Softmax 会将“茶”和“糖”分配更多资源,以更快计算其概率。对于“奶昔”这种低频词,自适应 Softmax 会减少分配的计算资源,因此在大词汇量的情况下仍能保持较快的处理速度。

Gated CNN的优势

  • 并行计算:卷积网络天然支持并行化,这让Gated CNN的训练速度远超RNN。在处理长文本时,Gated CNN可以同时处理多个词,大大提升了计算效率。
  • 层次化信息筛选:通过输出门的选择性传递,Gated CNN能够从多层卷积中筛选出最重要的信息,避免冗余内容的传递。
  • 减轻梯度消失问题:门控机制不仅带来了非线性能力,还提供了信息传递的直接路径,减轻了多层模型中的梯度消失问题。
  • 低内存需求:自适应softmax对不同频率的词进行区别对待,为高频词分配更多的计算资源,降低了模型的计算量和内存占用。

http://www.mrgr.cn/news/64016.html

相关文章:

  • 一文了解Linux内核I2C子系统,驱动苹果MFI加密芯片
  • Mybatis-plus入门教程
  • Docker与虚拟机(VM)的不同
  • 微服务基础拆分实践(第一篇)
  • python获取当前文件or目录路径
  • Redis 哨兵 问题
  • 静态数据区,堆,栈
  • 《Java核心技术 卷I》对象包装器与自动装箱
  • 代码随想录 -- 动态规划 -- 01背包理论基础(滚动数组)
  • 从0开始学统计-什么是中心极限定理
  • 秒杀优化(异步秒杀,基于redis-stream实现消息队列)
  • 使用列表推导式处理列表中符合条件的元素将结果组成新的列表
  • Iceoryx2:高性能进程间通信框架(中间件)
  • Redis到底支不支持事务?半事务
  • 《业务三板斧:定目标、抓过程、拿结果》读书笔记5
  • 基于Spring Boot的信息学科平台系统开发指南
  • 知识蒸馏概念(Knowledge Distillation)的学习
  • Git下载-连接码云-保姆级教学(连接Gitee失败的解决)
  • 在线QP(QuotedPrintable)编码解码工具
  • 从需求到实践:中国少儿编程教育的崛起与家长教育理念的变迁
  • 4款学术型AI神器,文献管理、论文投稿写作!
  • 300元左右的性价比头戴式耳机怎么选?盘点四款性价比爆表机型推荐
  • 【MySQL】 运维篇—故障排除与性能调优:案例分析与故障排除练习
  • SpringBoot中使用多线程ThreadPoolTaskExecutor+CompletableFuture
  • RHCE第五天笔记
  • 【论文源码实战】EdgeYOLO: 边缘设备友好的无锚框检测器