有人可以向我解释一下逻辑回归中成本函数和梯度下降方程之间的区别吗?
Posted
技术标签:
【中文标题】有人可以向我解释一下逻辑回归中成本函数和梯度下降方程之间的区别吗?【英文标题】:Can someone explain to me the difference between a cost function and the gradient descent equation in logistic regression? 【发布时间】:2012-11-17 08:51:24 【问题描述】:我正在学习 Coursera 上关于逻辑回归的 ML 课程以及 Manning Book Machine Learning in Action。我正在尝试通过在 Python 中实现所有内容来学习。
我无法理解成本函数和梯度之间的区别。网上有一些例子,人们计算成本函数,然后有些地方他们不计算,只使用梯度下降函数w :=w - (alpha) * (delta)w * f(w)
。
如果有的话,两者有什么区别?
【问题讨论】:
【参考方案1】:当您使用数据训练模型时,实际上是在为特定特征生成一些新值(预测值)。但是,该特定特征已经具有一些值,这些值是数据集中的真实值。我们知道预测值越接近其对应的真实值,模型就越好。
现在,我们使用成本函数来衡量预测值与其对应的实际值的接近程度。
我们还应该考虑到训练模型的权重负责准确预测新值。假设我们的模型是 y = 0.9*X + 0.1,对于不同的 X,预测值不过是 (0.9*X+0.1)。 [等式中的 0.9 和 0.1 只是要理解的随机值。]
因此,通过将 Y 视为与此 x 对应的实际值,成本公式开始衡量 (0.9*X+0.1) 与 Y 的接近程度。
我们负责为我们的模型找到更好的权重(0.9 和 0.1),以得出最低成本(或更接近真实值的预测值)。
梯度下降是一种优化算法(我们还有其他一些优化算法),它的职责是在尝试使用不同权重的模型或更新权重的过程中找到最小成本值。
我们首先使用一些初始权重运行我们的模型,然后梯度下降更新我们的权重,并在数千次迭代中找到具有这些权重的模型的成本,以找到最小成本。
有一点是梯度下降并没有最小化权重,它只是更新它们。该算法正在寻找最小成本。
【讨论】:
美丽的答案。 :) 第二次阅读有助于了解美:) 解释得很好。 :) 我从大多数入门课程中不明白的一件事是,它已经具有对应于单个特征权重的成本函数。如果你已经有了代价函数,你不是已经知道最低点了吗? 总而言之,梯度下降会找到那些随机的 0.9 和 0.1,以使我们的预测值尽可能接近真实值。【参考方案2】:成本函数是您想要最小化的东西。例如,您的成本函数可能是您的训练集上的平方误差之和。梯度下降是一种求多变量函数最小值的方法。所以你可以使用梯度下降来最小化你的成本函数。如果你的成本是 K 个变量的函数,那么梯度就是长度为 K 的向量,它定义了成本增长最快的方向。所以在梯度下降中,你跟随梯度的负值到达成本最小的点。如果有人在机器学习上下文中谈论梯度下降,则可能隐含成本函数(它是您应用梯度下降算法的函数)。
【讨论】:
所以基本上我们使用梯度来找出函数的最低成本? 正确。不过要清楚,您不使用单个渐变值。当你沿着梯度的负方向移动时,梯度会改变(除非你在超平面上),所以当你沿着最快速降低成本的方向移动时,你会不断更新梯度,直到达到最小值(希望,全局最小值)。 嘿,我可以有一些下降链接来学习(比如了解基本概念)所有关于逻辑回归、梯度回归和梯度下降的东西吗?【参考方案3】:想一想这很奇怪,但是对于一条线与数据点的“准确”程度,有不止一种衡量标准。
为了了解一条线与数据的拟合程度,我们有一个“成本”函数,它可以比较预测值和实际值,并针对它的错误程度提供“惩罚”。
penalty = cost_funciton(预测,实际)
一个简单的成本函数可能只取预测值和实际值之间的差异。
更复杂的函数会对值进行平方,因为我们宁愿有很多小错误也不愿有一个大错误。
此外,每个点对移动线都有不同的“敏感度”。有些点对运动的反应非常强烈。其他人的反应不太强烈。
通常,您可以进行权衡,然后将其移向敏感点,并远离不敏感点。在那种情况下,你得到的比你放弃的要多。
“梯度”是衡量每个点对移动线的敏感程度的一种方式。
这篇文章很好地描述了为什么会有不止一种度量,以及为什么有些点比其他点更敏感:
https://towardsdatascience.com/wrapping-your-head-around-gradient-descent-with-pictures-3fbd810235f5?source=friends_link&sk=7117e5de8c66bd4a4c2bb2a87a928773
【讨论】:
【参考方案4】:让我们以二元分类的逻辑回归模型为例。任何给定输入的模型输出(预测值)将在训练时相对于实际输出(预期值)偏移(偏差)。因此,模型需要以最小的误差(损失)进行训练,以便模型能够以高精度表现良好。
用于查找发生最小误差(损失)的参数(在线性方程的情况下,y = mx+c)值的函数称为成本函数/损失函数。损失函数是用于查找训练样本单行/记录损失的术语,成本函数是用于查找整个训练数据集损失的术语。
现在,我们如何找到发生最小损失的参数(在我们的例子中是 m 和 c)值?它通过使用方程使用梯度下降算法,这有助于我们找到发生最小损失的点,并且该点的参数值被考虑用于模型构建(假设 y = 0.5x + 2),其中 m=.5而 c=2 是损失最小的点。
【讨论】:
【参考方案5】:成本函数类似于您为一个好的模型构建模型的成本应该是最低的。为了找到最小成本函数,我们使用梯度下降法。给出确定最小成本函数的系数值
【讨论】:
以上是关于有人可以向我解释一下逻辑回归中成本函数和梯度下降方程之间的区别吗?的主要内容,如果未能解决你的问题,请参考以下文章