菜单

其他模型

相关源文件

本页面概述了本代码库中实现的各种神经网络架构,它们不属于 Transformers、GANs、扩散模型、循环网络或微调技术等主要类别。这些实现展示了专门的架构方法,旨在解决深度学习中的特定挑战。

1. Sketch RNN

Sketch RNN 是一种序列到序列的变分自编码器,旨在生成基于笔画的绘画。它通过预测一系列笔画来学习重建和生成草图。

架构

来源: labml_nn/sketch_rnn/__init__.py197-238 labml_nn/sketch_rnn/__init__.py241-309

关键组件

  1. 编码器: 一个双向 LSTM,将输入草图序列编码为潜在向量 z。
  2. 解码器: 一个 LSTM,在每一步生成二元高斯混合的参数。
  3. 二元高斯混合: 对下一笔画坐标的分布进行建模。

模型通过从这些分布中采样来生成草图

来源: labml_nn/sketch_rnn/__init__.py363-455

实现细节

SketchRNN 处理笔画数据,其中每个笔画是 5 维向量

  • (Δx, Δy): 沿 x 轴和 y 轴的位移
  • (p₁, p₂, p₃): 笔状态指示器(笔落下、笔抬起、草图结束)

模型使用结合了以下内容的自定义损失函数

  • 笔画和笔状态的重建损失
  • 用于正则化潜在空间的 KL 散度

来源: labml_nn/sketch_rnn/__init__.py312-360

2. 胶囊网络

胶囊网络是一种神经网络,通过将神经元分组为代表实体及其属性的胶囊来模拟层次关系。

理论与动机

传统的 CNN 在理解空间层次方面存在局限性。胶囊网络通过以下方式解决这个问题:

  1. 将实体表示为向量(胶囊)
  2. 使用动态路由建立部分-整体关系
  3. 比池化操作保留更多的空间信息

架构组件

来源: labml_nn/capsule_networks/__init__.py39-135 labml_nn/capsule_networks/mnist.py29-97

关键组件

  1. 挤压函数: 一种非线性激活函数,在保持方向的同时归一化向量

  2. 路由模块: 实现动态路由算法

  3. 边际损失: 用于类别存在性的损失函数

MNIST 胶囊网络

该实现包含一个使用胶囊网络进行 MNIST 分类的完整模型

来源: labml_nn/capsule_networks/mnist.py29-97

3. 图注意力网络

图注意力网络(GAT)旨在处理图结构数据,使用注意力机制从相邻节点聚合信息。

架构与变体

该代码库实现了两种变体

  1. GAT: 原始图注意力网络
  2. GATv2: 解决了“静态注意力”问题的增强版本

来源: labml_nn/graphs/gat/__init__.py34-198 labml_nn/graphs/gatv2/__init__.py63-237

注意力机制

GAT 与 GATv2

GAT 和 GATv2 的主要区别在于它们计算注意力的方式

模型注意力机制特征
GATeᵢⱼ = LeakyReLU(aᵀ[Whᵢ ‖ Whⱼ])对所有查询的静态注意力排序
GATv2eᵢⱼ = aᵀLeakyReLU(W[hᵢ ‖ hⱼ])动态注意力排序

来源: labml_nn/graphs/gat/__init__.py86-179 labml_nn/graphs/gatv2/__init__.py122-221

节点分类实现

两种实现都包含用于 Cora 引文网络数据集上的节点分类模型

来源: labml_nn/graphs/gat/experiment.py109-150 labml_nn/graphs/gatv2/experiment.py21-66

4. 超网络

超网络是为另一个网络(目标网络)生成权重的神经网络。它们提供了一种创建动态网络架构的方法,其中参数是上下文相关的。

架构

来源: labml_nn/hypernetworks/experiment.py13-30

关键组件

  1. 超网络: 一个较小的网络,为主网络生成参数
  2. 目标网络: 使用生成权重(在此实现中是 LSTM)的网络

该实现使用一个 HyperLSTM 作为自回归模型进行下一个令牌预测

虽然完整的超网络实现未在提供的文件中显示,但该实验展示了如何在 Tiny Shakespeare 数据集上使用 HyperLSTM 进行语言建模。

来源: labml_nn/hypernetworks/experiment.py13-30

5. PonderNet

PonderNet 是一种自适应计算模型,它根据输入动态决定要应用多少计算步骤。

概念与实现

来源: labml_nn/adaptive_computation/ponder_net/__init__.py71-177

关键要素

  1. 步进函数: 在每一步生成预测、下一个状态和停止概率

  2. 停止机制: 计算在每一步停止的概率

  3. 损失函数:

    • 重建损失: 每一步损失的加权和
    • 正则化损失: 停止分布与目标几何分布之间的 KL 散度

来源: labml_nn/adaptive_computation/ponder_net/__init__.py180-268

PonderNet 针对奇偶校验任务实现,模型在该任务中学习计算二进制序列中 1 的数量并判断其是奇数还是偶数。

总结

这些多样化的模型架构展示了解决各种深度学习挑战的专门方法

模型目的关键创新
SketchRNN草图生成带有混合密度网络的 Seq2seq VAE
胶囊网络对象识别基于向量的胶囊与动态路由
GAT/GATv2图节点分类图的自注意力
超网络动态权重生成为另一个网络生成权重的网络
PonderNet自适应计算动态计算步骤数量

每个模型都代表了神经网络设计的一种独特方法,解决了传统架构的特定局限性或处理专门任务。