为什么回归的神经网络的输出层不需要激活函数?

人工智能 神经网络 张量流 激活函数 回归
2021-11-13 04:12:36

我对经过回归训练的神经网络输出层的激活函数有点困惑。在大多数教程中,输出层使用“sigmoid”将结果恢复到 0 到 1 之间的一个不错的数字。

但是在TensorFlow网站上的这个初学者示例中,输出层根本没有激活函数?这是允许的吗?结果不会是一个到处都是疯狂的数字吗?或者也许 TensorFlow 有一个隐藏的默认激活?

此代码来自您根据汽车马力预测每加仑英里数的示例。

// input layer
model.add(tf.layers.dense({inputShape: [1], units: 1}));

// hidden layer
model.add(tf.layers.dense({units: 50, activation: 'sigmoid'}));

// output layer - no activation needed ???
model.add(tf.layers.dense({units: 1}));
1个回答

在回归中,目标是逼近一个函数f:IR, 所以f(x)R. 换句话说,在回归中,您想学习一个函数,其输出可以是任意数字,因此不一定只是范围内的数字[0,1].

例如,当您想将其解释为概率时,您可以使用 sigmoid 作为神经网络输出层的激活函数。这通常在您使用二元 交叉熵损失函数时完成,即您正在解决二元分类问题(即输出可以是两个类/标签之一)。

默认情况下,tf.keras.layers.Dense不使用任何激活函数,这意味着您的神经网络的输出确实只是前一层输入的线性组合。这对于回归问题应该没问题。