1

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

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

4

1 回答 1

1

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

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

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

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

于 2014-08-23T22:05:41.610 回答