深度学习前馈神经网络技术分析
扫描二维码
随时随地手机看文章
Index
多层感知机(MLP)介绍
深度神经网络的激活函数
深度神经网络的损失函数
多层感知机的反向传播算法
神经网络的训练技巧
深度卷积神经网络
前馈神经网络(feedforward neural network)是一种最简单的神经网络,各神经元分层排列。每个神经元只与前一层的神经元相连。接收前一层的输出,并输出给下一层.各层间没有反馈。是目前应用最广泛、发展最迅速的人工神经网络之一。研究从20世纪60年代开始,目前理论研究和实际应用达到了很高的水平。
——百度百科
而深度学习模型,类似的模型统称是叫深度前馈网络(Deep Feedforward Network),其目标是拟合某个函数f,由于从输入到输出的过程中不存在与模型自身的反馈连接,因此被称为“前馈”。常见的深度前馈网络有:多层感知机、自编码器、限制玻尔兹曼机、卷积神经网络等等。
01 多层感知机(MLP)介绍
说起多层感知器(Multi-Later Perceptron),不得不先介绍下单层感知器(Single Layer Perceptron),它是最简单的神经网络,包含了输入层和输出层,没有所谓的中间层(隐含层),可看下图:
也就是说,将输入向量赋予不同的权重向量,整合后加起来,并通过激活函数输出1或-1,一般单层感知机只能解决线性可分的问题,如下图:
我选择了0个隐含层,也就是我们介绍的单层感知机,对于可以线性可分的数据,效果还是可以的。如果我换成线性不可分的数据集,如下图,那么跑半天都跑不出个什么结果来。
这个时候就引入多层感知器,它相比单层感知器多了一个隐含层的东西,同样的数据集,我加入两层 隐含层,瞬间就可以被分类得很好。
对于上面直观的了解,我这里还是要深入介绍一下多层感知机的原理。MulTI-Layer Perceptron(我们后面都叫MLP),MLP并没有规定隐含层的数量,因此我们可以根据自己的需求选择合适的层数,也对输出层神经元没有个数限制。
02 深度神经网络的激活函数
感知机算法中包含了前向传播(FP)和反向传播(BP)算法,但在介绍它们之前,我们先来了解一下深度神经网络的激活函数。
为了解决非线性的分类或回归问题,我们的激活函数必须是非线性的函数,另外我们使用基于梯度的方式来训练模型,因此激活函数也必须是连续可导的。 @ 磐创 AI
常用的激活函数主要是:
Sigmoid激活函数
Sigmoid函数就是LogisTIc函数,其数学表达式为:
对应函数图像为:
对应的导函数为:
可以看出,Sigmoid激活函数在定义域上是单调递增的,越靠近两端变化越平缓,而这会导致我们在使用BP算法的时候出现梯度消失的问题。
Tanh激活函数
Tanh激活函数中文名叫双曲正切激活函数,其数学表达式为:
对应函数图像为:
对应的导函数为:
同样的,tanh激活函数和sigmoid激活函数一样存在梯度消失的问题,但是tanh激活函数整体效果会优于Sigmoid激活函数。
Q:为什么Sigmoid和Tanh激活函数会出现梯度消失的现象?
A:两者在z很大(正无穷)或者很小(负无穷)的时候,其导函数都会趋近于0,造成梯度消失的现象。
ReLU激活函数
ReLU激活函数又称为修正线性单元或整流性单元函数,是目前使用比较多的激活函数,其数学表达式为:
对应函数图像为(a):
对应的导函数为:
ReLU激活函数的收敛速度要比上面两种要快得多,ReLU激活函数的X轴左侧值恒为0,使得网络具有一定的稀疏性,从而减少参数之间的依存关系,缓解了过拟合的情况,而且它的导函数有部分为常数1,因此不存在梯度消失的问题。但ReLU激活函数也有弊端,那就是会丢失一些特征信息。
LReLU激活函数
上面可以看到LReLU激活函数的图像了,它和ReLU激活函数的区别在于当z