激活函数介绍

简介: 激活函数介绍

前言


激活函数是向神经网络中引入非线性因素,通过激活函数神经网络就可以拟合各种曲线(提供网络的非线性建模能力,如果没有激活函数,那么该网络仅能够表达线性映射)。激活函数主要分为饱和激活函数(Saturated Neurons)和非饱和函数(One-sided Saturations)。Sigmoid和Tanh是饱和激活函数,而ReLU以及其变种为非饱和激活函数。非饱和激活函数主要有如下优势: 1、非饱和激活函数可以解决梯度消失问题。 2、非饱和激活函数可以加速收敛。


一、饱和激活函数


1-1、Sigmoid函数


公式


image.png


代码实现


import plotly.express as px
import numpy as np
# 语法:
# 格式: array = numpy.linspace(start, end, num=num_points)将在start和end之间生成一个统一的序列,共有num_points个元素。
# start -> Starting point (included) of the rangestart ->范围的起点(包括)
# end -> Endpoint (included) of the rangeend ->范围的端点(包括)
# num -> Total number of points in the sequencenum >序列中的总点数
# np.linspace用于在线性空间中以均匀步长生成数字序列,默认生成浮点数序列。
x=np.linspace(-10,10)
fig = px.line(x=x, y=1/(1+np.exp(-x)))
fig.show()


函数曲线


6efb88e0bf7f4b3b8afe5c331881479e.png

本质:可以将一个实数映射到(0,1)的区间,可以用来做二分类。

缺点


1、激活函数计算量大。

2、反向传播时,很容易就会出现梯度消失的情况,从而无法完成深层网络的训练。即:假设神经元输入Sigmoid的值特别大或者是特别小,对应的梯度约等于0,这样会导致参数无法得到有效的更新。


1-2、Tanh函数


公式


image.png

代码实现

import plotly.express as px
import numpy as np
x=np.linspace(-10,10)
fig = px.line(x=x, y=(np.exp(x)-np.exp(-x))/(np.exp(x)+np.exp(-x)))
fig.show()


函数曲线


e6f59a2df38e4c7d9ca089fa9adb7b2f.png


本质:tanh的使用优先是高于Sigmoid函数的。

缺点

1、与sigmoid类似,也存在梯度消失的问题,在饱和时会杀死梯度。

2、当输入较大或较小时,输出几乎是平滑的并且梯度较小,这不利于权重更新。


二、非饱和激活函数


2-1、ReLU函数


本质:当输入小于0时,梯度为0;当输入大于0时,梯度为1。即仅保留正元素并且丢弃掉所有负元素。

公式


image.png

代码实现

import plotly.express as px
import numpy as np
x=np.linspace(-10,10)
fig = px.line(x=x, y=np.array([0*item  if item<0 else item for item in x ]))
fig.show()

函数曲线


image.png


优点:Relu的提出就是为了解决梯度消失问题,相比于饱和激活函数,收敛速度会快很多,计算速度会快得多。


缺点:有时可能会忽略掉许多神经元,这是因为在输入为负的时候,Relu完全失效。


选择建议:在使用Relu的过程中,要小心设置学习率,否则会出现多个被忽略掉的神经元,如果无法避免,建议使用Leaky Relu激活函数。


2-2、Leaky Relu函数

公式

image.png

代码实现


import plotly.express as px
import numpy as np
x=np.linspace(-10,10)
fig = px.line(x=x, y=np.array([0.2*item  if item<0 else item for item in x ]))
fig.show()


函数曲线


e7147c4265e4400ea97cbdb7b2ff128f.png

优点:在一定程度上缓解了Relu的缺点。


2-3、ELU函数


公式


image.png

代码实现


import plotly.express as px
import numpy as np
x=np.linspace(-10,10)
fig = px.line(x=x, y=np.array([2.0*(np.exp(item)-1)  if item<0 else item for item in x ]))
fig.show()


函数曲线


8b98c7fe46ea454b95699c3564256779.png


优点:融合了sigmoid和ReLU,左侧具有软饱和性,右侧无饱和性。右侧线性部分使得ELU能够缓解梯度消失,而左侧软饱能够让ELU对输入变化或噪声更鲁棒。ELU的输出均值接近于零,所以收敛速度更快。

缺点:计算强度高,计算量较大。


参考文章:

详解激活函数(Sigmoid/Tanh/ReLU/Leaky ReLu等).

花书电子版.

机器学习(九):激活函数.

深度学习笔记:如何理解激活函数?(附常用激活函数).

激活函数 | 深度学习领域最常用的10个激活函数,详解数学原理及优缺点.


总结


平平无奇的一天。

相关文章
|
6月前
|
机器学习/深度学习 测试技术 Python
【激活函数】基础回顾:带你认识神经网络中常见的激活函数
【激活函数】基础回顾:带你认识神经网络中常见的激活函数
763 0
【激活函数】基础回顾:带你认识神经网络中常见的激活函数
|
1月前
|
机器学习/深度学习 编解码
深度学习笔记(三):神经网络之九种激活函数Sigmoid、tanh、ReLU、ReLU6、Leaky Relu、ELU、Swish、Mish、Softmax详解
本文介绍了九种常用的神经网络激活函数:Sigmoid、tanh、ReLU、ReLU6、Leaky ReLU、ELU、Swish、Mish和Softmax,包括它们的定义、图像、优缺点以及在深度学习中的应用和代码实现。
129 0
深度学习笔记(三):神经网络之九种激活函数Sigmoid、tanh、ReLU、ReLU6、Leaky Relu、ELU、Swish、Mish、Softmax详解
|
1月前
|
机器学习/深度学习 资源调度 自然语言处理
Softmax激活函数介绍
【10月更文挑战第2天】
83 0
|
1月前
|
机器学习/深度学习 数据可视化 算法
激活函数与神经网络------带你迅速了解sigmoid,tanh,ReLU等激活函数!!!
激活函数与神经网络------带你迅速了解sigmoid,tanh,ReLU等激活函数!!!
WK
|
2月前
|
机器学习/深度学习
在神经网络的反向传播中,Tanh和Sigmoid哪个更快
在神经网络反向传播中,Tanh与Sigmoid函数的速度差异并无定论,受网络结构、数据特性及参数设置影响。Sigmoid在远离零时易导致梯度消失,而Tanh因输出范围为(-1, 1)且以0为中心,能更好地缓解此问题,理论上训练速度更快。两者计算复杂度相近,现代硬件优化使这一差距不明显。实际应用中,Sigmoid常用于二分类输出层,Tanh则适用于隐藏层以加速收敛并减少权重更新偏向。随着深度学习发展,ReLU等新激活函数因高效性和轻度梯度消失问题成为主流选择。综合来看,Tanh可能比Sigmoid稍快,但需根据具体任务和网络结构选择。
WK
56 0
|
4月前
|
机器学习/深度学习
激活函数
【7月更文挑战第24天】激活函数
44 3
|
5月前
|
机器学习/深度学习 算法 Serverless
神经网络的激活函数(二)
本文介绍了神经网络中的激活函数,特别是tanh和ReLU。tanh函数将输入映射到(-1,1),以0为中心,加快了训练速度,但两侧导数为0可能导致梯度消失。ReLU函数在正区间的导数为1,解决了梯度消失问题,常用于隐藏层。softmax函数用于多分类,将输出转换为概率分布。文章还包含了代码示例,展示了这些函数的图形和导数。
|
6月前
|
机器学习/深度学习 人工智能 算法
神经网络中的神经元和激活函数介绍
神经网络中的神经元和激活函数介绍
106 0
|
机器学习/深度学习 TensorFlow 算法框架/工具
神经网络中的激活函数
神经网络中的激活函数
123 0
|
机器学习/深度学习 人工智能 自然语言处理
【Pytorch神经网络理论篇】 07 激活函数+Sigmoid+tanh+ReLU+Swish+Mish+GELU
对于分类任务来说,如果仅仅给出分类的结果,在某些场景下,提供的信息可能并不充足,这就会带来一定的局限。因此,我们建立分类模型,不仅应该能够进行分类,同时,也应该能够提供样本属于该类别的概率。这在现实中是非常实用的。例如,某人患病的概率,明天下雨概率等。因此,我们需要将z的值转换为概率值,逻辑回归使用sigmoid函数来实现转换。
655 0