我对模拟退火( SA )做了一些广泛的研究。即便如此,我也很难理解如何找到输入参数。
在我所有的研究中,你似乎只是从黑暗中开始,然后从那里开始调整。这似乎效率极低,不太可能产生高质量的结果。
如何在使用Encog的SA训练算法中找到要使用的参数(例如:启动温度、停止温度、循环),以便产生高效和高质量的结果?
发布于 2017-10-10 17:49:09
模拟退火是一个调整值向量以改善目标函数得分的过程。如果您使用Encog来训练具有模拟退火的神经网络,那么您要调整/优化的向量是神经网络的权重。目标函数简单地表示,当与给定数据集的期望输出相比较时,神经网络对当前一组权重所获得的误差。考虑随机游走,这是最简单的优化方法之一。在这里,您选择一个重量,或者增加或减少它(完全随机)。如果对重量的改变降低了误差,那么这个重量的变化就成为永久的,并且在一个新的重量上循环重复。如果错误没有改善,则取消权重更改,并选择新的权重。您可以将随机游走看作是在重量配置之间随机行走,并且只有在错误增加时才能保持一个新的位置。
模拟退火是非常相似的,但它接受的事实是,有时你必须接受一个新的位置,有一个更严重的错误,以前进到更好的错误。旧的有时你必须后退一步才能向前走两步。温度范围只是指定模拟退火有多大可能接受不好的移动。较高的温度比较低的温度更有可能。温度从高到低。在较低的温度下,模拟退火本质上是一种随机游动。cycles参数指定算法尝试移动到更好位置的次数。
https://stackoverflow.com/questions/46662397
复制相似问题