前向全连接神经网络是一种经常采用的人工神经网络,如下图:
再给一个示例,坚持看下去:
深度学习。
我们可以看到上面的神经网络有很多层,那么抽象一下,下面这种神经网络类型就叫做深度学习。
深度学习是指有多个隐藏层的人工神经网络,我们终于揭开了深度学习这个马甲,从数学角度来讲,它没有什么好神秘的。
一个应用例子。
输入一个手写字,判定属于哪个数字(假如限定0-9),大家似曾相识吧。
图片是256*256像素,数字化后,1代表有色,0代表无色,这样,输入就变成1个256维变量,输出每个位置数据表达的是属于该位置数据的置信度,比如输出分类器自上而下分别代表1,2,3,4,5,..0,输出的数据代表的是这个数字的置信度,这里输出中2的位置的置信度最大是0.7,则判定这张图片分类成2。
图像识别也是这么来的,只不过输出的分类除了数字,可能还包括动物,比如猫,狗,用的识别工具就是人工神经网络,下图示例了识别过程,核心就是,寻找一张合适的神经网络。
那么,到底如何实现呢?
首先,准备一堆的训练图片和标识:
其次,训练目标如下图所示,要求在输入图片1的时候,对应的y1要最大,输入图片2的时候,对应的y2要最大。
再次,要设置一个损失函数L,标识训练的好坏,也就是训练识别的结果跟实际尽量匹配,假如输入的图片是1,则最后y1最好是1,而其他y2-y10最好全是0,这样损失函数L就是最小,即0,如下图示例:
而如何让L最小呢,这是神经网络最核心的东西,大家前面已经看到,实际上这个网络的未知数有权重w,偏移量b(常量),我们一般叫它神经网络的参数θ,这是一个未知数求解的问题。
如何选择θ,让L最小,需要进行求解。
不做非常艰难的公式推导,我只给出结果,由于L是w的函数,假设向量W是两维w1,w2,则函数图形化后如下:
我们的目的就是去寻找这张图L的最低点,一旦最低点确定,w1,w2也确定了,那整个神经网络就确定了,一般采用梯度下降方法,就是对W求导,能够明确参数增减的方向,如果你微积分还记得的话。
寻找的办法一般步骤如下:
首先,初始化W,也就是w1,w2,就是随便找一组初始化参数。
其次,计算L对W的导数(也就是梯度),判断W参数应该的走向,然后重置W:
最后,当选择的W使得L最小值变化不大时,就终止,表示此时选择的参数可以满意了。
就好比你在玩帝国时代,需要探索地图的最低点:
由于神经网络有很多层次,很多激活函数,因此这个求解的方法非常复杂,其中反向传播算法(Backpropagation)是最通用的一种求解方法。