当前位置:网站首页>【深度学习中的激活函数的整理与使用总结】
【深度学习中的激活函数的整理与使用总结】
2022-08-03 13:15:00 【vcsir】
深度学习中的激活函数的整理与使用总结
介绍
激活函数定义如下:激活函数计算加权总和,然后对其添加偏差以决定是否应该激活神经元。激活函数的目标是将非线性引入神经元的输出。没有激活函数的神经网络基本上是深度学习中的线性回归网络模型,因为这些函数对神经网络的输入执行非线性计算,使其能够学习和执行更复杂的任务。因此,研究激活函数的导数和应用,以及分析每个激活函数的优缺点,对于选择在特定神经网络模型中可能具有非线性和准确性的适当类型的激活函数是至关重要的。
我们知道神经网络中的神经元是按照它们的权重、偏差和激活函数而工作的,根据输出误差去改变神经网络中神经元的权重和偏差。反向传播就是这个过程的术语,由于梯度与误差同时提供更新权重和偏差,因此激活函数支持反向传播。
为什么我们需要它?
非线性激活函数:如果没有激活函数,神经网络只是一个线性回归模型。激活函数以非线性方式转换输入,使其能够学习并完成更复杂的任务。
激活函数的种类
1)线性激活函数
• 方程:线性函数的方程是y = ax,与直线方程非常相似。
• -inf 到 +inf 范围
• 应用:线性激活函数仅在输出层使用一次。
• 问题:如果我们对线性函数进行微分以引入非线性,则结果将不再与输入“x”相关并且函数将变为常数,因此我们的程序将不会显示任何行为。
2)sigmoid激活函数:
• 这是一个以“S”形形式绘制的函数。
• 公式:A = 1/(1 + ex)
•非线性。X 的值范围从 -2 到 2,但 Y 值非常陡峭。这表明x 的微小变化将导致 Y 值的巨大变化。
• 0 到 1 的范围值
3)Tanh 激活函数:
Tanh 函数,也被称为正切双曲函数,是一种几乎总是比 sigmoid 函数效果更好的激活函数。它只是一个经过调整的 sigmoid 函数。两者都是相关的,可以相互推导出来。
• 方程:f(x) = tanh(x) = 2/(1 + e-2x) – 1 OR tanh(x) = 2 * sigmoid(2x) – 1 OR tanh(x) = 2 * sigmoid(2x) – 1
• 值范围:-1 到 +1
• 用途:通常用于神经网络的隐藏层,因为它的值从 -1 变为 1,导致隐藏层的平均值为 0 或非常接近它,这有助于通过使平均值接近 0 来帮助数据中心化,这使得学习下一层更加直接。
4)RELU激活函数。
这是最常用的激活方法,主要使用于神经网络的隐藏层。
• 公式:A(x) = max (0,x)。如果 x 为正,则返回 x;否则,它返回 0。
• 值范围:(inf, 0)
• 本质上是非线性的,这意味着简单的反向传播误差并且还具有激活多层神经元的 ReLU 函数。
• 应用:因为它包含较少的数学运算,ReLu 的计算成本低于 tanh 和 sigmoid,一次只有少数神经元处于活动状态,这使得网络稀疏且计算效率高。
简单地说,RELU 函数的学习速度比 sigmoid 和 Tanh 函数快得多。
5)Softmax 激活函数
softmax 函数是一种 sigmoid 函数,在处理分类问题时会派上用场。
• 本质上的非线性
• 用途:通常在处理多分类时使用。softmax函数将除以输出的总和,并将每个类的输出压缩在 0 和 1 之间。
• 输出:softmax 函数最好用在分类器的输出层,我们尝试使用概率来定义每个输入的类别。
选择正确的激活函数
如果不确定要使用的激活函数,只需选择 RELU,这是一种广泛的激活函数,目前在大多数情况下都使用。如果我们的输出层用于二分类识别/检测,那么 sigmoid 函数是一个正确的选择。
Python代码实现
import numpy as np
import matplotlib.pyplot as plt
#实现sigmoid函数
def sigmoid(x):
s=1/(1+np.exp(-x))
ds=s*(1-s)
return s,ds
if __name__ == '__main__':
x=np.arange(-5,5,0.01)
sigmoid(x)
fig, ax = plt.subplots(figsize=(9, 5))
ax.spines['left'].set_position('center')
ax.spines['right'].set_color('none')
ax.spines['top'].set_color('none')
ax.xaxis.set_ticks_position('bottom')
ax.yaxis.set_ticks_position('left')
ax.plot(x,sigmoid(x)[0], color='#ff0000', linewidth=3, label='sigmoid')
ax.plot(x,sigmoid(x)[1], color='#0000ff', linewidth=3, label='derivative')
ax.legend(loc="center right", frameon=False)
fig.show()
plt.pause(-1)
结论
在本文中,我主要整理并总结了深度学习中不同类型的激活函数供大家参考和学习,若有不正确的地方,还请大家指正,谢谢!
边栏推荐
猜你喜欢
Graphic animation and button animation of an animation basic component
PyTorch构建分类网络模型(Mnist数据集,全连接神经网络)
Nanoprobes FluoroNanogold 偶联物的特色和应用
[Blue Bridge Cup Trial Question 48] Scratch Dance Machine Game Children's Programming Scratch Blue Bridge Cup Trial Question Explanation
Sogou news - dataset
[OpenCV] Cascade classifier training model
TensorFlow离线安装包
Classes and objects (upper)
【OpenCV】 级联分类器训练模型
An animation based button animation combined with basic code
随机推荐
标题 node第一个服务器程序
优思学院|2022年获美质协ASQ和ILSSI奖项的《精益六西格玛的十条戒律》
8/2 训练日志(dp+思维+字典树)
The maximum number of sliding window
c语言结构体知识总结
[Microservice] Multi-level cache
保健用品行业B2B电子商务系统:供采交易全链路数字化,助推企业管理精细化
An基本工具介绍之选择线条工具(包教会)
OpenHarmony高校技术俱乐部计划发布
华云数据张华林:投身数字蓝海 绘就云上强国
飞桨开源社区季度报告来啦,你想知道的都在这里
使用百度EasyDL实现施工人员安全装备检测
IronOS, an open source system for portable soldering irons, supports a variety of portable DC, QC, PD powered soldering irons, and supports all standard functions of smart soldering irons
硬件业务收入下滑,为了赚钱,苹果暧昧对待流氓软件和增加广告了
An animation basic element movie clip effect
When Nodejs installation depends on cpnm, the install shows Error: Cannot find module 'fs/promises'
安全狗《云原生安全威胁分析报告》首次提出双检测模型
ITSM软件与工单系统的区别是什么?
An工具介绍之形状工具及渐变变形工具
可视化图表设计Cookbook