Matroids Matheplanet Forum Index
Moderiert von matroid
Informatik » Algorithmen / Datenstrukturen » Thema: Backpropagation
Seite 1   [1 2]   2 Seiten
Autor
Universität/Hochschule Thema: Backpropagation
Wunderkind89
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 15.03.2018
Mitteilungen: 97
  Themenstart: 2021-08-12

Hallo zusammen, ich schreibe gerade meine Bachelorarbeit und mein Thema lautet: "Analyse und Implementierung des Backpropagation Algorithmus für feed forward neuronale Netze zur Erkennung von handgeschriebenen Ziffern" Mein Problem: MSE = 1/n sum((y^> - b^>)^2,k=1,n) - MSE ist eine Kostenfunktion und berechnet den Error zwischen Soll und Ist, d.h y^> ist "soll" und b^> steht für "ist". - Für Backpropagation wird MSE differenziert und ich orientiere mich am Skript eines Professors und dieser hat folgendes geschrieben: grad(MSE) = 2/n sum((y^> - b^>),k=1,n)*grad(f) Das f ist das neuronale Netzwerk und dieses wird nach den Gewichten und dem Bias differenziert, dabei wird die Kettenregel mehrfach angewendet. 1. Meiner Meinung nach, darf das hier 2/n sum((y^> - b^>),k=1,n)*grad(f) nicht stehen, denn, welche Dimension hat grad(f)? Oder noch genauer: da steht ein "mal" zwischen dem Gradienten und dem Fehler, was so aber nicht sein darf aufgrund der Dimensionen. 2. Da wo grad(f) steht sollte eigentlich grad(b^>) stehen. Darf ich das einfach so schreiben wegen f(x) = b^> ? Der Professor hat da jedenfalls für grad(f) einfach grad(b^>) geschrieben und b^> ist bei ihm tatsächlich ein Vektor mit Gewichten. Das ist natürlich verwirrend, denn in Wirklichkeit steckt da Backpropagation dahinter und es wird nach den Gewichten und dem Bias differenziert, unter Beachtung der Aktivierungsfunktionen und das ist natürlich kein Vektor b^>! Das ist doch eine falsche schreibweise, weil die Dimensionen unterschiedlich sind. Weiß da ein Experte mehr? Darf ich das so schreiben oder würdest ihr es anders umschreiben? Ich hab in diesem Zusammenhang an einen Hadamard Produkt gedacht, was an die Stelle des "Mal Zeichens" gehört. Ich wäre euch dankbar, wenn ihr mir sagen könntet, welche Dimension grad(f) hat und ob ich mit meinen Ausführungen richtig liege. Über eine rein mathematische Quelle zu Backpropagation würde ich mich natürlich freuen Grüße


   Profil
Delastelle
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 17.11.2006
Mitteilungen: 1753
  Beitrag No.1, eingetragen 2021-08-13

Hallo Wunderkind89! Funktioniert schon etwas bei der Implementierung? Ich habe vor Jahren mal ein Neuronales Netz gesehen, was die Sprach "0" bis "9" (ca. mp3) in eine 2-dimensionale geschriebene Ziffer umwandelte. Viele Grüße Ronald


   Profil
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 2657
  Beitrag No.2, eingetragen 2021-08-13

\quoteon(2021-08-12 23:53 - Wunderkind89 im Themenstart) d.h y^> ist "soll" und b^> steht für "ist". \quoteoff Dann müsste in $\nabla\,\rm MSE$ eigentlich der Faktor $(\vec b-\vec y)$ statt $(\vec y-\vec b)$ auftauchen. \quoteon(2021-08-12 23:53 - Wunderkind89 im Themenstart) b^> ist bei ihm tatsächlich ein Vektor mit Gewichten \quoteoff Das klingt jetzt nicht so, als würdet ihr beide wirklich vom selben $\vec b$ sprechen. \quoteon(2021-08-12 23:53 - Wunderkind89 im Themenstart) MSE = 1/n sum((y^> - b^>)^2,k=1,n) \quoteoff Schon hier wird ja eine eher laxe Schreibweise benutzt, denn der Summationsindex $k$ tritt in der Summe gar nicht auf. Ich würde empfehlen, den Ausdruck für MSE ersteinmal sauber unter Nennung aller Variablen und Summationsindizes hinzuschreiben und dann den Gradienten zu bilden. Dabei sind "exotische" Schreibweisen wie das Hadamard-Produkt nicht erforderlich. Das könnte beispielsweise so aussehen (ich versuche nicht, mich an deine Bezeichnungen zu halten): * $\vec x=(x_r)_{r=1,\ldots,p}$ ist ein Satz von Eingangsdaten * $\vec y=(y_s)_{s=1,\ldots,q}$ ist ein Satz von Ergebnisdaten * $\vec x^{(1)},\ldots,\vec x^{(n)}$ sind die $n$ Eingangsdatensätze, die betrachtet werden * $\vec y^{(1)},\ldots,\vec y^{(n)}$ sind die zugehörigen erwarteten Ergebnisse * $\vec w=(w_\alpha)_{\alpha=1,\ldots,a}$ sind die Gewichte und Bias-Werte * $\vec\phi=(\phi_s)_{s=1,\ldots,q}$ ist die Funktion, die das neuronale Netz beschreibt: $\vec\phi(\vec x,\vec w)$ sind die Ergebnisdaten, die das Netz für die Eingangsdaten $\vec x$ bei gegebenen Parametern $\vec w$ liefert Dann ist$$ \operatorname{MSE}(\vec w) = \frac1n\sum_{k=1}^n\Bigl( \vec\phi\bigl(\vec x^{(k)},\vec w\bigr)-\vec y^{(k)}\Bigr)^2 $$und $$ \nabla\operatorname{MSE}(\vec w) = \frac2n\sum_{k=1}^n\sum_{s=1}^q\Bigl( \phi_s\bigl(\vec x^{(k)},\vec w\bigr)-y_s^{(k)}\Bigr)\cdot \nabla_{\vec w}\;\phi_s\bigl(\vec x^{(k)},\vec w\bigr) $$--zippy


   Profil
Wunderkind89
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 15.03.2018
Mitteilungen: 97
  Beitrag No.3, vom Themenstarter, eingetragen 2021-08-13

Vielen dank für die Antwort, ja ich meinte tatsächlich 1/n * sum((y^>_k - b^>_k)^2,k=1,n) und das steht auch so. Natürlich ist der Gradient dann: grad(MSE)= 2/n * sum((y^>_k - b^>_k),k=1,n) * - grad(b^>_k) Ich dachte bis jetzt, dass die Funktion nur die Eingabedaten als Input kriegt, daher der Bias und die Gewichte werden als Parameter der Funktion angepasst, kommen aber als Input nicht vor, weil w^> und b^> eine andere Dimension haben als die Eingangsdaten x^>: Eine Gewichtsmatrix wird für die Berechnung eines beliebigen Layer genutzt und wenn ich das neuronale Netz als Funktion betrachte, dann habe ich mehrere Gewichtsmatrizen oder etwa nicht? Mich wundert es, dass du Gewichte als Vektor geschrieben hast und dass du den Bias (der ebenfalls optimiert wird) weggelassen hast. Da du für w^> Bias und Gewichte geschrieben hast, gehe ich davon aus, dass du den Bias in die Gewichtsmatrix reingezogen hast. Wenn das stimmt, dann muss dieser aber ebenso in den Vektor der die Layer beschreibt reingezogen werden. Konkret bedeutet es: W * a^> + b wird zu W * a^>. Das W kriegt eine weitere Spalte aus einsen und a^> einen weiteren Eintrag 1 Grüße


   Profil
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 2657
  Beitrag No.4, eingetragen 2021-08-13

\quoteon(2021-08-13 14:14 - Wunderkind89 in Beitrag No. 3) Mich wundert es, dass du Gewichte als Vektor geschrieben hast und dass du den Bias (der ebenfalls optimiert wird) weggelassen hast. \quoteoff \quoteon(2021-08-13 08:29 - zippy in Beitrag No. 2) * $\vec w=(w_\alpha)_{\alpha=1,\ldots,a}$ sind die Gewichte und Bias-Werte \quoteoff


   Profil
Wunderkind89
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 15.03.2018
Mitteilungen: 97
  Beitrag No.5, vom Themenstarter, eingetragen 2021-08-13

Was ich leider immer noch nicht so ganz verstehe ist, welche Dimension der Gradient nach den Klammern der Summe hat, also die Dimension von dem Teil hier: $$\nabla_{\vec w}\;\phi_s\bigl(\vec x^{(k)},\vec w\bigr)$$ Weil das ist wichtig für die Multiplikation nach den Klammern, also nach $$\frac2n\sum_{k=1}^n\sum_{s=1}^q\Bigl( \phi_s\bigl(\vec x^{(k)},\vec w\bigr)-y_s^{(k)}\Bigr)$$ Warum das wichtig ist? Weil, wenn die Dimensionen nicht übereinstimmen, dann kann ich das hier $$ \nabla\operatorname{MSE}(\vec w) = \frac2n\sum_{k=1}^n\sum_{s=1}^q\Bigl( \phi_s\bigl(\vec x^{(k)},\vec w\bigr)-y_s^{(k)}\Bigr)\cdot \nabla_{\vec w}\;\phi_s\bigl(\vec x^{(k)},\vec w\bigr) $$ nicht schreiben. Machst du da eine Matrixschreibweise bei dem Gradienten oder multiplizierst du da Elementweise? Grüße


   Profil
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 2657
  Beitrag No.6, eingetragen 2021-08-13

\quoteon(2021-08-13 18:35 - Wunderkind89 in Beitrag No. 5) also die Dimension von dem Teil hier: $\nabla_{\vec w}\;\phi_s\bigl(\vec x^{(k)},\vec w\bigr)$ \quoteoff Dieser Ausdruck hat soviele Komponenten wie $\vec w$, also $a$. \quoteon(2021-08-13 18:35 - Wunderkind89 in Beitrag No. 5)Weil, wenn die Dimensionen nicht übereinstimmen, dann kann ich das hier$$ \nabla\operatorname{MSE}(\vec w) = \frac2n\sum_{k=1}^n\sum_{s=1}^q\Bigl( \phi_s\bigl(\vec x^{(k)},\vec w\bigr)-y_s^{(k)}\Bigr)\cdot \nabla_{\vec w}\;\phi_s\bigl(\vec x^{(k)},\vec w\bigr) $$nicht schreiben. \quoteoff $\nabla_{\vec w}\;\phi_s\bigl(\vec x^{(k)},\vec w\bigr)$ ist der einzige Vektor in diesem Produkt, da in der Klammer ja nicht $\vec\phi\bigl(\vec x^{(k)},\vec w\bigr)-\vec y^{(k)}$, sondern $\phi_s\bigl(\vec x^{(k)},\vec w\bigr)-y_s^{(k)}$ steht.


   Profil
Delastelle
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 17.11.2006
Mitteilungen: 1753
  Beitrag No.7, eingetragen 2021-08-15

Hallo Wunderkind89! Ein Literaturtip: A.Zell - Simulation neuronaler Netze hat beispielsweise im Kapitel 8 viel zu Backpropagation Vielleicht kennst Du das Buch ja bereits... Viele Grüße Ronald


   Profil
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 2657
  Beitrag No.8, eingetragen 2021-08-15

\quoteon(2021-08-15 03:19 - Delastelle in Beitrag No. 7) Ein Literaturtip: A.Zell - Simulation neuronaler Netze \quoteoff Das Buch ist von 1997. Da sich in dem Gebiet seitdem viel getan hat, kann das ein Problem sein.


   Profil
Delastelle
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 17.11.2006
Mitteilungen: 1753
  Beitrag No.9, eingetragen 2021-08-15

Hallo, \quoteon(2021-08-15 07:22 - zippy in Beitrag No. 8) \quoteon(2021-08-15 03:19 - Delastelle in Beitrag No. 7) Ein Literaturtip: A.Zell - Simulation neuronaler Netze \quoteoff Das Buch ist von 1997. Da sich in dem Gebiet seitdem viel getan hat, kann das ein Problem sein. \quoteoff Klingt das Thema(*) etwa wie neue Forschung? (*) "Analyse und Implementierung des Backpropagation Algorithmus für feed forward neuronale Netze zur Erkennung von handgeschriebenen Ziffern" Viele Grüße Ronald Edit: @Wunderkind89 Ist die Netzwerkstruktur vorgegeben oder sollst Du selbst etwas suchen?


   Profil
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 2657
  Beitrag No.10, eingetragen 2021-08-16

\quoteon(2021-08-15 23:04 - Delastelle in Beitrag No. 9) Klingt das Thema(*) etwa wie neue Forschung? \quoteoff Man muss keine "neue Forschung" betreiben, um an die Grenzen eines fast 25 Jahre alten Buches zu stoßen. Schau die beispielsweise mal die Jahre an, in denen die Optimierungsalgorithmen entstanden sind, die die Tensorflow-Bibliothek zur Verfügung stellt: 2011, 2012, 2013, 2014, 2015, 2018. Was hilft mir da ein Buch von 1997? Es mag in dem Buch Abschnitte geben, die immer noch lesenswert sind. Aber ich zweifle daran, dass es für jemanden, der an seiner Bachelorarbeit schreibt, eine gute Idee ist, seine Zeit in die Lektüre dieses Buches zu investieren.


   Profil
Wunderkind89
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 15.03.2018
Mitteilungen: 97
  Beitrag No.11, vom Themenstarter, eingetragen 2021-08-18

Also erstmal danke für eure Antworten. 1) Zu dem Buch von Delastelle: ich kann das Buch als freie eBook Version nirgends finden. Als Student kann ich nur bestimmte Bücher als ebook runterladen und dieses Buch ist nicht dabei. Mir sind freie eBooks lieber als solche, die ich blind kaufe. Der größte Teil der Bücher, die ich mir zu Data Science gekauft habe (O'Reilly Verlag) brachte mir recht wenig, weil entweder werden da einige Sachen schwammig oder falsch erklärt oder überhaupt nicht erklärt bzw. nicht in der nötigen Tiefe. So sehr ich die deutsche Literatur aufgrund von Verständlichkeit bevorzuge, ist die englische Literatur der deutschen dennoch vorzuziehen, besonders wenn es um den Bereich "Programmierung" geht, weil spezielle englische Literatur erklärt manche Zusammenhänge einfacher, tiefer und mit weniger Fehler im Vergleich zu der Deutschen. Außerdem ist der Angebot entsprechend größer, wenn man englisch kann. Im Netz gibt es tatsächlich bessere freie Quellen, wenn man gezielt danach recherchiert, als das Wissen in den Büchern. Ich hab mich täuschen lassen: in dem Buch "Praxiseinstieg Machine Learning mit Scikit Learn, Keras und Tensorflow" steht im Inhaltsverzeichnis Backpropagation und dann an einer Stelle, wo es um die Mathematik geht, schreibt der Autor "die Mathematik dahinter ist langweilig und das überlasse ich Ihnen" und geht nicht weiter darauf ein. Bei Interesse kann ich die Seite posten und genau zitieren. Ich hab also das Buch gekauft, weil da u.a. Backpropagation, Keras, Python steht und weil das Buch gute Bewertungen bei Amazon hat, bin aber daraus Letzten Endes nicht schlauer geworden. Ihr könnt mir gerne sagen, was ihr davon hält (erste Quelle ist aus einem Buch): 2) Meine Quelle zu Backpropagation: http://neuralnetworksanddeeplearning.com/chap2.html 3) Alternative Quelle: https://sudeepraja.github.io/Neural/ Ansonsten bin ich offen über eure Vorschläge bezüglich einer Quelle zu Backpropagation. Es gibt nur eine Bedingung: die Quelle sollte Backpropagation mathematisch sauber erklären, um als Zitierquelle geeignet zu sein. Grüße


   Profil
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 2657
  Beitrag No.12, eingetragen 2021-08-18

Mit einer echten Empfehlung kann ich dir leider nicht weiterhelfen. Ich würde dir aber raten, auch mal einen Blick in Deep Learning von Goodfellow et al. zu werfen. \quoteon(2021-08-18 15:29 - Wunderkind89 in Beitrag No. 11) Es gibt nur eine Bedingung: die Quelle sollte Backpropagation mathematisch sauber erklären, um als Zitierquelle geeignet zu sein. \quoteoff Müsste die Quelle nicht auch zu dem passen, was du praktisch implementierst? Daher die Frage: Wie sieht diese praktische Implementierung aus?


   Profil
Delastelle
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 17.11.2006
Mitteilungen: 1753
  Beitrag No.13, eingetragen 2021-08-18

Hallo Wunderkind89! Eventuell kannst Du auch ein/mehrere Bücher über Fernleihe/Nahleihe bei einer Uni-Bibliothek ausleihen. Bei einer Fernleihe sollte die Ausleihzeit vielleicht 4 Wochen betragen. Zumindest war es mal so gewesen. Eventuell kann Dir auch die Sekretärin Deines Professors mal ein Kapitel aus einem Buch kopieren. Oder Dein Professor kann Dir mal ein Buch kurzfristig ausleihen. Welche Bücher noch empfehlenswert seien könnten kann ich leider nicht sagen. Viele Grüße Ronald


   Profil
Wunderkind89
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 15.03.2018
Mitteilungen: 97
  Beitrag No.14, vom Themenstarter, eingetragen 2021-08-21

Ich hab zwei Fragen: 1) kann man beim Gradientenabstiegsverfahren Gewichtsmatrizen nehmen oder müssen es immer Vektoren sein (so wie es bei dir der Fall ist)? Also statt w^> will ich W^L nehmen, also Gewichtsmatrizen, welche L-ten Layer berechnen. Konkret: \phi2((x^>)^k, W^L) und grad(MSE(W^L)) Weil programmiertechnisch ist es am leichtesten das Ganze in Matrixschreibweise umzusetzen. 2) Warum hast du bei der Ableitung der MSE eine doppelte Summe? Die erschließt sich mir irgendwie nicht. Wäre Dankbar für deine kurze knackige Antwort


   Profil
Delastelle
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 17.11.2006
Mitteilungen: 1753
  Beitrag No.15, eingetragen 2021-08-21

Hallo, @Wunderkind89 eine Zwischenfrage: welche Programmiersprache verwendest Du? (oder hattest Du es schon oben geschrieben...) Viele Grüße Ronald


   Profil
schnitzel
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 26.02.2009
Mitteilungen: 211
  Beitrag No.16, eingetragen 2021-08-21

Hi, ich würde dir empfehlen einfach mit der Praxis anzufangen und alles in pytorch umzusetzen (falls du nicht andere Vorgaben hast). Das ist ein richtiges DL Framework, anfängerfreundlich mit sehr vielen Tutorials z.B. hier. Damit kannst du auch deine Implementierungen überprüfen und die Backprop-Graphen plotten lassen. Gruß


   Profil
Wunderkind89
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 15.03.2018
Mitteilungen: 97
  Beitrag No.17, vom Themenstarter, eingetragen 2021-08-21

Hey Leute, die Bachelorarbeit läuft bereits. Ich programmiere das Ganze in Python mit Keras und Tensorflow


   Profil
Delastelle
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 17.11.2006
Mitteilungen: 1753
  Beitrag No.18, eingetragen 2021-08-22

Hallo, und die handschriftlichen Texte/Ziffern liegen als Bilder vor? (Ich kenne etwas die Bildverarbeitung und Darstellung von Matlab.) Viele Grüße Ronald


   Profil
Wunderkind89
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 15.03.2018
Mitteilungen: 97
  Beitrag No.19, vom Themenstarter, eingetragen 2021-08-22

die handgeschriebenen Ziffern werden aus einer MNIST Datenbank entnommen, die man kostenlos runterladen kann.


   Profil
Wunderkind89
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 15.03.2018
Mitteilungen: 97
  Beitrag No.20, vom Themenstarter, eingetragen 2021-08-22

Beim Gradientenverfahren betrachtet man: (1) f: \IR^n -> \IR Bei uns ist f unsere Fehlerfunktion, also MSE aber MSE kriegt als Input eine Gewichtsmatrix und liefert einen Vektor, also hat MSE nicht die Form, wie in (1) oder etwa nicht? Eigentlich hat man eher sowas: f: \IR^(t_(l) x t_(l-1)) -> \IR^(t_l) Erklärung: t:= das ist die Anzahl der Neuronen pro Schicht l:= das ist der Index der Layer, beginnend mit l = 0 für Input Layer Am Ende kriege ich bei MSE einen Vektor raus und es kann schonmal nicht \IR sein (vgl. (1)). Was den Input angeht, da bin ich unschlüssig, weil manche schreiben da eine Gewichtsmatrix (Tensor) und andere wiederum einen Vektor (so, wie es z.B. Zippy oder meinem Professor). In meinem Fall hab ich einen Vektor mit 10 Werten, weil ich 10 Ziffern habe. Quelle von einem Professor, der Gewichtsmatrix als Input nimmt: https://www.youtube.com/watch?v=ynuxtaa9irc&t=498s&ab_channel=JoergFrochte Programmiertechnisch ist es schöner mit Gewichtsmatrizen zu rechnen aber darf ich das überhaupt so schreiben: W_(i+1) = W_(i) - s * grad(MSE(W)) Das W in MSE ist eine Menge von Gewichtsmatrizen aller Layer. Also ein spezielles W, dann stimmt aber wiederum das hier nicht \IR^(t_(l) x t_(l-1)). Ich update erst alle Gewichtsmatrizen von allen Layern, indem ich über i iteriere und erst dann wird das W in MSE geändert Wo genau liegt jetzt mein Denkfehler und darf ich das überhaupt so schreiben? Grüße


   Profil
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 2657
  Beitrag No.21, eingetragen 2021-08-22

\quoteon(2021-08-22 17:08 - Wunderkind89 in Beitrag No. 20) Wo genau liegt jetzt mein Denkfehler \quoteoff Ich möchte nochmal meine Empfehlung vom Beginn dieses Threads wiederholen, denn ich habe den Eindruck, dass dein Hauptproblem ein Gestrüpp von nicht zueinander passenden Definitionen ist: \quoteon(2021-08-13 08:29 - zippy in Beitrag No. 2) Ich würde empfehlen, den Ausdruck für MSE ersteinmal sauber unter Nennung aller Variablen und Summationsindizes hinzuschreiben und dann den Gradienten zu bilden. \quoteoff Es ist ja noch nicht einmal klar, ob du jetzt einen eizelnen Layer betrachten willst (so klingt das, was du im letzten Beitrag geschrieben hast) oder das gesamte Netz (das macht die Formel in dem YouTube-Video sowie die Formel, die ich in Beitrag Nr. 2 hingeschrieben hatte).


   Profil
Wunderkind89
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 15.03.2018
Mitteilungen: 97
  Beitrag No.22, vom Themenstarter, eingetragen 2021-08-22

Ich möchte beides Betrachten. Konkret: (W^l)_(i+1) = (W^l)_(i) - s * grad_((W^l)_(i))(MSE(W_I)) 1. Ich mach Backpropagation in grad((W^l)_(i))(MSE(W_I)). Das W ist hier das gesamte Netz mit allen Gewichtsmatrizen, also W_I = W^1, W^2,...,W^k 2. Mit Hilfe des Backpropagation Update ich die einzelnen Gewichtsmatrizen der Layer zu (W^l)_(i+1) und wenn ich mit allen Layern durch bin wird I um 1 erhöht, sodass ich ein neues W_(I+1) habe 3. Und so entsteht ein neues Netz für \phi2 Mein \phi2 kriegt kein Vektor, sondern direkt eine Matrix von gesamten Netz. Das ist so mein Plan, den ich umsetzen will.


   Profil
Wunderkind89
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 15.03.2018
Mitteilungen: 97
  Beitrag No.23, vom Themenstarter, eingetragen 2021-08-23

1. Bei deiner Ableitung frage ich mich woher das hier sum((...),s=1,q) kommt bzw. warum ist das eine doppelte Summe? In deinem Betrag Nr. 2 wird aus dem hier MSE(w^>)=(....) leider nicht ersichtlich, weil das Teil keine doppelte Summe hat. Ich meine ich verstehe etwas, was du da gemacht hast und zwar hast du die Vektoren umgeschrieben: aus (y^>)^k wurde ein (y_1)^k, (y_2)^k,.. als Elemente von (y^>)^k. Aber das erklärt nicht die Summe irgendwie. 2. Der Professor auf YouTube macht grad(MSE(W)) und du machst grad(MSE(w^>)). Er betrachtet anscheinend Matrizen und du Vektoren. Und genau das verwirrt mich Grüße


   Profil
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 2657
  Beitrag No.24, eingetragen 2021-08-23

\quoteon(2021-08-23 00:23 - Wunderkind89 in Beitrag No. 23) Bei deiner Ableitung frage ich mich woher das hier sum((...),s=1,q) kommt bzw. warum ist das eine doppelte Summe? \quoteoff Die Summe über $k$ bildet den Mittelwert über die $n$ Eingangsdatensätze und kommt ja schon in der Definition des MSE vor. Die Summe über $s$ ensteht bei der Ableitung des Quadrats, die ich in Komponenten hingeschrieben habe, um eine Kollision mit dem Gradienten nach $\vec w$ zu vermeiden: \quoteon(2021-08-13 18:56 - zippy in Beitrag No. 6) $\nabla_{\vec w}\;\phi_s\bigl(\vec x^{(k)},\vec w\bigr)$ ist der einzige Vektor in diesem Produkt, da in der Klammer ja nicht $\vec\phi\bigl(\vec x^{(k)},\vec w\bigr)-\vec y^{(k)}$, sondern $\phi_s\bigl(\vec x^{(k)},\vec w\bigr)-y_s^{(k)}$ steht. \quoteoff \quoteon(2021-08-23 00:23 - Wunderkind89 in Beitrag No. 23) Aber das erklärt nicht die Summe irgendwie. \quoteoff Du musst schon etwas präziser sagen, an welcher Stelle du Verständnisschwierigkeiten hast.


   Profil
Wunderkind89
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 15.03.2018
Mitteilungen: 97
  Beitrag No.25, vom Themenstarter, eingetragen 2021-08-23

Ok Danke, kannst du mir vielleicht verraten, wie deine Iterationsvorschrift für Gradientenabstiegsverfahren aussehen würde? Grüße


   Profil
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 2657
  Beitrag No.26, eingetragen 2021-08-23

\quoteon(2021-08-23 02:58 - Wunderkind89 in Beitrag No. 25) kannst du mir vielleicht verraten, wie deine Iterationsvorschrift für Gradientenabstiegsverfahren aussehen würde? \quoteoff Die Iterationsvorschrift hängt nicht davon ab, wie man die Ableitung ausrechnet bzw. wie man sie hinschreibt. Wenn wir die Iterationen mit einem Index $i$ durchnummerieren und die Schrittweite $\gamma_i$ nennen, haben wir$$ \vec w_{i+1} = \vec w_i - \gamma_i\,\nabla\operatorname{MSE}(\vec w_i) \;.$$


   Profil
Wunderkind89
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 15.03.2018
Mitteilungen: 97
  Beitrag No.27, vom Themenstarter, eingetragen 2021-08-23

1. Ok, erstmal danke an dieser Stelle und genau da hätte ich einige weitere elementare Fragen, die noch offen stehen: an der Stelle, wo du w^> bei der Iterationsvorschrift für Gradientenabstiegsverfahren geschrieben hast, darf da eine ganze Gewichtsmatrix W^l stehen? Meiner Meinung nach darf das nicht, weil der Grund liegt hier: f:\IR^n -> \IR Die Funktion kriegt ein Vektor (keine Matrizen!) und gibt ein Skalar aus. Berichtige mich gerne, wenn ich falsch liege (z.B. der Professor macht das mit Matrizen) - Den Link zu seinem Video hab ich hier gepostet 1.1 ich schreibe jetzt mal etwas unmathematisch: w_neu = w_alt - s * grad(MSE(w_alt)). Muss das w_alt nach dem Gleichheitszeichen mit dem w_alt in der MSE Funktion übereinstimmen oder ist das nicht zwingend notwendig? Warum ich dich das erneut frage: siehe Beitrag Nr. 22. Ich bezweifle stark, dass man das so schreiben darf. 2. Mich würde gerne deine Meinung zu der Seite (die ich bereits gepostet habe) interessieren: http://neuralnetworksanddeeplearning.com/chap2.html Die gehen an Backpropagation ganz anders heran, als z.B. mein Professor und benutzen da "exotische Schreibweisen", wie das Hadamar Produkt. Ich klammere mich an dieser Seite deswegen so fest, weil diese Seite mehr oder weniger simple Formeln benutzt, die man für Backpropagation bei der Implementierung leicht verwenden kann. Bedanke mich für alle Antworten und die Mühe Grüße


   Profil
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 2657
  Beitrag No.28, eingetragen 2021-08-23

\quoteon(2021-08-23 13:56 - Wunderkind89 in Beitrag No. 27) darf da eine ganze Gewichtsmatrix W^l stehen? \quoteoff Der Vektor $\vec w$ besteht ja aus den Zahlen der Gewichtsmatrizen $W^\ell$ sämtlicher Layer. Man kann also schreiben$$ \vec w=\bigl[(W^\ell)_{\ell=1,\ldots,L}\bigr]_{\rm vec} \;, $$wobei $[\,\cdot\,]_{\rm vec}$ die Abbildung bezeichnet, die die Komponenten der $L$ Matrizen in die Reihenfolge bringt, die man für den Vektor gewählt hat. Ganz analog kann man $\nabla_{W^\ell}$ durch die Beziehung$$ \nabla_{\vec w}=\bigl[(\nabla_{W^\ell})_{\ell=1,\ldots,L}\bigr]_{\rm vec} $$definieren. Und damit kann man dann schreiben$$ W^\ell_{i+1} = W^\ell_i - \gamma_i\, \nabla_{W^\ell}\operatorname{MSE}(W^1,\ldots,W^L) \;. $$ \quoteon(2021-08-23 13:56 - Wunderkind89 in Beitrag No. 27) w_neu = w_alt - s * grad(MSE(w_alt)). Muss das w_alt nach dem Gleichheitszeichen mit dem w_alt in der MSE Funktion übereinstimmen oder ist das nicht zwingend notwendig? \quoteoff Man kann die Formel auch hinschreiben, wenn die beiden nicht übereinstimmen, aber dann bescheibt diese Formel nicht mehr das übliche Gradientenverfahren. \quoteon(2021-08-23 13:56 - Wunderkind89 in Beitrag No. 27) Die gehen an Backpropagation ganz anders heran, als z.B. mein Professor \quoteoff Wie geht denn dein Professor da ran?


   Profil
Wunderkind89
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 15.03.2018
Mitteilungen: 97
  Beitrag No.29, vom Themenstarter, eingetragen 2021-08-27

Ich leite es mir gerade selbst her (also den Backpropagation) und mache es nicht so, wie mein Dozent. Mein Professor macht es so ähnlich, wie der eine Typ auf YouTube. Ich hätte an der Stelle 3 Fragen: 1. was ergibt: pdiff((s^>)^k,(s^>)^k) Woher das kommt: (a^>)^k = f^>((s^>)^k) mit (s_i)^k = sum(w_(i,j)*a_j,j=1,t) und (s_i)^k \el\ (s^>)^k Das pdiff((s^>)^k,(s^>)^k) kommt von der Kettenregel im Mehrdimensionalen: pdiff((a^>)^k,s^>) = pdiff((s^>)^k,(s^>)^k)*pdiff(f,(s^>)^k) Intuitiv würde ich sagen Einheitsmatrix, nur ich wüsste dann nicht woher die ganzen Einsen einer Einheitsmatrix kommen sollen bzw. wie ich eine Einheitsmatrix da herleiten soll. 2. Was genau meinst du mit "um "Kollision zu verhindern"? Ich gehe davon aus, dass du Multiplikation mit dem Gradienten der Funktion meinst bzw. damit die Multiplikation klappt machst du die Schreibweise mit der doppelten Summe 3. Zurück nochmal zu der doppelten Summe: Wenn du bei der Ableitung doppelte Summe schreibst, dann muss diese doch auch bei der Kostenfunktion stehen, oder? Weil bei der Ableitung kann eine weitere Summe ja nicht aus dem Nichts auftauchen. Ich müsste diese folglich auch bei der MSE schreiben Ich wäre dir da sehr dankbar, wenn du bisschen Licht ins Dunkle bringen könntest


   Profil
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 2657
  Beitrag No.30, eingetragen 2021-08-27

\quoteon(2021-08-27 01:02 - Wunderkind89 in Beitrag No. 29) Intuitiv würde ich sagen Einheitsmatrix, nur ich wüsste dann nicht woher die ganzen Einsen einer Einheitsmatrix kommen sollen bzw. wie ich eine Einheitsmatrix da herleiten soll. \quoteoff Dann würde es sich lohnen, nochmal die Differentialrechnung im $\mathbb R^n$ zu wiederholen. Es ist generell$$ {\partial\vec f\over\partial\vec x} = \left({\partial f_i\over\partial x_j}\right)_{i,j=1,\ldots,n} $$und damit speziell$$ {\partial\vec x\over\partial\vec x} = \left({\partial x_i\over\partial x_j}\right)_{i,j=1,\ldots,n} = \left(\delta_{ij}\right)_{i,j=1,\ldots,n}=1_n \;. $$ \quoteon(2021-08-27 01:02 - Wunderkind89 in Beitrag No. 29) Was genau meinst du, um "Kollision" zu verhindern? \quoteoff In der mit Indizes hingeschriebenen Gleichung$$ {\partial\over\partial w_\alpha\!}\,\operatorname{MSE}(\vec w) = \frac2n\sum_{k=1}^n\sum_{s=1}^q\Bigl( \phi_s\bigl(\vec x^{(k)},\vec w\bigr)-y_s^{(k)}\Bigr)\cdot {\partial\over\partial w_\alpha\!}\;\phi_s\bigl(\vec x^{(k)},\vec w\bigr) $$kann man, indem man zu Vektoren übergeht, problemlos entweder den Index $\alpha$ verschwinden lassen,$$\nabla\operatorname{MSE}(\vec w) = \frac2n\sum_{k=1}^n\sum_{s=1}^q\Bigl( \phi_s\bigl(\vec x^{(k)},\vec w\bigr)-y_s^{(k)}\Bigr)\cdot \nabla_{\vec w}\;\phi_s\bigl(\vec x^{(k)},\vec w\bigr) \;, $$oder den Index $s$,$$ {\partial\over\partial w_\alpha\!}\,\operatorname{MSE}(\vec w) = \frac2n\sum_{k=1}^n\Bigl( \vec\phi\bigl(\vec x^{(k)},\vec w\bigr)-\vec y^{(k)}\Bigr)\cdot {\partial\over\partial w_\alpha\!}\;\vec\phi\bigl(\vec x^{(k)},\vec w\bigr) \;. $$Beides gleichzeitig funktioniert aber nicht, ohne zu exotischen Schreibweisen zu greifen, die im Regelfall mehr Aufwand als Nutzen stiften. \quoteon(2021-08-27 01:02 - Wunderkind89 in Beitrag No. 29) Wenn du bei der Ableitung doppelte Summe schreibst, dann muss diese doch auch bei der Kostenfunktion stehen, oder? \quoteoff Da steht sie ja auch schon, und zwar implizit durch das Skalarprodukt:$$ \Bigl(\vec\phi\bigl(\vec x^{(k)},\vec w\bigr)-\vec y^{(k)}\Bigr)^2 = \sum_{s=1}^q \Bigl(\phi_s\bigl(\vec x^{(k)},\vec w\bigr)-y_s^{(k)}\Bigr)^2$$


   Profil
Brayn
Aktiv Letzter Besuch: im letzten Monat
Dabei seit: 07.09.2014
Mitteilungen: 262
Wohnort: Kaiserslautern
  Beitrag No.31, eingetragen 2021-09-03

Hallo, auch wenn die Fragen schon geklärt wurden, möchte ich dir gerne noch ein paar Tipps mitgeben. 1. Laut deines Themas beschäftigst du dich mit handgeschriebenen Zahlen. Da fällt mir direkt der MNIST Datensatz ein. Quasi das Hello World des Machine Learnings. Das ist ein typisches Klassifizierungsproblem, da dein Modell f von $\mathbb{R}^{n}$ zu $\{0,1,2, \ldots, 9\}$ abbildet. Ich habe hier als Eingabe einen Vektor der größe $n$ gewählt, da ich davon ausgehe, dass du die Bilder "flattest", d.h. die Zeilen werden hintereinander geschrieben und dann transponiert. 2. Deine Frage dreht sich nur um den MSE. Der MSE ist jedoch eine Fehlerfunktion die hauptsächlich bei der Regression verwendet wird, bei der Klassifizierung wird Cross-Entropy verwendet. Die Idee ist folgende: Mittels MSE berechnest du eigentlich den Fehler zwischen zwei Skalaren. Du schreibst zwar, dass y und b Vektoren sind, das kommt aber daher, dass du mit einer Batch > 1 trainierst. Gehen wir nochmal einen Schritt zurück: Wie sieht eigentlich dein Modell aus? Gibt es einen Vektor aus oder ein Skalar? Angenommen du verfolgst den vermutlich intuitiven Weg mit der Regression, dann übergibst du dem Modell ein Bild (evtl schon "geflattet") und erwartest als Ausgabe die Zahl die auf dem Bild zu sehen ist. Dann verwendest du MSE. Das Problem dabei ist: Wenn das Bild eine 1 zeigt und dein Modell eine 7 vorhersagt, dann muss das nicht zwingend schlecht sein, da die 1 und 7 Ähnlichkeiten haben. Den Fehler, den du ja mit MSE berechnest ist aber ziemlich groß, da 1 und 7 weit auseinander liegen. Nehmen wir jetzt mal an, du schreibst dein Modell als Klassifizierer. Dann ist die Ausgabe kein Skalar mehr, sondern ein Vektor der so Länge k, wobei k die Anzahl der Klassen ist (in deinem Fall also 10). Die Idee dabei ist, dass der i-te Eintrag des Vektors die Wahrscheinlichkeit angibt, mit der das Modell zu genau dieser Zahl tendiert. Beispiel: Du hast drei Klassen (Hund, Auto, Katze) und die Modellausgabe ist (0.6, 0.05, 0.35), dann "denkt" dein Modell, dass es sich bei dem Bild zu 60% um einen Hund, zu 5% um ein Auto und zu 35% um eine Katze handelt. Hier erkennst du wieder den Vorteil der Klassifizierung mit Cross-Entropy; Hund entspricht Klasse 1 und Katze Klasse 3 ("weit" auseinander aber dennoch ähnelt ein Hund einer Katze mehr als einem Auto). Damit das ganze funktioniert, muss aber auch deine Grundwahrheit ein Vektor sein. Falls das obige Bild einen Hund zeigen würde, sähe der so aus (1, 0, 0). Dazu sagt man one hot encoding. Des Weiteren musst du sicherstellen, dass der Ausagevektor die Kriterien einer Wahrscheinlichkeitsverteilung erfüllt. Dazu verwendest du am besten als letzte Aktivierungsfunktion Softmax. Liebe Grüße und viel Erfolg bei deiner Bachelorarbeit, Matthias


   Profil
Wunderkind89
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 15.03.2018
Mitteilungen: 97
  Beitrag No.32, vom Themenstarter, eingetragen 2021-09-03

Schau mal auf diese Seite: https://towardsdatascience.com/derivative-of-the-softmax-function-and-the-categorical-cross-entropy-loss-ffceefc081d1 Ich verstehe die Summen irgendwie nicht, wo er Summen mit dem folgenden Index schreibt i != j 1. Bis wohin gehen seine Summen? ich dachte, dass er da einzelne Zeilen der Ableitung von Softmax-Funktion betrachtet aber das scheint nicht der Fall zu sein wegen Begründung 2 2. Sagen wir b ist mein Ist-Vektor und c ist mein Soll-Vektor. In der Ableitung der Softmax stehen nur Ist-Vektoren und kein einziger Soll-Vektor. Dadurch, dass bei dem Typen auf der Seite ein Ist-Vektor sich in der Summe weggekürzt hat, steht bei ihm nach seinen Berechnungen c(1-b). In der Ableitung der Softmax stehen hingegen b(1-b) und -bb und er betrachtet tatsächlich c(1-b) als wäre das b(1-b)? *ich schreibe das nur grob weil mir ist klar, dass b(1-b) und -bb mal gleich und mal verschieden sind, wenn man die Ableitung der Softmax betrachtet. Grund Warum ich das denke, dass da etwas nicht stimmt: weil er schreibt in paar Sätzen, dass bei b(t-b) das t je nach fall t = 0 oder t = 1 sein kann, also betrachtet er tatsächlich b(1-b) in seiner Summe von der Softmax?! Oder noch konkreter: Wenn sich etwas wegkürzt, dann darf es nicht mehr das Gleiche sein?! Also schaut her: b(1-b) und 1/b * b(1 - b) sind ja verschieden! Jemand eine Ahnung vlt. steckt bei dem Autor ein ganz anderer Gedankengang, weil da blicke ich gerade nicht durch ^^


   Profil
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 2657
  Beitrag No.33, eingetragen 2021-09-03

Was du schreibst, ist für mich leider kaum zu verstehen. \quoteon(2021-09-03 19:13 - Wunderkind89 in Beitrag No. 32) Sagen wir b ist mein Ist-Vektor und c ist mein Soll-Vektor. \quoteoff Dass du, wie hier, alternative Bezeichnungen einführst, macht die Sache nicht einfacher. Bleib doch bei denen des Autors: Der Output $\bf s$ der Softmax-Funktion ist der Ist-Vektor, $\bf y$ ist der Soll-Vektor. \quoteon(2021-09-03 19:13 - Wunderkind89 in Beitrag No. 32) Bis wohin gehen seine Summen? \quoteoff Die Summen laufen von $1$ bis $C$, wobei $C$ die Anzahl der Kategorien bezeichnet. Die drei Vektoren $\bf z$ (Ergebnis des Output-Layers = Input der Softmax-Funktion), $\bf s$ (Output der Softmax-Funktion) und $\bf y$ (Soll-Vektor) haben alle die Dimension $C$. \quoteon(2021-09-03 19:13 - Wunderkind89 in Beitrag No. 32) ich dachte, dass er da einzelne Zeilen der Ableitung von Softmax-Funktion betrachtet \quoteoff Es kommen zwei verschiedene Ableitungen vor: 1. $\displaystyle{\partial s_i\over\partial z_j}$ ist die Ableitung einer Komponente der (vektorwertigen) Softmax-Funktion nach einer Komponente ihres Input-Vektors. Alle diese $C^2$ Ableitungen zusammen bilden die Jacobimatrix $J_{\rm softmax}$. 2. $\displaystyle{\partial\cal L\over\partial z_j}$ ist die Ableitung der skalaren Funktion, die entsteht, wenn man aus dem Output der Softmax-Funktion und dem Soll-Vektor die Kreuzentropie berechnet. Alle diese $C$ Ableitungen zusammen bilden den Vektor $\displaystyle{\partial\cal L\over\partial\bf z}$. \quoteon(2021-09-03 19:13 - Wunderkind89 in Beitrag No. 32) In der Ableitung der Softmax stehen nur Ist-Vektoren und kein einziger Soll-Vektor. \quoteoff Mit der Ableitung ${\partial s_i\over\partial z_j}$ der Softmax-Funktion nach ihrem Input hat der Soll-Vekor noch nichts zu tun und kann daher auch nicht dort auftauchen. In der Ableitung ${\partial\cal L\over\partial z_j}$ der Kreuzentropie (die ja für den Ist/Soll-Vergleich verantwortlich ist) taucht der Soll-Vekor $\bf y$ wie zu erwarten auch auf.


   Profil
Wunderkind89
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 15.03.2018
Mitteilungen: 97
  Beitrag No.34, vom Themenstarter, eingetragen 2021-09-03

Danke dir so wie immer und allen anderen natürlich auch! Mein Problem ist immer noch das hier: - sum(y_i * (1-s_j),i !=j,c) Schau, das was da in der Summe steht. Warum betrachtet er es einmal für 1. {i=j}=1 und 2. {i=j}=0 Wenn ich mir die Ableitung der Softmax anschaue, dann ist das eine quadratische Matrix. Die hat auf der Diagonalen: s_i(1-s_i) und ansonsten:-s_i*s_j Wenn der Typ aber sowas schreibt, wie 1. {i=j}=1 und 2. {i=j}=0 dann meint er die Einträge der Matrix aber das passt irgendwie nicht, denn in seiner Summe steht y_i und wenn er die Einträge der Matrix betrachtet dann muss statt y_i ein s_i stehen. Mir ist klar, dass das y_i bei der Ableitung der Kreuzentopie wie eine Konstante betrachtet wird und stehen bleibt. Was mich eher stört ist seine Betrachtung und Vergleich mit der Ableitung der Softmax und wenn er die Einträge der Matrix meint, dann müsste er außerdem das hier schreiben: {i!=j}=0


   Profil
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 2657
  Beitrag No.35, eingetragen 2021-09-03

\quoteon(2021-09-03 20:56 - Wunderkind89 in Beitrag No. 34) Mein Problem ist immer noch das hier: - sum(y_i * (1-s_j),i !=j,c) \quoteoff Ein solcher Term taucht doch nirgendwo auf. Die Ableitung der Kreuzentropie liefert$$ {\partial\cal L\over\partial z_j} = -\sum_{i=1}^C{y_i\over s_i}\,{\partial s_i\over\partial z_j} = -\sum_{i=1}^C{y_i\over s_i}\,s_i\,(\delta_{ij}-s_j) = -\sum_{i=1}^Cy_i\,(\delta_{ij}-s_j) \;, $$und der Autor schreibt das Kroneckersymbol $\delta_{ij}$ als $1\{i=j\}$. Jetzt kann man diese Summe entweder (wie es der Autor macht) in die Summanden mit $i\ne j$ und den Summanden mit $i=j$ aufspalten, oder man rechnet gleich$$ -\sum_{i=1}^C y_i\,(\delta_{ij}-s_j) = -\sum_{i=1}^C y_i\,\delta_{ij} + \left(\sum_{i=1}^Cy_i\right)s_j = -y_j+s_j \;. $$


   Profil
Wunderkind89
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 15.03.2018
Mitteilungen: 97
  Beitrag No.36, vom Themenstarter, eingetragen 2021-09-03

Ok, jetzt weiß ich, dass das eine Schreibweise für Kroneckersymbol war (was dazu gelernt). Du schreibst \delta_(i,j) als 1{i=j}. Etwas trivial aber: Ich hab mir den kurzen Beweis angeschaut und für i!=j wäre es auch \delta_(i,j) = \delta_(j,i) Kannst du jetzt einfach so schreiben \delta_(i,j) für i=j? Weil laut dem Beweis kann dieses Symbol auch i!=j meinen. Wie würdest du im Fall i!=j dein \delta schreiben? Der Autor führt dieses Symbol so ein: pdiff(z_i,z_j) = .....


   Profil
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 2657
  Beitrag No.37, eingetragen 2021-09-03

\quoteon(2021-09-03 23:22 - Wunderkind89 in Beitrag No. 36) Der Autor führt dieses Symbol so ein: pdiff(z_i,z_j) = ..... \quoteoff Darüber, dass das etwas mit dem Kroneckersymbol zu tun hat, hatten wir doch oben schon gesprochen: \quoteon(2021-08-27 01:30 - zippy in Beitrag No. 30) Es ist generell$$ {\partial\vec f\over\partial\vec x} = \left({\partial f_i\over\partial x_j}\right)_{i,j=1,\ldots,n} $$und damit speziell$$ {\partial\vec x\over\partial\vec x} = \left({\partial x_i\over\partial x_j}\right)_{i,j=1,\ldots,n} = \left(\delta_{ij}\right)_{i,j=1,\ldots,n}=1_n \;.$$\quoteoff


   Profil
Wunderkind89
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 15.03.2018
Mitteilungen: 97
  Beitrag No.38, vom Themenstarter, eingetragen 2021-09-04

Mal was ganz anderes: Vorweg der Hinweis: in meiner Iterationsvorschrift für Gradientenabstiegsverfahren betrachte ich Gewichtsmatrizen und der Gradient von C kriegt bei mir alle Gewichtsmatrizen des Neuronalen Netzes (Beitrag No.28) Das Ganze muss natürlich zu dem hier passen: Sei C eine Kostenfunktion und sei w^k eine Matrix und a ein Vektor. Dann schreibe ich: (1) pdiff(C,w^k)= pdiff(a^k,w^k)*(produkt(pdiff(a^l,a^(l-1)),l=k+1,n))*pdiff(C,a^n) Angenommen, ich will das hier pdiff(a^k,w^k) berechnen, dann ist das, was daraus entsteht ein Tensor, weil wenn ich Vektor nach einer Matrix ableite, dann kriege ich einen Tensor raus. Das Ganze wird mit einem Produkt multipliziert. Es müssen also auch die Dimensionen passen. Problem: 1. Wie schreibe ich math. einen Tensor auf? 2. Passen die Dimensionen? Meine alte Idee (mittlerweile verworfen): ich hab Gewichtsmatrizen als Vektoren aufgefasst, also: (a,b;c,d) = (a;b;c;d) Das ist aber blödsinn, denn so eine Schreibweise hab ich noch nie gesehen, wo man eine Matrix als Vektor auffasst. Außerdem werden die Dimensionen nicht mehr passen, wenn ich die Jakobimatrix bilde und diese mit anderen Matrizen multipliziere (siehe (1)). Vorteil ist hier, dass ich mir die Jakobimatrix leichter aufschreiben kann. Neue Idee: Ich hab eine Gewichtsmatrix. Die ist bei mir so definiert, dass die erste Zeile den ersten Neuron berechnet, die zweite Zeile den zweiten Neuron usw. Die einzelnen Zeilen meiner Gewichtsmatrix stehen also für Gewichtsvektoren. Dann könnte ich doch bei pdiff(a^k,w^k) den Vektor a^k immer Zeile für Zeile meiner Gewichtsmatrix teilen und zwar solange, bis ich nicht durch die ganze Gewichtsmatrix durchgegangen bin. 3. Wie würden solche Operationen math. überhaupt aussehen? 4. Was wäre pdiff(a^k,w^k) wenn ich mit meinem w komplett durch alle Zeilen meiner Gewichtsmatrix durchgegangen bin? Wäre das eine Jakobimatrix und wenn ja wie würde die aussehen? Zusammengefasst: ich will, dass (1) in Anbetracht meiner Dimensionen passt. Ps: wenn man jetzt diese Herangehensweise mit der Ableitung der Cross Entropy vergleicht, dann wurde da anders rangegangen und der Autor ist nicht wirklich auf die Dimensionen eingegangen, da er das Ganze nur Elementweise betrachtet und verallgemeinert hat (am Ende hat er Vektoren stehen). Liebe Grüße


   Profil
zippy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 24.10.2018
Mitteilungen: 2657
  Beitrag No.39, eingetragen 2021-09-04

\quoteon(2021-09-04 00:42 - Wunderkind89 in Beitrag No. 38) wenn man jetzt diese Herangehensweise mit der Ableitung der Cross Entropy vergleicht, dann wurde da anders rangegangen und der Autor ist nicht wirklich auf die Dimensionen eingegangen, da er das Ganze nur Elementweise betrachtet und verallgemeinert hat (am Ende hat er Vektoren stehen). \quoteoff Der Autor hat tatsächlich den Hauptteil der Rechnung komponentenweise durchgeführt. Und am Ende wurden die Ergebnisse wieder zu Matrizen oder Vektoren zusammengefasst. (Dieses Zusammenfassen hat nichts mit "Verallgemeinern" zu tun.) Warum willst du es denn anders machen? Wenn du nicht komponentenweise rechnen willst, wirst du eine Reihe von Konventionen (z.B. wie eine Ableitung nach einer Matrix zu verstehen ist) und Schreibweisen (z.B. das am Anfang auftauchende Hadamard-Produkt) benötigen und auch Rechenregel wie Produkt- und Kettenregel auf diese neuen Schreibweisen ausdehnen müssen. Aber was gewinnst du dabei?


   Profil
-->> Fortsetzung auf der nächsten Seite -->>
Seite 1Gehe zur Seite: 1 | 2  

Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2021 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]