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

激活函数篇 02 —— 双曲正切函数tanh

本篇文章收录于专栏【机器学习】

以下是激活函数系列的相关的所有内容:

一文搞懂激活函数在神经网络中的关键作用

逻辑回归:Sigmoid函数在分类问题中的应用


tanh ⁡ ( x ) = e x − e − x e x + e − x \tanh(x)=\frac{e^x - e^{-x}}{e^x + e^{-x}} tanh(x)=ex+exexex

  • 定义域: ( − ∞ , + ∞ ) (-\infty,+\infty) (,+)
  • 值域: ( − 1 , 1 ) (-1,1) (1,1)
  • 对称性: 关于点 ( 0 , 0 ) (0,0) (0,0) 中心对称
  • 可导性: 处处可导

在这里插入图片描述

运用场景

  • 神经网络隐藏层: 引入非线性,使得模型能够学习复杂的特征。
  • 强化学习: 动作选择的概率计算。
  • 数据标准化: 将特征值映射到 ( − 1 , 1 ) (-1, 1) (1,1)区间,便于后续处理。

求导:
d d x tanh ⁡ ( x ) = d d x ( e x − e − x e x + e − x ) \frac{d}{dx} \tanh(x) = \frac{d}{dx} \left( \frac{e^x - e^{-x}}{e^x + e^{-x}} \right) dxdtanh(x)=dxd(ex+exexex)

d d x ( e x − e − x e x + e − x ) = ( e x + e − x ) ( e x + e − x ) − ( e x − e − x ) ( e x − e − x ) ( e x + e − x ) 2 \frac{d}{dx} \left( \frac{e^x - e^{-x}}{e^x + e^{-x}} \right) = \frac{(e^x + e^{-x})(e^x + e^{-x}) - (e^x - e^{-x})(e^x - e^{-x})}{(e^x + e^{-x})^2} dxd(ex+exexex)=(ex+ex)2(ex+ex)(ex+ex)(exex)(exex)

= ( e 2 x + 2 + e − 2 x ) − ( e 2 x − 2 + e − 2 x ) ( e x + e − x ) 2 = 4 ( e x + e − x ) 2 = \frac{(e^{2x} + 2 + e^{-2x}) - (e^{2x} - 2 + e^{-2x})}{(e^x + e^{-x})^2} = \frac{4}{(e^x + e^{-x})^2} =(ex+ex)2(e2x+2+e2x)(e2x2+e2x)=(ex+ex)24

∵ ( e x + e − x ) 2 = cosh ⁡ 2 ( x ) ; 4 cosh ⁡ 2 ( x ) = 4 ⋅ sech 2 ( x ) \because (e^x + e^{-x})^2 = \cosh^2(x); \frac{4}{\cosh^2(x)} = 4 \cdot \text{sech}^2(x) (ex+ex)2=cosh2(x)cosh2(x)4=4sech2(x)

∴ d d x tanh ⁡ ( x ) = 1 − tanh ⁡ 2 ( x ) \therefore \frac{d}{dx} \tanh(x) = 1 - \tanh^2(x) dxdtanh(x)=1tanh2(x)

函数特点

解决了 Sigmoid 函数的输出不以 0 为中心的问题。Sigmoid 函数的输出范围是 ( 0 , 1 ) (0,1) (0,1),而 Tanh 函数的输出范围是 ( − 1 , 1 ) (−1,1) (1,1),这使得 Tanh 函数的输出以 0 0 0 为中心。这一特性有助于梯度的稳定,因为梯度在正负方向上是对称的,从而避免了梯度更新时的不对称性。

尽管 Tanh 函数解决了输出不以 0 为中心的问题,但它仍然存在梯度消失和幂运算的问题。

梯度消失
梯度消失问题的根本原因是激活函数的导数在输入值较大或较小时接近于 0。对于 Tanh 函数,其导数为:
d d x tanh ⁡ ( x ) = 1 − tanh ⁡ 2 ( x ) \frac{d}{dx} \tanh(x) = 1 - \tanh^2(x) dxdtanh(x)=1tanh2(x)
当 x 的绝对值较大时, tanh ⁡ ( x ) \tanh(x) tanh(x) 接近于 1 或 -1,此时 tanh ⁡ ′ ( x ) \tanh' (x) tanh(x) 接近于 0。这导致在反向传播过程中,梯度值变得非常小,几乎无法对权重进行有效更新,从而减慢了训练速度甚至导致训练停滞。

可以使用relu、Leaky Relu、ELU等得以解决。

幂运算
Tanh 函数的计算涉及指数运算,这在某些情况下可能会导致计算效率较低,尤其是在处理大规模数据时。指数运算的计算成本较高,可能会影响模型的训练速度。

可以使用近似方法来计算 Tanh 函数,例如使用泰勒展开或其他近似公式,以减少计算成本。
或者使用更高效的激活函数:例如,ReLU 函数和 Leaky ReLU 函数的计算不涉及指数运算,计算效率更高。


http://www.kler.cn/a/537989.html

相关文章:

  • 502 Bad Gateway 错误详解:从表现推测原因,逐步排查直至解决
  • LeetCode 102. 二叉树的层序遍历题解
  • 2025年软件测试五大趋势:AI、API安全、云测试等前沿实践
  • idea整合deepseek实现AI辅助编程
  • NodeList 对象
  • JDK 21 模板字符串详解
  • Eclipse IDE 快捷键大全
  • 镭速大文件传输软件如何邀请他人上传文件
  • 树和二叉树_6
  • Java序列化与反序列化:原理、实践与陷阱
  • Swift语言的云计算
  • 混合专家模型(MoE)概述:智能计算的新范式
  • Redis --- 使用HyperLogLog实现UV(访客量)
  • B树详解及其C语言实现
  • java 读取sq3所有表数据到objectNode
  • 使用TensorFlow和Keras构建卷积神经网络:图像分类实战指南
  • Maven插件—代码规范格式化spotless-maven-plugin
  • 记录虚拟机安装银河麒麟V10系统中遇到的一些问题
  • 深度学习和机器学习的区别|自注意力机制和多头注意力机制的展示|售前面试题
  • 从长尾关键词到页面优化,打造完整的SEO策略
  • 泛微OA E-Cology /messager/users.data 信息泄漏漏洞
  • Java 一键将 Word 文档转为 PDF
  • Open3d Qt的环境配置
  • DeepSeek-R1 云环境搭建部署流程
  • Vue笔记(四)
  • neo4j-解决导入数据后出现:Database ‘xxxx‘ is unavailable. Run :sysinfo for more info.