所以我已经阅读了一些关于神经网络的内容,我听到了与输入,输出,权重,激活函数,隐藏层,3层方法和一些微积分有关的内容,但是这有什么必须编程实际的神经网络。我正在讨论if语句,while循环,类,字符串,数组,散列和排序。输入,输出,权重,激活函数和微积分与实际编程有什么关系。特别是微积分部分。你如何编写可以“训练”神经网络/程序的代码。我很确定我觉得我在问初学者问题。
答案 0 :(得分:5)
首先,抱歉我的英语不好。
recievePulse是你的激活功能
体重是每个神经元发送给神经元的脉冲强度,它与
相关联这样你就拥有了一个基本的神经网络。
一些确定的神经元接收不同重量的脉冲。这些是网络的感官,"输入"。它们可能会被激活并发出脉冲,具体取决于您给出的输入。 "输出"是一组定义的神经元。当您激活输入神经元时,某些输出神经元可能会激活,模拟对输入的响应。
然后,您可以停用所有神经元,然后再次使用其他输入。
通过这种方式,您可以使用基本的神经网络对其感知的内容做出反应。
此网络将验证颜色并决定是否喜欢。
有几种训练神经网络的方法。
例如,你可以在他们的回答良好时(通过提高所有活动连接的权重)奖励神经元,并在他们的回答不好时(通过减少连接的重量)给予他们不好的奖励。
每个神经元之间不同的连接权重可以用一种DNA来编码,这种DNA可以告诉神经元的结构等。这样你就可以选择"获胜者"和"松散"具有健身功能,并重现他们之间得到最佳答案的大脑。 通过这种方式,您可以选择最好的大脑并让它们进化成为超级天才。
有关此内容的更多信息,我建议您记录自己的人工生活和健身功能。
答案 1 :(得分:1)
除了Heru-Luin所说的一切,我还要补充以下内容:
神经网络可以用硬件或软件实现。第一个神经网络在原始生物的大脑中被“实施”,并通过进化到现代动物的大脑中进行精炼。
当将它们作为软件实现时,写入的“程序”实际上是创建大脑的软件模型,其是神经元的集合。这就是if-then语句,while-或for-loops,面向对象等的用武之地。如果按照传统意义编写实际程序,在C ++或Java中,这个就是编写的程序。
一旦编写了该模型,它仍然大多无用(如婴儿大脑),因为它尚未经过训练。训练过程涉及调整软件模型的各种参数 - 神经权重,连接等。有时这也称为编程神经网络。这也不完全是错误的:这与最早的数字计算机上的程序一样多,这些程序基本上是硬件元件之间的布线变化。可以将其视为编写某些硬件处理设备的软件模拟器,并在模拟硬件上实现模拟程序 。
微积分的来源是理解训练方法的工作方式和原因,如何实现它们,以及如何使它们具有计算效率。完整的答案超出了本答案的范围,通常是神经网络书籍的早期章节。简短的回答是,“因为神经网络试图找到能量表面上的最低点,并且推导的微积分是该过程中的必要步骤。”