Evolving Deep Neural Networks (CoDeepNEAT) 论文笔记
作者: Risto Miikkulainen et al. (Cognizant AI Labs, UT Austin, etc.)
核心贡献: 提出了 CoDeepNEAT,一种通过进化算法自动化设计深度学习架构的方法。该方法扩展了经典的 NEAT 算法,能够同时进化网络的拓扑结构、组件(Modules)和超参数,在图像识别和语言建模任务中达到了与人类专家设计相媲美的性能。
1. 简介 (Introduction)
随着深度学习(DNN)的发展,网络架构变得越来越复杂。手动设计这些架构(包括组件选择、拓扑连接、超参数设置)是一项极具挑战性的任务。
本文提出将架构设计的细节交给计算优化系统,人类只负责高层设计。这种方法基于神经进化(Neuroevolution),特别是扩展了 NEAT (NeuroEvolution of Augmenting Topologies) 算法,使其适用于深度神经网络。
核心思想:
* DeepNEAT: 将 NEAT 扩展到深度网络,节点代表“层”而不是神经元。
* CoDeepNEAT: 引入协同进化(Coevolution),同时进化“模块(Modules)”和“蓝图(Blueprints)”,以生成具有重复结构的高效深度网络。
2. 深度学习架构的进化 (Evolution of Deep Learning Architectures)
这是本文的核心方法部分。
2.1 DeepNEAT: 将 NEAT 扩展到深度网络
DeepNEAT 是 NEAT 算法的直接扩展,用于进化 DNN 的拓扑和超参数。
- 基因编码:
- 节点 (Node): 不再代表单个神经元,而是代表一个层 (Layer)(如卷积层、全连接层、LSTM 层)。每个节点包含一张超参数表(如滤波器数量、卷积核大小、激活函数)。
- 连接 (Edge): 表示层与层之间的数据流向。
- 进化过程:
- 从最小结构开始,通过变异(Mutation)逐渐增加节点(层)和连接。
- 使用历史标记(Historical Markings)来处理交叉(Crossover)。
- 使用物种形成(Speciation)来保护创新。
- 特殊处理:
- 合并层 (Merge Layer): 当一个层有多个输入时(例如跳跃连接),需要合并层(如 Concatenation 或 Element-wise Sum)来整合输入。
- 维度匹配: 如果父层的输出尺寸不一致,系统会自动插入下采样层(如 Max-Pooling 或 1x1 卷积)以匹配尺寸。
2.2 CoDeepNEAT: 模块与蓝图的协同进化
为了模拟现代深度网络(如 GoogLeNet, ResNet)中常见的模块化和重复结构,作者提出了 CoDeepNEAT。
核心概念:双种群协同进化
CoDeepNEAT 维护两个分离的种群进行协同进化:
1. 模块种群 (Module Population): 进化小的神经网络子结构。
2. 蓝图种群 (Blueprint Population): 进化宏观架构,节点指向模块种群中的物种。
组装过程 (Assembly)
网络的构建过程是将蓝图中的节点替换为具体的模块实例:
1. 蓝图图 (Blueprint Graph): 这是一个由节点和连接组成的图。每个节点包含一个指向模块物种 (Module Species) 的指针。
2. 实例化: 对于蓝图中的每个节点,算法从其指向的模块物种中随机选择一个具体的模块(Module)。
* 一致性: 如果蓝图中多个节点指向同一个模块物种,则使用同一个模块实例(共享权重结构,但不一定共享权重值,取决于具体实现,文中暗示结构重用)。
3. 最终网络: 替换后的结构形成最终的大型 DNN。

图 1: CoDeepNEAT 组装过程可视化。
* 左侧 (Modules): 进化中的模块种群,包含不同结构的子网络。
* 中间 (Blueprints): 进化中的蓝图种群,节点指向特定的模块物种。
* 右侧 (Assembled Networks): 最终组装的网络。蓝图节点被具体的模块结构替换,形成了深层且具有重复结构的网络。
举例说明 (Example)
假设我们正在进化一个卷积神经网络:
* 模块种群: 包含多种卷积块。
* Module Species A: [Conv 3x3] -> [ReLU]
* Module Species B: [Conv 1x1] -> [Conv 3x3] -> [Add (Residual)]
* 蓝图种群: 包含宏观连接图。
* Blueprint 1: Node(Species A) -> Node(Species A) -> Node(Species B) -> Output
* 组装:
* 系统读取 Blueprint 1。
* 第 1 个节点指向 Species A,随机选一个具体的 [Conv 3x3 -> ReLU] 结构。
* 第 2 个节点也指向 Species A,再用同样的结构。
* 第 3 个节点指向 Species B,填入 [Residual Block] 结构。
* 结果: 一个包含两个普通卷积层和一个残差块的深层网络。
适应度评估 (Fitness Evaluation)
- 组装好的网络在训练集上进行训练(通常为了速度只训练少量 epoch)。
- 在验证集上评估性能,得到网络 $n$ 的适应度 $f(n)$。
- 适应度归因 (Fitness Attribution):
- 蓝图适应度: 一个蓝图 $B$ 的适应度 $F(B)$ 是所有由它组装成的网络 $n \in N_B$ 的适应度平均值:
$$ F(B) = \frac{1}{|N_B|} \sum_{n \in N_B} f(n) $$ - 模块适应度: 同理,一个模块 $M$ 的适应度 $F(M)$ 是所有包含该模块的网络 $n \in N_M$ 的适应度平均值:
$$ F(M) = \frac{1}{|N_M|} \sum_{n \in N_M} f(n) $$
这种机制确保了优秀的蓝图和优秀的模块都能在各自的种群中获得高分并被筛选出来,即使它们只是更大系统的一部分。
- 蓝图适应度: 一个蓝图 $B$ 的适应度 $F(B)$ 是所有由它组装成的网络 $n \in N_B$ 的适应度平均值:
2.3 CIFAR-10 实验
在 CIFAR-10 图像分类任务上验证 CoDeepNEAT。
* 配置: 25 个蓝图,45 个模块。每代组装 100 个网络。
* 超参数: 进化了包括滤波器数量、Dropout率、学习率、数据增强参数等在内的详细超参数(见原论文 Table 1)。
* 结果:
* 进化后的网络经过完全训练后,错误率达到 7.3%,与当时人类设计的最佳网络相当。
* 网络结构表现出高度的重复性和深度(见图 2)。
* 训练效率: 进化出的网络收敛速度极快(12 epochs vs 手工设计的 30 epochs 达到同样精度)。

图 2: CIFAR-10 上进化出的最佳网络。
* 上图: 简化的蓝图视图,展示了模块的重复使用。
* 下图: 详细的网络结构,可以看到深层且复杂的连接模式。
3. LSTM 架构的进化 (Evolution of LSTM Architectures)
CoDeepNEAT 不仅可以进化 CNN,还可以进化循环神经网络(RNN),特别是 LSTM 的内部结构和连接方式。
3.1 扩展方法
- LSTM 变体搜索: 神经进化被用来搜索 LSTM 单元内部的微观结构(Micro-structure)以及层与层之间的宏观连接。
- 突变算子 (Mutations):
- 启用/禁用 LSTM 层间的连接。
- 添加/移除跳跃连接 (Skip Connections): 允许在 LSTM 节点之间建立直接通路。
3.2 语言建模实验 (Language Modeling)
- 任务: Penn Tree Bank (PTB) 数据集上的下一个词预测。
- 结果: 进化出了一种带有新颖跳跃连接(Skip Connection)的 LSTM 变体(图 3)。
- 性能: 比标准 Vanilla LSTM 性能提升了 5%(perplexity score)。这证明了 CoDeepNEAT 能够自动发现人类难以设计出的微小但有效的结构改进。

图 3: 进化出的最佳 LSTM 变体。注意两个记忆细胞(Memory Cells)之间新颖的反馈跳跃连接(Feedback Skip Connection)。
4. 应用案例:图像描述 (Image Captioning)
作者将该方法应用于一个在线杂志网站的实际业务中:为图片自动生成描述(Caption),以供盲人用户通过屏幕阅读器使用。
4.1 任务设置
- 输入: 图像(通过预训练 ImageNet 模型提取 Embedding) + 文本。
- 输出: 描述性文字。
- 进化空间: 搜索包括全连接层、LSTM 层、Sum/Concat 合并层在内的架构,以及超参数(学习率、Dropout 等)。
- 适应度: 结合 BLEU, METEOR, CIDEr 等指标的综合分数。为了速度,进化过程中只在数据子集上训练 6 个 epoch。
4.2 结果与架构
- 发现的架构: 第 37 代发现了最佳架构(图 5)。
- 包含 3 个并行的 LSTM 模块,通过 Sum 层合并。
- 包含一条直接的并行通路 (Parallel Pathway):从输入经过全连接层直接到输出,绕过了 LSTM 层。
- 这种“多路并行”结构在人类设计中很少见,但在进化搜索中被证明非常鲁棒。
- 性能: 在 MSCOCO 数据集上优于 Google 的 Show and Tell 基线模型。
- 实际部署: 该模型被部署到在线杂志网站,能够为标志性图片(Iconic Images)生成较为准确的描述。

图 5: 进化出的最佳图像描述网络架构。
特点是包含三个 LSTM 模块和一个并行的全连接通路(最右侧)。这种并行假设(Parallel Hypotheses)结构是进化的创新。

图 7: 生成的描述示例。上排为生成的优质描述,下排为失败案例。
5. 讨论与结论 (Discussion & Conclusion)
- 可行性: 进化方法可以自动设计出与人类专家水平相当甚至更好的深度学习架构。
- 计算成本: 虽然计算需求大,但随着云端 GPU 算力的增长,这种方法正变得越来越实用。
- 多目标优化: 进化过程因为使用了部分训练(Partial Training),倾向于筛选出收敛速度快的模型,这本身就是一个有价值的特性。
- 未来: 随着算力提升,进化深度网络有望在更多领域(视觉、语音、语言)取代手工设计,成为构建复杂 AI 系统的主要手段。