神经网络基础知识

时间:2012-09-25 11:58:19

标签: algorithm neural-network genetic-algorithm genetic

我是一名计算机科学专业的学生,​​在今年的项目中,我需要创建并应用遗传算法。我认为神经网络应用它是一件好事,但我无法理解它们。我完全理解这些概念,但没有一个网站真正解释了以下阻碍我理解的网站:

如何决定有多少个节点。 节点实际代表和做什么。 权重和偏见实际上在分类中起什么作用。

有人可以帮我解释一下吗?

另外,如果您对我可以应用GA的任何类似想法,我真的很感激。

非常感谢! :)

5 个答案:

答案 0 :(得分:0)

你的问题非常复杂,我认为一个小答案不能完全满足你。尽管如此,让我试试。

首先,你的神经网络必须至少有三层(假设一个简单的前馈)。第一个是输入层,每个输入将有一个神经元。第三层是输出一层,每个输出值将有一个神经元(如果你正在分类,你可能想要为每个神经元分配一个“属于”意义的多个f)。剩下的层是隐藏的一个,它将位于输入和输出之间。确定其大小是一项复杂的任务,您可以在以下参考资料中看到:

然而,最好的方法是让你更清楚地陈述你的问题(正如工业保密可能允许的那样),让我们多考虑你的背景。

答案 1 :(得分:0)

输入和输出节点的数量由您拥有的输入和输出数量决定。中间节点的数量取决于您。没有“正确”的号码。

想象一个简单的网络:输入(年龄,性别,国家,已婚)输出(今年的死亡机会)。您的网络可能有2个“隐藏值”,一个取决于年龄和性别,另一个取决于国家和已婚。你在每个上加重。例如,Hidden1 = age * weight1 + sex * weight2。 Hidden2 = country * weight3 +已结婚* weight4。然后再创建另一组权重,Hidden3和Hidden4连接到输出变量。

然后你从人口普查中得到一个数据,并通过你的神经网络找出最适合数据的权重。您可以使用遗传算法来测试不同的权重集。如果你有这么多的边缘你不能尝试每一个可能的权重,这是很有用的。你需要找到好的权重而不必详尽地尝试每一组可能的权重,因此GA可以让你“进化”一组好的权重。

然后,您测试来自不同人口普查的数据的权重,看看它的效果如何。

答案 2 :(得分:0)

解释人工神经网络(ANN)的最佳方法是提供它试图模拟的生物过程 - 神经网络。最好的例子是人脑。那么大脑是如何工作的(高度简化了CS )?

  1. 大脑的功能单元(用于我们的目的)是神经元。它是一种潜在的蓄能器和“分散器”。这意味着在达到一定量的电势(想想用空气填充气球)后,它会“开火”(气球弹出)。它会向任何连接发射电信号。

  2. 神经元是如何连接的?突触。这些突触可以具有各种重量(在现实生活中,由于来自较厚/较薄连接的较强/较弱的突触)。这些重量允许一定量的发射信号通过。

  3. 因此,您拥有通过突触连接的大量神经元 - 您的ANN的基本表示。注意,由其他人描述的输入/输出结构是应用ANN的问题类型的人工产物。从理论上讲,任何神经元都可以接受输入。然而,它在计算任务中没有什么用处。


    现在转到ANNs。

    神经元:人工神经网络中的神经元与其生物学神经元非常相似。它们被建模为step函数(在某个组合输入信号之后发出“1”信号,或者在所有其他时间发出“0”),或稍微更复杂的激发序列(arctan,{{产生连续输出的1}}等,虽然与步骤类似地缩放。这更接近生物现实。

    SYNAPSES :这些在人工神经网络中非常简单 - 只是描述神经元之间连接的权重。仅用于对连接到当前神经元的神经元进行加权,但仍然起着至关重要的作用:突触是网络输出的原因。为了澄清,具有集合结构和神经元激活函数的ANN的训练仅仅是突触权重的修改。这就对了。从一个“哑”网到一个产生准确结果的网没有其他变化。

    <强>结构: 神经网络没有“正确”的结构。结构也是 a)手工选择,或 b)由于学习算法(la级联相关网络)而允许增长。

    假设采用手工挑选的结构,通过仔细分析问题和预期的解决方案来实际选择这些结构。太少的“隐藏”神经元/层,并且您的结构不够复杂,无法逼近复杂的函数。太多了,你的训练时间迅速变得笨拙。出于这个原因,输入(“特征”)的选择和神经网络的结构是IMO 99%的问题。相比之下,人工神经网络的培训和使用是微不足道的。


    现在解决您的GA问题,这是通过修改突触权重来训练网络的众多努力之一。为什么?因为最后,神经网络的输出只是N维中极高阶的表面。 任何表面优化技术可用于解决权重,GA就是这样一种技术。简单的反向传播方法与尺寸减小的基于梯度的优化技术相似。

答案 3 :(得分:0)

  

......理解这一点的主要障碍是理解隐藏层的实际工作方式;我真的不明白神经元的功能如何以及权重是多少......

中间层中的每个节点都是“特征检测器” - 它将(希望)响应输入中的某些重要特征而“亮起”(即强烈激活)。权重是强调前一层的一个方面;也就是说,神经元的输入权重集对应于前一层中的哪些节点对于该特征是重要的。

如果将myInputNodemyMiddleLayerNode连接的权重为0,则可以判断myInputNodemyMiddleLayerNode检测到的任何功能都不重要。但是,如果连接myInputNodemyMiddleLayerNode的权重非常大(无论是正数还是负数),您都知道myInputNode非常重要(如果它非常消极则意味着“不,这是功能几乎肯定不存在“,如果它非常积极意味着”是的,这个功能几乎肯定存在“。)

因此,您需要将中间层节点的数量与输入分类所需的特征数量相对应:中间层节点太少,在训练期间难以收敛(因为每个中间层节点都必须在其特征检测上“加倍”),而太多的中间层节点可能会过度拟合您的数据。

因此......遗传算法的一种可能用途是设计网络架构!也就是说,使用GA来设置中间层节点的数量和初始权重。人口的某些情况将更快地收敛并且更加健壮 - 这些可以为后代选择。 (就我个人而言,我从来没有觉得这是一个伟大的使用GAs,因为我认为通过试验和错误进入一个不错的NN架构通常会更快,但是这种方式使用GAs不是不常见。)

答案 4 :(得分:0)

您可能会发现NeuroEvolution of Augmenting Topologies (NEAT)上的这个维基百科页面很有趣。 NEAT是应用遗传算法创建神经网络拓扑的一个例子。