在 Cascade Correlation 中添加新单元究竟是如何工作的?

数据挖掘 机器学习 神经网络
2021-09-18 04:23:45

我刚刚阅读了 Scott E. Fahlman 和 Christian Lebiere的 The Cascade-Correlation Learning Architecture

我想我已经掌握了整体概念(或者至少是“级联”部分——一个 4分钟的YouTube 视频,我认为它是如何工作的):

  1. 从仅具有输入和输出单元的最小网络开始
  2. 使用标准算法学习这些权重(例如梯度下降——它们似乎使用了另一个我不太了解的训练目标,所以在论文中它是梯度上升)
  3. 当网络没有改善时,添加一个新的隐藏单元。该单元从之前添加的所有输入节点和所有隐藏节点获取输入。它的输出只到所有输出节点。
  4. 重复步骤 3

但是,我不明白第 3 步的细节:隐藏单元的输入权重被冻结(由论文中的框表示)。他们究竟什么时候被冻结?他们只是被随机初始化而根本没有学习过吗?

我也不明白这一段:

为了创建一个新的隐藏单元,我们从一个候选单元开始,该单元从网络的所有外部输入和所有预先存在的隐藏单元接收可训练的输入连接。该候选单元的输出尚未连接到活动网络。我们对训练集的示例进行了多次遍历,在每次遍历后调整候选单元的输入权重。本次调整的目标是最大化S, 所有输出单元的总和 o 之间的相关性(或更准确地说,协方差)的大小 V,候选单元的值,和 Eo,在单元 o 观察到的残余输出误差。我们将 S 定义为

S=o|p(VpV¯)(Ep,oEo¯)|

在哪里 o是测量误差的网络输出,p 是训练模式。数量V¯Eo¯ 是的值 VEo 所有模式的平均值。

什么是“剩余输出错误”?Vp 简单地激活给定模式的单元 p? 这个词是什么S 意思是为什么我们要最大化它?

1个回答

我最近一直在阅读级联相关性并做了一个 python 实现https://github.com/DanielSlater/CascadeCorrelation(尽管它仍然需要一些清理/额外的工作并且有很多我在乱搞使用粒子群优化来选择候选者,绝对没有准备好生产)。

尝试解释第 3 步。

  • 首先创建一些具有随机权重的候选隐藏节点。它们具有来自所有现有隐藏节点和输入节点的传入连接。
  • 然后我们使用这个等式
    小号=|p(p-¯)(p,-¯)|
    训练候选节点。
  • 残差输出误差是网络输出与目标值之间的差异(想想没有平方误差的平方和)。
  • 小号 是我们的候选节点的激活和残差之间的相关性。
  • p 是给定输入的候选节点的激活 p.
  • 经过一些反向传播训练 小号我们选择我们最好的候选人。这成为一个新的隐藏节点。
  • 这是它的重量被冻结的时候。也就是说,在随机初始化之后,再进行反向支持训练,然后选择最好的一个。