在最小二乘模型中,成本函数定义为作为输入函数的预测值与实际值之差的平方。
当我们进行逻辑回归时,我们将成本函数更改为对数函数,而不是将其定义为 sigmoid 函数(输出值)与实际输出之差的平方。
是否可以更改和定义我们自己的成本函数来确定参数?
在最小二乘模型中,成本函数定义为作为输入函数的预测值与实际值之差的平方。
当我们进行逻辑回归时,我们将成本函数更改为对数函数,而不是将其定义为 sigmoid 函数(输出值)与实际输出之差的平方。
是否可以更改和定义我们自己的成本函数来确定参数?
是的,您可以定义自己的损失函数,但如果您是新手,最好使用文献中的一个。损失函数应该满足的条件有:
它们应该近似于您试图最小化的实际损失。正如在另一个答案中所说,分类的标准损失函数是零一损失(错误分类率),用于训练分类器的损失函数是该损失的近似值。
未使用线性回归的平方误差损失,因为它不能很好地逼近零一损失:当您的模型预测某个样本的 +50 而预期答案为 +1(正类)时,预测开启决策边界的正确一侧,因此零一损失为零,但平方误差损失仍然是 49² = 2401。一些训练算法会浪费大量时间来获得非常接近 {-1, +1} 的预测而不是专注于获得正确的标志/类别标签。(*)
损失函数应该与您预期的优化算法一起使用。这就是为什么不直接使用零一损失的原因:它不适用于基于梯度的优化方法,因为它没有明确定义的梯度(甚至没有像 SVM 的铰链损失那样的次梯度)。
直接优化零一损失的主要算法是旧的感知器算法。
此外,当您插入自定义损失函数时,您不再构建逻辑回归模型,而是构建其他类型的线性分类器。
(*) 平方误差与线性判别分析一起使用,但这通常以紧密形式而不是迭代方式解决。
使用逻辑函数、铰链损失、平滑铰链损失等,因为它们是零一二分类损失的上限。
这些函数通常也会惩罚那些被正确分类但仍靠近决策边界的样本,从而产生“边际”。
所以,如果你在做二元分类,那么你当然应该选择一个标准的损失函数。
如果您尝试解决不同的问题,那么不同的损失函数可能会表现得更好。
当您使用最大似然估计 (MLE) 拟合参数时,损失函数通常由模型直接确定,这是机器学习中最流行的方法。
您提到了均方误差作为线性回归的损失函数。然后“我们将成本函数更改为对数函数”,指的是交叉熵损失。我们没有改变成本函数。事实上,均方误差是线性回归的交叉熵损失,当我们假设y
由高斯正态分布时,其均值由 定义Wx + b
。
使用 MLE,您可以选择最大化训练数据可能性的参数。整个训练数据集的可能性是每个训练样本的可能性的乘积。因为这可能下溢为零,所以我们通常最大化训练数据的对数似然/最小化负对数似然。因此,成本函数成为每个训练样本的负对数似然的总和,由下式给出:
-log(p(y | x; w))
其中 w 是我们模型的参数(包括偏差)。现在,对于逻辑回归,这就是您提到的对数。但是声称这也对应于线性回归的 MSE 呢?
为了显示 MSE 对应于交叉熵,我们假设它y
正态分布在平均值附近,我们使用 来预测w^T x + b
。我们还假设它有一个固定的方差,所以我们不用线性回归预测方差,只预测高斯的平均值。
p(y | x; w) = N(y; w^T x + b, 1)
你可以看到,mean = w^T x + b
并且variance = 1
现在,损失函数对应于
-log N(y; w^T x + b, 1)
如果我们看一下高斯N
是如何定义的,我们会看到:
现在,取其负对数。这导致:
我们选择了 1 的固定方差。这使第一项保持不变,并将第二项简化为:
0.5 (y - mean)^2
现在,请记住我们将均值定义为w^T x + b
。由于第一项是常数,最小化高斯的负对数对应于最小化
(y - w^T x + b)^2
这对应于最小化均方误差。
是的,可以使用其他成本函数来确定参数。
平方误差函数(线性回归常用的函数)不太适合逻辑回归。
与逻辑回归的情况一样,假设是非线性的(sigmoid 函数),这使得平方误差函数是非凸的。
对数函数是一个没有局部最优值的凸函数,所以梯度下降效果很好。
假设在您的逻辑回归模型中,您有标量输入 x,并且模型为每个输入样本 x 输出概率 $\hat{y}(x)=sigma(wx+b)$。如果您继续在输入 $x$ 是标量的非常特殊的情况下构建二次损失函数,那么您的成本函数变为: $C(w,b):= \Sigma_{x} | y(x) - \hat{y}(x)|^2=\Sigma_{x} | y(x) - \sigma(wx+b)|^2$。现在如果你尝试对其应用梯度下降,你会看到:$C'(w), C'(b)$ 是 $\sigma'(wx+b)$ 的倍数。现在,sigmoid 函数是渐近的,当输出 $\sigma(z)$ 接近 $0$ 或 $1$ 时,它的导数 $\sigma'(z)$ 几乎为零。这意味着:当学习不好时,例如$\sigma(wx+b)\约0$,但$y(x)=1$,则$C'(w), C'(b)\约0$ .
现在,从两个角度来看,上述情况很糟糕:(1)它使梯度下降在数值上变得更加昂贵,因为即使我们离最小化 C(w,b) 还很远,我们的收敛速度也不够快,以及 (2)这与人类学习有悖常理:当我们犯了大错时,我们学得很快。
但是,如果您计算交叉熵成本函数的 C'(w) 和 C'(b),则不会出现此问题,因为与二次成本的导数不同,交叉熵成本的导数不是$sigma'(wx+b)$,因此当逻辑回归模型输出接近 0 或 1 时,梯度下降不一定会减慢,因此收敛到最小值的速度更快。您可以在这里找到相关讨论:http: //neuralnetworksanddeeplearning.com/chap3.html,我强烈推荐的优秀在线书籍!
此外,交叉熵成本函数只是用于估计模型参数的最大似然函数(MLE)的负对数,实际上在线性回归的情况下,最小化二次成本函数相当于最大化 MLE,或者等效地,最小化MLE=cross entropy 的负对数,以及线性回归的基本模型假设 -有关更多详细信息,请参见http://cs229.stanford.edu/notes/cs229-notes1.pdf的第 12 页。因此,对于任何机器学习模型,无论是分类还是回归,通过最大化 MLE(或最小化交叉熵)来找到参数具有统计意义,而最小化逻辑回归的二次成本没有任何意义(尽管它对于线性回归,如前所述)。
我希望它能澄清一些事情!
我想说,均方误差的数学基础是误差的高斯分布,而对于逻辑回归,它是两个分布的距离:基础(基本事实)分布和预测分布。
我们如何测量两个分布之间的距离?在信息论中,它是相对熵(也称为KL散度),相对熵相当于交叉熵。而逻辑回归函数是softmax回归的一个特例,相当于交叉熵和最大熵。