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 7     123 45     Letzte »    
Benutzerbild von negaH
negaH

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

Re: Neuronale Netze ???

  Alt 2. Jan 2004, 12:55
Hi Niels,

solche Fragen sind immer recht schwierig zu beantworten. Ich selber habe ausschließlich englische Literatur, hauptsächlich die originalen Forschungsarbeiten über die entsprechenden Netzwerke. Mein Grundwissen stammt aus grauer Vorzeit, denn auch schon vor 10-15 Jahren kannte man neuronale Netzwerke. Du hast aber recht mit der Aussage das man nur noch sehr wenig gute und vollständige Informationen im WEB findet. Das liegt wohl am derzeitgen Trend alles durch Patente schützen zu wollen.

Trotzdem mal zwei Links:
http://www.cs.stir.ac.uk/~lss/NNIntro/InvSlides.html
http://www.doc.ic.ac.uk/~nd/surprise...11/report.html

Um englisch wirst du nicht herumkommen, da selbst die Deutschen Forscher alles in englisch veröffentlichen, obwohl die Deutschen auf dem Gebiet neuronaler Netzwerke lange Zeit führend waren.

Meine Unit basiert auf einem relativ neuem und daher noch wenig bekanntem Netzwerk.
Leider ist es bei der Umsetzung von NN's in Software immer so das aus Effizienzgründen die Arbeitsweisen der NN's ver-kompliziert dargstellt werden. D.h. der Source sieht immer viel schwieriger aus als er vom Modell her gesehen eigentlich tatsächlich ist.

Wenn das Auffinden von Informationen über NN's im WEB schon schwierig ist so wird es nochmals viel schwieriger an Informationen heranzukommen die echte praktische Beispiele von AI aufzeigen. D.h. man findet immer wieder Informationen das mit Hilfe von NN's zB. "intelligente" Spiele oder Roboter gebaut wurden. Aber wie und mit welchen Netzwerktypen dies erfolgte findet man nicht.

Es ist also ein großer Unterschied zwischen dem Wissen wie NN's funktionieren und wie sie nun auf einfachste "Demo" probleme angewendete wurden, zu dem praktischen Wissen wie man NN's nun tatsächlich anwendet.

Zb. wollen wir eine AI für ein Game einsetzen. Dazu soll ein NN als Entscheidungskern dienen. Selbst wenn man weiß wie NN's funktionieren so benötigen wir noch das entscheidende Wissen wie wir das NN richtig in die AI einbauen müssen. Das sind solche Fragen wie, "woher kommt der Input des NN's ?", "wie bereiten wir den AI Input auf so daß das NN sauber arbeiten kann?", "wie interpretieren wir den Output des NN's, und verknüpfen diesen mit sinnvollen Aktionen der AI ?", "wie trainieren wir das Netzwerk ?"

Mit meiner Unit habe ich versucht die Detailfragen der korrekten Einstellung eines NN's zu automatisieren. Normalerweise muß ein NN-Anwender bei den meisten NN's sehr viele und wichtige Parameter einstellen, damit das NN überhaupt korrekt arbeitet. Zb. Layer Anzahl, Aktivierungsfunktionen, Anzahl der Neuronen (ich bervorzuge den Namen "Units") pro Layer, deren Verküpfungen usw. usw.

Ich persönlich habe mich bisher mit Schrifterkennungen, Spracherkennungen, Mustererkennungungen in Dateidaten Klassifizierungen und kleineren Game KI's wie zB. für 4Gewinnt herumgeschlagen.
Bei der Schrifterkennung drehte es sich hauptsächlich um sogenannte "Stroke-basierte" Systeme, also exakt sowas wie die Schrifterkennung auf Palm Handhelds oder Pentop PC. Das heist also keine OCR-Zeichenerkennung. Das Spracherkennungsprojekt ist eher als "Sound-Filterungs" projekt zu verstehen. Das NN sollte aus einem Stereo-Signal die 3D Räumlichkeiten der Aufnahme filtern. Also im Grunde ein System das so ähnlich wie ein Dolby Sourround Chip aus einem Stereosignal ein 3D Signal Filter implementiert. Die rießige Schwierigkeit für mich war dabei der Fakt wie man korrekte Daten erzeugt die zum Training des Netzwerkes notwenig sind.
Die Mustererkennung basierte auf der Idee x'beliebige Dateien anhand ihres Inhaltes zu klassifizieren. Das System sollte erkennen ob eine beliebige Datei aus Text,HTML,Pascal oder komprimierten Daten usw. besteht. Das hat auch ziemlich sauber funktioniert.
Die Game KI's war da eigentlich schon viel schwieriger, da man dort die Regeln und deren Software Umsetzung und Algorithmen erstmal exakt beherrschen muß. Erst wenn alle konventionellen Methoden keine Verbesserungen mehr bringen fängt man an Neuronale Netzwerke oder Genetische Algos. zu verwenden. Eine spezielle Form einer Game-AI war zB. mein Projekt zur automatischen Erzeugung beliebiger Kreuzwort Rätsel. Dabei ging es darum ein beliebiges Gitter mit sinnvollen Wörtern zu füllen. Es stellte sich heraus das hier Genetische Algorithmen viel effizienter sind.
Ein besonderes Spezialprojekt war die Benutzung der NN's zur Klassifizierung verschlüsselter Informationen bzw. zum Brechen einfacher Czäsar Verschlüsselungen.

Alle Projekte haben zwei gemeinsamme Merkmale
1.) die möglichen Datenmengen und deren Kombinationsvielfalt ist schier unendlich groß, das NN sollte also die generischen Hauptmuster/Unterscheidungsmerkmale finden.
2.) es gibt keine einfachen mathematischen Formeln die den optimalen Weg finden können, das NN eg. genetischer Algo. sollte also solche "Formeln" finden.

Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von X-Dragon
X-Dragon

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

Re: Neuronale Netze ???

  Alt 2. Jan 2004, 13:59
Auf jeden Fall eine sehr interessante Sache, auch wenn das Anwendungsgebiet für einen sinnvollen Einsatz noch nicht so groß ist bzw meist zu aufwendig. Aber ein Terminplaner mit eigener KI wäre auch mal eine ganz interessante Sache ... .

Wenn ich mir das so überlege ist das im Prinzip ja gar nicht so blöd ... ein Programm welches ein zeitlang den User beobachtet und dann anfängt bestimmte Arbeitsvorgänge zu optimieren (also bei größeren Anwendungen , Programmteile vorzeitig schon mal in den Speicher laden etc.) ... muss ja auch gar nicht so komplex werden.
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

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

Re: Neuronale Netze ???

  Alt 2. Jan 2004, 14:29
Sowas ähnliches wird es auch in Zukunft geben, den Wizard-Sekretär.
Bei den Terminen zB. kann man sehr gut erkennen WO das eigentliche Problem entsteht. Das NN zu füttern bzw. das NN zu konstruieren ist kein Problem. Viel schwieriger wird es die Eigenschaften der Termine wie Uhrzeit/Kunde/Ort/Projekt so zu klassifizieren das neue unbekannte Termine an neuen Orten und mit neuen Projekten dennoch eine gemeinsamme Entsprechnung zu schon geplanten Terminen erhalten. Denn nur so entstehen sinnvolle Eingaben für das Netzwerk. Das Netzwerk entwickelt dann die Fähigkeit die Muster des Menschen bei der Terminierung zu entdecken, und demzufolge so zu planen wie es der Mensch getan hätte. Will man aber aus einem Berg von Terminen einen Plan erzeugen der möglichst effizient die Termine legt, sprich Fahrzeiten, Uhrzeiten und Prioritäten berücksichtig, dann wären Genetische Algorithmen besser geeignet.

Ein interessantes Projekt wäre für mich eine eigene Suchmaschine. Im Laufe der letzten 2 Jahre musste ich leider feststellen das die heutigen Internet-Suchmaschinen immer weniger für mich relevante Resultate bringen. Es werden immer häufiger irgendwelche virtuell-kommerzielle Links gefunden die auf eBay oder andere Suchmaschinen verweisen. Immer seltener findet man die echt guten privaten Homepages von wirklich interessierten Menschen. Das kann NICHT daran liegen das das Verhältniss von guten privaten Homepages zu kommerziellen Homepages verschoben wurde. Es liegt eher am pushen kommerzieller Pages. Öfters lege ich KEINEN Wert darauf sehr schnell Resultate zu bekommen. D.h. ein Such-Robot der über 1-2 Tage hinweg eine einzigste Suche ausführt, aber dabei WIRKLICH relevante Pages findet ist mir lieber, als Google mit seinen 10.000 Links auf eBay o.ä. Alleine schon der Fakt das man heute die echten kommerziellen Seiten der Hersteller nicht mehr so einfach findet ist schmerzhaft. Nun die Aufgabe des NN's wäre es die schnelle Entscheidung zu treffen ob eine anvisierte Hompage kommerzieller oder informeller Natur ist. Am besten sollte das NN nur auf Grund des Index-HTML's erkennen ob sich eine Suche auf der Hompage überhaupt lohnt. Das NN klassifiziert also den Internet-Spam-Müll !

Praktisch gesehen könnte das so funktionieren: Eine Software stellt Anfragen an Google oder MetaGear. Deren HTML's werden zerlegt und jede Seite per NN analysiert. Die Aufgabe der Software besteht also darin den Intenet-Spam-Müll raus zu filtern. Aus einem Resultat von zB. 10.000 Links bleiben dann 2-3 Kategorien übrig, wie Private Hompages, echte kommerzielle Firmen und Spam-Müll.

Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von X-Dragon
X-Dragon

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

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
 
#5

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
 
#6

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
 
#7

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
 
#8

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
 
#9

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
 
#10

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
Antwort Antwort
Seite 3 von 7     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 11:16 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