神经网络能否收敛至完全随机函数?训练停滞求解
任务可行性结论:这是无用功,任务本身不可行
你现在做的事情本质是让神经网络学习完全独立的输入和输出之间的映射——你的inputs_train和outputs_train是两组毫无关联的随机数,输入的任何变化都不会影响输出,神经网络根本找不到任何可学习的模式。
神经网络的核心是捕捉输入到输出的规律,当两者没有统计关联时,模型最终只能输出一个固定值(通常是训练集输出的均值),这是MSE损失下的最优解,之后损失就会彻底停滞,不可能有任何学习效果。
你的代码问题补充
除了任务本身的逻辑错误,代码里还有几个细节会让情况更糟:
- 过深的网络结构:10层隐藏层(
num_lay=10)很容易出现梯度消失,就算任务有可学习的模式,这么深的网络也可能无法更新参数,更别说现在任务本身就无意义。 - 未打乱训练数据:
shuffle=False让模型每次按固定顺序遍历数据,虽然这不是核心问题,但会让模型更难跳出局部最优(哪怕这个最优是无意义的均值)。 - 输出归一化:你对
outputs_train做了min-max归一化,但这无法创造输入和输出之间的关联,只是改变了损失的数值范围而已。
如果你想做和正态分布相关的有效任务
如果你的真实目标是让神经网络处理正态分布相关的任务,得重构任务逻辑:
- 让输出和输入存在关联:比如把输出改成输入的线性组合加正态噪声,像
outputs_train = np.sum(inputs_train, axis=1, keepdims=True) + np.random.randn(batch_size*10,1)*0.1,这样模型能学习到核心的映射规律,同时拟合噪声。 - 若目标是生成正态分布样本:应该用生成式模型(如GAN、VAE),而不是这种监督学习的方式——监督学习需要输入输出有对应关系,生成模型是直接学习分布本身。
内容的提问来源于stack exchange,提问作者Benny K
相关产品推荐
相关产品推荐

