为啥 ReLU 用于神经网络的回归?
Posted
技术标签:
【中文标题】为啥 ReLU 用于神经网络的回归?【英文标题】:Why is ReLU used in regression with Neural Networks?为什么 ReLU 用于神经网络的回归? 【发布时间】:2018-12-28 18:15:49 【问题描述】:我正在关注官方的 TensorFlow with Keras 教程,但我卡在这里: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
【问题讨论】:
【参考方案1】:在隐藏层中使用非线性激活函数的一般原因是,如果没有它们,无论有多少层或每层有多少单元,网络的行为都会像简单的线性单元。 Andrew Ng 的这个短片很好地解释了这一点:Why do you need non-linear activation functions?
在您的情况下,仔细观察,您会发现 final 层的激活函数不是隐藏层中的 relu
,而是线性函数(即当您不指定任何内容时默认激活,例如此处):
keras.layers.Dense(1)
来自Keras docs:
密集
[...]
参数
[...]
activation:要使用的激活函数(参见activations)。如果您不指定任何内容,则不会应用任何激活(即“线性”激活:
a(x) = x
)。
这确实是具有单个连续输出的回归网络所期望的。
【讨论】:
感谢您抽出宝贵时间回答我的问题,这是一个很棒的视频!以上是关于为啥 ReLU 用于神经网络的回归?的主要内容,如果未能解决你的问题,请参考以下文章