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

【机器学习】Sigmoid函数在深层神经网络中存在梯度消失问题,如何设计一种改进的Sigmoid激活函数,既能保持其概率预测优势,又能避免梯度消失?

为了解决 Sigmoid 函数在深层神经网络中的梯度消失问题,可以设计一种改进的 Sigmoid 激活函数,使其同时具备以下特性:

  1. 减缓梯度消失问题:避免在输入值远离零时梯度趋于零的问题。
  2. 保持概率预测能力:保留 Sigmoid 的单调性和输出范围 (0,1)(0, 1)(0,1),用于概率预测。
  3. 计算简单且高效:能够方便地应用于深度学习框架。

以下是一种改进设计:


改进思路

1. 增强梯度的动态范围

传统 Sigmoid 的梯度公式为:

\frac{\partial \sigma(x)}{\partial x} = \sigma(x) (1 - \sigma(x))

当 x 较大或较小时,σ(x) 接近 0 或 1,梯度趋于 0。这是梯度消失的根源。为了增强梯度的动态范围,可以调整函数的陡峭程度。

2. 保持概率性质

Sigmoid 函数输出在 (0, 1) 范围内,这一性质对于分类任务的概率预测至关重要。


 设计一种改进的 Sigmoid

公式定义

改进的激活函数,可以定义为:

\text{ImprovedSigmoid}(x) = \frac{1}{1 + e^{-\alpha x}} + \beta x

其中:

  • α > 1:通过调节 α 控制曲线的陡峭程度,增强梯度幅度。
  • β > 0:引入线性项 βx,避免输出饱和。

 特性分析

  1. 增强梯度

    • 线性项 βx 的引入保证了在输入绝对值较大时,输出仍具有一定的变化率,避免梯度完全趋于零。
    • 参数 α 增强函数在靠近原点附近的非线性程度。
  2. 输出范围

    • 基本 Sigmoid 的范围是 (0, 1),线性项的引入可能改变这一范围。但可以通过对 β 进行限制,使其保持接近概率的性质。
  3. 概率性质保留

    • 在 β 足够小的情况下,输出值仍接近 (0, 1),可用于概率预测。

 优点

  1. 减少梯度消失
    • 在线性项的辅助下,即使输入较大,梯度也不会完全消失。
  2. 简单易实现
    • 与传统 Sigmoid 类似,改进仅需简单调整,不增加显著计算复杂度。
  3. 增强模型学习能力
    • 在深层网络中改进梯度传递,提升模型对深层特征的捕获能力。

参数调节

  1. 参数 α
    • 一般设置为 1 < α < 5,增强非线性。
  2. 参数 β
    • 通常取 0 < β < 0.1,避免线性项过度影响。

与其他改进激活函数的对比

激活函数输出范围是否饱和梯度范围特点
Sigmoid(0, 1)概率预测,梯度消失问题严重
ImprovedSigmoid(0,1+β)缓解增强增加线性项,减缓梯度消失
ReLU[0,∞)恒大于零简单高效,但无法输出概率
Leaky ReLU[−∞,∞)恒大于零减少死亡神经元,但非概率性
Swish(−∞,∞)增强自适应梯度,训练更稳健

 代码实现

以下是改进 Sigmoid 函数的 Python 实现:

import numpy as np
import matplotlib.pyplot as plt

def improved_sigmoid(x, alpha=2.0, beta=0.1):
    return 1 / (1 + np.exp(-alpha * x)) + beta * x

# 绘制比较图
x = np.linspace(-10, 10, 100)
y_sigmoid = 1 / (1 + np.exp(-x))
y_improved = improved_sigmoid(x)

plt.figure(figsize=(8, 6))
plt.plot(x, y_sigmoid, label='Sigmoid', linestyle='--', color='blue')
plt.plot(x, y_improved, label='Improved Sigmoid', linestyle='-', color='red')
plt.axhline(0, color='black', linewidth=0.5, linestyle='--')
plt.axvline(0, color='black', linewidth=0.5, linestyle='--')
plt.title("Improved Sigmoid vs Sigmoid")
plt.legend()
plt.grid()
plt.show()


 总结

通过在 Sigmoid 中引入线性项或调整其陡峭程度,能够有效缓解梯度消失问题,同时保留其概率预测能力。这种改进适合用于深层网络,并可以根据具体任务灵活调节参数。


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

相关文章:

  • 基于频谱处理的音频分离方法
  • 高通---Camera调试流程及常见问题分析
  • scala的正则表达式
  • 命令模式 (Command Pattern)
  • 存储过程案例详解与应用示例
  • autogen-agentchat 0.4.0.dev8版本的安装
  • Linux 系统中常用的命令
  • scroll-view组件,在iOS设备上禁用橡皮筋回弹效果
  • VTK知识学习(16)- 基本数据结构之单元类型
  • React进阶面试题(四)
  • Unity中,Canva的三种渲染模式
  • 数字与字母互换python
  • golang 并发编程,每日一题
  • chrome使用问题记录
  • 【CSP CCF记录】202305-1第30次认证 重复局面
  • 服务器如何划分空间?
  • 【IC验证】systemverilog_函数和任务
  • 杨辉三角形-多语言
  • 气象数据下载服务平台(二)
  • 超文本协议之HTML(泷羽sec)
  • Mysql读写分离分库分表
  • MySQL中的幻读问题
  • Linx下自动化之路:JDK1.8 安装包一键安装脚本实现离线极速部署
  • 高校数字化运营平台解决方案:构建统一的服务大厅、业务平台、办公平台,助力打造智慧校园
  • alpaca 和 sharegpt微调数据格式区别
  • 「Mac畅玩鸿蒙与硬件41」UI互动应用篇18 - 多滑块联动控制器