当前位置:网站首页>【深度学习中的激活函数的整理与使用总结】
【深度学习中的激活函数的整理与使用总结】
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)
结论
在本文中,我主要整理并总结了深度学习中不同类型的激活函数供大家参考和学习,若有不正确的地方,还请大家指正,谢谢!
边栏推荐
- Insert or Merge
- 豪威集团发布新款5000万像素图像传感器OV50E
- 将移位距离和假设外推到非二值化问题
- PyTorch framework to train linear regression model (CPU and GPU environment)
- ECCV 2022 | AirDet: 无需微调的小样本目标检测方法
- Golang 字典 map
- An动画基础之元件的影片剪辑效果
- An动画基础之元件的图形动画与按钮动画
- [Blue Bridge Cup Trial Question 48] Scratch Dance Machine Game Children's Programming Scratch Blue Bridge Cup Trial Question Explanation
- PyTorch构建分类网络模型(Mnist数据集,全连接神经网络)
猜你喜欢
Nanoprobes 金纳米颗粒标记试剂丨1.4 nm Nanogold 标记试剂
鸿湖万联扬帆富设备开发板正式合入OpenHarmony主干
Jmeter use
How to disable software from running in the background in Windows 11?How to prevent apps from running in the background in Windows 11
IDEA的模板(Templates)
PyTorch框架训练线性回归模型(CPU与GPU环境)
An工具介绍之宽度工具、变形工具与套索工具
An introduction to 3D tools
Graphic animation and button animation of an animation basic component
HCIP第十五天笔记(企业网的三层架构、VLAN以及VLAN 的配置)
随机推荐
Golang arrays and slices
半导体制造业回流美国?宏碁创始人施振荣:违反垂直分工大趋势
保健用品行业B2B电子商务系统:供采交易全链路数字化,助推企业管理精细化
Basic principle of the bulk of the animation and shape the An animation tip point
c语言结构体知识总结
leetcode16最接近的三数之和 (排序+ 双指针)
OpenCV perspective transform
Heaps
Golang 结构体&方法
leetcode 448. Find All Numbers Disappeared in an Array 找到所有数组中消失的数字(简单)
【OpenCV】 书本视图矫正 + 广告屏幕切换 透视变换图像处理
利用pgsql插件PostGIS 实现地理坐标系数据转换
Golang channel channel
Jmeter use
[R] Use grafify for statistical plotting, ANOVA, intervention comparisons, and more!
鸿湖万联扬帆富设备开发板正式合入OpenHarmony主干
【OpenCV】 级联分类器训练模型
An animation optimization of traditional guide layer animation
[Practical skills] APP video tutorial for updating APP in CANFD, I2C, SPI and serial port mode of single-chip bootloader (2022-08-01)
Golang 字符串