使用 ReLU 作为激活函数时如何确定目标值?

人工智能 神经网络 反向传播 雷路 均方误差
2021-11-18 07:07:28

考虑以下只有一个神经元的简单神经网络。

  • 输入是x1y2, 在哪里250<x<250250<y<250
  • 唯一神经元的权重是w1w1
  • 神经元的输出由下式给出o=σ(x1w1+x2w2+b), 在哪里σ是 ReLU 激活函数和b偏见。
  • 因此成本应该是(oy)2.

使用 sigmoid 激活函数时,每个点的目标通常是0或者1.

但是当激活函数是 ReLU 时,我有点困惑,因为它可以输出大于 1 的数字。

2个回答

正如您已经注意到的,ReLU 和 sigmoid 具有不同的属性(即范围)。我从未见过 ReLU 被用作输出层的激活函数(但有些人可能出于某种原因使用它,例如输出需要为正的回归任务)。ReLU 通常用作隐藏层的激活函数。但是,在您的情况下,您没有隐藏层。

当需要将神经网络的输出解释为概率时,sigmoid 函数用作输出层的激活函数,即介于01,假设 sigmoid 函数正是这样做的,即它将输入压缩到范围[0,1], IEsigmoid(x)=p[0,1]. 什么时候需要网络的输出是概率?例如,如果您决定使用交叉熵损失函数(相当于负对数似然),那么您的网络的输出应该是概率。例如,如果您需要解决二进制分类任务,那么将 sigmoid 作为输出层的激活函数和二进制交叉熵作为损失函数的组合可能就是您所需要的。

您还可能遇到超过 2 个类的分类问题(多类分类问题)。在这种情况下,您可能需要使用 softmax 作为网络的激活函数并结合交叉熵损失函数。

看到这个问题How to choose cross-entropy loss in TensorFlow? 在 Stack Overflow 上了解有关不同交叉熵函数的更多信息。

顺便说一句,一般情况下,目标不一定需要限制为 0 或 1。例如,如果您正在解决回归任务,您的目标可能只是任何数字。但是,在这种情况下,您可能需要另一个损失函数(通常是均方误差)。

你误解了一些东西。您正在将内层与输出层混合在一起。但是这个问题非常好。

首先,只有一层和一个神经元的神经网络是不存在的。只有一层不能给网络带来非线性。一个神经元网络意味着它是一个线性回归或逻辑回归,如果它通过一个 sigmoid 激活。

您必须像下面那样查看 NN。神经网络的输出是最后一层的输出。模型中有两种可能的情况。

  1. 分类模型:对于分类,人们通常使用softmax,它有多个输出,最大值总是低于1(它是一种概率分布)。

  2. 回归模型:回归模型具有连续输出,就像您在问题陈述中提到的输出一样。它只有一个输出通道。在回归模型中,您可以将输出作为先前层的线性组合(无需定义输出范围)。如果你确定你的预测总是积极的,你可以使用 ReLU。