我们熟知的网络结构有三种,分别是前馈神经网络,记忆神经网络和图神经网络。
让我们对其进行一 一解释吧!
在书中介绍了常见的五种激活函数,分别是S型激活函数,ReLU函数,Swish函数,GELU函数以及Maxout单元,让我们来对此进行一一介绍吧
S型激活函数常见的是logistic函数
和Tanh函数
。
这里需要注意一点是,S型激活函数的大名叫做Sigmoid型激活函数,但是logistic函数还有一个别名叫做Sigmoid函数,这俩者是包含关系,而不是对等关系【多亏和一个大佬聊天的时候,纠正过来,差点就理解错误了】
根据下方图片,我们可以清楚得知:logistic函数具有连续可导性,但是其输出恒大于0,会导致后一层的神经元存在偏置偏移,从而使梯度下降的收敛变得缓慢,但是Tanh函数是零中心化的,所以此类问题的风险较低。
由于Logistic函数和Tanh函数都是S型函数,具有饱和性,但是计算开销较大
【因为这两个函数都是在中间(0附近)近似线性,两端饱和】
因此,这两个函数可以通过分段函数来近似表示,也就有了hard-logistic函数和hard-Tanh函数。
他们都是由对应函数在0附近的一阶泰勒展开式构成的。
所以便有了对应的式子:
ReLU函数大名为:Rectifier Linear Unit 修正线性单元,又可以称为Recitifier函数
实际上,ReLU函数类似于斜坡(ramp)函数,其公式为:
ReLU函数存在一定的优点与缺点:
优点:
缺点:
所以,根据ReLU的缺点,便孕育而生了ReLU的诸多变式:
这种函数在x<0的时候,保持着很小的梯度γ,以免出现激活死亡问题。比如γ的值为0.01。
这种和上面的leaky ReLU有点类似,他们都是改变坡度。但是PReLU是每一个不同的神经元的参数不同,也就是:
其中 为 ≤ 0 时函数的斜率.因此,PReLU 是非饱和函数.
GELU又称为Gaussian Error Linear Unit【高斯误差线性单元】,也是一种通过门控机制来调整其输出值的激活函数,和 Swish 函数类似。
( ≤ )是高斯分布(, 2)的累积分布函数
, 为超参数,一般设 = 0, = 1即可
当使用Logistic函数来近似时,GELU相当于一种特殊的Swish函数【Swish(x) = ()】
前馈神经网络(Feedforward Neural Network,FNN)是最早发明的简单人工神经网络。
① 在前馈神经网络中,各神经元分别属于不同的层.每一层的神经元可以接收前一层神经元的信号,并产生信号输出到下一层。
② 第0层称为输入层,最后一层称为输出层,其他中间层称为隐藏层
注意:层数L一般只考虑隐藏层和输出层,上文中的多层前馈神经网络应该是3层。
传播公式:
对应解释:
L层的净输入可以理解为:从L-层到L层的权重乘以对应的L-1层的输入,再加上从L-层到L层的偏置,然后再将L层的净输入代入到L层对应的激活函数中,得到L层的输出。
对于前馈神经网络中的反向传播算法和自动梯度计算,由于涉及过多的数学公式,后续应该会专门出俩篇关于此的博客,目前我只是看书学习,后续可能会跟着李宏毅老师的深度学习视频继续进一步学习,对于公式推导会和吴恩达老师的机器学习视频公式推导一样,以推导图片的形式呈现。