当前位置:网站首页 > Haskell函数式编程 > 正文

sigmoid函数求导过程 bce(sigmoid导函数图像)



能坚持别人不能坚持的,才能拥有别人不能拥有的。

前言

本文总结了几个在深度学习中比较常用的激活函数:Sigmoid、ReLU、LeakyReLU以及Tanh,从激活函数的表达式、导数推导以及简单的编程实现来说明。

a

Sigmoid 激 活 函 数

▲Sigmoid激活函数表达式

▲Sigmoid导数表达式

▲Sigmoid编程实现

▲Sigmoid激活函数以及导函数图像

Sigmoid激活函数也叫做Logistic函数,因为它是线性回归转换为Logistic(逻辑回归)的核心函数,这也是Sigmoid函数优良的特性能够把X ∈ R的输出压缩到X ∈ (0, 1)区间。Sigmoid激活函数在其大部分定义域内都会趋于一个饱和的定值。当x取绝对值很大的正值的时候,Sigmoid激活函数会饱和到一个高值(无限趋近于1);当x取绝对值很大的负值的时候,Sigmoid激活函数会饱和到一个低值(无限趋近于0)。Sigmoid函数是连续可导函数,在零点时候导数最大,并在向两边逐渐降低,可以简单理解成输入非常大或者非常小的时候,梯度为0没有梯度,如果使用梯度下降法,参数得不到更新优化。

Sigmoid函数最大的特点就是将数值压缩到(0, 1)区间,在机器学习中常利用(0, 1)区间的数值来表示以下意义:

上面介绍了Sigmoid激活函数将输出映射到(0, 1)区间在机器学习中的两个意义,这也是Sigmoid激活函数的优点。接下来介绍一下Sigmoid激活函数的缺点:

▲Sigmoid激活函数输出均值不为0

反向传播时候更新方向要不往正向更新,要不往负向更新,会导致捆绑效果,使得收敛速度减慢。当然,如果使用小批量梯度下降法,由于每个小batch可能会得到不同的信号,所以这个问题还是有可能缓解的。2015年loffe提出的批标准化(Batch Normalization)就是为了适应性的将每层输出分布都进行统一,以便网络学习更加稳定、更快的传播。

在Tensorflow2.X中Sigmoid激活函数只有函数式接口的实现方式

▲Sigmoid激活函数实现

b

ReLU 激 活 函 数

▲ReLU激活函数表达式

▲ReLU导数表达式

▲ReLU编程实现

▲ReLU激活函数以及导函数图像

2012年ImageNet竞赛的冠军模型是由Hinton和他的学生Alex设计的AlexNet,其中使用了一个新的激活函数ReLU(REctified Linear Unit,修正线性单元)。在这之前Sigmoid函数通常是神经网络激活函数的首选,上面也提到过,Sigmoid函数在输入值较大或较小的时候容易出现梯度值接近于0的现象,也就是梯度弥散。出现梯度弥散现象,网络参数会长时间得不到更新,很容易导致训练不收敛或停滞不动的现象发生,网络层数较深的网络模型更容易发生梯度弥散现象,使得对神经网络的研究一直停留在浅层网络。值得一提的是,AlexNet是一个8层的网络,而后续提出的上百层的卷积神经网络也多是采用ReLU激活函数。

通过ReLU激活函数的函数图像可以看到,ReLU对小于0的值全部抑制为0;对于正数则直接输出,这是一种单边抑制的特性,而这种单边抑制来源于生物学。ReLU函数的导数计算也非常简单,x大于等于0的时候,导数值为1,在反向传播的过程中,它既不会放大梯度,造成梯度爆炸;也不会缩小梯度,造成梯度弥散的现象。

上面从ReLU函数的起源以及Relu函数图像角度来阐述ReLU激活函数,接下来详细的来看看ReLU函数的优缺点。

优点:

缺点:

在Tensorflow2.X中ReLU激活函数有两种实现方式:

▲ReLU激活函数函数式接口

▲ReLU激活函数类

c

LeakyReLU 激 活 函 数

▲LeakyReLU激活函数表达式

▲LeakyReLU导数表达式

▲LeakyReLU函数以及导函数实现

▲LeakyReLU激活函数以及导函数图像

LeakyReLU函数是针对ReLU函数的Dead ReLU而提出来的。ReLU激活函数在x < 0的时候导数恒为0,很可能致使很多神经元为0,参数得不到更新。通过LeakyReLU函数表达式也可以看出,与ReLU函数唯一的不同就是在x < 0的部分输出不在为0而是px,p为超参数,通常是一个较小的值。当p = 0的时候,LeakyReLU函数退化成ReLU函数;当p ≠ 0的时候,在x < 0的时候能够得到较小的导数值p。从而避免出现Dead ReLU的现象。

当然了其实ReLU激活函数当x < 0的时候输出为0也有它的优点。也就是增大网络的稀疏性,这往往会提高模型的泛化能力(类似dropout作用)。因此虽然提出了LeakyReLU这种激活函数,但是目前使用比较广泛的还是ReLU激活函数。

在Tensorflow2.X中LeakyReLU激活函数有两种实现方式:

▲LeakyReLU激活函数函数式接口

▲LeakyReLU激活函数类

d

Tanh 激 活 函 数

▲Tanh激活函数表达式

▲Tanh导函数表达式

▲Tanh函数实现

▲Tanh函数以及导函数图像

Tanh激活函数(hyperbolic tangent, 双曲正切),通过函数表达式可以看出,tanh可由sigmoid激活函数平移缩放得到。tanh函数将输出值映射到(-1, 1)区间,有点类似于幅度增大的sigmoid激活函数。

接下来依然介绍tanh函数的优点和缺点。

优点:

缺点:

在Tensorflow2.X中tanh激活函数只有函数式接口的实现方式:

▲Tanh函数实现

参考: 1.《Tensorflow深度学习》

到此这篇sigmoid函数求导过程 bce(sigmoid导函数图像)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 密码加密(十大常见密码加密方式)2025-10-08 13:36:11
  • 窗口函数 聚合函数(窗口函数的作用)2025-10-08 13:36:11
  • 报文格式有哪些(报文格式有哪些xml)2025-10-08 13:36:11
  • ddpm模型公式(ddm模型g怎么算)2025-10-08 13:36:11
  • 支付方式有哪些(新加坡支付方式有哪些)2025-10-08 13:36:11
  • 编程入门基础知识书本(编程基础知识入门书籍)2025-10-08 13:36:11
  • 字符串转码转换编码方式(字符串转码转换编码方式是什么)2025-10-08 13:36:11
  • raise三单(rise的单三形式怎么写)2025-10-08 13:36:11
  • rmsd公式(rms公式excel)2025-10-08 13:36:11
  • vs怎么用scanf函数(vs scanf_s)2025-10-08 13:36:11
  • 全屏图片