CNN 基本部件-常用激活函数

简介: CNN 基本部件-常用激活函数

我们在项目中可能实际上就常用relu作为卷积层和全连接层的激活函数,但是,其他激活函数的特性和relu激活函数的问题及优点在哪也是我们需要知道的。本文为学习笔记,主要参考魏秀参的《CNN卷积神经网络》这本书和网上部分资料,加以自己理解,然后写的文章。

背景知识

反向传播算法

一文搞懂反向传播

梯度消失与梯度爆炸

左边是生物神经元,右边是数学模型。

网络异常,图片无法展示
|


激活函数的作用

激活函数实现去线性化。神经元的结构的输出为所有输入的加权和,这导致神经网络是一个线性模型。如果将每一个神经元(也就是神经网络的节点)的输出通过一个非线性函数,那么整个神经网络的模型也就不再是线性的了,这个非线性函数就是激活函数。 常见的激活函数有:ReLU函数、sigmoid函数、tanh函数

七种常用激活函数

神经网络中常用的激活函数有七种:Sigmoid 型函数、 tanh(x) 型函数、修正线性单元(ReLU)、Leaky ReLu、参数化 ReLU、随机化 ReLU 和指数化线性单元(ELU)。

Sigmoid型函数

Sigmoid型函数也称Logistic函数:σ(x)=11+exp(−x)\sigma (x) = \frac{1}{1+exp(-x)}σ(x)=1+exp(x)1。函数形状和函数梯度图,如下图所示:

网络异常,图片无法展示
|


从上图可以看出,经过sigmoid型函数作用后,输出响应的值被压缩到 [0,1] 之间,而 0 对应了生物神经元的“抑制状态”,1 则恰好对应了“兴奋状态”。但对于Sigmoid 梯度函数两端大于 5(或小于 −5)的区域,这部分输出会被压缩到 1(或 0)。这样的处理会带来梯度的“饱和效应”(saturation effect),也就是梯度消失现象。所谓梯度消失现象,可以对照 Sigmoid型函数的梯度图观察,会发现大于 5(或小于 −5)部分的梯度接近 0,这会导致在误差反向传播过程中导数处于该区域的误差很难甚至无法传递至前层,进而导致整个网络无法正常训练。 另外,还有一个问题是,Sigmoid型函数值域的均值并非为 0 而是全为正,这样的结果实际上并不符合我们对神经网络内权重参数数值的期望(均值)应为0的设想。

tanh(x)型函数

tanh(x)型函数是在 Sigmoid 型函数基础上为解决均值问题提出的激活函数:

tanh(x)=2σ(2x)−1tanh(x) = 2\sigma(2x)-1tanh(x)=2σ(2x)1

函数形状如下图所示:

网络异常,图片无法展示
|


tanh 型函数又称作 双曲正切函数(hyperbolic tangent function),其函数范围是 (−1, +1),输出响应的均值为 y。但由于 tanh(x) 型函数仍基于Sigmoid型函数,使用 tanh(x) 型函数依然会发生 “梯度消失” 现象。

修正线性单元(ReLU)

ReLU是 Nair 和 Hinton 于 2010 年引入神经网络的,是截止目前为止深度卷积神经网络中最为常用的激活函数之一,其定义如下:

网络异常,图片无法展示
|


函数及函数梯度形状如下图所示:

网络异常,图片无法展示
|


与前两个激活函数相比:

  • ReLU 函数的梯度在x >= 0 时为 1,反之则为 0;对 x >= 0 部分完全消除了sigmoid型函数的梯度消失现象。
  • 计算复杂度上,ReLU 函数也相对前两者更简单。
  • 同时,实验中还发现 ReLU 函数有助于随机梯度下降方法收敛,收敛速度约快 6 倍左右。

但是,ReLU函数也有自身缺陷,即在 x < 0 时,梯度便为 0。换句话说,对于小于 0 的这部分卷积结果响应,它们一旦变为负值将再无法影响网络训练——这种现象被称作“死区"

Leaky ReLU

为缓解死区现象,研究者将 ReLU 函数中 x < 0 的部分调整为 f(x)=α⋅xf(x) = \alpha\cdot xf(x)=αx,其中 α\alphaα 为 0.01 或 0.001 数量级的较小正数,称其为 "Leaky ReLU":

x & if x>=0 \\ \alpha\cdot x & if x < 0 \end{matrix}\right.

可以发现原始 ReLU 函数实际上是 Leaky ReLU 函数的一个特例,即α=0\alpha=0α=0,但是实际项目中发现,由于 Leaky ReLU 中 α\alphaα 为超参数,合适的值较难设定且很敏感,所以 Leaky ReLU函数在实际使用中性能并不十分稳定

参数化 ReLU

参数化 ReLU 直接将 α\alphaα 也作为一个网络中可以学习的变量融入模型的整体训练过程。具体怎么做,可参考相关文献。万事具有两面性,参数化 ReLU 在带来更大自由度的同时,也增加了网络模型过拟合的风险,在实际使用中需要格外注意。

网络异常,图片无法展示
|


总结

  • 建议首先使用目前最常用的  ReLU 激活函数,但需注意模型参数初始化和学习率的设置;
  • 为了进一步提高模型精度,可尝试 Leaky ReLU、参数化 ReLU、随机化 ReLU 和 ELU。但四者之间实际性能优劣并无一致性结论,需具体问题具体对待

参考资料

  • 《魏秀参-CNN解析神经网络》


相关文章
|
7月前
|
机器学习/深度学习 存储 自然语言处理
一文带你了解【深度学习】中CNN、RNN、LSTM、DBN等神经网络(图文解释 包括各种激活函数)
一文带你了解【深度学习】中CNN、RNN、LSTM、DBN等神经网络(图文解释 包括各种激活函数)
291 0
|
机器学习/深度学习
深度学习入门基础CNN系列——池化(Pooling)和Sigmoid、ReLU激活函数
池化是使用某一位置的相邻输出的总体统计特征代替网络在该位置的输出,其好处是当输入数据做出少量平移时,经过池化函数后的大多数输出还能保持不变。比如:当识别一张图像是否是人脸时,我们需要知道人脸左边有一只眼睛,右边也有一只眼睛,而不需要知道眼睛的精确位置,这时候通过池化某一片区域的像素点来得到总体统计特征会显得很有用。由于池化之后特征图会变得更小,如果后面连接的是全连接层,能有效的减小神经元的个数,节省存储空间并提高计算效率。
480 1
深度学习入门基础CNN系列——池化(Pooling)和Sigmoid、ReLU激活函数
|
机器学习/深度学习 异构计算
AlexNet相比传统的CNN(比如LeNet)有哪些重要改动呢:Data Augmentation,Dropout,(3) ReLU激活函数
AlexNet相比传统的CNN(比如LeNet)有哪些重要改动呢:Data Augmentation,Dropout,(3) ReLU激活函数
233 0
AlexNet相比传统的CNN(比如LeNet)有哪些重要改动呢:Data Augmentation,Dropout,(3) ReLU激活函数
|
1月前
|
机器学习/深度学习 计算机视觉 网络架构
为什么卷积现在不火了:CNN研究热度降温的深层原因分析
纵观近年的顶会论文和研究热点,我们不得不承认一个现实:CNN相关的研究论文正在减少,曾经的"主角"似乎正逐渐淡出研究者的视野。
81 11
为什么卷积现在不火了:CNN研究热度降温的深层原因分析
|
12天前
|
机器学习/深度学习 人工智能 自然语言处理
深入理解深度学习中的卷积神经网络(CNN)##
在当今的人工智能领域,深度学习已成为推动技术革新的核心力量之一。其中,卷积神经网络(CNN)作为深度学习的一个重要分支,因其在图像和视频处理方面的卓越性能而备受关注。本文旨在深入探讨CNN的基本原理、结构及其在实际应用中的表现,为读者提供一个全面了解CNN的窗口。 ##
|
22天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络(CNN): 从理论到实践
本文将深入浅出地介绍卷积神经网络(CNN)的工作原理,并带领读者通过一个简单的图像分类项目,实现从理论到代码的转变。我们将探索CNN如何识别和处理图像数据,并通过实例展示如何训练一个有效的CNN模型。无论你是深度学习领域的新手还是希望扩展你的技术栈,这篇文章都将为你提供宝贵的知识和技能。
71 7
|
19天前
|
机器学习/深度学习 自然语言处理 算法
深入理解深度学习中的卷积神经网络(CNN)
深入理解深度学习中的卷积神经网络(CNN)
27 1
|
25天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
本文旨在通过深入浅出的方式,为读者揭示卷积神经网络(CNN)的神秘面纱,并展示其在图像识别领域的实际应用。我们将从CNN的基本概念出发,逐步深入到网络结构、工作原理以及训练过程,最后通过一个实际的代码示例,带领读者体验CNN的强大功能。无论你是深度学习的初学者,还是希望进一步了解CNN的专业人士,这篇文章都将为你提供有价值的信息和启发。
|
22天前
|
机器学习/深度学习 人工智能 自然语言处理
探索深度学习中的卷积神经网络(CNN)及其在现代应用中的革新
探索深度学习中的卷积神经网络(CNN)及其在现代应用中的革新
|
26天前
|
机器学习/深度学习 人工智能 网络架构
深入理解深度学习中的卷积神经网络(CNN)
深入理解深度学习中的卷积神经网络(CNN)
39 1

热门文章

最新文章