0

die vektorisierte Version von Gradienten, wie beschrieben bei: gradient descent seems to failGradient Abstieg nicht aktualisiert Theta-Wert

theta = theta - (alpha/m * (X * theta-y)' * X)'; 

Die Theta-Werte werden nicht aktualisiert, so was anfänglichen Theta-Wert dies die Werte, die nach gesetzt laufen Gradientenabfallsaktualisierung:

example1:

m = 1 
X = [1] 
y = [0] 
theta = 2 
theta = theta - (alpha/m .* (X .* theta-y)' * X)' 

theta = 

    2.0000 

example2:

m = 1 
X = [1;1;1] 
y = [1;0;1] 
theta = [1;2;3] 
theta = theta - (alpha/m .* (X .* theta-y)' * X)' 

theta = 

    1.0000 
    2.0000 
    3.0000 

Ist theta = theta - (alpha/m * (X * theta-y)' * X)'; eine korrekte vektorisierte Implementierung des Gradientenabfalls?

Antwort

0

theta = theta - (alpha/m * (X * theta-y)' * X)'; ist in der Tat die korrekte vektorisierte Implementierung von Gradienten-Abstieg.

Sie haben total vergessen, die Lernrate alpha einzustellen.

Nach der Einstellung alpha = 0.01, Ihr Code wird:

m = 1    # number of training examples 
X = [1;1;1] 
y = [1;0;1] 
theta = [1;2;3] 
alpha = 0.01 
theta = theta - (alpha/m .* (X .* theta-y)' * X)' 
theta = 

    0.96000 
    1.96000 
    2.96000