神经网络 - 激活函数(Sigmoid 型函数)

激活函数在神经元中非常重要的。为了增强网络的表示能力和学习能力,激活函数需要具备以下几点性质:

(1) 连续并可导(允许少数点上不可导)的非线性函数。可导的激活函数可以直接利用数值优化的方法来学习网络参数.

(2) 激活函数及其导函数要尽可能的简单,有利于提高网络计算效率。

(3) 激活函数的导函数的值域要在一个合适的区间内,不能太大也不能太 小,否则会影响训练的效率和稳定性。

本文介绍在神经网络中常用的激活函数之一:Sigmoid 型函数

一、Sigmoid 型函数

Sigmoid 型函数是指一类 S 型曲线函数,为两端饱和函数(关于饱和函数的概念。上一博文有介绍)。常用的 Sigmoid 型函数有 Logistic 函数Tanh 函数

对于函数 𝑓(𝑥),若 𝑥 → −∞ 时,其导数 𝑓′(𝑥) → 0,则称其为左饱和。

若 𝑥 → +∞ 时,其导数 𝑓′(𝑥) → 0,则称其为右饱和.当同时满足左、右饱和时,就称为两端饱和。

二、Logistic 函数

1、定义

2、特性说明

(1)Logistic 函数可以看成是一个“挤压”函数,把一个实数域的输入“挤压”到 (0, 1)

(2)当输入值在 0 附近时,Sigmoid 型函数近似为线性函数

(3)当输入值靠近两端 时,对输入进行抑制

(4)输入越小,越接近于 0; 输入越大,越接近于 1

和感知器使用的阶跃激活函数相比,Logistic 函数是连续可导的, 其数学性质更好。

因此装备了 Logistic 激活函数的神经元,具有以下 两点性质:

(1)其输出直接可以看作概率分布,使得神经网络可以更好地和统计 学习模型进行结合

(2)其可以看作一个软性门(Soft Gate),用来控制其他神经 元输出信息的数量

3、梯度与训练

Logistic函数的导数具有一个简单的形式:

σ′(z)=σ(z)(1−σ(z)).

这种形式在梯度下降算法中非常有用,因为它使得反向传播中梯度计算简单且高效。同时,当 zzz 处于极端值(很大或很小)时,导数趋近于0,这也会引起梯度消失问题,这一点在设计神经网络时需要注意。

Logistic函数,除了用于神经网络激活函数,还可以用于逻辑回归(这个在Logistic回归的博文中有介绍)

三、Tanh 函数 

Tanh 函数,即双曲正切函数,其数学表达式为

它将任意实数 x 映射到区间 (−1,1)。下面详细说明其性质和理解方式:

1. 基本性质

  • 输出范围
    tanh⁡(x) 的输出在 −1 到 1 之间。当 x 越大时,tanh⁡(x) 趋近于 1;当 xx 越小(即负数绝对值越大)时,tanh⁡(x) 趋近于 −1。

  • 对称性
    tanh⁡(x) 是一个奇函数(关于远点对称),即 tanh⁡(−x)=−tanh⁡(x),这意味着它关于原点对称。

  • 平滑性
    tanh⁡(x) 是连续且可微的,导数为

    这使得它在神经网络中作为激活函数时,能够提供平滑的梯度,有助于梯度传播。

2. 与其他激活函数的比较

  • Logistic 函数

         tanh(𝑥) = 2𝜎(2𝑥) − 1.(从这里可以看出两者之间的转化)

        tanh 函数可以看作放大并平移的 Logistic 函数,其值域是 (−1, 1).

        Tanh 函数的输出是零中心化的(Zero-Centered),而 Logistic 函数的输出恒大于 0。非零中心化的输出会使得其后一层的神经元的输入发生偏置偏移(Bias Shift),并进一步使得梯度下降的收敛速度变慢。Logistic 函数和 Tanh 函数的形状如下图:

  • 非线性特性
    两者都具有 S 型(sigmoidal)曲线,但由于输出范围不同,tanh⁡(x) 在处理数据时往往能更好地平衡正负信息。

3. 如何理解“附近”及应用

  • 直观理解
    当 x 较小(接近 0)时,tanh⁡(0)=0 且近似于线性函数,因为其导数 1 - tanh^2(0)=1;当 x 较大或较小时,函数逐渐饱和,输出接近 1 或 −1,说明输入的极端值不会导致输出剧烈变化。这种“饱和性”特性在神经网络中既有利于稳定输出,也可能引发梯度消失问题。

  • 实际应用
    在神经网络中,tanh⁡(x)  常作为隐藏层的激活函数,帮助模型引入非线性。由于它的输出是零中心化的,能在一定程度上帮助缓解梯度下降过程中梯度偏移的问题。

4. 举例说明

例子:在神经网络中的应用

这种激活机制帮助神经网络引入非线性特征,使得多个神经元层的组合能够逼近复杂函数。

四、Hard-Logistic 函数

1、Hard-Logistic 函数定义

以 Logistic 函数 𝜎(𝑥) 为例,其导数为 𝜎′(𝑥) = 𝜎(𝑥)(1 − 𝜎(𝑥)).

Logistic 函数在 0 附近的一阶泰勒展开(Taylor expansion)为:

这样 Logistic 函数可以用分段函数 hard-logistic(𝑥) 来近似:

亦即:

2、Hard-Logistic 函数的形状:

 3、如何理解:

五、Hard-Tanh 函数

1、Hard-Tanh 函数定义

tanh 函数在 0 附近的一阶泰勒展开为:

这样 Tanh 函数也可以用分段函数 hard-tanh(𝑥) 来近似:

亦即:

2、Hard-Tanh 函数的形状:

 3、如何理解:

六、“hard”激活函数的应用场景和优势

  • 计算效率
    “Hard”激活函数由于只涉及简单的加减和比较运算,相比于传统的 Sigmoid 或 Tanh,可以大幅减少计算量,适合于对计算资源要求较高的场景(如移动设备、嵌入式系统)。
  • 简单性
    它们的数学表达和梯度形式非常简单,这在理论分析和工程实现中都具有优势。
  • 应用实例
    在一些深度学习网络或强化学习模型中,为了加速训练和推理,可以选择使用 Hard-Tanh 或 Hard-Logistic 作为激活函数,从而在保持性能的同时提升效率。

      总体来说,Hard-Logistic 和 Hard-Tanh 都是为了在某些场景下(如资源受限的环境或需要快速推理的应用中)替代传统平滑激活函数而设计的简化版本,虽然它们牺牲了一定的精细度,但换来了计算上的加速和实现上的简单。

七、附加:tanh(𝑥) = 2𝜎(2𝑥) − 1的推导过程

我们来学习一下双曲正切函数(tanh)和Logistic函数(σ)的推导关系,以加深大家对两个函数的理解和认识。

1. 推导过程

步骤 1:调整Logistic函数的输入和输出范围

Logistic函数的输出范围为 (0,1),而tanh的输出范围为 (−1,1)。需对Logistic函数进行线性变换:

目标形式:tanh⁡(x)=A⋅σ(Bx)+C,

其中 A、B、C 为待定系数。

步骤 2:确定参数 B(缩放输入)

将Logistic函数的输入缩放为 2x,即:

这样做的目的是使Logistic函数的斜率更陡峭,与tanh的形状更接近。

步骤 3:确定参数 A 和 C(调整输出范围)

将 σ(2x) 的输入调整后,进一步通过线性变换将其输出从 (0,1) 映射到 (−1,1):

步骤 4:代数化简

将等式右侧通分:

步骤 5:与tanh的表达式对比

2.关键推导总结

  • 输入缩放:通过将输入 x 放大为 2x,使得Logistic函数 σ(2x) 的斜率与tanh匹配。

  • 输出调整:通过线性变换 2σ(2x)−1,将输出范围从 (0,1)映射到 (−1,1)。

  • 代数恒等式:化简后与tanh的定义式完全一致。

 3.直观理解

  • 几何意义
    tanh是中心对称的S型曲线(关于原点对称),而Logistic函数是右移的S型曲线。通过缩放输入(2x)和调整输出(2σ−1),Logistic函数被“拉伸”并“平移”为tanh。

  • 参数作用

    • B=2:使Logistic函数的斜率加倍,与tanh的陡峭度一致。

    • A=2 和 C=−1:将输出范围从 (0,1)(0,1) 线性映射到 (−1,1)(−1,1)。

通过缩放Logistic函数的输入(2x)和调整输出(2σ−1),可以精确得到双曲正切函数 tanh⁡(x)。这一关系在神经网络中常用于激活函数的转换,尤其在需要中心化输出时(如循环神经网络)。

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

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

相关文章

供应链管理系统--升鲜宝门店收银系统功能解析,登录、主界面、会员 UI 设计图(一)

供应链管理系统--升鲜宝门店收银系统功能解析,登录、主界面 会员 UI 设计图(一)

从零开始的网站搭建(以照片/文本/视频信息通信网站为例)

本文面向已经有一些编程基础(会至少一门编程语言,比如python),但是没有搭建过web应用的人群,会写得尽量细致。重点介绍流程和部署云端的步骤,具体javascript代码怎么写之类的,这里不会涉及。 搭…

三轴加速度推算姿态角的方法,理论分析和MATLAB例程

三轴加速度推算三轴姿态的方法与MATLAB代码实现 文章目录 基本原理与方法概述静态姿态解算(仅俯仰角与横滚角)扩展(融合陀螺仪与加速度计)MATLAB代码 例程四元数动态姿态解算(融合加速度与陀螺仪)注意事项与扩展基本原理与方法概述 三轴加速度计通过测量重力分量在载体坐…

2025最新Flask学习笔记(对照Django做解析)

前言:如果还没学Django的同学,可以看Django 教程 | 菜鸟教程,也可以忽略下文所提及的Django内容;另外,由于我们接手的项目大多都是前后端分离的项目,所以本文会跳过对模板的介绍,感兴趣的朋友可…

HTML第二节

一.列表 1.列表的简介 2.无序列表 注:1.ul里面只能放li,不能放标题和段落标签 2.li里面可以放标题和段落等内容 3.有序列表 4.定义列表 注:要实现上图的效果需要CSS 二.表格 1.表格介绍 注:1.th有额外的效果,可以…

SpringBoot——生成Excel文件

在Springboot以及其他的一些项目中&#xff0c;或许我们可能需要将数据查询出来进行生成Excel文件进行数据的展示&#xff0c;或者用于进行邮箱发送进行附件添加 依赖引入 此处demo使用maven依赖进行使用 <dependency><groupId>org.apache.poi</groupId>&…

【Akashic Records】《命若琴弦》

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: Akashic Records 文章目录 &#x1f4af;观后感命运的无情与生命的坚持希望的火种与人生的意义虚无与活在当下生死的辩证与享受当下结语 &#x1f4af;观后感 命若琴弦 生命的意义本不在向外的寻取&#xff0c;而在…

C#调用CANoeCLRAdapter.dll文章(一)

一、引言 CANoe 是 Vector 公司开发的一款广泛应用于汽车电子开发、测试和分析的工具。CANoe CLR Adapter 允许开发者使用 C# 等.NET 语言来扩展 CANoe 的功能&#xff0c;实现更灵活、强大的自动化测试和数据处理。本指南将详细介绍如何基于 C# 进行 CANoe CLR Adapter 的开发…

运维和AI的邂逅: 让你的 ssh/terminal 智能化

运维同学很多工作其实就是在命令行里操作服务器&#xff0c;尽管目前有很多可视化的工具&#xff0c;但是命令行(ssh 登录)依然不可或缺&#xff0c;甚至依然还占据着主要工作。这意味着运维同学需要掌握大量和服务器操作系统以及shell相关的知识&#xff0c;记住大量的命令。 …

CMake小结2(PICO为例)

1 前言 之前写过一篇cmake&#xff0c;不过很简单&#xff1a;CMake小结_cmake ${sources}-CSDN博客 构建系统现在真的太多了&#xff0c;完全学不过来的感觉&#xff0c;meson&#xff0c;gardle&#xff0c;buildroot&#xff0c; Maven。。。我是真的有点放弃治疗了。之前…

使用OpenCV实现帧间变化检测:基于轮廓的动态区域标注

在计算机视觉中&#xff0c;帧间差异检测&#xff08;frame differencing&#xff09;是一种常用的技术&#xff0c;用于检测视频流中的动态变化区域。这种方法尤其适用于监控、运动分析、目标追踪等场景。在这篇博客中&#xff0c;我们将通过分析一个基于OpenCV的简单帧间差异…

机器学习01

机器学习的基本过程如下&#xff1a; 1.数据获取 2.数据划分 3.特征提取 4.模型选择与训练 5.模型评估 6.模型调优 一、特征工程&#xff08;重点&#xff09; 0. 特征工程步骤为&#xff1a; 特征提取(如果不是像dataframe那样的数据&#xff0c;要进行特征提取&#…

每日Attention学习24——Strip Convolution Block

模块出处 [TIP 21] [link] CoANet: Connectivity Attention Network for Road Extraction From Satellite Imagery 模块名称 Strip Convolution Block (SCB) 模块作用 多方向条形特征提取 模块结构 模块特点 类PSP设计&#xff0c;采用四个并行分支提取不同维度的信息相比于…

用FileZilla Server 1.9.4给Windows Server 2025搭建FTP服务端

FileZilla Server 是一款免费的开源 FTP 和 FTPS 服务器软件&#xff0c;分为服务器版和客户端版。服务器版原本只支持Windows操作系统&#xff0c;比如笔者曾长期使用过0.9.60版&#xff0c;那时候就只支持Windows操作系统。当时我们生产环境对FTP稳定性要求较高&#xff0c;比…

es-head(es库-谷歌浏览器插件)

1.下载es-head插件压缩包&#xff0c;并解压缩 2.谷歌浏览器添加插件 3.使用

健康检查、k8s探针、Grails+Liquibase框架/health 404 Not Found排查及解决

概述 健康检查对于一个pod而言&#xff0c;其重要性不言而喻。 k8s通过探针来实现健康检查。 探针 k8s提供三种探针&#xff1a; 存活探针&#xff1a;livenessProbe就绪探针&#xff1a;readinessProbe启动探针&#xff1a;startupProbe 存活探针 存活探针决定何时重启…

5个GitHub热点开源项目!!

1.自托管 Moonlight 游戏串流服务&#xff1a;Sunshine 主语言&#xff1a;C&#xff0c;Star&#xff1a;14.4k&#xff0c;周增长&#xff1a;500 这是一个自托管的 Moonlight 游戏串流服务器端项目&#xff0c;支持所有 Moonlight 客户端。用户可以在自己电脑上搭建一个游戏…

【Linux C | 时间】localtime 的介绍、死机、死锁问题以及 localtime_r 函数的时区问题

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

122. 买卖股票的最佳时机 II 反向递推的方法

下面是将你提供的代码整理成一篇Markdown格式的博客内容&#xff1a; 股票买卖的最大利润 问题描述 给定一个整数数组 prices&#xff0c;其中 prices[i] 是股票在第 i 天的价格。你可以选择在某一天买入股票&#xff0c;并在之后的某一天卖出股票。要求计算出你能够获得的最…

详解Tomcat下载安装以及IDEA配置Tomcat(2023最新)

目录 步骤一&#xff1a;首先确认自己是否已经安装JDK步骤二&#xff1a;下载安装Tomcat步骤三&#xff1a;Tomcat配置环境变量步骤四&#xff1a;验证Tomcat配置是否成功步骤五&#xff1a;为IDEA配置Tomcat 步骤一&#xff1a;首先确认自己是否已经安装JDK jdk各版本通用安…