我正在阅读关于Logistic回归的Coursera的ML课程以及Manning Book Machine在行动中的学习。我正在尝试通过在Python中实现所有内容来学习。
我无法理解成本函数和渐变之间的区别。网上有人们计算成本函数的例子,然后有些地方没有,只是使用梯度下降函数w :=w - (alpha) * (delta)w * f(w)
。
两者之间有什么区别?
答案 0 :(得分:104)
无论何时使用数据训练模型,实际上都会为特定要素生成一些新值(预测值)。但是,该特定功能已经具有一些值,这些值是数据集中的实际值。我们知道预测值越接近相应的实际值,模型就越好。
现在,我们使用成本函数来衡量预测值与相应实际值的接近程度。
我们还应该考虑训练模型的权重负责准确预测新值。想象一下,我们的模型是y = 0.9 * X + 0.1,对于不同的X,预测值只是(0.9 * X + 0.1)。 [等式中的0.9和0.1只是随机值来理解。]
因此,通过将Y视为对应于此x的实际值,成本公式将用于衡量与Y的接近程度(0.9 * X + 0.1)。
我们有责任为我们的模型找到更好的权重(0.9和0.1),以获得最低成本(或更接近实际值的预测值)。
梯度下降是一种优化算法(我们还有其他一些优化算法),它的职责是在尝试使用不同权重的模型或更新权重的过程中找到最小成本值。
我们首先运行我们的模型,使用一些初始权重和梯度下降更新我们的权重,并在数千次迭代中找到具有这些权重的模型的成本,以找到最低成本。
有一点是梯度下降不是最小化权重,它只是更新它们。该算法正在寻找最低成本。
答案 1 :(得分:79)
您希望最小化成本函数。例如,您的成本函数可能是训练集上的平方误差之和。梯度下降是一种查找多个变量函数最小值的方法。因此,您可以使用梯度下降来最小化您的成本函数。如果您的成本是K变量的函数,则梯度是长度K向量,它定义成本增长最快的方向。因此,在梯度下降中,您可以跟随渐变的负值,直至成本最低。如果有人在机器学习环境中讨论梯度下降,则可能隐含成本函数(它是您应用梯度下降算法的函数)。
答案 2 :(得分:2)
考虑这很奇怪,但是对于一条线如何“准确地”适合数据点,有不止一种度量。
要访问一条线与数据的准确程度,我们具有“成本”功能,该功能可以比较预测值与实际值并提供错误程度的“惩罚”。
罚款= cost_funciton(预测的,实际的)
幼稚的成本函数可能只是采用了预测值和实际值之差。
更复杂的函数将使值平方,因为我们宁愿有许多小错误而不是一个大错误。
此外,每个点对移动线都有不同的“敏感性”。有些观点对运动反应非常强烈。其他人反应不太强烈。
通常,您可以进行权衡,向敏感点移动,并从不敏感点移开。在这种情况下,您得到的不仅仅是放弃。
“梯度”是一种测量每个点对移动线的敏感程度的方法。
本文很好地描述了为什么有不止一种措施,并且为什么某些观点比其他观点更敏感:
答案 3 :(得分:1)
让我们以用于二进制分类的逻辑回归模型为例。在训练过程中,任何给定输入的模型输出(预测值)将相对于实际输出(期望值)偏移(偏差)。因此,需要以最小的误差(损失)来训练模型,以便模型能够以较高的精度良好地运行。
用于查找出现最小误差(损失)的参数(对于线性方程,y = mx + c)值的函数称为成本函数/损失函数。损失函数是用于查找训练样本的单行/记录的损失的术语,成本函数是用于查找整个训练数据集的损失的术语。
现在,我们如何找到发生最小损失的参数值(在我们的情况下为m和c)?通过使用方程式使用梯度下降算法,可以帮助我们找到发生最小损失的点,并考虑将这些点的参数值用于模型构建(假设y = 0.5x + 2),其中m = .5 c = 2是损耗最小的点。
答案 4 :(得分:0)
成本函数有点像您要为一个好的模型构建模型所需的成本,而成本应该是最低的。为了找到最小成本函数,我们使用梯度下降法。给出系数值以确定最小成本函数
答案 5 :(得分:-1)
对于最小化问题,我们必须最小化成本函数,因此梯度下降是一种将其最小化的算法。梯度下降也用于最小化其他功能。这是解决更一般问题的算法。