Logistic回归的成本函数如何推导


29

我正在Coursera上学习斯坦福大学的机器学习课程。

在关于逻辑回归的章节中,成本函数是这样的: 在此处输入图片说明

然后,它在这里派生: 在此处输入图片说明

我尝试获取成本函数的导数,但是却得到了完全不同的东西。

如何获得导数?

中间步骤是什么?


+1,在我的问题中检查@AdamO的答案。stats.stackexchange.com/questions/229014/...
杜海涛

除了告诉您您已经知道的内容(正确的梯度)之外,“完全不同”还不足以回答您的问题。如果您将计算的结果告诉我们,这将大有用处,那么我们可以帮助您提高出错的地方。
马修·德鲁里

@MatthewDrury抱歉,Matt,在您发表评论之前,我已经安排好了答案。Octavian,您是否遵循所有步骤?我将在稍后进行编辑以为其提供一些附加值……
安东尼·帕雷拉达

2
当您说“衍生”时,您是指“区分”还是“衍生”?
Glen_b-恢复莫妮卡

Answers:


41

改编自课程中的笔记,我在Andrew Ng的Coursera机器学习课程页面中的学生贡献的笔记之外,看不到可用的笔记(包括此衍生词)。


在下文中,上标表示单独的度量或培训“示例”。(i)

J(θ)θj=θj1mi=1m[y(i)log(hθ(x(i)))+(1y(i))log(1hθ(x(i)))]=linearity1mi=1m[y(i)θjlog(hθ(x(i)))+(1y(i))θjlog(1hθ(x(i)))]=chain rule1mi=1m[y(i)θjhθ(x(i))hθ(x(i))+(1y(i))θj(1hθ(x(i)))1hθ(x(i))]=hθ(x)=σ(θx)1mi=1m[y(i)θjσ(θx(i))hθ(x(i))+(1y(i))θj(1σ(θx(i)))1hθ(x(i))]=σ1mi=1m[y(i)σ(θx(i))(1σ(θx(i)))θj(θx(i))hθ(x(i))(1y(i))σ(θx(i))(1σ(θx(i)))θj(θx(i))1hθ(x(i))]=σ(θx)=hθ(x)1mi=1m[y(i)hθ(x(i))(1hθ(x(i)))θj(θx(i))hθ(x(i))(1y(i))hθ(x(i))(1hθ(x(i)))θj(θx(i))1hθ(x(i))]=θj(θx(i))=xj(i)1mi=1m[y(i)(1hθ(x(i)))xj(i)(1yi)hθ(x(i))xj(i)]=distribute1mi=1m[yiyihθ(x(i))hθ(x(i))+y(i)hθ(x(i))]xj(i)=cancel1mi=1m[y(i)hθ(x(i))]xj(i)=1mi=1m[hθ(x(i))y(i)]xj(i)


S型函数的导数为

ddxσ(x)=ddx(11+ex)=(1+ex)(1+ex)2=ex(1+ex)2=(11+ex)(ex1+ex)=(11+ex)(1+ex1+ex11+ex)=σ(x)(1+ex1+exσ(x))=σ(x)(1σ(x))


1
为所有工作+1 !,可能使用矩阵符号会更容易吗?
海涛杜

我可以说在线性回归中,目标是,导数是,其中,在逻辑回归中,相似,导数是,其中和?Axb22ATee=AxbATee=pbp=sigmoid (Ax)
海涛杜

2
这就是为什么我感谢您的努力。您花时间了解我们OP的语言!!
海涛杜

1
我的理解是,存在凸点问题,使得非线性激活函数不希望使平方误差最小化。用矩阵表示法是。J(θ)θ=1mX(σ(Xθ)y)
安东尼·帕雷拉达

1
@MohammedNoureldin我只是应用链式规则,在上一行的分子中取了偏导数。
安东尼·帕雷拉达

8

为了避免出现问题的复杂性,让我们只看一下解决方案的结构。

通过简化和一些符号滥用,令是总和,而是的函数: G(θ)J(θ)h=1/(1+ez)z(θ)=xθ

G=ylog(h)+(1y)log(1h)

我们可以使用链式规则: 并通过一个(和是常数)。dGdθ=dGdhdhdzdzdθxy

dGh=yh1y1h=yhh(1h)
对于sigmoid成立,仅是前一条语句的分母。dhdz=h(1h)

最后,。dzdθ=x

将所有结果组合在一起就可以得到表达: 希望有帮助。

dGdθ=(yh)x

0

这个答案归功于安东尼奥·帕雷拉达(Antoni Parellada)的评论,我认为该评论应该在此页上占据更重要的位置(因为当其他许多答案都没有时,它可以帮助我)。另外,这不是全部推导,而是对的清晰陈述。(有关完整推导,请参见其他答案)。J(θ)θ

J(θ)θ=1mXT(σ(Xθ)y)

哪里

XRm×n=Training example matrixσ(z)=11+ez=sigmoid function=logistic functionθRn=weight row vectory=class/category/label corresponding to rows in X

同样,对于那些想要计算关于的梯度的人来说,这是一个Python实现。Jθ

import numpy
def sig(z):
return 1/(1+np.e**-(z))


def compute_grad(X, y, w):
    """
    Compute gradient of cross entropy function with sigmoidal probabilities

    Args: 
        X (numpy.ndarray): examples. Individuals in rows, features in columns
        y (numpy.ndarray): labels. Vector corresponding to rows in X
        w (numpy.ndarray): weight vector

    Returns: 
        numpy.ndarray 

    """
    m = X.shape[0]
    Z = w.dot(X.T)
    A = sig(Z)
    return  (-1/ m) * (X.T * (A - y)).sum(axis=1) 

0

对于我们中那些不擅长微积分但想调整成本函数并需要找到一种方法来计算导数的人来说,重新学习微积分的捷径是该在线工具,可自动提供推导,并逐步解释规则。

https://www.derivative-calculator.net

在逻辑回归中得出S型激活的成本函数的示例

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.