当前位置:网站首页>【深度学习中的激活函数的整理与使用总结】
【深度学习中的激活函数的整理与使用总结】
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)

结论
在本文中,我主要整理并总结了深度学习中不同类型的激活函数供大家参考和学习,若有不正确的地方,还请大家指正,谢谢!
边栏推荐
- PyTorch framework to train linear regression model (CPU and GPU environment)
- 8/2 训练日志(dp+思维+字典树)
- “芯片法案”通过后,美光承诺在美国扩产
- secureCRT连接开发板连接不上问题解决
- An introduction to 3D tools
- Hanyuan Hi-Tech G8032 standard ERPS ring network switch Gigabit 4 optical 10 electrical industrial Ethernet switch ring network + WEB management + SNMP VLAN planning
- scala安装包
- An introduction to basic tools for selecting line tools (package church)
- When Nodejs installation depends on cpnm, the install shows Error: Cannot find module 'fs/promises'
- 利用pgsql插件PostGIS 实现地理坐标系数据转换
猜你喜欢

An introduction to the width tool, deformation tool and lasso tool

HCIP第十五天笔记(企业网的三层架构、VLAN以及VLAN 的配置)

An基本工具介绍之选择线条工具(包教会)

短视频的头号玩家:抖音产品体验报告

如何合理安排一天,做到高效备考?

ECCV 2022|通往数据高效的Transformer目标检测器

OpenHarmony高校技术俱乐部计划发布

函数在结构体中的应用练习

HCIP-第十二天-MPLS+VNP

An animation based button animation combined with basic code
随机推荐
OpenCV perspective transform
Notepad++ install jsonview plugin
超大规模的产业实用语义分割数据集PSSL与预训练模型开源啦!
[Microservice] Multi-level cache
How to disable software from running in the background in Windows 11?How to prevent apps from running in the background in Windows 11
TiFlash 计算层概览
利用pgsql插件PostGIS 实现地理坐标系数据转换
Graphic animation and button animation of an animation basic component
短视频的头号玩家:抖音产品体验报告
Nanoprobes EnzMet - 酶金相相关介绍及应用
Heaps
ECCV 2022|通往数据高效的Transformer目标检测器
sessionStorage of BOM series
PyTorch框架训练线性回归模型(CPU与GPU环境)
PyTorch builds a classification network model (Mnist dataset, fully connected neural network)
【二叉树】统计最高分的节点数目
An introduction to the pen tool, pencil tool and brush tool
An工具介绍之骨骼工具
【OpenCV】 书本视图矫正 + 广告屏幕切换 透视变换图像处理
冷链行业商业供应链系统:实现全流程数字化协同,激活企业迸发市场活力