卷积神经网络-激活函数

4. 激活函数的选择策略

  1. 默认选择 ReLU:
    • ReLU 是最常用的激活函数,适用于大多数卷积层和全连接层。
    • 如果没有特殊需求,可以优先选择 ReLU。
  2. 处理负输入值:
    • 如果网络需要处理负输入值,可以考虑使用 Leaky ReLU 或 PReLU。
  3. 缓解梯度消失问题:
    • 如果网络较深,梯度消失问题较为严重,可以尝试使用 ELU 或其他改进的激活函数。
  4. 二分类任务:
    • 在二分类任务的输出层,使用 Sigmoid 激活函数。
  5. 多分类任务:
    • 在多分类任务的输出层,使用 Softmax 激活函数。
  6. 实验验证:
    • 最终的激活函数选择应通过实验验证,根据具体任务的性能表现进行调整。

原文链接:https://zhuanlan.zhihu.com/p/508741909?utm_id=0、https://zhuanlan.zhihu.com/p/476373735?utm_id=0、https://blog.csdn.net/purple_love/article/details/134620930

https://www.zhihu.com/question/60650016/answer/2441796198?utm_id=0

1. 激活函数的作用

激活函数的主要作用是引入非线性,使得神经网络能够学习和模拟复杂的函数映射。如果没有非线性激活函数,无论网络有多少层,其本质仍然是线性模型,无法捕捉复杂的特征。

2. 激活函数的使用时机

在CNN中,激活函数通常用于以下位置:
  1. 卷积层(Convolutional Layer)之后:
    • 卷积层的作用是提取局部特征,激活函数则对这些特征进行非线性变换,增强特征的表达能力。
    • 例如:Conv2D -> ReLU 是最常见的组合。
  2. 全连接层(Fully Connected Layer)之后:
    • 全连接层用于将特征整合为最终的输出,激活函数在这里同样起到非线性变换的作用。
    • 例如:在分类任务中,最后一层通常使用Softmax激活函数。
  3. 池化层(Pooling Layer)之后:
    • 虽然池化层本身具有一定的非线性,但在某些情况下,池化层后也可以接激活函数,进一步增强特征的非线性表达。

卷积神经网络中的卷积和池化等操作得到的输出是线性的,激活函数可以把非线性因素引入到深层网络中,让深层网络更有意义。能够更好的映射特征去除数据中的冗余。没有激活函数的每层都相当于矩阵相乘。就算你叠加了若干层之后,无非还是个矩阵相乘罢了。如果不使用激活函数,则输出信号仅是一个简单的线性函数。线性函数一个一级多项式,线性方程的复杂度有限,从数据中学习复杂函数映射的能力很小。没有激活函数,神经网络将无法学习和模拟其他复杂类型的数据,例如图像、视频、音频、语音等。3.激活函数可以把当前特征空间通过一定的线性映射转换到另一个空间,让数据能够更好的被分类。

1.假若网络中全部是线性部件,那么线性的组合还是线性,与单独一个线性分类器无异。这样就做不到用非线性来逼近任意函数。2.使用非线性激活函数 ,以便使网络更加强大,增加它的能力,使它可以学习复杂的事物,复杂的表单数据,以及表示输入输出之间非线性的复杂的任意函数映射。使用非线性激活函数,能够从输入输出之间生成非线性映射。
 
在卷积神经网络中经常用到的激活函数有:sigmoid 激活函数、tanh 激活函数、ReLU 激活函数以及 Leaky ReLU 函数等。

sigmoid/tanh比较常见于全连接层,后者relu常见于卷积层。

sigmoid 函数公式如上式所示,函数图像如图 2.16 所示。该函数能够把变量映射到[0,1]区间,所以一般是用来处理二分类的问题。

Sigmoid 公式如下:

 

 

 2、Tanh 函数改善了 Sigmoid 函数变化过于平缓的问题,是将变量映射到[-1,1]区间,Tanh 计算公式如下:

 

 

 3、ReLU 函数的优点是收敛速度非常快。当输入值为负数时,梯度也变为 0,容易导致神经元坏死,所以需要用较小的学习率对网络进行训练。

因为 sigmoid 和 tanh 函数在反向传播中常常因为值过小而造成梯度消失,ReLU 函数能够避免这个问题,ReLU 是“修正线性单元”, ReLU 函数的表达式如下式所示:ReLU 激活函数公式如下:

函数如下图所示,从图中可以看出 ReLU 函数不是连续的,属于分段函数。当 x <0时, f(x)值为 0,当 x >0 时, f(x)等于 x ,因此不会出现梯度消失的情况。与 sigmoid、tanh 激活函数相比,ReLU 函数当输入小于 0 时梯度等于 0,这时神经元不会被激活,所以在某一段时间里只有部分神经元会被激活,在反向传播过程中收敛速度会更快。

 

 4、Leaky ReLU 是在 ReLU 的基础上改进的,虽然可以避免神经元坏死,但是增加了计算量和参数量。

因为 ReLU 函数当输入在 x 轴的负半轴时,会导致部分神经元失活。针对这个问题,研究人员又提出了改进函数—Leaky ReLU 激活函数。该函数的数学表达式如下式所示:

 Leaky ReLU 和 ReLU 函数相比,主要的变化是在 x 的负半轴值不再为 0,而是有一定斜率的直线,a 值一般设为 0.01,值不是固定的,是人为设置的超参数。函数的图像如下图所示。

 

posted @   yinghualeihenmei  阅读(265)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示