【发布时间】:2011-06-30 05:19:11
【问题描述】:
目前我正在研究一个使用遗传算法优化神经网络的项目。我确实意识到这可能不是优化它们的最佳方式,但我对这两者都是新手,所以我只是想尝试使用它们。
我的计划如下(可能会有很多变化)。我的输入神经元将使用一个数据集,该数据集几乎可以具有任何正数(包括最多两位的小数,所以它们实际上是浮点数),但最有可能在 0 到 20000 之间。因为重要性在于如何数字彼此比较的值而不是它们的大小,它们将首先除以将输入的所有值中的最大数字。他们会在进入隐藏层之前将它们乘以权重(任何正或负浮点数)。隐藏层中的每个神经元都会对它的所有输入求和,直到完成计算。然后它们将通过物流功能运行并输出。
我的环境是 Visual Studio C++ 2010 Express,我使用的是 clr。
我的问题在于遗传算法及其工作原理。这将是调整权重。我的问题是,当它在其中一个权重(突变率)中随机改变一点时,它可能会使权重非常高或非常低,当乘以输入并与其他相加时会导致溢出或其他错误。我也不知道如何组织我的染色体。那么,通过选择权重而不是随机位并将它们更改为定义范围内的随机数来执行随机化会更好吗?基本上,我正在寻找有关如何组织它而不导致错误的建议,使值最终过大或过小,同时保持性能。
谢谢,(如果这应该是理论计算机科学,很抱歉,但我认为它不适合那里)
【问题讨论】:
-
我不记得细节了,但是在这本书中:amazon.com/Techniques-Programming-Premier-Press-Development/dp/…,作者做了你所描述的差不多,即使用基因突变的权重值来优化神经网络。
-
看看您提出的解决方案与更传统的过程(甚至可能是非神经过程)之间的性能比较会很有趣。
标签: c++ clr neural-network genetic-algorithm