当达到局部最小值时,将模拟退火与前馈神经网络结合使用,与简单地重置权重(并将隐藏层放置在一个新的误差谷)有何不同?将模拟退火作为一种更系统的权值移动方法,以求全局最小值,因此每次验证误差相对于训练误差增加时,只执行一次迭代。在错误函数中缓慢移动当前位置?在这种情况下,模拟退火与前馈网络无关,前馈网络依赖于模拟退火输出。如果没有,并且模拟退火直接依赖于FFNN的结果,我不知道模拟退火训练器将如何从如何更新自己的权重(如果这是有意义的话)方面接收到这些信息。其中一个例子提到了一个循环(多次迭代),这不符合我的第一个假设。
我看过不同的exmaples,其中使用了network.fromArray()和network.toArray(),但我只看到了network.encodeToArray()和network.decodeFromArray()。从一种网络向另一种网络传递权重的最新方法(v3.2)是什么?使用遗传算法等也是一样的吗?
发布于 2014-08-23 22:05:41
对模拟退火等神经网络训练算法进行了本质上的搜索。神经网络的权值本质上是矢量坐标,它指定高维空间中的位置。
考虑爬山,可能是最简单的训练算法。你调整一个重量,从而在一维移动,看看它是否提高了你的分数。如果分数提高了,那么很好,留在那里,并尝试一个不同的维度下一次迭代。如果你的分数没有提高,退一次试一次不同的维度。想象一下,一个人看到他们能一步一步到达的每一个点,并选择最能提高他们海拔的一步。如果没有任何一步能提高海拔(你站在山谷的中央),那么你就卡住了。这是当地的最低要求。
模拟退火增加了爬山的一个关键成分.我们可能会搬到一个较小的地方,一个更糟的地方。(而不是贪婪的)我们移动到较小位置的概率取决于温度的下降。
如果您查看NeuralSimulatedAnnealing类的内部,就会看到对NetworkCODEC.NetworkToArray()和NetworkCODEC.ArrayToNetwork()的调用。这就是直接更新权重向量的方法。
https://stackoverflow.com/questions/24719936
复制相似问题