神经网络 | 常见的激活函数

Hi,大家好,我是半亩花海。本文主要介绍神经网络中必要的激活函数的定义、分类、作用以及常见的激活函数的功能。


目录

一、激活函数定义

二、激活函数分类

三、常见的几种激活函数

1. Sigmoid 函数

(1)公式

(2)图像

(3)优点与不足

2. Tanh 函数

(1)公式

(2)图像

(3)优点与不足

3. ReLU 函数

(1)公式

(2)图像

(3)优点与不足

4. Softmax 函数

(1)公式

(2)图像

(3)特点与不足


一、激活函数定义

激活函数(Activation Function),就是在人工神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端,旨在帮助网络学习数据中的复杂模式。

激活函数是神经网络中的一种非线性变换,它定义在每个神经元上,将神经元输入信号转换为输出信号。在深度学习中,激活函数非常重要,因为它们使神经网络能够捕捉到非线性关系,从而能够更好地逼近复杂的函数或映射。

下图展示了一个神经元是如何输入激活函数以及如何得到该神经元最终的输出:


二、激活函数分类

激活函数可以分成两类——饱和激活函数非饱和激活函数

  • 饱和激活函数: Sigmoid、 Tanh...
  • 非饱和激活函数:  ReLU 、Leaky Relu  、ELU、PReLU、RReLU...

了解一下饱和

假设 h(x) 是一个激活函数。

  • 当我们的 n 趋近于正无穷,激活函数的导数趋近于 0,那么我们称之为右饱和

\lim_{n \to +\infty }h'(x)=0

  • 当我们的 n 趋近于负无穷,激活函数的导数趋近于 0,那么我们称之为左饱和

\lim_{n \to -\infty }h'(x)=0

当一个函数既满足左饱和又满足右饱和的时候我们就称之为饱和,典型的函数有 Sigmoid、Tanh 函数。

  • 反之,不满足以上条件的函数则称为非饱和激活函数。
    • Sigmoid 函数需要一个实值输入压缩至 [0,1] 的范围。
    • tanh 函数需要讲一个实值输入压缩至 [-1, 1] 的范围。

相对于饱和激活函数,使用非饱和激活函数优势在于两点:

  • 非饱和激活函数能解决深度神经网络(层数非常多)带来的梯度消失问题。
  • 使用非饱和激活函数能加快收敛速度。

三、常见的几种激活函数

在深度学习中,最常用的激活函数包括 Sigmoid函数、ReLU函数(Rectified Linear Unit)、Tanh 函数、Softmax 函数等。这些激活函数不同的特点和优缺点,应根据具体的问题选择合适的激活函数。

例如:Sigmoid 函数在输出处的值域为 [0,1],可以将输出解释为概率,因此常用于二分类问题;ReLU 函数在输入为负数时输出为 0,可以有效地解决梯度消失问题,因此广泛应用于卷积神经网络中。

1. Sigmoid 函数

(1)公式

Sigmoid 激活函数的数学表达式为:

f(x)=\frac{1}{1+e^{-x}}

导数表达式为:

f'(x)=\frac{e^{-x}}{(1+e^{-x})^{2}}=f(x)(1-f(x))

(2)图像

(3)优点与不足

Sigmoid 优点:

  • 值域为 [0, 1],非常适合作为模型的输出函数用于输出一个 (0,1) 范围内的概率值,可用于将预测概率作为输出的模型,比如用于表示二分类的类别或者用于表示置信度
  • Sigmoid 函数的输出范围是 0 到 1。由于输出值限定在 0 到 1,因此它对每个神经元的输出进行了归一化
  • 该函数是连续可导的(即可微),可以提供非常平滑的梯度值,防止模型训练过程中出现突变的梯度(即避免“跳跃”的输出值)。

Sigmoid 不足:

  • 从其导数的函数图像上可以看到,其导数的最大值只有 0.25,而且当 x 在 [-5, 5] 的范围外时其导数值就已经几乎接近于 0 了。这种情况会导致训练过程中神经元处于一种饱和状态,反向传播时其权重几乎得不到更新,从而使得模型变得难以训练,这种现象被称为梯度消失问题。
  • 输出不是以 0 为中心而是都大于 0 的(这会降低权重更新的效率),这样下一层的神经元会得到上一层输出的全正信号作为输入,所以 Sigmoid 激活函数不适合放在神经网络的前面层而一般是放在最后的输出层中使用。
  • 需要进行指数运算(计算机运行得较慢),计算量大及计算复杂度高,训练耗时;指数的越大其倒数就越小,容易产生梯度消失。

2. Tanh 函数

(1)公式

Tanh 激活函数的数学表达式为:

f(x)=\frac{e^{x}-e^{-x}}{e^{x}+e^{-x}}=\frac{2}{1+e^{-2x}}-1

导数表达式为:

f'(x)=\frac{4}{(e^{x}+e^{-x})^{2}}=1-[f(x)]^{2}

(2)图像

(3)优点与不足

Tanh 优点:

  • 在分类任务中,双曲正切函数(Tanh)逐渐取代 Sigmoid 函数作为标准的激活函数,其具有很多神经网络所钟爱的特征。它是完全可微分的,反对称,对称中心在原点
  • 输出是 S 型曲线,具备打破网络层与网络层之间的线性关系,可以把网络层输出非线形地映射到 (−1,1) 区间里。负输入将被强映射为负,而零输入被映射为接近零;Tanh 的输出间隔为 1 且值域是以 0 为中心的 [-1,1](可以解决 Sigmoid 激活函数输出不以 0 为中心的问题。)
  • 在一般的二元分类问题中,Tanh 函数一般用于隐藏层,而 Sigmoid 函数用于输出层,但这并不是固定的,需要根据特定问题进行调整。

Tanh 不足:

  • 当输入较大或较小时,输出几乎是平滑的并且梯度较小,这不利于权重更新。
  • Tanh 函数也需要进行指数运算,所以其也会存在计算复杂度高且计算量大的问题。
  • 当神经网络的层数增多的时候,由于在进行反向传播的时候,链式求导,多项相乘,函数进入饱和区(导数接近于零的地方)就会逐层传递,这种现象被称为梯度消失

3. ReLU 函数

(1)公式

ReLU 激活函数的数学表达式为:

f(x)=max(x, 0)=\left\{\begin{matrix}x,x\geq 0 & & \\ 0,x< 0 & & \end{matrix}\right.

导数表达式为:

f(x)=\left\{\begin{matrix}1,x\geq 0 & & \\ 0,x< 0 & & \end{matrix}\right.

(2)图像

(3)优点与不足

① ReLU 优点:

  • ReLU 函数在正输入时是线性的,收敛速度快,计算速度快,同时符合恒等性的特点。当输入为正时,由于导数是1,能够完整传递梯度,不存在梯度消失的问题(梯度饱和问题)。
  • 计算速度快。ReLU 函数中只存在线性关系且无论是函数还是其导数都不包含复杂的数学运算,因此它的计算速度比 Sigmoid 和 Tanh 更快。
  • 当输入大于0时,梯度为1,能够有效避免链式求导法则梯度相乘引起的梯度消失和梯度爆炸;计算成本低。
  • 它保留了 step 函数的生物学启发(只有输入超出阈值时神经元才激活),不过当输入为正的时候,导数不为零,从而允许基于梯度的学习(尽管在 x=0 的时候,导数是未定义的)。当输入为负值的时候,ReLU 的学习速度可能会变得很慢,甚至使神经元直接无效。因为此时输入小于零而梯度为零,从而其权重无法得到更新,在剩下的训练过程中会一直保持静默。

② ReLU 不足:

  • ReLU 的输入值为负的时候,输出始终为 0,其一阶导数也始终为 0,这样会导致神经元不能更新参数,也就是神经元不学习了,这种现象叫做“Dead Neuron”。为了解决 ReLU 函数这个缺点,在 ReLU 函数的负半区间引入一个泄露(Leaky)值,所以称为 Leaky ReLU 函数。
  • 与 Sigmoid 一样,其输出不是以 0 为中心的(ReLU 的输出为 0 或正数)。
  • ReLU 在小于 0 的时候梯度为零,导致了某些神经元永远被抑制,最终造成特征的学习不充分;这是典型的 Dead ReLU 问题,所以需要改进随机初始化,避免将过多的负数特征送入ReLU。

4. Softmax 函数

(1)公式

Softmax 激活函数的数学表达式为:

f(x)=\frac{e^{x_{i}}}{\sum_{i=0}^{n}e^{x_{i}}}

这里使用梯度无法求导,所以导函数图像是一个 y=0 的直线。

(2)图像

(3)特点与不足

① Softmax 特点:

  • 在零点不可微,负输入的梯度为零。这意味着对于该区域的激活,权重不会在反向传播期间更新,因此会产生永不激活的死亡神经元。
  • 将预测结果转化为非负数、预测结果概率之和等于1。
  • 经过使用指数形式的 Softmax 函数能够将差距大的数值距离拉的更大。在深度学习中通常使用反向传播求解梯度进而使用梯度下降进行参数更新的过程,而指数函数在求导的时候比较方便.

② Softmax 不足:

使用指数函数,当输出值非常大的话,计算得到的数值也会变的非常大,数值可能会溢出

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/458265.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux联网安装MySQL Server

yum安装 以下代码复制粘贴到控制台即可 yum list | grep mysql-server #查看可以下载的MySQLyum install -y mysql-server #安装MySQLmysql_secure_installation #引导安装 引导安装实例如下 systemctl enable mysqld 设置开机自动启动 systemctl sta…

Verilog刷题笔记19

题目&#xff1a; A common source of errors: How to avoid making latches When designing circuits, you must think first in terms of circuits: I want this logic gate I want a combinational blob of logic that has these inputs and produces these outputs I want…

VRRP配置

目录 网络拓扑图 配置要求 配置步骤 网络拓扑图 配置要求 按照图示配置 IP 地址和网关在 SW1&#xff0c;SW2&#xff0c;SW3 上创建 Vlan10 和 Vlan20&#xff0c;对应 IP 网段如图&#xff0c;交换机之间链路允许所有 VLAN 通过在 SW1 和 SW2 上配置 VRRP&#xff0c;要求…

【C语言】三子棋游戏实现代码

目录 1.三子棋代码功能介绍 2.三子棋游戏实现步骤 ①打印菜单栏 ②判断是否进入三子棋游戏 ③三子棋游戏基本函数实现 &#xff08;1&#xff09;清空&#xff08;初始化&#xff09;棋盘函数实现 &#xff08;2&#xff09;打印棋盘函数实现 &#xff08;3&#xff0…

Nacos(1)

Nacos注册中心 主要解决问题 假如微服务被调用较多&#xff0c;为了应对更高的并发&#xff0c;进行了多实例部署 此时&#xff0c;每个微服务的实例其IP或端口不同&#xff0c;问题来了&#xff1a; 这么多实例&#xff0c;如何知道每一个实例的地址&#xff1f;http请求要…

股票K线简介

股票K线&#xff08;K-Line&#xff09;是用于表示股票价格走势的图形&#xff0c;主要由四个关键价格点组成&#xff1a;开盘价、收盘价、最高价和最低价。K线图广泛应用于股票市场技术分析中&#xff0c;它提供了丰富的信息&#xff0c;帮助分析师和投资者理解市场的行情走势…

消息队列使用的四种场景介绍

一、简介 消息队列中间件是分布式系统中重要的组件&#xff0c;主要解决应用耦合&#xff0c;异步消息&#xff0c;流量削锋等问题。 实现高性能&#xff0c;高可用&#xff0c;可伸缩和最终一致性架构。 使用较多的消息队列有ActiveMQ&#xff0c;RabbitMQ&#xff0c;ZeroMQ…

go消息队列RabbitMQ - 订阅模式-fanout

1、发布订阅 订阅模式&#xff0c;消息被路由投递给多个队列&#xff0c;一个消息被多个消费者获取。 1&#xff09; 可以有多个消费者 2&#xff09; 每个消费者有自己的queue&#xff08;队列&#xff09; 3&#xff09; 每个队列都要绑定到Exchange&#xff08;交换机&…

龙测科技荣获2023年度技术生态构建奖

本月&#xff0c;由极客传媒举办的“有被Q到”2024 InfoQ 极客传媒合作伙伴年会顺利举办&#xff0c;龙测科技喜获2023年度技术生态构建奖。 InfoQ是首批将Node.js、HTML5、Docker等技术全面引入中国的技术媒体之一&#xff0c;秉承“扎根社区、服务社区、引领社区”的理念&…

2641. 二叉树的堂兄弟节点 II - 力扣(LeetCode)

题目描述 给你一棵二叉树的根 root &#xff0c;请你将每个节点的值替换成该节点的所有 堂兄弟节点值的和 。 如果两个节点在树中有相同的深度且它们的父节点不同&#xff0c;那么它们互为 堂兄弟 。 请你返回修改值之后&#xff0c;树的根 root 。 注意&#xff0c;一个节…

【RL】Bellman Equation (贝尔曼等式)

Lecture2: Bellman Equation State value 考虑grid-world的单步过程&#xff1a; S t → A t R t 1 , S t 1 S_t \xrightarrow[]{A_t} R_{t 1}, S_{t 1} St​At​ ​Rt1​,St1​ t t t, t 1 t 1 t1&#xff1a;时间戳 S t S_t St​&#xff1a;时间 t t t时所处的sta…

机器人工具箱学习(一)

一、机器人工具箱介绍 机器人工具箱是由来自昆士兰科技大学的教授Peter Corke开发的&#xff0c;被广泛用于机器人进行仿真&#xff08;主要是串联机器人&#xff09;。该工具箱支持机器人一些基本算法的功能&#xff0c;例如三维坐标中的方向表示&#xff0c;运动学、动力学模…