You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让神经网络在训练时找到月份天数预测任务的最优解?

用神经网络实现月份到天数的映射:训练收敛问题解决方法

问题背景

我们有一个简单任务:输入从零开始的月份索引(0=1月,1=2月…11=12月),输出对应月份的天数(忽略闰年)。虽然用神经网络完成该任务属于大材小用,但教学场景下想验证神经网络能否收敛到最优解。

已知存在手动定制的精确解(代码如下),但实际训练时却无法收敛——无论增加参数/层数、归一化输入输出、调整损失函数,损失始终卡在0.25左右,输出近似为“每个月30.5天”。

手动定制的精确解代码

import torch
from torch import nn
from torch.nn import Sequential, Linear, ReLU

model = Sequential(
    Linear(1, 10),
    ReLU(),
    Linear(10, 5), 
    ReLU(),
    Linear(5, 1),    
)

state_dict = {
    '0.weight': [[1],[1],[1],[1],[1],[1],[1],[1],[1],[1]],
    '0.bias':   [ 0, -1, -2, -3, -4, -5, -7, -8, -9, -10],
    '2.weight': [
        [1, -2,  0,  0,  0,  0,  0,  0,  0,  0],
        [0,  0,  1, -2,  0,  0,  0,  0,  0,  0],
        [0,  0,  0,  0,  1, -2,  0,  0,  0,  0],
        [0,  0,  0,  0,  0,  0,  1, -2,  0,  0],
        [0,  0,  0,  0,  0,  0,  0,  0,  1, -2],
    ],
    '2.bias':   [0, 0, 0, 0, 0],
    '4.weight': [[-3, -1, -1, -1, -1]],
    '4.bias' :  [31]
}
model.load_state_dict({k:torch.tensor(v, dtype=torch.float32) for k,v in state_dict.items()})

inputs = torch.tensor([[0],[1],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11]], dtype=torch.float32)
with torch.no_grad():
    pred = model(inputs)
print(pred)

手动解输出结果

tensor([[31.],[28.],[31.],[30.],[31.],[30.],[31.],[31.],[30.],[31.],[30.],[31.]])

解决方案

以下是让训练高效收敛到最优解的具体方法:

  • 优化输入编码方式
    原始的连续数值输入(0-11)会引导神经网络学习线性关系,最终收敛到所有天数的均值(30.5)。改用独热编码,将每个月份索引转为12维二进制向量(例如0对应[1,0,...,0],1对应[0,1,...,0]),让每个月份成为独立特征,网络可直接学习输入与输出的一一映射。

  • 简化网络结构(适配独热编码)
    独热编码后任务本质是查表,使用单层线性层(Linear(12, 1))配合MSE损失即可完成拟合,无需复杂的深层网络。若坚持使用原始数值输入,可尝试加入周期性激活函数(如正弦/余弦编码)或门控激活函数(如GELU),增强网络捕捉非连续分段规则的能力。

  • 调整训练策略

    • 优化器选择:使用AdamW替代SGD,设置学习率为1e-3~1e-2,配合StepLR等学习率衰减策略,帮助网络跳出局部最优。
    • 增加训练轮次:由于均值解是强局部最优,需增加训练轮次(如10000轮以上),同时加入早停机制避免过拟合。
    • 损失函数调整:若MSE效果不佳,改用MAE损失,对异常值更鲁棒,引导网络聚焦于准确拟合每个月份的天数。
  • 优化参数初始化
    避免随机初始化导致网络陷入均值局部最优,可参考手动解的参数模式初始化部分层,或使用Xavier/Kaiming初始化,让初始参数更适合非线性拟合任务。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 05:18:27