当前位置: 首页 > backend >正文

【漫话机器学习系列】224.双曲正切激活函数(Hyperbolic Tangent Activation Function)

双曲正切激活函数(tanh)详解:更优于 Sigmoid 的选择?

在构建神经网络时,激活函数是非常关键的一环。本文将带大家深入了解一种常见但常被忽视的激活函数:双曲正切函数(Hyperbolic Tangent Function,简称 tanh)。通过图解和数学表达,我们来剖析它的性质及在实际中的应用。


一、什么是双曲正切函数(tanh)?

双曲正切函数(tanh) 是一种 S 形的激活函数,其数学表达形式为:

\phi(z) = \tanh(z) = \frac{\sinh(z)}{\cosh(z)} = \frac{e^z - e^{-z}}{e^z + e^{-z}}

它是通过双曲正弦(sinh)与双曲余弦(cosh)的比值得到的函数,图像如下所示:


二、tanh 与 sigmoid 有什么区别?

虽然 tanh 和 sigmoid 都是 S 型函数,但它们的输出范围不同:

函数输出范围是否中心化常见问题
sigmoid(0, 1)梯度消失问题严重
tanh(-1, 1)梯度问题缓解

为什么 tanh 更推荐?

从图中我们可以看出,tanh 函数的输出是以 0 为中心的对称区间 [-1, 1],相比 sigmoid 更接近“0 中心化”。这意味着,在使用 tanh 激活函数时,神经元的输出会更容易让下一层网络保持平衡的输入分布,从而加快收敛速度。

而 sigmoid 的输出全为正(0 到 1),可能导致后续层输出出现偏移,从而增加训练难度。


三、tanh 的图像分析

从图像中可以观察到:

  • 当输入 z → −∞ 时,输出趋近于 -1;

  • 当输入 z → +∞ 时,输出趋近于 +1;

  • 在 z = 0 时,输出正好为 0;

  • 整体是光滑、连续且可导的函数,适合用于反向传播计算。


四、tanh 的导数

tanh 函数的导数形式非常简单:

\frac{d}{dz}\tanh(z) = 1 - \tanh^2(z)

这是它相较于 sigmoid 的另一大优势,便于梯度的传播计算。


五、在深度学习中的应用场景

虽然 ReLU 类函数现在是主流,但 tanh 依然有其重要应用:

  1. 用于处理有负值输入的数据

  2. 适用于较浅层网络,或需要输出在 [-1, 1] 区间的模型

  3. 在 LSTM 等循环神经网络中依然广泛使用(如门控机制中就大量采用 tanh)。


六、总结

特性tanh
输出范围(-1, 1)
是否0中心化
是否可导
梯度问题相较 sigmoid 更缓和
应用领域循环神经网络(LSTM)、二分类模型等

小结:

tanh 是一个简单却非常强大的激活函数,虽然近年来被 ReLU 抢去了风头,但它仍在很多模型中扮演着关键角色。选择激活函数时,没有“放之四海皆准”的标准,重要的是根据你的问题和数据类型合理选择。

http://www.xdnf.cn/news/2287.html

相关文章:

  • 现在流行的linux面板管理工具
  • 三款实用工具推荐:图片无损放大+音乐格式转换+音视频格式转换!
  • TCGA 数据下载与生存分析 //todo
  • FreeRTOS事件标志组详解:高效的任务间通知机制
  • 结合五层网络结构讲一下用户在浏览器输入一个网址并按下回车后到底发生了什么?
  • 机器学习基础理论 - 频率派 vs 贝叶斯派
  • Java 中 ConcurrentHashMap 1.7 和 1.8 之间有哪些区别?
  • 什么是Lua模块?你会如何使用NGINX的Lua模块来定制请求处理流程?
  • Spring 学习笔记之 @Transactional 异常不回滚汇总
  • 【机器学习-线性回归-3】深入浅出:简单线性回归的概念、原理与实现
  • 【VMware】虚拟机如何扩展存储
  • LLM基础之源码一
  • asammdf 库的依赖项和安装指南
  • 【数据结构】优先级队列
  • 【人工智能之大模型】详述大模型中流水线并行(Pipeline Parallelism)的​GPipe推理框架?
  • 【树莓派 PICO 2 测评】ADC 水位监测系统
  • ZBrush2025.1.3 中文版【ZBrush2025版下载】附安装教程
  • tkinter中Listbox列表框常用的操作方法
  • 单片机-89C51部分:4、固件烧录
  • Pygame多人游戏开发:本地双人对战实战
  • C++篇——继承
  • 详解Adobe Photoshop 2024 下载与安装教程
  • Adruino:人机界面及接口技术
  • SSE协议
  • 飞帆:自定义控件平台
  • 【CF】Day44——Codeforces Round 908 (Div. 2) C + Codeforces Round 1020 (Div. 3) DE
  • PyQt6实例_消息工具_使用与完整代码分享
  • 网络安全于应用服务web中间件服务 默认配置文件的关联(配置漏洞)(完成)
  • 理解计算机系统_网络编程(3)
  • Python循环结构深度解析与高效应用实践