蓝盟IT外包,这是极其简单的人工神经网络解说

发布者:上海IT外包来源:http://www.lanmon.net点击数:1293

蓝盟IT小贴士,来喽!
一、最简单的人工神经网络
用理论和代码解释和演示的最简单的人工神经网络。
代码示例: https://github.com/go  kadin/ai  -简单网络
理论
神经元模拟
在人脑结构的启发下,人工神经网络中有相互连接的模拟神经元,用于模式的保存和交流。 模拟神经元最简单的形式是有一个或多个输入值和一个输出值,每个值都有权重。
最简单地说,输出值是对输入值进行了加权的合计。
一个简单的例子
网络的作用是通过用许多参数模拟复杂的函数,在给出一系列输入值时得到特定的输出值。 这些参数通常我们自己很难制作。
假设目前的一个网络有两个输入值,它们对应于两个权重值。
在此,需要调整权重值,以便可以生成预设的输出值。
初始化时,由于不知道最佳值,所以经常随机给权重分配值,但这里为了简单起见,将它们全部初始化为1。
在这种情况下,我们得到的
错误值
如果输出值和我们期待的输出值不一致,就会有误差。
例如,如果希望目标值为,则这里差分值为
测量误差通常使用方差,即成本函数。
输入输出值有多组时,误差为各组方差的平均值。
用方差测量得到的输出值和期望的目标值之差。 通过平方可以消除负的偏差值的影响,无论正负都可以强调较大的偏差值。
为了修正误差,需要调整权重值,使结果接近目标值。 在我们的例子中,从1.0降到0.5就可以达到目标。 因为
但是,神经网络经常涉及许多不同的输入值和输出值,在这种情况下,需要一种学习算法来自动完成这一步。
坡度下降
现在利用误差找出应该调整的权值,使误差最小化。 但是,在这之前,让我们先了解坡度的概念。
什么是坡度?
梯度本质上是指函数最大梯度的矢量。 用来表示梯度的,简单地说,那是函数变量偏导数的矢量形式。
对于双变量函数,它用以下格式表示:
让我们用几个数字来模拟一个简单的例子。 如果有某个函数的话,坡度会变成
什么是坡度下降?
下降可以简单地理解为,通过梯度找出我们函数最大梯度的方向,多次尝试在相反方向上减小步幅,从而找出函数整体、有时局部误差值最小的权重。我们用被称为学习率的常数表示这个反方向的小步幅,在式子中用于赋予特征。
值太大的话,可能会直接错过最小值,值太大的话,网络学习会花时间,也可能会陷入浅的局部最小值。
对于我们例子中的两个权值和,需要找出这两个权值对误差函数的梯度
还记得上面的公式和吗? 关于和,可以通过微积分的链式求导法则分别计算梯度
为了简单起见,后面用这个术语表示。
形成梯度后,可以导入创建的学习率,并按如下方式更新权重值。
然后,重复该过程直到误差值最小并接近零。
启用函数
为什么需要激活函数呢? 否则,每个节点的输出将是线性的,而整个神经网络将是基于输入值的线性输出。 由于线性函数的组合仍然是线性的,所以为了使神经网络能够与线性回归模型区分开来,有必要引入非线性函数。
时,典型的激活函数采用以下格式:
Sigmoid函数:
线性整流函数:
tanh函数:
反向传播
反向传播算法可以用于训练人工神经网络,特别是具有两层以上的网络。
原理是利用前向传递计算网络输出值和误差,根据误差梯度反向更新输入层的权值。
文/上海蓝盟  IT外包专家
IT外包
>
400-635-8089
立即
咨询
电话咨询
服务热线
400-635-8089
微信咨询
微信咨询
微信咨询
公众号
公众号
公众号
返回顶部