You need to enable JavaScript to run this app. 如何让神经网络正确实现线性回归?sigmoid激活函数是否为失效原因?
优惠活动
大模型
产品
解决方案
定价
更多

如何让神经网络正确实现线性回归?sigmoid激活函数是否为失效原因?

问题解答

故障原因

你遇到的拟合失败问题确实是sigmoid激活函数导致的,核心有两点:

  • 输出层使用sigmoid:sigmoid的输出范围固定在*01之间*,你需要拟合的目标值最大可达3,即便训练阶段只用01的样本训练,推理时输入大于1的数值,输出也永远无法超过1,这就是你给出的预测图中蓝线到1后直接走平的根本原因。
  • 隐藏层sigmoid的梯度饱和问题:当神经元输入加权和的绝对值偏大时,sigmoid的导数会趋近于0,反向传播时出现梯度消失,参数几乎停止更新,所以你调整学习率和epoch数量也很难得到理想的拟合效果。

修复方案

激活函数替换

  1. 输出层直接移除激活函数(使用线性/恒等激活):回归任务的输出是无界连续值,不需要用sigmoid做范围压缩。
  2. 隐藏层替换为ReLU激活:公式为f(x) = max(0, x),正输入区间导数恒为1,不存在梯度饱和问题,适配回归任务的训练需求。

代码适配修改

你当前使用的evaluate函数是为手写数字分类任务设计的,逻辑是取输出层最大值的索引计算分类准确率,完全不适用回归任务,建议替换为计算MSE(均方误差)的逻辑,方便观测训练进度。

网络基于新输入的预测结果

蓝线代表网络的预测结果,绿线代表训练数据,网络预测所用输入为0到3之间间隔0.01的数值。

内容的提问来源于stack exchange,提问作者thebasqueinterdisciplinarian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.10 06:45:01