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 2 von 2     12   
HERMES

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

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

  Alt 19. Sep 2007, 16:17
Als Ausgabeneuronen werden eigentlich nur die "letzten" bezeichnet, also die die ihre erregung nicht mehr an ein anderes Neuron weitergeben.

Das mit dem lernen ist leider nicht so einfach. Schon für ein einfaches Perzeptron benötigt man nicht ganz triviale Mathematik. Um die Gewichtungen zu optimieren wird idr. das Gradienten(abstiegs)verfahren iterativ eingesetzt, bis das Ergebnis gut genug ist. Allerdings klappt das bei einem einfachen Perzetron wiederum nur wenn der Lösungsraum linear separierbar ist (für binäre Neuronen).

Lösungsraum linear separierbar bedeutet in etwa, dass man eine Grenze ziehen kann, und alles was links davon ist eine Ausgabe und alles rechts davon die andere Ausgabe.
  Mit Zitat antworten Zitat
menschjens

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

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

  Alt 20. Sep 2007, 21:20
@ NamenLozer und Torpedo
Habe leider erst heute mal wieder Zeit gefunden, hier vorbei zu surfen. Sind ja schon etliche Antworten gekommen. Gibt also kaum noch was zu ergänzen, oder?

Vielleicht noch, dass man in die Neuronen gern die Sigmoidfunktion reinpackt. Sie lautet:

   Result := 1 / (1 + exp(-x/t)) wobei x die Summe aller gewichteten Eingangssignale eines Neurons ist.

Man nimmt sie deshalb so gerne, weil sie im ganzen Definitionsbereich monoton wachsend und stetig und differenzierbar ist.
Dadurch lässt sich bei der Rückwärtsrechnung mathematisch recht einfach berechnen, wie die Synapsengewichte verändert werden müssen, damit das Ergebnis besser wird. Außerdem hat sie als Ergebnis immer einen Wert zwischen 0 und 1

Vernetzt man nun viele dieser Neuronen z.B. in 3 Schichten (E, V und A), dann sieht die Vorwärts-Reizleitung in einem solchen Netz also für die Strecke von den Eingabeneuronen zu den verdeckten Neuronen so aus:

Delphi-Quellcode:
  for V := 1 to MaxV do
  begin
    SummeV[V] := 0;
  end;
  for V := 1 to MaxV do
  begin
    for E := 0 to MaxE do // hinter dem Index E=0 verbirgt sich RE[0]=-1 und GEV[0,V]=Biaswert des Neurons Nr.V
    begin
      SummeV[V] := SummeV[V] + GEV[E,V] * RE[E];
    end;
  end;

  for V := 1 to MaxV do
  begin
    RV[V] := sig(SummeV[V]);
  end;
GEV sind die Synapsengewichte (und Biaswerte), RE die Reizwerte der Eingabeneuronen, RV die Reizwerte der verdeckten Neuronen.
In der nächsten Schicht (zu den Ausgabeneuronen) dann analog.

Bei der Rückwärtsrechnung werden dann die Synapsengewichte GEV bzw GVA entsprechend der aufgetretenen Abweichung zum Sollergebnis angepasst. Hier multipliziert man aber noch einen Lernfaktor 0 < LF < 1 mit rein. Schließlich bringt dich dein Lehrer ja auch nicht gleich bei jedem Fehler um, sondern geht sie Sache etwas geduldiger an. ;o)
Die Formeln hierfür führen aber wohl hier zu weit...
Jens-Uwe Horn
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

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

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

  Alt 20. Sep 2007, 22:50
Hi, lese dir das mal durch http://www.delphipraxis.net/internal...ect.php?t=9450

Dort findest du auch eine fetige NN Komponente von mir mit Sourcen und Beispiel.

Diese demonstriert auch das die Sigmoid Funktion eben nich die einzigste Aktivierungsfunktion ist. Diese wird sehr oft nur für die Input&Output Schicht benutzt. Für die Hidden Units haben sich andere Aktivierungsfuntionen bewährt. Besonderts wenn man Bipolare Unit benutzt sind die Sigmoid Funktionen nicht die beste Wahl.

Um es dem Designer solcher Netze einfacher zu machen, sprich die Wahl der Aktivierungsfunktionen, die Wahl ob Unipolar oder Bipolar, die Wahl der Anzahl der Hidden Units und Layer, die Verküpfungen dieser Units untereinander usw. usw. habe ich ein Cascade Correlation Network implementiert. Das hat den Vorteil das der Designer nur die Input&Output definieren muß und der Rest baut sich das Netzwerk quasi beim Training selber auf. Es wächst quasi von selbst so lange bis es das Trainingsziel erreicht hat. Es entscheidet auch selbstständig welche Aktivierungsfunktionen für die Units am besten geeignet sind, und es versucht selbsständig die Verknüpungen der Unit zu optimieren. Dabei wird das QuickProp Verfahren für die Backpropagation benutzt und der gesamte Trainingsprocesss läuft per Backtracking ab.

Gut, der einzigste Hacken dabei ist das man schon ein bischen Fachwissen benötigt um diese Komponente mit all ihren Einstellungsmöglichkeiten zu verstehen und benutzen zu können. Ist leider immer so bei solchen Dingen.

Gruß Hagen
  Mit Zitat antworten Zitat
Namenloser

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

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

  Alt 23. Sep 2007, 19:28
Wow, wirklich faszinierend, was das Programm leistet (großes Dankeschön an Hagen!)

Auf jeden Fall habe ich jetzt eins verstanden: das Prinzip ist simpel, aber die Umsetzung ist kompliziert :/. Momentan fehlt mir wohl für vieles einfach noch das mathematische Verständnis, oder mein geist ist einfach zu beschränkt dafür .

Ich werde mir aber Hagens Komponente wohl noch einmal genauer anschauen und (wenn möglich) einige in dem Programm nicht genutzte Funktionen rauskürzen, um mehr Übersicht zu bekommen. Die Informationen auf neuronalesnetz.de werde ich mir sicher auch noch einmal anschauen, und versuchen sie zu verstehen. Außerdem könnnte ich auch noch meine Mathelehrerin ein paar sachen fragen, die hat imo sogar eine Diplomarbeit über neuronale Netze geschrieben.

Also, wenn ich weiter bin bzw. eine Frage habe, werde ich mich sicher nochmal hier melden!

Btw: Wie viel Liter Kaffee hast du für die Unit eigentlich gebraucht?
  Mit Zitat antworten Zitat
Benutzerbild von everdream
everdream

Registriert seit: 22. Feb 2007
Ort: Hiddenhausen
192 Beiträge
 
Delphi 2005 Personal
 
#15

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

  Alt 14. Nov 2007, 21:15
Auch auf die Gefahr hin, dass ich jetzt gehauen werde, aber kann man ein neuronales netz für ein sehr einfaches Projekt nicht auch durch wenige arrays simulieren? das wäre meiner meinung nach ein sehr einfacher weg...
Max
"Das Ziel ist im Weg!"
  Mit Zitat antworten Zitat
Schorschi5566

Registriert seit: 6. Feb 2006
197 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#16

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

  Alt 14. Jul 2015, 22:46
Servus DP,

ist schon acht Jahre her, dass hier was zum Thema gepostet wurde, aber ich mach's mal trotzdem.

Ich suche nach einer Art Mustererkennung in Bildern. Beispielsweise Farben oder Formen.

Wäre sowas mit neuronalen Netzen denkbar?

Beispiel: Es gibt Bilder, die immer einen roten Kreis ähnlicher Größe haben, aber an unterschiedlichen Positionen.

Könnte ein neuronales Netz diese Ähnlichkeiten erkennen und von Bildern unterscheiden, die keinen roten Kreis haben?

Kann man sowas mit Hagens Komponente realisieren?

Mein Ansatz wäre die Bilder zu vereinfachen, was die Pixelanzahl angeht (Skalieren auf eine bestimmte Größe) und dann für jedes Pixel ein "Neuron" zu erzeugen. Dann würde ich das Netz mit bekannten Bildern trainieren (falschen und richtigen).
Ist das zu naiv gedacht oder könnte das gehen?

Bin dankbar für alle Hinweise.


Viele Grüße,
Uwe
Uwe
"Real programmers can write assembly code in any language." - Larry Wall
Delphi programming rocks
  Mit Zitat antworten Zitat
Benutzerbild von frankyboy1974
frankyboy1974

Registriert seit: 7. Apr 2015
Ort: SH
169 Beiträge
 
Delphi XE7 Professional
 
#17

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

  Alt 15. Jul 2015, 09:53
Hallo,

grundsätzlich kann man neuronale Netze sicherlich zur Mustererkennung benutzen. Ob man das Tool von Hagen, dafür verwenden könnte, kann ich nicht sagen. War mir etwas zu Umfangreich, um dies zu beurteilen.
Wenn man mir die Aufgabe stellen würde, zu überprüfen ob ein Kreis bestimmter Farbe sich innerhalb einer Grafik befindet, würde ich dies einfach brutal durchprobieren. Oder anders formuliert, ich suche innerhalb meines Array aus Pixel den gewünschten Farbwert. Das ist mein Ausgangspunkt. Jetzt probiere ich jeden beliebigen (bis zu einen Maxaimalwert) Radius aus, berechne daraus die anderen Pixelkoordinaten meines gedachten Kreises und überprüfe diese auf den Ursprungsfarbwert. Wäre relativ einfach zu programmieren und müsste wahrscheinlich auch ausreichend schnell durchlaufen.

mfg

frank
Java ist auch eine Insel.
Ist Delphi von Oracle?
In meiner Buchstabensuppen fehlt das C++!
  Mit Zitat antworten Zitat
Caps

Registriert seit: 23. Mär 2006
Ort: Leipzig
299 Beiträge
 
#18

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

  Alt 15. Jul 2015, 12:13
Wenn es um bekannte geometrische Figuren geht, bietet sich die Hough-Transformation an.

lg Caps
"Der Mode cmCFS8 ist prohibitär und von mir entwickelt."
  Mit Zitat antworten Zitat
hanvas

Registriert seit: 28. Okt 2010
166 Beiträge
 
Delphi 11 Alexandria
 
#19

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

  Alt 15. Jul 2015, 12:45

Ich suche nach einer Art Mustererkennung in Bildern. Beispielsweise Farben oder Formen.

Wäre sowas mit neuronalen Netzen denkbar?
Natürlich kann man so etwas mit neuronalen Netzen machen.

Aber bei speziellen Problemen gibt es bessere und oft auch einfachere (im Sinne von einfacher zu Verstehen, nicht im Sinne von einfacher zu implementieren) Lösungen


Beispiel: Es gibt Bilder, die immer einen roten Kreis ähnlicher Größe haben, aber an unterschiedlichen Positionen.

Könnte ein neuronales Netz diese Ähnlichkeiten erkennen und von Bildern unterscheiden, die keinen roten Kreis haben?
Die Stärken von neuralen Netzwerken liegen darin das diese eine gewisse Abstraktionsfähigkeit haben. Mit anderen Worten, wenn Dein Ausgangsmaterial verrauscht ist und viele Bildstörungen hat die mit "normalen" Methoden der Bildbearbeitung nicht in den Griff zu bekommen sind (man kann sehr viel Bildstörungen in den Griff bekommen) dann wären neuronale Netzwerke tatsächlich eine gute Wahl, auch dann wenn es mal rote Kreise, mal orange Ellipsen und ab und zu Rechtecke mit abgerundeten Ecken sind könnte ein neuronales Netz durchaus erkennen.

Wenn Du hingegen saubere unverrauschte Bilder hast dann ist deine Frage tatsächlich nur die ist "hat roten Kreis", dann hast Du ein gutes Beispiel dafür das andere Lösungen unter Umständen besser geeignet sind.

Am zuverlässigsten wäre dann dein Problem gelöst wenn Du deine Bilder mit Hilfe der Hough-Transformation analysierst. (https://de.wikipedia.org/wiki/Hough-Transformation). Die (generalisierte) Hough - Transformation wäre auch in der Lage beliebige Formen zu finden so lange diese mathematisch beschreibbar sind.

Du bekämst als Ergebnis eine Liste mit Kreisen bei denen Du dann nur noch testen müsstest ob diese tatsächlich rot sind. Eine fast fertige Implementierung findest Du in den Beispielen zu https://github.com/Laex/Delphi-OpenCV.

Kann man sowas mit Hagens Komponente realisieren?

Mein Ansatz wäre die Bilder zu vereinfachen, was die Pixelanzahl angeht (Skalieren auf eine bestimmte Größe) und dann für jedes Pixel ein "Neuron" zu erzeugen. Dann würde ich das Netz mit bekannten Bildern trainieren (falschen und richtigen).
Ist das zu naiv gedacht oder könnte das gehen?
Prinzipell wäre das schon möglich. Aber es kommt wirklich auf die ganz konkrete Frage an um sagen zu können welche Architektur die geeignetste wäre.

cu Ha-Jö
  Mit Zitat antworten Zitat
Schorschi5566

Registriert seit: 6. Feb 2006
197 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#20

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

  Alt 15. Jul 2015, 16:22
Hallo DP,

vielen Dank für Eure Antworten. Das bringt mich schonmal weiter. Ich werde mir die Links mal ansehen.

Es können unterschiedlichste Formen und Farben sein, der rote Kreis war nur als Beispiel gewählt.



Viele Grüße,
Uwe
Uwe
"Real programmers can write assembly code in any language." - Larry Wall
Delphi programming rocks
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 19:24 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