反向传播与神经网络
1.反向传播
关于反向传播我的理解是这样的,SVM和SoftMax可以看成一层神经网络,你如果想要调整它的W很简单,只有求导就可以了,但是当神经网络有多层的话,你无法直接求导来更新最开始层的W,于是就出现了反向传播这个工具。至于神经网络为什么需要多层,理由有很多,我先举个例子,比如一个汽车在图片里面可以有各个方向的,而一层神经网络(SVM和SoftMax)只能处理一种方向的情况,当你需要处理所有情况就需要多层神经网络了。
上面是关于为什么需要多层神经网络和反向传播的解释,下面我介绍反向传播的具体做法:
根据每一个神经元进行分离,每个神经元只管它的输入与输出的偏导,这样链式传播回去就能得到最开始的偏导,也就能改变每一层的W了,如下图:
实例为:
上图,线上方的数字代表输入,下面的数字代表反向传播求回来的偏导,在复杂的函数里面也可以这样一步一步求出来,里面的图被称为计算图。
2.神经网络
前面我已经介绍过SVM和反向传播了,你可以将神经网络理解成多层SVM,为什么需要多层上面我也已经说过了,为了处理不同的情况,公式和示意如下图:
上图的x为输入的图片特征向量,h为中间值,W1为第一层的模板向量,W2为第二层模板向量,S为最后输出种类的分数。(比如这个2层神经网络就可以处理车头向左和向右2种情况)
2.1激励函数
前面我还说了一种SVM无法解决情况,比如:
神经网络就出现了一种特别的解决方法—激励函数,什么意思呢,就是可以把线性的函数转换为非线性的,从而更好的分类,举个例子:
sigmoid函数,数学形式很简单,是σ(x)=1/(1+e^(-x)),图像如上图所示,功能是把一个实数压缩至0到1之间。输入的数字非常大的时候,结果会接近1,而非常大的负数作为输入,则会得到接近0的结果,比如上图的第二张图,我们可以把区域的点到原点的距离为sigmoid函数的x变量,那么就可以根据这个结果进行分类的,大于多少或者小于多少为红色,其余为蓝色,就能解决线性不能解决的问题了。