【深度学习中的激活函数的整理与使用总结】

介绍

激活函数定义如下:激活函数计算加权总和,然后对其添加偏差以决定是否应该激活神经元。激活函数的目标是将非线性引入神经元的输出。没有激活函数的神经网络基本上是深度学习中的线性回归网络模型,因为这些函数对神经网络的输入执行非线性计算,使其能够学习和执行更复杂的任务。因此,研究激活函数的导数和应用,以及分析每个激活函数的优缺点,对于选择在特定神经网络模型中可能具有非线性和准确性的适当类型的激活函数是至关重要的。
在这里插入图片描述
我们知道神经网络中的神经元是按照它们的权重、偏差和激活函数而工作的,根据输出误差去改变神经网络中神经元的权重和偏差。反向传播就是这个过程的术语,由于梯度与误差同时提供更新权重和偏差,因此激活函数支持反向传播。

为什么我们需要它?

非线性激活函数:如果没有激活函数,神经网络只是一个线性回归模型。激活函数以非线性方式转换输入,使其能够学习并完成更复杂的任务。

激活函数的种类

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)

在这里插入图片描述

结论

在本文中,我主要整理并总结了深度学习中不同类型的激活函数供大家参考和学习,若有不正确的地方,还请大家指正,谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
1. Transformer: 在生活,Transformer是指变压器,是一种将电能从一个电路传输到另一个电路的电气设备。在深度学习领域,Transformer是一种基于自注意力机制的神经网络模型,用于处理序列数据,如自然语言处理的文本数据。 2. Dropout: 在生活,Dropout是指某人或某物离开原本所在的位置或状态。在深度学习领域,Dropout是一种正则化技术,用于减少神经网络的过拟合现象。 3. Batch: 在生活,Batch是指一批次的物品或产品。在深度学习领域,Batch是指一批次的数据,用于训练神经网络模型。 4. Activation: 在生活,Activation是指激活,是指某物或某人被激活或启动。在深度学习领域,Activation是指激活函数,用于在神经网络引入非线性因素。 5. Gradient: 在生活,Gradient是指梯度,是指某物或某人的斜率或变化率。在深度学习领域,Gradient是指梯度下降算法,用于优化神经网络模型的参数。 6. Loss: 在生活,Loss是指损失,是指某物或某人的损失或损害。在深度学习领域,Loss是指损失函数,用于衡量神经网络模型的预测结果与真实结果之间的差距。 7. Epoch: 在生活,Epoch是指一个时代或一个历史时期。在深度学习领域,Epoch是指一次完整的训练周期,即所有训练数据都被用于训练神经网络模型一次。 8. Overfitting: 在生活,Overfitting是指某物或某人过度适应某种情况或环境。在深度学习领域,Overfitting是指神经网络模型过度适应训练数据,导致在测试数据上表现不佳。 9. Regularization: 在生活,Regularization是指规范化,是指某种规则或标准。在深度学习领域,Regularization是指正则化技术,用于减少神经网络模型的过拟合现象。 10. Backpropagation: 在生活,Backpropagation是指反向传播,是指某种信息或影响的反向传递。在深度学习领域,Backpropagation是指反向传播算法,用于计算神经网络模型每个参数的梯度。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

vcsir

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值