Backpropagation ML

Hat jemand eine Idee mir ein Forward Propagation und Backpropagation ML zu erklären? Ich verstehe das irgendwie nicht. Auch eine nette Zeichnung könnte hilfreich sein.
Und ja, ich weiß was eine ableitung ist :stuck_out_tongue:

Hast du es mal mit ChatGPT versucht? Ich habe es mit diesem Prompt gemacht:

Kannst du mir ein Forward Propagation und Backpropagation ML erklären?

und es kommt eine ziemlich lange Antwort mit Erklärungen. Vielleicht fragst du auch getrennt, erstmal nach forward und danach nach back. Und wenn du Teile davon nicht verstehst, kannst du ChatGPT auch um genauere Erklärungen bitten. Ich finde, für so etwas ist es ganz gut geeignet.

Ja, das habe ich, aber ich erkenne die Rechenschritte nicht.

Nächster Prompt:

Der Fragende erkennt die Rechenschritte nicht, kannst du das genauer beschreiben?

Aber etwas Eigeninitiative wäre schon angebracht … Wie gesagt, schau dir die Antworten an, und frag dort nach, was du nicht verstanden hast. Ich kann es für dich nicht verstehen.

İch hab dich doch nicht gebeten für mich zu verstehen. İch fragte in die Runde höflichst, ob es sich jemand zutraut, und du antwortest mir, dass ich es online finde.
Online hab ich es nicht ganz verstanden… Blockade,… deswegen such ich nach einem denkanstoß… am besten mit grafischen Unterstützungsbeispielen

Nein, aber ich habe dir gesagt, wie du dir das schrittweise erklären lassen kannst, weil es nichts nützt, wenn ich mir die Erklärungen durchlese und sie verstehe, dann muss es immer noch nicht sein, dass du sie auch verstehst. Und wie gesagt, der Vorteil der Nutzung von ChatGPT ist, dass du dir Sachen, die du nicht verstanden hast, nach und nach durch gezieltes Nachfragen ebenfalls erklären lassen kann.

Online ist nicht gleich online. Deswegen der Vorschlag mit ChatGPT. Es ist mehr, als wenn du nur eine stumpfe Erklärung auf einer Internetseite liest.
Aber nun ja, vielleicht findet sich hier jemand … Mir fällt höchstens @hroptatyr ein.

1 Like

Klar ist damit gemeint, dass ich auch chatgpt angefragt habe. Nur erhoffe ich mir, vlt visuell, besser zu verstehen.
Japps, hoffe der liest das auch☺️

Hallo,
die Forwardpropagation macht aus einem Input ein Output im Sinne des gelernten Netzes. Die Idee von Klassifikatoren (oder Regressionen) ist ja gerade, daß ich eine Beobachtung (x) in eine Klasse (ωx = y). Bzw. eine Unabhängige (x) in eine Abhängige (ωx = y) verwandele. Propagation ist letztlich ein anderer Begriff für Auswertung.

Nun Backpropagation. Wenn Du ein Netz/MLP/RNN/etc. zufällig initialisierst, und nun irgendwelche Beobachtungen (x) hineinsteckst und vorwärtspropagierst, dann kommt da ein zufälliges ωx = y heraus. Du möchtest aber Dein Netz ω so verändern, daß ω’x=y’ für alle x und y’ ist.

Die Differenz ω-ω’ könnte man als Update bezeichnen. (ω’-ω)x = E(y’,y) als Fehlerfunktion. (Im linearen Fall stünde dort ω’x - ωx = y’-y).

Das mit der Ableitung kommt in Spiel, wenn Du den Fehler minimieren möchtest. Die Ableitung des Fehlers entspricht (im linearen Fall zumindest) der Ableitung des Updates. Beim Minimum ist diese 0, also wird auch das Update ω’ - ω = 0, das Netz ist "fertig"trainiert.

Der Name Backpropagation kommt nun daher, daß ich aus der Größenordnung des Fehlers bzw. der Veränderung zum vorigen Schritt, nun auf die „Größenordnung“/die Veränderung des Updates in meinem Netz schließen kann.

Ich entnehme der weiteren Konversation, daß Du Dich konkret auf eine Erklärung bezieht. Vielleicht können wir uns kurz auf die Quelle einigen, oder zumindest auf die Klasse der Automaten/Netze und eventuell die Verlustfunktion (MSE?).

Zum Thema Zeichnung: Das geht vielleicht im 1- oder 2-dimensionalen Fall, insgesamt wirst Du wohl auf graphische Veranschaulichung verzichten müssen.

İch denke ein einfaches fall beispiel erklärt genug. Angefangen mit Forward prop(was eigentlich klar ist)… und dann rückwärts.
Spricht nix gegen wenn es spezifisch 2d oder 3d ist.

Mit einer grafischen unterstützung sollte es erklärt haben… wir reden hier immerhin nocht von einer Atomkern-Spaltung

Nun das einfachste Beispiel ist wohl das Netz:

ax + by = z

Unser Trainingsdatensatz ist (1,1,0). Propagieren wir vorwärts kommt heraus:

a + b = z

wir hätten aber gerne:

a + b = 0

Wenn wir MSE als Verlustfunktion ansetzen, dann ergibt sich:

(z - 0)^2 = z^2 = (ax+by)^2 = (a+b)^2 = 0

(Einmal aus der Netzgleichung, einmal durch Auswerten am Trainingspunkt.

Ohne weitere Mathematik sieht man sofort, daß a+b=0 gelten sollte, um den Trainingspunkt ohne Fehler mit unserem Netz zu propagieren. Für gegebenes a,b bietet sich also das Update a_neu = a und b_neu = -a an.

Wir prüfen: (a_neu x + b_neu y)(1,1) = a - a = 0.

Ableitung/Gradient brauchen wir hier nicht.

Nur zur Sicherheit dasselbe Ergebnis via Gradient:

E(t,z) = (z - t)^2 = (ax+by - t)^2
grad E = [ 2ax^2 + 2bxy - 2xt   2by^2 + 2axy - 2yt ]
hess E = [ 2x^2   2xy ]
         [  2xy  2y^2 ]

grad E auswerten und Null setzen:

2a+2b + 2b+2a = 4a+4b = 0  => b = -a

Und Definitheit überprüfen:

2x^2 * 2y^2 - (2xy)^2 = 4x^2y^2 - 4x^2y^2 = 0

nur semidefinit, daher ein Sattelpunkt.

Danke für deine antworten man, ich werde mich wieder, sobald ich es verstanden habe schreiben…bin auf arbeit, aba danke nomma ))