![]() |
Neuronale Netze - Erklärung für 'nen 13-Jährigen gesucht :D
Hallo,
![]() Ich habe kein konkretes Projekt oder so, und cih brauch das auch nicht für die Schule, es interessiert mich eifnach :D Ich weiß, dass das sicher kein einfaches Thema ist, aber könnte mir das vielleicht trotzdem jemand erklären (versuechn)? :gruebel: |
Re: Neuronale Netze - Erklärung für 'nen 13-Jährigen gesucht
im prinzip ist ein neuronales netz ganz einfach.
es ist sogar ganz einfach zu coden:
Delphi-Quellcode:
Sobald die Summe der Input-Signale den InputThreshold übersteigt, gibt das Neuron ein Signal der Stärke OutputSignal an alle Output-Neuronen.
TNeuron = class
Input, Output: array of TNeuron; InputThreshold, OutputSignal: Byte; end; Man legt nun ein Netzwerk von neuronen an, wobei es jeweils eine anzahl von roh-input neuronen, die groß genug ist, um alle möglichen (gewollten) eingangssignale aufzunehmen, und eine anzahl von roh-output neuronen gibt, die dann das ergebnis ausgeben. Dann nimmt man eine große Anzahl von trainingsdatensätzen, in denen der gegebene input und das gewollte ergebnis eingetragen sind. Damit muss das neuronale netz so trainiert werden, dass die Verbindungen und Reizschwellen so eingestellt sind, dass zu jedem eingabedatensatz möglichst genau der richtige ausgansdatensatz herauskommt. In so einem neuronalen netz kann es natürlich auch feedback loops geben. Im Prinzip also recht trivial, in der Umsetzung aber recht komplex. negaH kennt sich da glaube ich besser aus und hat auch schon einmal selber eins gebaut. |
Re: Neuronale Netze - Erklärung für 'nen 13-Jährigen gesucht
Hm... 13 Jahre... Bist in der 7. Klasse oder? Hattet ihr denn in Mathe schon Funktionen? Ich glaube, die kommen erst in der 8. Klasse...
Weiß ja nicht, ob du dich trotzdem schon ein wenig damit auskennst. Falls ja, könnte ich dir das Gröbste erklären. Falls nicht, fehlen mir so zu sagen die Worte... ;) Vielleicht erst mal so viel: In ein künstliches Neuron schickt man einige Zahlen rein (Aufgabe) und es berechnet daraus ein Ergebnis (Lösung). Wie man von den hineingeschickten Zahlen auf das RICHTIGE Ergebnis kommt, weißt aber nur du. Das Neuron rechnet zwar, hat aber keine Ahnung. Stell dir vor, du möchtest dieses Neuron jetzt trainieren, so dass es für bestimmte Aufgaben jeweils die ein bestimmtes Ergebnis herausbekommt. Das Neuron ist aber noch recht dumm, die Berechnungsformel im Neuron liefert zwar irgend welche Ergebnisse, aber die sind so gut wie immer falsch. Du (als Trainer des Neurons) hast aber den Vorteil, dass du für jede Aufgabe die richtige Lösung kennst. Und mit einem bischen Mathematik kannst du folgendes machen: 1. Du gibst dem Neuron eine Aufgabe (Zahlen rein). 2. Das Neuron berechnet mit seiner eingebauten Formel ein Ergebnis. 3. Du vergleichst das Ergebnis des Neurons mit dem dir bekannten (richtigen) Ergebnis. 4. Du veränderst die im Neuron eingebaute Formel ein kleines bisschen, so dass das Ergebnis nächstes Mal besser wird. 5. Du fängst wieder bei 1. an (sinnvollerweise mit anderen Aufgaben im Wechsel, denn nur eine Aufgabe wär ja langweilig) Nach und nach wird also die Formel im Neuron verändert. Und zwar so lange, bis dir die Ergebnisse des Neurons gut genug sind. |
Re: Neuronale Netze - Erklärung für 'nen 13-Jährigen gesucht
@menschjens
Wie werden diese Funktionen denn verändert? Einfach die Koeffizienten ein bisschen erhöhen? (zum Beispiel) Ich habe keine Ahnung wie so ein NN funktioniert und ich kann mir auch nicht vorstellen, wie eine Funktion eine Lösung hervorbingen kann, die nicht nur zufällig stimmt. :pale: Zum Beispiel ein NN, das Buchstaben (A-Z,a-b) von Ziffern (0-9) unterscheiden soll. Ich würde da jetzt als totaler Neuling 8 Neuronen erstellen (für jedes Bit eines). Wenn der Ausgang der Neuronen mehr als 70% "positiv" ist, dann würde ich die Eingabe als Zahl ansehen. Wäre das theoretisch richtig? Aber was wäre dann ein Beispiel für so eine Funktion? f(x) = a*x+b (wobei x entweder 1 oder 0 sein kann) Wahrscheinlich sind die Funktionen viel komplexer, oder? |
Re: Neuronale Netze - Erklärung für 'nen 13-Jährigen gesucht
Zitat:
Zitat:
Zitat:
|
Re: Neuronale Netze - Erklärung für 'nen 13-Jährigen gesucht
Hallo,
ich bin grad nur kurz da und ahbe erstmal alles überflogen. Ich les mir das morgen nochmal genauer durch. Btw: Ich bin in der achten Klasse und wir haben gerade (lineare) Funktionen. (Das ist mal wieder sowas von leicht :roll:. Nur verrechne ich mich immer xD) |
Re: Neuronale Netze - Erklärung für 'nen 13-Jährigen gesucht
Es gibt übrigens sogar nen Counter-Strike-Bot, der mit neuronalen Netzen arbeitet... wurde irgendwie für ne Facharbeit oder so geschrieben... ich glaub der joebot war das.
Der ist auch ziemlich gut. Kriegt halt als Input die Spielerpositionen und die Kartendaten, und als output kommt bewegen/drehen/schießen raus. der entwickelt sogar taktik, also z.B. sich zurückziehen. Hatte mir da auch mal die Dokumentation dazu durchgelesen... sollte sich im internet noch finden lassen. |
Re: Neuronale Netze - Erklärung für 'nen 13-Jährigen gesucht
|
Re: Neuronale Netze - Erklärung für 'nen 13-Jährigen gesucht
Hallo, danke für den Link!
Also ich habe das jetzt soweit verstanden: es gibt Eingabe-Neuronen, die die Werte an die Neuronen aus der Zwischenschicht übergeben. Dieser Wert wird dann noch mit der Wichtigkeit beider Neuronen multipliziert. Die Neuronen aus der Zwischenschicht sind eigentlich nichts anderes als Funktionen, die nach bestimmten Formeln aus einem X-Wert einen Y-Wert (Die Ausgabe) berechnet. Das Ergebnis wird dann an Ausgabe-Neuronen übermittelt, die wiederum den Wert als Eingabe an die nächste Zwischenschicht schicken, oder? Aber wie kann so ein Netzwerk "lernen" und wie findet man die richtigen Formeln fpr die Neuronen heraus? Ich habe gelesen, für das "Lernen" wird eine Änderung der Gewichtung einzelner Neuronen durchgeführt. Nach welchen Kriterien geschieht das? Woher weiß ein neuronales Netz, welche Gewichtungen es anpassen muss, wenn das Ergebnis nicht mit der Vorgabe übereinstimmt? :gruebel: Könnte jemand vielleciht ein möglichst simples Beispiel für ein neuronales Netz posten? Bis jetzt ist das alles sehr theoretisch, ich hätte gerne mal etwas "zum anfassen", was ich besser nachvollziehen kann. |
Re: Neuronale Netze - Erklärung für 'nen 13-Jährigen gesucht
Ganz einfach
Du als Kind möchtest spielen gehen. Deine Eltern möchten das du lernst das entweder - du nicht spielen darfst - oder du spielen darfst im 1. Falle versuchtst du spielen zu gehen und bekommst einen Schlag ins Gesicht, das schmerzt, oder du hälst dich an die Ausgangssperre und bekommst Schokolade, das belohnt. im 2. Fall versuchst du spielen zu gehen und bekommst ein Stückchen Schokolade, das belohnt, oder du gehst nicht spielen und wirst von deinen Eltern rausgeprügelt, das schmerzt. So ähnlich werden auch neuronale Netze trainiert. Man legt dem Netz verschiedene Input-Möglichkeiten vor und zu jeder dieser Inputs gleichermaßen den gewünschten Output den wir als Lehrer von ihm erwarten. Das Netzwerk wird nun während des Trainings seine Units langsam so anpassen das die richtigen Outputs erzeugt werden wenn bestimmte Inputs anliegen. In beiden Fälle passt sich das Netzwerk/Kind also den Gegebenheiten adaptiv an. Das wird meistens durch Backpropagation erledigt, also quasi das Rückwärts-Korregieren ausgehend von den Outputs über die hidden Units zur Inputschicht. Es ist ein geführtes Lernen, also mit einem Trainer der bestimmt was man wie erlernen soll. Entscheidend dabei ist das der Lehrer bei kausal zusammenhängenden zu erlernden Sachverhalten diese logische Kausalität nicht mißachtet, sprich sich widersprechende Dinge trainiren möchte, sprich einmal Hü und einmal Hot verlangt zu erlernen. Das passiert auf im Grunde einfache Weise. Es sieht einen Input und berechnet vorwärts den Output auf Grund der aktuellen Units. Dann wird festgestellt wie weit sich der berechnete Output des Netzes sich vom vorgegebenen Outout des Trainers unterscheidet, man beechnet also einen Fehlerwert. Mit hilfe dieses Fehlerwertes werden nun rückwärts alle Units angepasst. Also ein stark falscher Output, hoher Fehlerwert, führt da zu ds bei der Backpropagation die davorliegenden Units stärker in die Gegenrichtung angepasst werden, bzw. genauergesagt werden die Gewichtungen der Verbindungen zwischen den Units angepasst. Quasi die Nervenstränge wie in unserem Hirn (mal so geagt, auch wenn dieser Vergleich unzulässig ist). Es gibt aber auch Netzwerke die ganz anders arbeiten, zb. Kohonen & SOM. Diese abstrahieren aus einer Menge von Inputdaten eine Matrix aus Gemeinsamkeiten die sich in allen Inputdaten finden lassen und das ist dann der Output. Gruß Hagen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:33 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz