【机器学习300问】65、为什么Sigmoid和Tanh激活函数会导致梯度消失?

2024-04-11 05:12

本文主要是介绍【机器学习300问】65、为什么Sigmoid和Tanh激活函数会导致梯度消失?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、梯度消失现象

        当神经网络的输入值较大或较小时,其导数(梯度)都会接近于0。在反向传播过程中,这些微小的梯度经过多层网络逐层传递时,会不断被乘以权重矩阵(权重通常小于1),进一步导致梯度值缩小,直至几乎消失。这种现象称为“梯度消失”,它会使深度神经网络的学习过程变得极其缓慢,甚至无法有效训练深层网络。

二、Sigmoid激活函数

        Sigmoid函数的公式为\sigma(x) = \frac{1}{1 + e^{-x}}。其输出范围是(0,1)形状呈“S”型,两端趋于平缓,中间部分斜率较大。当输入值x非常大或者非常小的时候,Sigmoid函数的导数接近于0。

  • 当x → -∞时,σ(x) → 0,σ'(x) → 0
  • 当x → ∞时,σ(x) → 1,σ'(x) → 0

        导致这一现象的原因在于Sigmoid函数的导数表达式为\sigma'(x) = \sigma(x)(1 - \sigma(x))。当\sigma(x)非常接近0或者1时,\sigma'(x)会迅速接近0,即梯度几乎消失。

三、Tanh激活函数

        Tanh函数的公式为\tanh(x) = \frac{e^{x} - e^{-x}}{e^{x} + e^{-x}}。取值在-1到1之间,图像形状类似拉伸的“S”形和Sigmoid函数很类似,其实Tanh函数相当于Sigmoid函数的平移tanh(x)=2sigmoid(2x)-1

  • 当x → -∞时,tanh(x) → -1,tanh'(x) → 0
  • 当x → ∞时,tanh(x) → 1,tanh'(x) → 0

        当输入值x的绝对值很大时,函数值也趋向于饱和(-1或1)。它的导数是\tanh'(x) = 1 - \tanh^2(x),当tanh(x)非常接近-1或1时,tanh'(x)会迅速趋近于0,即梯度几乎消失。

这篇关于【机器学习300问】65、为什么Sigmoid和Tanh激活函数会导致梯度消失?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/893161

相关文章

Python itertools中accumulate函数用法及使用运用详细讲解

《Pythonitertools中accumulate函数用法及使用运用详细讲解》:本文主要介绍Python的itertools库中的accumulate函数,该函数可以计算累积和或通过指定函数... 目录1.1前言:1.2定义:1.3衍生用法:1.3Leetcode的实际运用:总结 1.1前言:本文将详

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意

C#多线程编程中导致死锁的常见陷阱和避免方法

《C#多线程编程中导致死锁的常见陷阱和避免方法》在C#多线程编程中,死锁(Deadlock)是一种常见的、令人头疼的错误,死锁通常发生在多个线程试图获取多个资源的锁时,导致相互等待对方释放资源,最终形... 目录引言1. 什么是死锁?死锁的典型条件:2. 导致死锁的常见原因2.1 锁的顺序问题错误示例:不同

Java function函数式接口的使用方法与实例

《Javafunction函数式接口的使用方法与实例》:本文主要介绍Javafunction函数式接口的使用方法与实例,函数式接口如一支未完成的诗篇,用Lambda表达式作韵脚,将代码的机械美感... 目录引言-当代码遇见诗性一、函数式接口的生物学解构1.1 函数式接口的基因密码1.2 六大核心接口的形态学

Oracle的to_date()函数详解

《Oracle的to_date()函数详解》Oracle的to_date()函数用于日期格式转换,需要注意Oracle中不区分大小写的MM和mm格式代码,应使用mi代替分钟,此外,Oracle还支持毫... 目录oracle的to_date()函数一.在使用Oracle的to_date函数来做日期转换二.日

C++11的函数包装器std::function使用示例

《C++11的函数包装器std::function使用示例》C++11引入的std::function是最常用的函数包装器,它可以存储任何可调用对象并提供统一的调用接口,以下是关于函数包装器的详细讲解... 目录一、std::function 的基本用法1. 基本语法二、如何使用 std::function

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用