什么是神经网络?
百度百科给出如下解释:人工神经网络(Artificial Neural Networks,简写为ANNs)也简称为神经网络(NNs)或称作连接模型(Connection Model),它是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。
但是,不要被复杂的定义吓到。神经网络(包括现在的深度神经网络,卷积神经网络等等)的实质其实是一种加权叠加的思想,其通过不断地训练反馈更新权值,使得网络的输出跟目标输出一致,获得所谓的“学习能力”。
神经网络的结构
这是一个典型的神经网络结构,其分别由数个神经元组成输入层,隐藏层,输出层,其中输入层,输出层固定,隐藏层层数可自己拟定,当然层数越多计算量也就越大(本文以应用最为广泛的BP神经网络来介绍-误差反向传递)。
神经元结构-前向过程
这是系统中单个神经元结构,输入数据乘权重加上偏置,具体来说就是:
w权重目的在于调整输入的值,使其朝向期望的输出逼近。
b偏置目的在于调整函数位置方便区分提取特征,具体来说:
(此部分摘自https://zhuanlan.zhihu.com/p/25340155,此文描述的更加详尽)
一个分类问题,如何将三角形跟圆形分开,假若不加偏置,任何过原点的函数都无法将二者分离,偏置的作用就在于此,适当的对函数位置进行调整,如下图所示。
回到神经元结构中,神经元的输出表示为
这里f()表示为激励函数,最为常见的如Sigmoid函数,其作用在于加入非线性因素。
具体什么意思呢?回到我们的分类问题(不论回归问题还是分类问题非线性函数都能更好的解决问题)。
这样一个分类问题,线性函数已经无法将二者完全分离,只有非线性函数才能将其分离开,通过激励函数不断地增加非线性因素从而形成一条非线性曲线实现二者分离。输入数据经过网络的计算得到输出这就是一个正向传递过程。
神经元结构-反向过程
定义代价函数:
表示实际输出,y表示目标输出。
接下来对w与b进行更新,使用梯度下降法(最优化算法中经典的算法,最速下降方向为梯度方向)寻找使得误差最小的w以及b的值。
α表示学习速率(在梯度下降法称为步长,使用一维搜索确定步长)在这里一般自己取尝试。对相应的w,b求偏导即是梯度。
通过此方法依次更新每一个偏置及权值(依次向前更新每一层的权值),所有的权值反向更新完毕后重新进入输入层进行计算,直到期望输出与实际输出之间的误差小于要求的误差为止。
至此神经网络的具体过程已经叙述完毕,下一篇将进入实战,进入机器学习界的“hello word”,手写文字识别。