激活函数(Relu,sigmoid,Tanh,softmax)详解

这篇具有很好参考价值的文章主要介绍了激活函数(Relu,sigmoid,Tanh,softmax)详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1 激活函数的定义

2 激活函数在深度学习中的作用

3 选取合适的激活函数对于神经网络有什么样的重要意义

4 常用激活函数

4.1 Relu 激活函数

4.2 sigmoid 激活函数

4.3 Tanh激活函数

4.4 softmax 激活函数


1 激活函数的定义

激活函数(Activation Function),就是在人工神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端。

激活函数(Activation functions)对于人工神经网络模型去学习、理解非常复杂和非线性的函数来说具有十分重要的作用。它们将非线性特性引入到我们的网络中。

softmax函数图像,深度学习,人工智能

 

2 激活函数在深度学习中的作用

如果不用激励函数(其实相当于激励函数是f(x) = x),在这种情况下你每一层节点的输入都是上层输出的线性函数,很容易验证,无论你神经网络有多少层,输出都是输入的线性组合,与没有隐藏层效果相当,这种情况就是最原始的感知机(Perceptron)了,那么网络的逼近能力就相当有限。正因为上面的原因,我们决定引入非线性函数作为激励函数,这样深层神经网络表达能力就更加强大(不再是输入的线性组合,而是几乎可以逼近任意函数)。

激活函数有非线性,可微性,单调性,输出值的范围等性质。

3 选取合适的激活函数对于神经网络有什么样的重要意义

 层数比较多的神经网络模型在训练的时候会出现梯度消失(gradient vanishing problem)和梯度爆炸(gradient exploding problem)问题。梯度消失问题和梯度爆炸问题一般会随着网络层数的增加变得越来越明显。梯度消失会使网络训练不动,甚至使模型的学习停滞不前。梯度爆炸一般出现在深层网络和权值初始化值太大的情况下,梯度爆炸会引起网络不稳定,最好的结果是无法从训练数据中学习,而最坏的结果是出现无法再更新的NaN权重值。

        例如,一个网络含有三个隐藏层,梯度消失问题发生时,靠近输出层的hidden layer 3的权值更新相对正常,但是靠近输入层的hidden layer1的权值更新会变得很慢,导致靠近输入层的隐藏层权值几乎不变,仍接近于初始化的权值。这就导致hidden layer 1 相当于只是一个映射层,对所有的输入做了一个函数映射,这时此深度神经网络的学习就等价于只有后几层的隐藏层网络在学习。梯度爆炸的情况是:当初始的权值过大,靠近输入层的hidden layer 1的权值变化比靠近输出层的hidden layer 3的权值变化更快,就会引起梯度爆炸的问题。

        梯度消失和梯度爆炸问题都是因为网络太深,网络权值更新不稳定造成的,本质上是因为梯度反向传播中的连乘效应。对于更普遍的梯度消失问题,可以考虑一下三种方案解决:

1.    用ReLU等替代sigmoid函数。

2.    用Batch Normalization。

3.    LSTM的结构设计也可以改善RNN中的梯度消失问题。

4 常用激活函数

早期研究神经网络主要采用sigmoid函数或者tanh函数,输出有界,很容易充当下一层的输入。
近些年Relu函数及其改进型(如Leaky-ReLU、P-ReLU、R-ReLU等)在多层神经网络中应用比较多。下面我们来总结下这些激活函数:

4.1 Relu 激活函数

Relu函数表达式:

softmax函数图像,深度学习,人工智能

 

函数,及其导数图像:

自定义代码:文章来源地址https://www.toymoban.com/news/detail-795400.html

函数表达式:f(x) = 1/(1+e^-x)
函数特点:
优点:1.输出[0,1]之间;2.连续函数,方便求导。
缺点:1.容易产生梯度消失;2.输出不是以零为中心;3.大量运算时相当耗时(由于是幂函数)。

函数定义:
def sigmoid(x):
    y = 1/(1+np.exp(-x))
    return y

pytorch代码:

# ReLU函数在torch中如何实现
import torch
a = torch.linspace(-1,1,10)
b = torch.relu(a)
print(a)
print(b)

4.2 sigmoid 激活函数

函数表达式:

softmax函数图像,深度学习,人工智能

函数图像:

softmax函数图像,深度学习,人工智能

 函数导数图像:

 

自定义代码:

函数表达式:f(x) = 1/(1+e^-x)
函数特点:
优点:1.输出[0,1]之间;2.连续函数,方便求导。
缺点:1.容易产生梯度消失;2.输出不是以零为中心;3.大量运算时相当耗时(由于是幂函数)。

函数定义:
def sigmoid(x):
    y = 1/(1+np.exp(-x))
    return y

pytorch代码:

# sigmoid函数在torch中如何实现

import torch
# a从-100到100中任取10个数
a = torch.linspace(-100,100,10)
print(a)
# 或者F.sigmoid也可以 F是从from torch.nn import functional as F
b = torch.sigmoid(a)
print(b)

4.3 Tanh激活函数

函数表达式:

softmax函数图像,深度学习,人工智能

函数图像:

softmax函数图像,深度学习,人工智能

函数导数图像:

 

 自定义代码:

函数表达式:f(x) = (e^x-e^-x)/(e^x+e-x)
函数特点:
优点:1.输出[-1,1]之间;2.连续函数,方便求导;3.输出以零为中心。
缺点:1.容易产生梯度消失; 2.大量数据运算时相当耗时(由于是幂函数)。

函数定义:
def tanh(x):
    y = (np.exp(x) - np.exp(-x))/(np.exp(x) + np.exp(-x))
    return y

pytorch代码:

# tanh函数在torch中如何实现
import torch
a = torch.linspace(-10,10,10)
b = torch.tanh(a)
print(a)
print(b)

4.4 softmax 激活函数

函数表达式:

softmax函数图像,深度学习,人工智能

函数图像:

 函数导数图像:

自定义代码:

def softmax(x):
    if x.ndim == 2:
        x = x.T
        x = x - np.max(x, axis=0)
        y = np.exp(x) / np.sum(np.exp(x), axis=0)
        return y.T
    x = x - np.max(x) # 溢出操作
    return np.exp(x) / np.sum(np.exp(x))

到了这里,关于激活函数(Relu,sigmoid,Tanh,softmax)详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 机器学习-sigmoid函数和relu函数-个人解读

    今天博主来解读一下sigmoid函数和relu函数,我觉得很多同学可能都知道这两个函数是什么,他们干什么的,他们有什么用,但是呢?我想这两个常用的激活函数内在的本质,很多同学应该不是很理解,今天博主就给出自己的一些解读。 首先,我们先谈谈激活函数是什么: 激活

    2024年02月16日
    浏览(29)
  • [log_softmax]——深度学习中的一种激活函数

    [log_softmax]——深度学习中的一种激活函数 随着人工智能技术的发展,深度学习已经成为了众多领域的热点研究方向。在深度学习中,激活函数是非常重要的组成部分之一,而[log_softmax]就是其中的一种。本文将介绍什么是[log_softmax],以及它在深度学习中的应用。 首先,我们

    2024年02月13日
    浏览(38)
  • PyTorch学习笔记:nn.Tanh——Tanh激活函数

    功能:逐元素应用Tanh函数(双曲正切)对数据进行激活, 将元素调整到区间(-1,1)内 函数方程: Tanh ( x ) = tanh ( x ) = e x − e − x e x + e − x text{Tanh}(x)=text{tanh}(x)=frac{e^x-e^{-x}}{e^x+e^{-x}} Tanh ( x ) = tanh ( x ) = e x + e − x e x − e − x ​ 注意: 输入可以是任意尺寸的数据,输出尺寸

    2024年01月17日
    浏览(28)
  • 激活函数ReLU和SiLU的区别

    在这里,我就简单写一下两个激活函数的概念以及区别,详细的过程可以看看其他优秀的博主,他们写的已经非常好了,我就不必再啰嗦了。 ReLU (Rectified Linear Unit)和 SiLU (Sigmoid Linear Unit)都是常用的激活函数,它们的主要区别在于非线性形状不同。 概念: ReLU函数在 输

    2024年02月03日
    浏览(24)
  • Transformer模型-Feed Forward前馈网络和Relu激活函数的简明介绍

     今天介绍transformer模型的Feed Forward network前馈网络和Relu激活函数 位置感知Position-Wise前馈网络(FFN)由 两个全连接层 (fully connected dense layers,就是线性层(Linear Layer),或密集层(Dense Layer))组成,或者也可以称为多层感知机(MLP:multi-layer perceptron)。  参见: Transfor

    2024年04月13日
    浏览(23)
  • 深度学习:Sigmoid函数与Sigmoid层区别

    在深度学习和神经网络中,“Sigmoid” 是一个常见的术语,通常用来表示两个相关但不同的概念:Sigmoid激活函数和Sigmoid神经网络层。这两者在神经网络中的使用和功能有所不同。下面记录说明它们之间的区别。 功能 :Sigmoid激活函数是一种非线性函数,通常用于神经网络的隐

    2024年02月11日
    浏览(30)
  • YOLOv5改进系列(13)——更换激活函数之SiLU,ReLU,ELU,Hardswish,Mish,Softplus,AconC系列等

    【YOLOv5改进系列】前期回顾: YOLOv5改进系列(0)——重要性能指标与训练结果评价及分析 YOLOv5改进系列(1)——添加SE注意力机制

    2024年02月12日
    浏览(29)
  • torch.sigmoid()、torch.softmax()、sum

    torch.sigmoid()、torch.softmax()、sum 1、torch.sigmoid() 对每个元素进行处理(函数为 ) 举例: 2、torch.softmax() 公式: 二维情况下,dim=1时,对行进行计算 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GIDLbimg-1666254112726)(https://cdn.jsdelivr.net/gh/bean661/images@ma

    2024年02月16日
    浏览(25)
  • 三分钟认知Softmax和Sigmoid的详细区别

    Softmax以及Sigmoid这两者都是神经网络中的激活函数,对应还有其他的激活函数 引入激活函数是为了将其输入非线性化,使得神经网络可以逼近任何非线性函数 (原本没有引入激活函数,就是多个矩阵进行相乘,无论神经网络多少层都是线性组合,这个概念是感知机) Softmax以

    2023年04月09日
    浏览(19)
  • 三 动手学深度学习v2 —— Softmax回归+损失函数+图片分类数据集

    softmax回归 损失函数 1. softmax回归 回归vs分类: 回归估计一个连续值 分类预测一个离散类别 从回归到多类分类 回归 单连续数值输出 自然区间R 跟真实值的误差作为损失 分类 通常多个输出 输出i是预测为第i类的置信度 总结: 2. 损失函数 L2 loss 均方损失 l ( y , y ′ ) = 1 2 ( y −

    2024年02月14日
    浏览(24)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包