编程神经网络

时间:2014-06-03 18:53:08

标签: networking artificial-intelligence neural-network calculus training-data

所以我已经阅读了一些关于神经网络的内容,我听到了与输入,输出,权重,激活函数,隐藏层,3层方法和一些微积分有关的内容,但是这有什么必须编程实际的神经网络。我正在讨论if语句,while循环,类,字符串,数组,散列和排序。输入,输出,权重,激活函数和微积分与实际编程有什么关系。特别是微积分部分。你如何编写可以“训练”神经网络/程序的代码。我很确定我觉得我在问初学者问题。

2 个答案:

答案 0 :(得分:5)

首先,抱歉我的英语不好。

神经网络(主要)包含:

  • 神经元
  • 这些神经元被组织成一组神经元:输入神经元,输出神经元和"认知"神经元。
  • 这些神经元彼此有联系
  • 激活神经元将信息发送到与其链接的神经元

从编程的角度来看,您可以将其视为:

  • 神经元是一类
  • Neuron类包含一系列"连接" (参考其他神经元,有时伴有相关的随机重量)。
  • 神经元课程的方法类似于" recievePulse"它计算神经元是否激活。
  • 神经元课程有类似" sendPulse"它激活了" recievePulse"与之相关的神经元。

recievePulse是你的激活功能

体重是每个神经元发送给神经元的脉冲强度,它与

相关联

这样你就拥有了一个基本的神经网络。

工作原理:

一些确定的神经元接收不同重量的脉冲。这些是网络的感官,"输入"。它们可能会被激活并发出脉冲,具体取决于您给出的输入。 "输出"是一组定义的神经元。当您激活输入神经元时,某些输出神经元可能会激活,模拟对输入的响应。

然后,您可以停用所有神经元,然后再次使用其他输入。

通过这种方式,您可以使用基本的神经网络对其感知的内容做出反应。

输入/输出示例:

  • 输入1:蓝色数量
  • 输入2:绿色数量
  • 输入3:红色数量
  • 输出1:"我喜欢这种颜色"
  • 输出2:"我不喜欢这种颜色"
  • 输入和输出之间有一堆神经元("认知部分")。

此网络将验证颜色并决定是否喜欢。

训练:

有几种训练神经网络的方法。

例如,你可以在他们的回答良好时(通过提高所有活动连接的权重)奖励神经元,并在他们的回答不好时(通过减少连接的重量)给予他们不好的奖励。

每个神经元之间不同的连接权重可以用一种DNA来编码,这种DNA可以告诉神经元的结构等。这样你就可以选择"获胜者"和"松散"具有健身功能,并重现他们之间得到最佳答案的大脑。 通过这种方式,您可以选择最好的大脑并让它们进化成为超级天才。

有关此内容的更多信息,我建议您记录自己的人工生活和健身功能。

答案 1 :(得分:1)

除了Heru-Luin所说的一切,我还要补充以下内容:

神经网络可以用硬件或软件实现。第一个神经网络在原始生物的大脑中被“实施”,并通过进化到现代动物的大脑中进行精炼。

当将它们作为软件实现时,写入的“程序”实际上是创建大脑的软件模型,其是神经元的集合。这就是if-then语句,while-或for-loops,面向对象等的用武之地。如果按照传统意义编写实际程序,在C ++或Java中,这个就是编写的程序。

一旦编写了该模型,它仍然大多无用(如婴儿大脑),因为它尚未经过训练。训练过程涉及调整软件模型的各种参数 - 神经权重,连接等。有时这也称为编程神经网络。这也不完全是错误的:这与最早的数字计算机上的程序一样多,这些程序基本上是硬件元件之间的布线变化。可以将其视为编写某些硬件处理设备的软件模拟器,并在模拟硬件上实现模拟程序

微积分的来源是理解训练方法的工作方式和原因,如何实现它们,以及如何使它们具有计算效率。完整的答案超出了本答案的范围,通常是神经网络书籍的早期章节。简短的回答是,“因为神经网络试图找到能量表面上的最低点,并且推导的微积分是该过程中的必要步骤。”