抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

简介:本节主要对基本神经网络做介绍,并简单说明前向传递和反向传递的计算方法和作用

总揽

神经网络是深度学习的基础,这主要是因为深度学习是一种神经层的层数非常多的一种神经网络。这些神经层可能是卷积层(Convolutional Layer),也可能是全连接层(Fully Connected Layers, FC)。神经层全为卷基层的神经网络叫卷积神经网络(Convolutional Neural Networks, CNN)。
neural_networks
对应到图上,输入与输出一般为全连接层且数量固定,而隐层可以根据需要增加。较为简单的全连接层是由多个神经元组成(后面神经层均指全连接层),而神经元是由线性函数和非线性函数构成。这也就是为什么深度学习效果好了,主要是因为深度学习是线性函数和非线性函数的巧妙排列,所以理论上能够逼近任意函数。

算法流程

在总揽里提到,神经网络是由多个神经层构成,但是,实际上,神经网络算法还包括一些用来优化神经网络中的参数的优化算法,例如梯度下降算法(Gradient Descent,GD)等。神经网络算法的主要流程分为两个部分,首先为计算模型输出的前向传播过程和优化参数的反向传播过程。

前向传播

前向传播过程可以理解为利用算法模型求解输出的过程,在该过程中,算法模型的每个参数均为上一次的优化的参数,不发生改变。根据前面的介绍,可以知道,神经网络是由多个神经网络层组成,而每个神经网络层是由多个神经元组成,每个神经元是由线性函数和非线性函数组成,下面就先来说说线性函数和非线性函数是怎么组成神经元的。
cel
根据上图,可以知道,输入首先每个输入$X$先与权重$W$相乘,加上偏置$b$,然后得到一个中间变量$z$,也就是说$z=WX+b$。这一部分是发生了线性变换。
sigmod
最后对变量进行非线性变换得到该神经元的输出$h$,例如利用sigmod函数进行非线性变换的过程为$h=Sigmod(z)$,合起来就是$h=Sigmod(WX+b)$。这样,一个神经元就包含了线性函数,也包含了非线性函数。多个、多层神经元也就构成了神经网络。Sigmod函数如上图所示。
neural_networks
知道了神经网络的构成,其实前向传播的过程也就很清楚了。就像上图中说的那样,输入层完成对输入数据的采集,然后送入不同的神经元,也就是进行$h=Sigmod(WX+b)$运算,最后对每个神经元的输出再次进行$o=Sigmod(WH+b)$运算,得到模型输出。这个过程就是完整的前向传播过程,也就是根据输入计算模型输出的过程。

反向传播

神经网络算法的反向传播过程主要是网络参数的优化过程。