在 Keras 中训练多元回归模型时损失值非常大

Very large loss values when training multiple regression model in Keras

我试图建立一个多元回归模型来使用以下特征预测房价:

  [bedrooms  bathrooms  sqft_living  view  grade]
= [0.09375   0.266667     0.149582   0.0    0.6]

我已经使用 sklearn.preprocessing.MinMaxScaler.

对特征进行了标准化和缩放

我使用 Keras 构建模型:

def build_model(X_train):
    model = Sequential()
    model.add(Dense(5, activation = 'relu', input_shape = X_train.shape[1:]))
        model.add(Dense(1))

    optimizer = Adam(lr = 0.001)

    model.compile(loss = 'mean_squared_error', optimizer = optimizer)

    return model

当我去训练模型时,我的损失值高得离谱,大约 4 或 40 万亿,而且每个时期只会下降大约 100 万,这使得训练变得非常慢。起初我尝试提高学习率,但没有多大帮助。然后我做了一些搜索,发现其他人使用了 log-MSE 损失函数,所以我尝试了一下,我的模型似乎工作正常。 (从 140 损失开始,在 400 个时期后下降到 0.2)

我的问题是,当我看到 linear/multiple 回归问题的 MSE 值非常大时,我是否总是只使用 log-MSE?或者我可以做其他事情来尝试解决这个问题吗?

关于为什么会出现此问题的猜测是我的预测变量和响应变量之间的比例有很大不同。 X 介于 0-1 之间,而最高的 Y 达到了 800 万。 (我应该缩小我的 Y 吗?然后再放大以进行预测?)

很多人相信缩放一切。如果你的 y 增加到 800 万,我会缩放它,是的,稍后当你得到预测时反转缩放。

不要太担心具体看到的 loss 数字。当然,40 万亿有点高得离谱,表明可能需要对网络架构或参数进行更改。主要关注的是验证损失是否真的在减少,以及网络是否真的在学习。如果像您所说的那样 'went down to 0.2 after 400 epochs',那么听起来您的方向是正确的。

对于回归问题,除了log-mse、mse、mae之外,还有很多其他的损失函数。看看 these。希望对您有所帮助!