AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Neuronale Netze - Erklärung für 'nen 13-Jährigen gesucht :D
Thema durchsuchen
Ansicht
Themen-Optionen

Neuronale Netze - Erklärung für 'nen 13-Jährigen gesucht :D

Ein Thema von Namenloser · begonnen am 18. Sep 2007 · letzter Beitrag vom 15. Jul 2015
Antwort Antwort
Seite 1 von 2  1 2      
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#1

Neuronale Netze - Erklärung für 'nen 13-Jährigen gesucht :D

  Alt 18. Sep 2007, 19:30
Hallo,

dieser Thread hat mir im Endeffekt den letzten Anstoß für diesen Thread hier gegeben. Ich finde neuronale Netze schon länger sehr interessant, aber leider weiß ich weder, wie diese funktionieren, noch wofür man diese benutzen kann. Neulich stand ein Artikel über Strategiespiele in der c't, wo neuronale Netze zwar in etwa erklärt wurden, aber verstanden habe ich davon nichts. (Sanft ansteigende Funktion exp(), Eingangs-, Ausgangs und Zwischenschicht, je mehr Neuronen in der Zwischenschicht desto besser... HÄ???)
Ich habe kein konkretes Projekt oder so, und cih brauch das auch nicht für die Schule, es interessiert mich eifnach

Ich weiß, dass das sicher kein einfaches Thema ist, aber könnte mir das vielleicht trotzdem jemand erklären (versuechn)?
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Neuronale Netze - Erklärung für 'nen 13-Jährigen gesucht

  Alt 18. Sep 2007, 19:37
im prinzip ist ein neuronales netz ganz einfach.

es ist sogar ganz einfach zu coden:

Delphi-Quellcode:
TNeuron = class
  Input, Output: array of TNeuron;
  InputThreshold, OutputSignal: Byte;
end;
Sobald die Summe der Input-Signale den InputThreshold übersteigt, gibt das Neuron ein Signal der Stärke OutputSignal an alle Output-Neuronen.

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.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
menschjens

Registriert seit: 21. Jun 2004
21 Beiträge
 
Delphi XE Professional
 
#3

Re: Neuronale Netze - Erklärung für 'nen 13-Jährigen gesucht

  Alt 18. Sep 2007, 20:39
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.
Jens-Uwe Horn
  Mit Zitat antworten Zitat
Torpedo

Registriert seit: 21. Dez 2003
410 Beiträge
 
#4

Re: Neuronale Netze - Erklärung für 'nen 13-Jährigen gesucht

  Alt 18. Sep 2007, 21:37
@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.

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?
  Mit Zitat antworten Zitat
HERMES

Registriert seit: 29. Nov 2004
142 Beiträge
 
#5

Re: Neuronale Netze - Erklärung für 'nen 13-Jährigen gesucht

  Alt 18. Sep 2007, 22:09
Zitat von Torpedo:
@menschjens
Wie werden diese Funktionen denn verändert? Einfach die Koeffizienten ein bisschen erhöhen? (zum Beispiel)
Es werden die sowohl Schwellwerte als auch die Gewichtungen der einzelnen Neuronen und Verbindungen verändert.

Zitat von Torpedo:
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?
Wenn du eine solche Klassifizierungsaufgabe hast, ist ein Binäres Perzeptron wohl am geeignetsten. Ein Perzeptron ist ein geschichtetes NN ohne Rückkoplung. Du kannst die Engabe sowohl Binär realisieren, als auch direkt, du hast nur ein Eingangsneuron, dessen Ausgangswert gleich dem ASCII Wert deines Zeichens ist (ich vermute mal, dass du ASCII Code als eingabe verwenden willst). Dann hast du ein Ausgabeneuron, das erregt ist wenn deine Eingabe ein Buchstabe und das nicht erregt ist, falls es eine Zahl ist - oder anders rum.

Zitat von Torpedo:
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?
Du kannst mit NNs alle berechenbaren Funktionen Berechnen.
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#6

Re: Neuronale Netze - Erklärung für 'nen 13-Jährigen gesucht

  Alt 18. Sep 2007, 22:34
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 . Nur verrechne ich mich immer xD)
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Neuronale Netze - Erklärung für 'nen 13-Jährigen gesucht

  Alt 19. Sep 2007, 00:03
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.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#8

Re: Neuronale Netze - Erklärung für 'nen 13-Jährigen gesucht

  Alt 19. Sep 2007, 00:09
eventuell da:

http://www.neuronalesnetz.de/
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#9

Re: Neuronale Netze - Erklärung für 'nen 13-Jährigen gesucht

  Alt 19. Sep 2007, 15:58
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?

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.
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#10

Re: Neuronale Netze - Erklärung für 'nen 13-Jährigen gesucht

  Alt 19. Sep 2007, 16:14
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz