建立神经网络:Part 0

来源:互联网 发布:mac不能保存书签 编辑:程序博客网 时间:2024/06/07 03:40

建立神经网络:Part 0

转载请注明!

机器学习是成功的,时髦的,可以学习实现你的冒险。
这就是我想做的,为了让任何人对如何产生原始实例网络感兴趣,我会从本质上讲解我对神经网络的理解(示例会用Python3。这就是我不喜欢的地方,为什么不是2.7)。
本系列第一项涵盖理论,在试图编写代码或分析任何类型数据之前确保这是巩固的。

什么是神经网络?


一个网络收集一起工作形成更智能结果/解决方案的神经元。
这将真正帮助我们首先理解单个神经元如何工作,让我们来探索一下。

单一神经元如何工作?

简单来说神经元是一个输入/输出函数(考虑编程)。从之前阶段的选取一些输入将用于神经元产生输出变量。


通常,节点变量的决策函数称为转换函数。

数据如何传递?

每个节点和其他传递变量的节点是有联系的。其中变量带有判定特定节点输出多么重要权重。
这些连接的机制称为突触,如果你阅读神经网络,这事经常使用的术语。
在采用的链/图中当一个节点激活另一个称为触发函数,触发函数他能够过传递变量作为新节点输入用以执行新节点的函数(转换函数)。

节点如何知道那个节点是最重要的?

这是一个有趣的问题,答案是他们可以学习得到,但是学习非常慢!
反向传播(Backpropagation),最有趣的单词,你都=读一整天也是在学习。网络从每个连接随机给定的权重开始。然后对于给定的输入数据集,决定所需的输出。

讲到我们需要的输出,我们可以允许网络生成它自己的输出。比较两个数据集,我们可以发现其中异同(这是一个不合实际的假设,两个数据集永远不会再第一次相遇)。异同是所谓的神经网络误差。
对于这些误差,我们可以尝试使用向后传播调整权重。输出节点向后和其之前的节点沟通,并告知误差大小。节点根据这些信息决定哪个连接受限于变量,并调整其权值。重复循环,节点不断向后传播直到逼近最初输入。
这个过程再重复直到神经网络对误差感到满意,并且修正足够精确。

只有一个数据集,好吗?

因此,我提到神经网络学习是非常慢的,向后传播过程很慢。只有一个数据集足够了。如果我希望更好的准确率,我们可以用多个数据集得到一个真正聪明强大的神经网络。
为了递归处理?让我们添加更多的数据,我们可以一遍又一遍运行。

完成了么?

即使对于一些简单的问题我们可能发现神经网络需要数以百万次迭代训练,产生良好的准确结果。
但是,输出是我们想要的聪明的通常准确的结果,所以这是值得的。
向后传播中提高速度的一个方法是调整用于计算权重的函数。我们可以使用一个称为学习率的参数调整神经网络发现正确答案的速度。

深入

有时,在传递数据所有的初始输入和最终输出见的点是相当混乱的,我们通常认为所有介于初始节点和最终节点间的节点是隐藏节点,并尽可能尝试封装过程。网络深度很深变得极具层次,这就是所谓的深度神经网络。

作为计算机程序员,我们只关心输入和输出。

下一次

本系列的下一节,我会试着压缩重要方程为可读形式,并且剖析神经元,观察其内部工作。以及“sigmiod”函数。

0 0