【问题标题】:Encog - Using Hybrid Neural NetworksEncog - 使用混合神经网络
【发布时间】:2014-09-03 09:21:21
【问题描述】:

将模拟退火与前馈神经网络结合使用与在达到局部最小值时简单地重置权重(并将隐藏层放入新的误差谷)有何不同? FFNN 使用模拟退火作为一种更系统的方法来移动权重以找到全局最小值,因此每次验证误差相对于训练误差开始增加时只执行一次迭代 ...缓慢移动当前位置穿过误差函数?在这种情况下,模拟退火独立于前馈网络,而前馈网络依赖于模拟退火输出。如果不是,并且模拟退火直接依赖于 FFNN 的结果,我看不出模拟退火训练器将如何接收这些信息,以 如何 更新自己的权重(如果这使得感觉)。其中一个例子提到了一个循环(多次迭代),这不符合我的第一个假设。

我查看了不同的示例,其中使用了 network.fromArray() 和 network.toArray(),但我只看到了 network.encodeToArray() 和 network.decodeFromArray()。将权重从一种类型的网络转移到另一种类型的最新方法(v3.2)是什么?使用遗传算法等也是一样吗?

【问题讨论】:

    标签: neural-network encog


    【解决方案1】:

    神经网络训练算法,例如模拟退火,本质上是搜索。神经网络的权重本质上是向量坐标,用于指定高维空间中的位置。

    考虑爬山,这可能是最简单的训练算法。你调整一个权重,从而在一个维度上移动,看看它是否会提高你的分数。如果分数提高了,那就太好了,留在那里并在下一次迭代中尝试不同的维度。如果您的分数没有提高,请撤退并下次尝试不同的维度。想象一个人看着他们一步可以到达的每一个点,并选择最能增加他们高度的一步。如果没有步骤会增加高度(你站在山谷的中间),那么你就卡住了。这是局部最小值。

    模拟退火为爬山增加了一项关键要素。我们可能会搬到一个更小更差的地方。 (不贪心)我们将移动到较小位置的概率取决于温度的降低。

    如果您查看 NeuralSimulatedAnnealing 类的内部,您会看到对 NetworkCODEC.NetworkToArray() 和 NetworkCODEC.ArrayToNetwork() 的调用。这些是权重向量的直接更新方式。

    【讨论】:

      猜你喜欢
      • 2013-11-19
      • 2012-10-18
      • 2014-05-20
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多