Python 实现人工神经网络训练过程

Python 实现人工神经网络训练过程

ANN学习已经成功地用于学习实值、离散值或矢量值函数,包括不同类型的特征景观、语音识别和学习机器人控制技术等问题。ANN学习可以抵抗训练数据中的错误。发现生物到这种是由大脑中极其复杂的密集互联的网络组成的,这成为人工神经网络(ANNs)发展的灵感。由大约1011-1012个神经元组成的紧密联系的网络构成了人类的大脑。

一个神经网络是由相连的I/O单元组成的,每个单元都有一个对应于其计算机程序的权重。你可以使用大数据库来开发预测模型。人类的神经系统作为这个模型的基础。你可以用它来做人类学习、计算机语音、图片解释和其他任务。

一种从大脑中汲取灵感的信息处理范式被称为人工神经网络(ANN)。ANN通过模仿来学习,就像人一样。通过一个学习过程,一个ANN为一个特定的目的量身定做,包括这样的模式分类或数据分类。这里存在的神经元之间的突触连接因学习而改变。

用Python实现人工神经网络训练过程

人脑中还有数千亿的神经元。这些神经元由突触连接,突触不过是一个神经元可以通过冲动与另一个神经元交流的点。一个神经元提供给另一个神经元的兴奋性信号与该神经元的所有输入相连接。目标神经元如果达到一定的阈值,就会向前发射行动信号;这就是思维过程的内部运作方式。

通过利用矩阵在计算机上建立 “网络”,计算机科学家可以模拟这一过程。这些网络可以被看作是神经元的抽象,而没有考虑到所有的生物复杂性。为了简单起见,我们将只建立一个能解决线性分类问题的两层NN模型。

用Python实现人工神经网络训练过程

作为一个例子,让我们想象你有一个问题,其中我们希望预测一个给定的输入和输出集合的输出。

用Python实现人工神经网络训练过程

请记住,第三列的值,也就是我们在图2中每个训练例子中的输出是什么,是直接与输出相联系的。因此,测试例子的输出结果应该是1。

以下步骤构成了训练过程

  • 前向传播

顾名思义,输入的信息是通过网络向前传递的。每个隐藏层接收数据输入,根据激活函数对其进行处理,然后将其转移到下一层。为了产生一些输出,输入只能以向前的方向提供。在输出生成过程中,数据不能向其他方向流动,因为这将形成一个循环,使输出永远无法形成。前馈网络就是有这种安排的网络。前馈网络有助于信息的传播。

用权重乘以输入(只用随机数作为权重)。

假设Y=WiIi=W1I1+W2I2+W3I3。

为了确定神经元的输出,通过sigmoid算法运行结果。使用sigmoid函数将结果在0和1之间归一化。1/1+e-y。

每个隐藏层和输出层节点在前向传播过程中经历预激活和激活。

  • 反向传播

确定错误,或产生的输出与预期的输出之间的差异。根据错误,通过将错误乘以输入和Sigmoid曲线的梯度来改变权重,并再次确定错误。网络训练的基础是反向传播。它是一种根据上一阶段(即迭代)记录的速率来调整神经网络权重的技术。通过适当调整权重,你可以降低错误率,并通过扩大模型的适用性来提高其可靠性。

术语 “错误的反向传播 “在神经网络中被简称为 “反向传播”。它是开发人工神经网络的一种常见技术。关于网络中的每个权重,这种技术有助于取损失函数的导数。

对于几千次的迭代,重复整个过程。让我们用Python代码编写整个过程。我们将使用NumPy库,以便使所有的矩阵计算对我们来说变得简单。要运行该代码,你需要在我们的计算机上安装numpy库。

用Python实现人工神经网络训练过程

输出

Our neural network expects the result to be 0.65980921 after 10 iterations. It doesn't look good because the correct response should be 1. We get 0.87680541 if we extend the iterations to 100. A smarter network is emerging! Following that, after 10000 iterations, we have 0.9897704, which is slightly closer and indeed a decent result.

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程