AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Neuronale Netze ???

Ein Thema von Dannyboy · begonnen am 4. Sep 2003 · letzter Beitrag vom 17. Okt 2023
Antwort Antwort
Seite 3 von 8     123 45     Letzte »    
Benutzerbild von X-Dragon
X-Dragon

Registriert seit: 14. Jan 2003
Ort: Schortens
289 Beiträge
 
Delphi 6 Enterprise
 
#21

Re: Neuronale Netze ???

  Alt 2. Jan 2004, 15:04
Eine "intelligente" Suchmaschine wäre auf jeden Fall eine sehr brauchbare Sache (wobei ich meistens einen schnellen Zugriff auf die Informationen brauche). Ich nutze sehr häufig Google und hab inzwischen schon so einige Begriffe die ich fast standardmäßig ausschliesse um überhaupt brauchbare Ergebnisse zu erhalten.
  Mit Zitat antworten Zitat
woki

Registriert seit: 29. Mär 2003
563 Beiträge
 
Delphi 2006 Architect
 
#22

Re: Neuronale Netze ???

  Alt 2. Jan 2004, 15:37
Zitat von Dannyboy:
würde ich auch gern mal sämtliche Informationen zum Thema "Neuronale
Netze" haben.
  Mit Zitat antworten Zitat
Benutzerbild von cheatzs
cheatzs

Registriert seit: 31. Aug 2003
Ort: Altenburg
81 Beiträge
 
#23

Re: Neuronale Netze ???

  Alt 2. Jan 2004, 16:43
Hi,
dein Programm ist wirklich sehr anschaulich. Leider habe ich das Problem dass nach ca. 1000 Klicks die Anzahl der hidden Units drastisch ansteigt. So auch eine enorme Rechenkraft für jeden neue Entscheidung, wobei diese unregelmäßig ist (also die benötigte Rechenkraft). Sind die Datenmenge da schon zu groß oder an was könnte das liegen?
Thomas Low
THX und viel Spaß beim Coden
Cheatzs
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

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

Re: Neuronale Netze ???

  Alt 2. Jan 2004, 17:29
Das nennt man "Lernkurve". Am Anfang wird das Netz ziemlich rasch sehr schnell "lernen", sich also auf die Aufgabe anpassen. In späteren Zyklen wird aber die Lernkurve drastisch abfallen, bis hin zur Stagnation. Da das Netz inkrementell lernen muß, d.h. immer ein neues Inputset nach den anderen kann es sich neuen Gegebenheiten nur anpassen indem es ständig neue Neuronen in's Netz einfügt, es wird also live trainiert mit noch unbekannten Eingaben. Generell kann man sagen das ein einmal trainiertes Netz sehr sehr schlecht auf neue Bedinungen umzutrainieren ist. Dies ist vergleichbar mit uns Menschen, haben wir einmal Fahrrad fahren gelernt so verlernen wir es nur sehr sehr schlecht. Würde nun das Fahrrad absolut anders funktionieren so fällt es unserm Hirn enorm schwer sich sehr schnell diesen neuen Bedingungen anzupassen. Um so älter ein Mensch und sein Hirn wird um so mehr wird es fixiert und wird sich immer schlechter anpassen.
Exakt mit diesem "Trick" kann man das Netz auch austricksen. Man füttert es lange Zeit mit ähnlichen Eingaben. Im späteren Verlauf ändert man die grunsätzliche Taktik beim Tippen. Das Netz wird sich dann viel schwerer der neuen Taktik anpassen können als wenn es ein ganz frisches Netz wäre.

Im Falle der Software sollte diese so abgeändert werden das das Netz bei einer bestimmten Größe nicht weiter trainiert wird. Es wird sowieso nicht besser reagieren können. Dies zeigts sich auch wenn man das Netz per Zufallsgenerator trainieren will. Das Netz wird sich NIE an den Zufallsgenerator anpassen können, was gleichbedeutend ist mit dem Fakt das es einfach NICHT lernen kann, wo es KEIN Muster gibt. Deshalb wir beim Spiel mit Zufallsgenerator das Netz sehr schnell enorm groß und dementsprechend langsam.

Allerdings, das von mir benutzte Recurrente Cascade Correlation Netzwerk ist eines der am schnellsten lernenden Netzwerke. Es ist erheblich effizienter als zB. normale Feedforward Backpropagation Netzwerke.

Im allgemeinen erkennt man an Hand einer schlechten Lernkurve das irgend etwas nicht vom Design her passt. Entweder existieren in den Trainingsdaten zwischen den Inputdaten und Outputdaten keinerlei Zusammenhänge, eben zufällig, oder man hat das Netz falsch parametrisiert, oder aber es existiert ein logischer Fehler im der Anwendung des Netzwerkes auf das zu lösende Problem. D.h. ein Deutscher versteht nur chinesisch wenn er ohne Sprachkenntnisse einer russischen Fachdiskussion zuhört. Exakt das gleiche passiert sehr oft mit schlecht angepassten NNs, sie verstehen einfach nicht die Inputdaten, d.h. die Inputdaten sind NICHT für das Netz erlernbar übersetzt worden. Diese "Übersetzung" der Inputs ist aber der entscheidende Knackpunkt der die effiziente Anwendung der NN's so schwierig macht.

Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von cheatzs
cheatzs

Registriert seit: 31. Aug 2003
Ort: Altenburg
81 Beiträge
 
#25

Re: Neuronale Netze ???

  Alt 2. Jan 2004, 17:42
Das klingt schon sehr interessant und wird wahrscheinlich auch stimmen - mich hat nur verwundert das dies nicht in einer art Parabelkurve ansteigt, sonder extrem Sprunghaft, ich musste zum Beispiel bei einem Einzigen Entscheidungspunkt ca. 10 min warten bei einem 500 Mhz Prozessor bis er das ergebnis berechnet hatte, danach gings wieder ca. 100 Entscheidungen ohne Probleme in ca. 1 bis 2 Sekunden.
Thomas Low
THX und viel Spaß beim Coden
Cheatzs
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

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

Re: Neuronale Netze ???

  Alt 2. Jan 2004, 17:46
Um abschätzen zu können wie hoch die Komplexität des Netzes ist benötigt man die Anzahl der Hidden Units = Neuronen. Nun angenommen es existieren 5 Neuronen in einem RCC Netzwerk, mit 2 Inputs und 2 Outputs. Die 2 Outputs sind verküpft mit den 2 Inputs, d.h. es existieren 4 Nervenstränge. Nun wird das 1. Neuron eingefügt. Dieses hat 2 Nervenstränge zu den 2 Inputs. Die Outputs verlinken wiederum zu diesem Neuron. D.h. unser Netzwerk hat nun 4+2+2 = 8 Nervenstränge. Nun fügen wir das 2. Neuron ein. Da es ein Cascade Netzwerk ist wird dieses 2. Neuron zusätzlich noch mit dem 1. Neuron verknüpft. Das Netz hat nun 13 Nervenstränge, beim 3. Neuron sind es 19, beim 4. Neuron schon 26 beim 5. dann 34 Nervenstränge, usw. usw. Bei diesen Berechnungen fehlen aber noch die Bias Inputs, jeweils ein Biasinput pro Neuron und Output und es fehlen die Recurrenten Nervenstränge. Dies sind Nervenstränge an jedem Neuron von dessen Output als seperater Input. D.h. jedes Neuron hat als zusätzlichen Input einen Nervenstrang zu seinem eigenen Output. Dadurch entsteht ein Gedächtnis, d.h. das Netz kann sequentielle Eingaben an den Inputs erlernen. JEDER dieser Nervenstränge IST eine Zahl=Double, das Gewicht bzw. die Dämpfung, und simuliert die "Leitfähigkeit" bzw. die "Verstärkung" der "elekrischen Impulse" zwischen den "Nervenzellen" unseres Hirnes. Natürlich muß beim Training eines NN's der angelegte Impuls an den Inputs ALLE diese Zahlen berechnen und berücksichtigen. Somit wird bei jedem neuen Neuron/Unit im NN dessen Komplexität immer größer. Nun wird auch ersichtlich warum die Wahl der richtigen Datenstrukturen so wichtig ist bei der Programmierung. Je effizienter diese Strukturen sind um so schneller wird das Netz, aber auch um so unübersichtlicher. Nach meinen Erfahrungen ist es fast aussichtslos die Funktionsweise einen Netzwerkes an Hand der Sourcen begreifen zu wollen.

Gruß hagen
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

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

Re: Neuronale Netze ???

  Alt 2. Jan 2004, 17:58
Zitat von cheatzs:
Das klingt schon sehr interessant und wird wahrscheinlich auch stimmen - mich hat nur verwundert das dies nicht in einer art Parabelkurve ansteigt, sonder extrem Sprunghaft, ich musste zum Beispiel bei einem Einzigen Entscheidungspunkt ca. 10 min warten bei einem 500 Mhz Prozessor bis er das ergebnis berechnet hatte, danach gings wieder ca. 100 Entscheidungen ohne Probleme in ca. 1 bis 2 Sekunden.
Das hat andere Ursachen. Das vom mir programmierte Netzwerk benutzt verschiedene Techniken um enorm schnell zu lernen (im Idealfall wohlgemerkt). Dies wären Backtracking, Kandidateselektion und Genetisches Kreuzen von Kandidaten Units. Nun, was heist das ?
Ein RCC Netzwerk erzeugt während der Lenrphase x neue Neuronen. Es fügt diese Neuronen aber nur virtuell in's Netzwerk ein. D.h. diese Kandidaten werden durch Zufall initialisiert, zB. 10 Kandidaten. Nun wird jeder Kandidate virtuell ins Netzwerk eingefügt und trainiert. Nach einer kurzen Zeitspanne des Trainings sterben schlechte Kandidaten aus, und gute Kandiaten kreuzen sich mit weniger guten Kandidaten, man sagt dazu auch Evolution. Solange beim Training das gesammte Netzwerk immer wieder bessere Resultate erzielt wird weitertrainiert. Also solange bis das Training stagniert. Nun wird das beste Kandidaten-Neuron ausgewählt und tatsächlich als neues Neuron in das bestehende Netzwerk eingefügt, fertig. Es beginnt nunalles von vorne. Dieses ständige hinzufügen und trainieren virtueller Neuronen wird so lange durchgeführt bis das Gesammtnetzwerk ebenfalls anfängt zu stagnieren. Nun, der Trainings-Algorithmus hat aber den vorhig besten Zwischenstand des Netzwerkes gespeichert. Sollte das derzeitige Resultat des Netzwerkes unzureichend sein so beginnt das Backtracking zu wirken. D.h. der Trainingsalgo. verwirft das bestehende Netzwerk und springt zurück zum gespeicherten und besseren Netzwerk. Nun beginnt alles von neuem. Diesem Backtraking wird maximal 3 mal durchgeführt.

So, es kann nun vorkommen das ein dezeitiges Netz ein Problem nicht erlernen kann. Dies führt dann dazu das es sehr häufig das backtracking durchführt und demzufolge viel länger an Zeit benötigt. Oder aber das Netz kann sehr schnell adaptieren und erreicht in sehr kurzer Zeit die eingestellte Fehlertoleranzen. Der Effekt der eintritt ist eben die Sprunghafte Lernkurve. Solche Sprünge sind ein gutes Zeichen da sie auf eine "Reorganisation" des Netzes hindeuten, allerdings sind sie wenig erwünscht.

Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von Stanlay Hanks
Stanlay Hanks

Registriert seit: 1. Mär 2003
2.078 Beiträge
 
Delphi 2005 Professional
 
#28

Re: Neuronale Netze ???

  Alt 2. Jan 2004, 18:19
Also ich muss sagen, du bist offensichtlich ein echter Profi!
Diesbezüglich hätte ich einen Vorschlag: Da du offensichtlich sehr viele Informationen zu dem Thema hast, und es auch verstehst, diese zu erläutern, könntest du vielleicht so eine Art "Einsteiger Tutorial" für uns Unwissende machen? Das wäre echt toll!

Man liest sich, Stanlay
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

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

Re: Neuronale Netze ???

  Alt 2. Jan 2004, 18:25
Uff, ich hatte gehofft das keiner von Euch auf diese Idee kommt
Ein gutes Tutorial zu schreiben ist leider nicht so einfach wie es sich anhört. Dies trifft besonders auf mich zu, da ich eben ein sehr schlechter "Erklärer" bin, der zudem noch gerne rießige Gedankensprünge macht und öfters eben auch Detailverliebt ist. Kurz gesagt, ich glaube kaum das ich die Zeit finde und das Können besitze um gute Tutorials zu schreiben.

Dann ist es doch viel besser meine Sourcen zu analysieren und auf diese aufzusetzen. Die nötigen Informationen kann man aus Büchern oder aus dem WEB bekommen. Grundsätzlich bin ich eher der Typ der in einem Bruchteil der Zeit, die man benötigt um ein Tutorial zu schreiben, die kompletten Sourcen fertigstellt

Es tut mir ehrlich sehr Leid aber ich werde keine Tutorials schreiben.

Gruß Hagen
  Mit Zitat antworten Zitat
Niels

Registriert seit: 25. Okt 2003
192 Beiträge
 
#30

Re: Neuronale Netze ???

  Alt 3. Jan 2004, 12:53
Moin!

Da ich gestern nicht da war konnte ich heut erst deine Posts lesen. Dass ich warscheinlich nur gute englische Infos finden werde war mir fast klar. Naja ich denk das wird kein größeres Problem. Hättest du da ein paar Vorschläge an guten Büchern?

Zitat von negaH:
Bei diesen Berechnungen fehlen aber noch die Bias Inputs, jeweils ein Biasinput pro Neuron und Output und es fehlen die Recurrenten Nervenstränge. Dies sind Nervenstränge an jedem Neuron von dessen Output als seperater Input. D.h. jedes Neuron hat als zusätzlichen Input einen Nervenstrang zu seinem eigenen Output. Dadurch entsteht ein Gedächtnis, d.h. das Netz kann sequentielle Eingaben an den Inputs erlernen. JEDER dieser Nervenstränge IST eine Zahl=Double, das Gewicht bzw. die Dämpfung, und simuliert die "Leitfähigkeit" bzw. die "Verstärkung" der "elekrischen Impulse" zwischen den "Nervenzellen" unseres Hirnes.
Ich hatte mir ja bishier erst ein Tutorial durchgelesen (über Perzeptronennetze) und da stand, dass der (das?) Bias konstant bleibt und in der Ausgabefunktion wird dann mit Hilfe des Ergebnisses der Aktivitätsfunktion berechnet ob der (das?) Bias erreicht wurde. Hier setzt auch der Lernprozess an, jedoch werden nur die Gewichte der Unit-Inputs verändert.
Ein Neuron hatte dort auch keinen extra Output, sondern nur ein Datum (nicht zu verwechseln mit Datum ), das einen Wert enthielt, welcher vom Dentrid (Input) anderer Neuronen ausgelesen wird.

Wo liegen die Unterschiede zwischen diesen beiden Lernweisen und was ist in welcher Hinsicht vorteilhafter?


MfG Niels
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 8     123 45     Letzte »    


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 10:42 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