我读过一些关于神经网络的文章,我听说过一些关于输入,输出,权重,激活函数,隐藏层,三层方法和一些微积分的东西,但是这些和编程一个实际的神经网络有什么关系呢?我将介绍if语句、while循环、类、字符串、数组、散列和排序。输入、输出、权重、激活函数和微积分与实际编程有什么关系。尤其是微积分部分。如何编写能够“训练”神经网络/程序的代码?我很确定我是在问初学者的问题。
发布于 2014-06-04 03:20:19
首先,我为我糟糕的英语道歉。
神经网络包含(主要):
。
从编程的角度来看,您可以将其视为:
recievePulse是您的激活函数
重量是每个神经元发送给它所连接的神经元的脉冲强度
这样你就有了一个基本的神经网络。
它的工作原理:
少数已定义的神经元接收具有不同权重的脉冲。这些是网络的感觉,也就是“输入”。它们也可能被激活和脉动,这取决于你给它们的输入。“输出”是一组已定义的神经元。当你激活输入神经元时,一些输出神经元可能会激活,模拟对输入的反应。
然后,您可以停用所有神经元,并从另一个输入重新开始。
这样,你就有了一个基本的神经网络来对它所感知的做出反应。
输入/输出示例:
这个网络将识别一种颜色,并决定它是否喜欢它。
培训:
有几种方法可以训练神经网络。
例如,当神经元的答案是好的时候,你可以奖励他们(通过增加所有活跃连接的权重),当他们的答案不好时,你可以给他们一个坏的奖励(通过减少连接的权重)。
每个神经元之间连接的不同权重可以编码在一种DNA中,这种DNA可以告诉神经元的结构等。这样,你就可以用适应度函数选择“胜利者”和“失败者”,并复制出他们之间得到最佳答案的大脑。这样,你就可以选择最好的大脑,让他们进化成为超级天才。
有关这方面的更多信息,我建议您记录自己的人工生命和健身功能。
发布于 2014-06-04 04:31:56
除了Heru-Luin所说的一切之外,我还将添加以下内容:
神经网络可以在硬件或软件中实现。第一个神经网络是自然界在原始生物体的大脑中“实现”的,并通过进化改进到今天的现代动物的大脑中。
当将它们实现为软件时,一个人编写的“程序”实际上是创建一个大脑的软件模型,它是神经元的集合。这就是if-then语句、while- or -for循环、面向对象等发挥作用的地方。如果一个人在传统意义上编写了一个实际的程序,在C++或Java中,这就是所编写的程序。
然而,一旦该模型编写完成,它仍然大部分是无用的(就像婴儿的大脑一样),因为它没有经过训练。训练过程涉及调整软件模型的各种参数--神经权重、连接等。有时这也被称为对神经网络进行编程。这也不是完全错误的:这就像最早的数字计算机上的程序一样,是一个“程序”,基本上是硬件元素之间的改变。可以将其视为编写某个硬件处理设备的软件仿真器,然后它们在仿真的硬件上实现一个仿真程序。
微积分的用武之地是理解训练方法的工作方式和原因,如何实现它们,以及如何使它们在计算上有效。完整的答案超出了本答案的范围,通常是一本关于神经网络的书的早期章节。简短的答案是,“因为神经网络试图找到能量表面上的最低点,而导数演算是这一过程中的必要步骤。”
https://stackoverflow.com/questions/24022786
复制相似问题