深度神经网络-传播原理
一个符号被识别出+-×运算,用深度神经网络来解决这种图像识别问题。对要识别的图形进行压缩,本例中用3*3像素大小来说明神经网络的原理。
一副2D图片压缩成3*3像素如下,每个像素由灰度不同的数值确定,可以将灰度二值化,H<125,为0,反之为1。即非黑即白,便于简化处理。然后将类似3*3元素值为0、1矩阵变成1-9的向量,如图向量为[0,1,0,1,1,1,0,1,0],目前我们就理解了神经网络到底输入的数据是什么样子的,真实世界的事件等文字描述类又如何使用神经网络?就是概括提取特征作为有效建模数据,将此建模数据作为输入数据进行网络的处理(或训练或预测)。
神经网络组成:n层网络、每层m个神经元,层与层相连接(便于理解本案例全采用全连接)。它像一个黑盒一样提供数据输入端,经过它的层层处理,最终输出结果,训练的过程也就是将输出的数据与真实数据进行比对,不一样就继续训练,直到达到满意的结果或步数。
如上图,图片是一张3*3像素的+图片,每一个像素二值化后都有一个0/1的值,将类似的图片批量制作成数据集,然后在数据集中进行随机分为两类:训练数据(80%)和测试数据(20%),将训练数据输入到神经网络模型进行逐次计算。神经网络的计算:以下图为例,该神经网络由一个输入层、两个隐藏层、一个输出层组成。每一层由一定数量的神经元组成,输入层神经元的数量由外层输入数据决定,本例中的9个像素值作为输入数据,所以输入层I由9个神经元组成。输出层由分类的数量来决定,本例输出+,-,×的分布概率,所以输出层O由三个神经元组成。中间的两个隐藏层的神经元数量或者隐藏层的层数由模型求解的复杂度来决定,比如非常复杂的图像分类需要较多的神经元和层数,较为简单的可能只要一个隐藏层,隐藏层只需要4.5个神经元就可以。
神经网络每层负责提取一定特征,通过y=WX+b线性函数+一个非线性函数f(y)逐层拟合目标结果。常用f(y)函数有:sigmoid、ReLU等。最终事件需求转变成数学的求解W、b问题。如何求解W\b?
涉及神经网络逐层y正向传播和误差的反向传播问题。简单的理解就是先预设一套W\b的值,每层按照求和和激活过滤到下一层,逐层到输出层,输出层得到一个概率分布,然后与真实的概率做差值,求出误差。通过误差可以看出来本套W\B的拟合结果,不满足需求的化需要重新调整W\B的值,如何来调整这些值?这时候就用到了数学上的梯度下降的思想,顺着自变量梯度的方向可以最快的求出误差的极小值。比如抛物线y=x*x.
如z=x*x+y*y三维空间,为了便于展示效果,取了剖面,梯度方向是指向z值最小的方向。由这个思路出发,使用误差函数,逐层开始求w\b的梯度。然后用w-w更新w,b-
b更新b,直到第一层为止,这就是误差反向传播的原理。由此迭代计算误差,再由误差反向传播,直到误差达到极致或自己满意的效果。