梯度下降与ReLU激活函数

6 篇文章 0 订阅
6 篇文章 0 订阅
本文详细介绍了梯度下降法在求解函数最小值过程中的应用,以及ReLU激活函数在神经网络中的重要作用。ReLU因其简单高效避免梯度消失问题而成为主流激活函数,但同时也存在输出非中心化和负轴梯度消失等问题。针对这些问题,文中提到了PreLU、TReLU、AReLU、LogReLU和BoundedReLU等改进版激活函数,以提高学习速度和处理噪声能力。
摘要由CSDN通过智能技术生成

14.梯度下降与ReLU激活函数

14.1 梯度下降法

在数学中,梯度表示函数递增速度最快的方向,反之梯度的负方向则表示函数衰减最快的方向。因此,可以通过不断迭代使用梯度下降方法求解到函数的最小值。(可能是局部最小值,也可能是全局最小值),这取决于学习率的选择。如:为了求解函数 f ( x ) = f ( x 1 , x 2 … x n ) f(x)=f(x_1,x_2\dots x_n) f(x)=f(x1,x2xn)的最小值,则可以从一个起始点: x ( 0 ) = ( x 1 ( 0 ) , x 2 ( 0 ) , … x n ( 0 ) ) x^{(0)}=(x_1^{(0)},x_2^{(0)},\dots x_n^{(0)}) x(0)=(x1(0),x2(0),xn(0))开始,不断采用梯度下降法进行求解,直到满足一定的限制条件,如:两次迭代的差值小于某个设定的阈值或迭代次数超过某个 设置的预定值。当 i ≥ 0 i\geq0 i0时,梯度下降法可以表示为:
x 1 ( i + 1 ) = x 1 ( i ) − η ∗ ∂ f ∂ x 1 ( x ( i ) ) … x n ( i + 1 ) = x n ( i ) − η ∗ ∂ f ∂ x n ( x ( i ) ) \begin{array}{lcl}x_1^{(i+1)}=x_1^{(i)}-η*\frac{\partial f}{\partial x_1}(x^{(i)})\\\dots\\x_n^{(i+1)}=x_n^{(i)}-η*\frac{\partial f}{\partial x_n}(x^{(i)})\end{array} x1(i+1)=x1(i)ηx1f(x(i))xn(i+1)=xn(i)ηxnf(x(i))

14.2 ReLU激活函数

激活函数作用为通过多重非线性的叠加,解决复杂的非线性问题,在现实生活中,非线性问题远大于线性问题。假设当前的激活函数均为线性的,则,我们假设有两层,线性函数设为: y = w ∗ x + b y=w*x+b y=wx+b,第一层为 y 1 = w 1 ∗ x + b 1 y_1=w_1*x+b_1 y1=w1x+b1,第二层为 y 2 = w 2 ∗ y 1 + b 2 y_2=w_2*y_1+b_2 y2=w2y1+b2。则两层叠加以后为 y = w 2 ∗ ( w 1 ∗ x + b 1 ) + b 2 = w 2 ∗ w 1 ∗ x + w 2 ∗ b 1 + b 2 y=w_2*(w_1*x+b_1)+b_2=w_2*w_1*x+w_2*b_1+b_2 y=w2(w1x+b1)+b2=w2w1x+w2b1+b2进一步得到: y = ( w 2 ∗ w 1 ) x + ( w 2 ∗ b 1 + b 2 ) y=(w_2*w_1)x+(w_2*b_1+b_2) y=(w2w1)x+(w2b1+b2)。可见如果使用线性模型做激活函数的话,无论是多少层,最终的结果依然是一个线性模型,无法解决现实生活中绝大部分非线性问题,如下图所示。
在这里插入图片描述

在当前,对激活函数的研究主要集中在是否可以加快网络学习速度上。当前,主流的激活函数为ReLU函数。ReLU函数的表达式为 R e L U = m a x ( 0 , x ) ReLU=max(0,x) ReLU=max(0,x)。其函数图像和导数图像如下图所示:
在这里插入图片描述

其优点分析如下:

  • 尤其导数形式 可以看到,其导数值为0或者1,这就意味着不会像Sigmoid函数那样,其导数最大值为0.25,每次遇到激活函数时至少被压缩四分之一。而ReLU函数则直接为 1,这样可以避免在反向传播过程中由于对激活函数的多重导数累积导致的最终梯度消失的问题。(具体原因见反向传播最后的讨论问题)。
  • 其函数形式简单,因此在进行函数激活时,相当于只做了一个判断,如果输出大于0,则按照原始输入值输出即可,小于0则激活后的输出值为0。
  • 由于其导数形式简单,一次在学习过程中其速度远大于Sigmoid和Tanh函数的学习速度,有研究认为其速度约为Sigmoid或者Tanh的6倍。
  • 由于其在负半轴上均为0,因此所有的噪音都会被去除。对噪音的鲁棒性较好。
  • 具有一定的生物真实性,下图为基于生物数据绘制的生物神经元激活图,在0以后会有一个激活
  • 由于其对负半轴导数为0,则会导致很多神经元不被激活,会导致稀疏,这一点和我们对人脑的认知是一致的,我们认为在一次学习中人脑一种1-4%的神经元被激活。
    在这里插入图片描述

但是也存在如下的问题:

  • ReLu的输出不是以0位中心的:不以0位中心将带来以下问题:
    假如 a 1 , a 2 a_1,a_2 a1,a2是两个输入的特征,两个特征分别经过 w 1 , w 2 w_1,w_2 w1,w2激活以后的结果为 y y y,经过 softmax以后的结果为 L L L,则我们分别在两个方向上进行偏导的求解可以得到:
    ∂ L ∂ w 1 = ∂ L ∂ y ∗ ∂ y ∂ w 1 = ∂ L ∂ y ∗ a 1 \frac{\partial L}{\partial w_1}=\frac{\partial L}{\partial y}*\frac{\partial y}{\partial w_1}=\frac{\partial L}{\partial y}*a_1 w1L=yLw1y=yLa1
    ∂ L ∂ w 2 = ∂ L ∂ y ∗ ∂ y ∂ w 2 = ∂ L ∂ y ∗ a 2 \frac{\partial L}{\partial w_2}=\frac{\partial L}{\partial y}*\frac{\partial y}{\partial w_2}=\frac{\partial L}{\partial y}*a_2 w2L=yLw2y=yLa2
    由于激活函数ReLU的输出值均大于等于0,因此我们可以知道在 w 1 , w 2 w_1,w_2 w1,w2方向上必然符号相同,也就是 w 1 , w 2 w_1,w_2 w1,w2的符号移动方向必定在第一,第三象限的方向上。由于无法在四个方向上移动,因此其梯度下降的速度就会比较慢,正因为如何其学习速度就慢。
  • ReLU在负轴上仍然存在梯度消失的问题,这里认为设定在0处时,其导数为0。也被称为(Dead ReLU)
14.2.1 ReLU函数的改进

为了解决当前ReLU激活函数存在的问题,不少研究者提出各种各样激活函数的改进版本,其中较为出名的改进版本如下:

14.2.1.1 PReLU 激活函数

该函数的定义形式为:
{ x x > 0 α x x ⩽ 0 \begin{cases}x&x>0\\\alpha x&x\leqslant0\end{cases} {xαxx>0x0
α \alpha α的值为0.25时,其函数图像如下:
在这里插入图片描述

其优势在于:

  • 对x轴的负半轴进行了激活,使得当前的激活函数以0位中心,学习的速度更快
  • 解决了负半轴不被激活的问题,因此解决了函数的梯度消失问题

其劣势在于:

  • 对负半轴的值虽然进行了激活,但是我们也发现由于负半轴具备较多的噪音,这样的处理不利于对噪音数据的处理。
14.2.1.2 TReLU 激活函数

针对上文提出的在负半轴对噪音处理问题,中国学者提出:TReLU函数,具体形式如下:
{ x x > 0 t a n ( α x ) x ⩽ 0 \begin{cases}x&x>0\\tan(\alpha x)&x\leqslant0\end{cases} {xtan(αx)x>0x0
其函数图像如下(在不同 α \alpha α下):
在这里插入图片描述

14.2.1.3 AReLU激活函数

相比于上文提到的两个激活函数相比,AReLU函数在正负半轴上都进行了改进,且在正半轴上更接近于生物真实性。其函数形式如下:
{ l n ( x + 1 ) + a x , x > 0 a x , x ⩽ 0 \begin{cases}ln(x+1)+ax,&x>0\\ax,&x\leqslant0\end{cases} {ln(x+1)+ax,ax,x>0x0
其中,这里共享一个 a a a作为学习参数,其函数图像如下:
在这里插入图片描述

这里其实很明显的一个问题为在负半轴上没有限制其大小,虽然激活了负半轴但是对于噪音数据的处理明显存在问题。同时由于公用一个参数 a a a导致的问题时其准确度不高。在此基础上中国学者也进行了探索:

14.2.1.4 LogReLU激活函数

该函数的提出与上面相比对其参数进行了选择使用,如下:
{ l n ( x + 1 ) + a 1 x , x > 0 a 2 x , x ⩽ 0 \begin{cases}ln(x+1)+a_1x,&x>0\\a_2x,&x\leqslant0\end{cases} {ln(x+1)+a1x,a2x,x>0x0
这里他的函数图像与上面相比类似但是其内部核心思想明显不同,其需要学习两个参数,这两个参数的学习需要更多的学习时间,但是却提高了模型的准确度。
在这里插入图片描述

14.2.1.5 Bounded ReLU激活函数

该激活函数表示式如下:
{ n , x > n x , 0 ⩽ x ⩽ n 0 x < 0 \begin{cases}n,&x>n\\x,&0\leqslant x\leqslant n\\0&x<0\end{cases} n,x,0x>n0xnx<0,其函数图像如下( n = 6 n=6 n=6时的情况):
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存失败,源站可能有防盗链机制,建议将图片保存下来直接上传下上传(iJxYgtNNcn9V-1600935411476)(_v_images/20200924160720329_16807.png =522x)(_v_images/20200924162410173_24245.png =496x)]

这样解决一个问题,就是当 x x x无限大的时候,避免了激活激活超出边界。

在这里插入图片描述
也欢迎访问个人网站:www.edumind.tech

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值