ロジスティック回帰のコスト関数はどのように導出されますか


29

Courseraで機械学習のスタンフォードコースを受講しています。

ロジスティック回帰の章では、コスト関数は次のとおりです。 ここに画像の説明を入力してください

次に、ここから派生します。 ここに画像の説明を入力してください

コスト関数の導関数を取得しようとしましたが、まったく異なるものが得られました。

導関数はどのように取得されますか?

中間ステップはどれですか?


+1、ここで私の質問の@AdamOの答えを確認してください。stats.stackexchange.com/questions/229014/...
ハイタオ・ドゥ

「完全に異なる」は、あなたがすでに知っていること(正しい勾配)を伝えることに加えて、あなたの質問に答えるのに本当に十分ではありません。計算の結果を提供していただければ、さらに便利になります。間違いを犯した場所を支援することができます。
マシュードゥルーリー

@MatthewDrury申し訳ありませんが、マット、あなたのコメントが入る直前に答えを手配しました。オクタヴィアン、あなたはすべてのステップに従ったのですか?私は...後でそれにいくつかの付加価値を与えることを編集します
アントニParellada

2
「派生」と言うとき、「差別化」または「派生」を意味しますか?
Glen_b-モニカを

回答:


41

Andrew NgのCoursera Machine Learningコースのページ内の学生から提供されたメモ以外では利用できない(この派生を含む)コースのメモから修正されました。


以下では、上付き文字(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)


シグモイド関数の導関数は

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 !、マトリックス表記を使用する方が簡単かもしれませんか?
ハイタオデュ

私は、線形回帰に言うことができ、目的である及び誘導体である2 A Tの E、ここでE = A X - B、ロジスティック回帰では、それは似ている、誘導体でA T Eここで、E = P bおよびp = シグモイドA x Axb22ATee=AxbATee=pbp=sigmoid (Ax)
ハイタオデュ

2
それが私があなたの努力に感謝する理由です。あなたは私たちのOPの言語に時間を費やします!!
ハイタオデュ

1
私の理解では、非線形活性化関数にとって二乗誤差の最小化が望ましくない凸性の問題があるということです。行列表記では、これは次のようになりJ(θ)θ=1mX(σ(Xθ)y)
アントニ・パレラダ

1
@MohammedNoureldin前の行の分子の偏微分を取り、チェーンルールを適用しました。
アントニ・パレラダ

8

問題の過度の複雑さの印象を避けるために、ソリューションの構造を見てみましょう。

簡略化及び表記法のいくつかの乱用と、聞かせての和で用語ことJ θ 、及びH = 1 /1つの+ E - Zがの関数であるZ θ = X θG = Y ログH + 1 - Y ログ1 - 時間G(θ)J(θ)h=1/(1+ez)z(θ)=xθ

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

チェーンルールを使用できます: dGdθ=dGdhdhdzdzdθxy

dGh=yh1y1h=yhh(1h)
dhdz=h(1h)

dzdθ=x

dGdθ=(yh)x

0

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

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) 

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.