11

遗传算法是一种最有效的方法来优化隐藏节点的数量和在人工神经网络上完成的训练量吗?遗传算法神经网络优化

我使用Matlab中的NNToolbox编码神经网络。我愿意接受任何其他优化技术的建议,但我最熟悉GA。

回答

11

实际上,您可以使用关于NN的GA进行优化。 您可以优化结构(节点数,层数,激活函数等)。 你也可以使用GA训练,这意味着设置权重。遗传算法永远不会是最高效的,但是当你对于使用什么数字几乎没有线索时,它们通常会被使用。

训练,你可以使用其他算法,包括反向传播,nelder-mead等。

你说你想优化号码隐藏节点,为此,遗传算法可能是足够的,虽然谈不上“最佳”。你正在搜索的空间可能太小而不能使用遗传算法,但它们仍然可以工作和afaik,它们已经在matlab中实现了,所以没有什么大不了的。

通过优化培训的数量,你的意思是什么?如果你指的是时代的数量,那么很好,只要记住,训练在某种程度上取决于开始权重,而且它们通常是随机的,所以用于GA的适应度函数并不是真正的函数。

+0

谢谢。这是我正在寻找的确切信息。 – ServAce85 2009-05-06 08:28:19

+0

我很想用C/C++编写代码,然后打开1000个Amazon EC2服务器几个小时。 – 2009-05-06 13:08:33

+0

使用GA训练神经网络比仅使用GP训练有什么好处?人工神经网络具有模仿大脑的好处,并且他们可以使用方法以智能方式更新权重,例如反向传播,以确保网络朝着正确的方向发展(就像在大脑中一样)。但是,当使用GA来更新权重时,你会放弃所有这些,而且在我看来,对于GP来说,再也没有任何真正的优势了,因为如果网络将得到改善,现在只是偶然。你对此有何看法? – HelloGoodbye 2014-02-15 21:52:15

0

我不确定你是否应该为此使用遗传算法。

我想你的遗传算法的初始解人口将包括你的神经网络训练集(给定一个特定的训练方法)。通常情况下,初始解决方案总体由随机解决方案组成。然而,随机训练集并不会真正训练你的神经网络。

您的遗传算法的评估算法将是所需训练量的加权平均值,解决特定问题时的神经网络质量以及隐藏节点的数量。所以,如果你运行这个,你将得到在神经网络质量(=训练时间,数字隐藏节点,网络问题解决能力)方面提供最佳结果的训练集。

或者你正在考虑一个完全不同的方法?

0

我不完全确定你正在处理的是什么样的问题,但GA听起来有点矫枉过正。根据您使用的参数范围,详尽的(或其他非智能的)搜索可能会起作用。尝试绘制您的神经网络的性能相对于前几个值的隐藏节点的数量,从小开始并跳跃到更大和更大的增量。根据我的经验,许多神经网络在性能方面表现出色,您可能能够很好地了解哪些隐藏节点数量最有意义。

神经网络的训练迭代通常也是如此。更多的培训可以帮助网络达到某一点,但很快就不会有太大的影响。

在大多数情况下,这些NN参数不会以非常复杂的方式影响性能。一般来说,增加它们会提高表现一段时间,但随后收益递减。对于这种简单的曲线,遗传算法并不是真的有必要找到一个很好的价值。如果隐藏节点(或训练迭代)的数量真的确实导致性能以复杂的方式波动,那么像GA这样的metaheuristics可能是适合的。但在采取这种路线之前,先试试蛮力方法。

+0

蛮力不适用于我的应用程序,因为我的数据非常嘈杂(想想脑电数据)。 – ServAce85 2009-05-06 08:34:42

0

我会倾向于说,遗传算法是一个好主意,因为你可以用最小的解决方案启动和发展神经元的数量。您想要找到最佳点的“质量函数”很可能是平滑的,并且只有很少的颠簸。

如果你要找到这个最佳NN经常我会建议使用优化算法,并在您的案件拟牛顿在数值食谱是最适合于功能是评估看病贵的问题描述。

2

遗传算法可以有效地应用于优化神经网络,但你必须考虑一些关于你想要做什么。

最“经典” NN训练算法,如反向传播,只有优化神经元的权重。遗传算法可以优化权重,但这通常是低效的。但是,正如您所问,他们可以优化网络拓扑以及训练算法的参数。您必须特别警惕创建“过度训练”的网络。具有修饰遗传算法

一个进一步的技术可以用于克服与反向传播的问题是有用的。反向传播通常会发现局部最小值,但它能准确快速地找到它们。将遗传算法与反向传播相结合,例如在拉马克式遗传算法中,给出了两者的优点。这种技术在GAUL tutorial

4

期间简要描述神经网络和遗传编程的一个很好的例子是NEAT架构(增广拓扑的神经演变)。这是一种可以找到最佳拓扑结构的遗传算法。还知道要善于保持隐藏节点的数量。

他们还使用这款名为Nero的游戏。非常独特和非常惊人的实际结果。

斯坦利博士的主页:

http://www.cs.ucf.edu/~kstanley/

在这里你可以找到关于一切NEAT相关的,因为他是谁发明它的人。

1

它是使用遗传算法训练神经网络时,你的目标函数是不连续的,有时是有用的。