为什么 ReLU 用于神经网络的回归?

Why is ReLU used in regression with Neural Networks?

我正在关注带有 Keras 的官方 TensorFlow 教程,但我被困在这里:Predict house prices: regression - Create the model

为什么将激活函数用于预测连续值的任务?

密码是:

def build_model():
    model = keras.Sequential([
        keras.layers.Dense(64, activation=tf.nn.relu, 
                   input_shape=(train_data.shape[1],)),
        keras.layers.Dense(64, activation=tf.nn.relu),
        keras.layers.Dense(1)
    ])

    optimizer = tf.train.RMSPropOptimizer(0.001)

    model.compile(loss='mse', optimizer=optimizer, metrics=['mae'])
    return model

hidden 层中使用非线性激活函数的一般原因是,如果没有它们,无论有多少层或每层有多少个单元,网络都会表现就像一个简单的线性单元。 Andrew Ng 在这段简短的视频中很好地解释了这一点:Why do you need non-linear activation functions?

在您的情况下,仔细观察,您会发现 final 层的激活函数不是隐藏层中的 relu,而是线性的(这是当你没有指定任何东西时的默认激活,就像这里一样):

keras.layers.Dense(1)

来自Keras docs

Dense

[...]

Arguments

[...]

activation: Activation function to use (see activations). If you don't specify anything, no activation is applied (ie. "linear" activation: a(x) = x).

这确实是具有单个连续输出的回归网络所期望的。