如果我不将输入数据居中,为什么我的线性回归模型会失败?

Why does my linear regression model fail if I don't center input data?

我有简单的线性回归模型,其中自变量是 (1970 年至今)。当我将输入数据集中在零附近(即从 x 中减去平均值)时,我的模型运行良好并且我得到了最佳拟合线。但是如果我不将数据居中,模型就会有无限损失:

model = tf.keras.models.Sequential([
    tf.keras.layers.Input(shape=(1,)),
    tf.keras.layers.Dense(1)
])

model.compile(
    tf.keras.optimizers.SGD(learning_rate=0.001, momentum=0.9),
    loss='mse'
)

model_history = model.fit(
    x, # If we change this to `x - x.mean()` then we no longer get nan\inf loss
    y,
    epochs=200
)
Epoch 1/200
6/6 [==============================] - 0s 1ms/step - loss: inf     
Epoch 2/200
6/6 [==============================] - 0s 1ms/step - loss: nan
Epoch 3/200
6/6 [==============================] - 0s 1ms/step - loss: nan
Epoch 4/200
6/6 [==============================] - 0s 1ms/step - loss: nan
.
.
.

我原以为模型会更慢或者可能不那么准确,但为什么它完全崩溃了?

编辑:this is what the data looks like

使用 ANN 进行回归有点棘手。你看到 nan 损失值是因为你的梯度爆炸了。那是因为 输出没有上限 。还有你为什么要使用动量?

你可以试试:

  • 降低学习率
  • 更改为 adam 优化器