Ich habe Deinen Artikel gelesen. Die Idee der Neuronalen Netze für Laien begreifbar zu machen ist gut (immerhin wird viel darüber geredet, aber die wenigsten wissen überhaupt auch nur Ansatzweise, was passiert), allerdings finde ich, dass eine zu stark vereinfachte Darstellung, ganz ohne Mathematik, eher problematisch für das Verständnis ist.rudi hat geschrieben: ↑Fr 04 Aug, 2023 16:59 Mir ging es vor darum, als Grundidee zu vermitteln, dass man Input-Output Werte präsentiert und dann die Gewichte der Verbindungen danach ändert, ob ein Neuron etwas positives oder negatives zum Ergebnis beigetragen hat... Und hoffe, daß sich darunter viele Leute etwas vorstellen können.
Mit einer LUT arbeitet man im Prinzip so, wie man mit Tafelwerken und Tabellenbüchern arbeitet. Man sucht den Eingabewert in der Tabelle heraus und erhält das tabellierte Ergebnis (=Ausgabe). Wenn der Eingabewert irgendwo zwischen den tabellierten Werten liegt, was oft der Fall ist, dann nimmt man den nächstliegenden Eintrag (einfachste Vorgehensweise) oder interpoliert zwischen benachbarten Tabelleneinträgen, was zu einem genaueren Ergebnis führt.-paleface- hat geschrieben: ↑Fr 04 Aug, 2023 14:36 Das ist wie mit LUTs... Hab ich damals auch nicht gerafft.
Ah, alles klar ;)
Danke für dein Angebot, aber ich denke es gibt schon sehr viele Texte, welche die Basics mit der dahinterliegenden Mathematik recht klar darstellen, sofern man etwas mathematisches Verständnis mitbringt. Da wollte ich keinen weiteren dazu gesellen. Ich wollte (besonders als Grundlage für den zweiten Teil) mal versuchen auch Leute mitzunehmen, die bei Formeln immer gleich abschalten. Keine Ahnung, ob das letztlich eine gute Idee war, aber mal sehen.
Diffusions-Modelle als Teilgebiet der KI => full ack
Klar gibt es sehr viele einführende Texte, vor allem viele mittelmäßige. Alle Berechnungsvorschriften, auch wenn sie noch so einfach sind, wegzulassen verkompliziert die Sache IMO jedoch gewaltig, denn das Prinzip eines Perzeptrons ist wirklich ganz einfach zu verstehen. Die darauf aufbauenden Netze/Graphen sind es im Grunde auch. Kombiniert mit einem einfachen Beispiel, dann versteht es fast jeder.rudi hat geschrieben: ↑Fr 04 Aug, 2023 21:56Danke für dein Angebot, aber ich denke es gibt schon sehr viele Texte, welche die Basics mit der dahinterliegenden Mathematik recht klar darstellen, sofern man etwas mathematisches Verständnis mitbringt. Da wollte ich keinen weiteren dazu gesellen. Ich wollte (besonders als Grundlage für den zweiten Teil) mal versuchen auch Leute mitzunehmen, die bei Formeln immer gleich abschalten. Keine Ahnung, ob das letztlich eine gute Idee war, aber mal sehen.
Whow, das triggert natürlich ;)Das kannst Du besser.
Ich will gar nicht triggern. Eigentlich geht es mit nur darum, dass viele für Laien gedachte Erklärungen viel zu schwammig sind. So gibt es im Grunde gar keine Chance den Vorgang wirklich zu verstehen.
Wenn man will kann man die Grundideen IMO noch weniger "formal", dafür anschaulicher, beschreiben. Ich finde auch, dass viel zu viele Fachbegriffe fallen, ohne dass sie erklärt werden. Wenn man etwas nicht erklärt, kann man auch die Bezeichnung weglassen.rudi hat geschrieben: ↑Sa 05 Aug, 2023 07:42 Aber vielleicht nochmal anders. Kurz gegoogelt, und beispielsweise das hier unter den ersten Treffern gefunden:
https://www.heise.de/ratgeber/Neuronale ... ?seite=all
Das ist jetzt mit etwas Mathe und doch (beim Querlesen) ziemlich gut und verständlich.
Ja, die die meist in Einführungen herangezogenen Modellprobleme sind fast ausgelutscht. Sie eignen sich als erste Einführung in die Thematik aber durchaus recht gut.
Ja, ich fand ihn auch nicht schwer zu verstehen.Darth Schneider hat geschrieben: ↑Sa 05 Aug, 2023 08:54
Ich finde nicht das der Artikel unklar oder zu kompliziert geschrieben ist.
Das ist Software. Sie läuft bloß auf bestimmten Chips schneller als auf anderen. Zum Beispiel auf GPU besser als auf CPU.Jalue hat geschrieben: ↑Sa 05 Aug, 2023 10:10 Ich finde das Ganze ganz gut erklärt und verstehe das Prinzip, allerdings fehlt mir zum vollen Verständnis die Erklärung der technischen Umsetzung: Ist das Perpetron/Neutron eine Art Code-Snippet oder Hardware-basiert, so wie die Potenzialsenke (Pixel) auf einem Bildwandler? Und was sind die Schichten/Layer, in denen sie platziert sind? Sind das mehrere Chips "übereinander"? Hintereinander geschaltete Rechner? Oder ebenfalls nur verschiedene "Teilbereiche" eines Codes?
Von daher ist der Text ein bisschen so, als würde man jemanden versuchen zu erklären, warum ein Flugzeug fliegt, indem man ihm die Bernoulli-Gleichung erläutert, ohne zu erwähnen, dass es dazu bestimmter "Hardware" bedarf, also profilierter Tragflächen, irgendein Antrieb, usw.
Das künstliche Neuron ist keine Hardware und auch kein Code-Snippet. Es ist einer der am häufigsten eingesetzten und wiederkehrenden Berechnungsvorschriften in einem neuronalen Netzwerk. Im Grunde eine Art immer wieder eingesetzter Block/Baustein. Man kann es als eine Art Blackbox auffassen. Die tatsächliche Umsetzung kann in Soft- und Hardware auf unterschiedliche Art und Weise erfolgen. Warum dabei GPUs und spezielle Hardware aus Gründen der Performance besser als allgemeine CPUs geeignet sind, würde jetzt zu weit führen.Jalue hat geschrieben: ↑Sa 05 Aug, 2023 10:10 Ich finde das Ganze ganz gut erklärt und verstehe das Prinzip, allerdings fehlt mir zum vollen Verständnis die Erklärung der technischen Umsetzung: Ist das Perpetron/Neutron eine Art Code-Snippet oder Hardware-basiert, so wie die Potenzialsenke (Pixel) auf einem Bildwandler? Und was sind die Schichten/Layer, in denen sie platziert sind? Sind das mehrere Chips "übereinander"? Hintereinander geschaltete Rechner? Oder ebenfalls nur verschiedene "Teilbereiche" eines Codes?
Die Gewichte eines künstlichen Neurons werden in der Praxis erst im Trainingsschritt per Algorithmus ermittelt. Bei ganz einfachen Beispielen, kann man sie natürlich auch per Hand festlegen.dienstag_01 hat geschrieben: ↑Sa 05 Aug, 2023 11:43 Wie kann man die Gewichte verstehen? Beispiel: 1 Output verteilt sich auf 4 Inputs der nächsten Schicht. Werden die dann einfach 1/4, 1/2, 3/4 und 1 gewichtet oder liegen dem komplexe mathematische Modelle (vielleicht sogar je nach Aufgabe anders) zu Grunde?
Das hilft mir schon weiter, weil ich mich noch immer frage, was ist das Netz (mit seiner Mathe) und was sind die Daten bzw. an welcher Stelle kommen die ins Spiel. Und du schreibst gerade, die kommen bei den Gewichten ins Spiel.TheBubble hat geschrieben: ↑Sa 05 Aug, 2023 12:01Die Gewichte eines künstlichen Neurons werden in der Praxis erst im Trainingsschritt per Algorithmus ermittelt. Bei ganz einfachen Beispielen, kann man sie natürlich auch per Hand festlegen.dienstag_01 hat geschrieben: ↑Sa 05 Aug, 2023 11:43 Wie kann man die Gewichte verstehen? Beispiel: 1 Output verteilt sich auf 4 Inputs der nächsten Schicht. Werden die dann einfach 1/4, 1/2, 3/4 und 1 gewichtet oder liegen dem komplexe mathematische Modelle (vielleicht sogar je nach Aufgabe anders) zu Grunde?
Die Ausgabewerte einer vorangehenden Schicht können bzw. werden als Eingabe der nächsten Schicht verwendet. Die Anzahl muss zueinander passen. Bei der Verbindung von Schichten kommen (in der Regel) keine zusätzlichen Gewichte im Rahmen der Verbindung zwischen zwei als Blackbox anzusehenden Schichten zum Einsatz. Gewichte sind dann nur Teil der einzelnen Neuronen, die sich innerhalb einer Schicht befinden bzw. sie ausmachen.
Im Spezialfall so genannter Fully-Connected-Layers ist jedes Neuron seiner Schicht mit allen Eingängen seiner Schicht (und so in der Regel mit allen Ausgängen der vorangehenden Schicht) verbunden. Die Anzahl der Ausgänge der Schicht entspricht dann der Anzahl an Neuronen (da jedes Neuron immer genau einen Ausgabewert liefert). Jedes Neuron einer solchen Schicht hat seine eigenen Gewichte (und den Bias). Die Anzahl unabhängige Gewichte in einer Fully-Connected-Layer ist damit Anzahl der Eingänge mal Anzahl der Neuronen in der Schicht. Die Anzahl der Bias-Konstanten einer Schicht entspricht der Anzahl der Neuronen in der Schicht.
Ich vermute ich weiß, was noch zum Verständnis fehlt. Hier wäre jetzt ein Schaubild ideal, leider kann ich im Moment keines auf die Schnelle machen.
Ansonsten sind die Gewichte einfach nur reelle Zahlen.
Die Daten im Sinne der Eingabedaten? Bei der Anwendung eines fertigen Netzes sind dies die Eingabewerte für die erste Schicht aus künstlichen Neuronen. Oft werden die Eingabewerte auch als Eingabeschicht (input layer) bezeichnet bzw. als solche dargestellt.dienstag_01 hat geschrieben: ↑Sa 05 Aug, 2023 12:20 Das hilft mir schon weiter, weil ich mich noch immer frage, was ist das Netz (mit seiner Mathe) und was sind die Daten bzw. an welcher Stelle kommen die ins Spiel. Und du schreibst gerade, die kommen bei den Gewichten ins Spiel.
Wahrscheinlich auch bem bias.
Daten im Sinne von Aufgabenstellung. Gibt es in diesem Pixelbrei ein Gesicht? Wäre Aufgabenstellung (Pixelbrei als Daten). Trainingsdaten wären Bilder mit Gesichtern, beim Durchlaufen des Netztes optimieren die die Werte von Gewicht und bias.TheBubble hat geschrieben: ↑Sa 05 Aug, 2023 12:30Die Daten im Sinne der Eingabedaten? Bei der Anwendung eines fertigen Netzes sind dies die Eingabewerte für die erste Schicht aus künstlichen Neuronen. Oft werden die Eingabewerte auch als Eingabeschicht (input layer) bezeichnet bzw. als solche dargestellt.dienstag_01 hat geschrieben: ↑Sa 05 Aug, 2023 12:20 Das hilft mir schon weiter, weil ich mich noch immer frage, was ist das Netz (mit seiner Mathe) und was sind die Daten bzw. an welcher Stelle kommen die ins Spiel. Und du schreibst gerade, die kommen bei den Gewichten ins Spiel.
Wahrscheinlich auch bem bias.
Die Gewichte und Bias-Werte sind bei der Anwendung eines fertigen Netzes feste Konstanten. Die Eingabewerte sind natürlich variabel. Die Ausgabewerte werden einfach ausgerechnet.
Lediglich beim Training werden die Gewichte und Bias-Werte als noch zu bestimmende Variablen betrachtet. Hierbei kann man dann die bekannten Paare aus Eingabe- und Ausgabewerten (die Trainingsdaten) als konstant ansehen.
Etwas mehr, als mit "wuff, wuff" ins Forum zu bellen, ist aber doch erfreulich!Jalue hat geschrieben: ↑Sa 05 Aug, 2023 13:31 ... In einem Spielfilm über die Finanzmarkrise spielt Jeremy Irons einen Bankmanager. Als einer seiner Analysten ihm die komplexen Hintergründe des Crahs zu erklären versucht, unterbricht Irons ihn und sagt: "Erklären Sie es mir so, wie sie es einem Hund erklären würden." ..
..
Die Pixel/Helligkeitswerte von Bitmaps mit und ohne Gesichter wären die Eingabe. Soweit alles richtig. Beim Anwenden eines Netzes zum Erkennen von Gesichtern wird dann entschieden, ob es sich um ein Gesicht handelt (ja/nein Antwort). Das Netz unterscheidet somit Bitmaps von Gesichtern von allen übrigen Bitmaps.dienstag_01 hat geschrieben: ↑Sa 05 Aug, 2023 13:29 Daten im Sinne von Aufgabenstellung. Gibt es in diesem Pixelbrei ein Gesicht? Wäre Aufgabenstellung (Pixelbrei als Daten). Trainingsdaten wären Bilder mit Gesichtern, beim Durchlaufen des Netztes optimieren die die Werte von Gewicht und bias.
Richtig?
Ich bin mir jetzt nicht ganz sicher, wie ich Dich verstehen soll. Die Eingabe wird jedenfalls an ein oder mehrere künstliche Neuronen weitergegeben und von ihnen wird jeweils aus den Eingaben eine gewichtete Summe als Ausgabe berechnet.Jalue hat geschrieben: ↑Sa 05 Aug, 2023 13:31 Also, der "Hund Jalue" versteht die Sache so: Da gibt's die Black Box "Neuron" mit X Eingängen. Der Input aus dem Eingängen wird in der Black Box -qua einprogrammierten Erfahrungswerten- vermittels Bias und Gewichten so modifiziert, das ein wahrscheinlich korrekter, summierter Output dabei herauskommt.
Ob ein oder mehrere Schichten muss man als Blackbox sehen, die vom Problem abhängt. Jedenfalls kann man nicht grundsätzlich sagen, dass viele Schichten und viele Neuronen immer bessere Ergebnisse liefern (im Extremfall werden überflüssige Neuronen durch entsprechende Null-Gewichte einfach ausgeblendet).Jalue hat geschrieben: ↑Sa 05 Aug, 2023 13:31 Das wird nun an den nächsten Layer aus Neuronen weitergeleitet, in dem, so meine Vermutung, die Ergebnisse aus dem ersten Layer weiter summiert und fehlerkorrigiert werden. Je mehr Neuronen pro Layer und je mehr Layer insgesamt, desto präziser das Endergebnis und desto schneller der Prozess. So in etwa?
Das neue ist, dass man die Gewichte im Netz mit Hilfe vieler Trainingsdaten algorithmisch bestimmen kann, man also nur die Struktur und Aktivierungsfunktionen vorgibt. Darüber hinaus muss man auch nicht verstehen, warum das fertige Netz funktioniert.