AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Neuronale Netze ???

Ein Thema von Dannyboy · begonnen am 4. Sep 2003 · letzter Beitrag vom 17. Okt 2023
Antwort Antwort
Seite 5 von 7   « Erste     345 67   
Benutzerbild von negaH
negaH

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

Re: Neuronale Netze ???

  Alt 15. Jan 2004, 12:02
Zitat:
Kleine Einführung zum Background Neuronaler Netze:

1. Als Grundlage dient die Arbeitsweise des Gehirns.
2. Besonders wird ein Element des Gehirns betrachtet, Neuron genannt
3. Ein Neuron ist eine Nervenzelle, die viele Eingänge hat, sogenannte Dendriten und einen Ausgang (Axon)
4. Über die Dendriten kommen sogenannte Aktionspotenziale, die sich im Zellkörper aufsummieren.
5. Ist eine gewisse Summe erreicht (man spricht von Schwellwert) "feuert" das Neuron seinerseits über das Axon.
Das ist die ursprüngliche Idee Neuronaler Netzwerke der Computertechnik. Würde man aber die heutigen NN-Techniken und mathematischen Grundlagen auf die biologischen Netze, wie auf unser Hirn anwenden, so würde man kläglich scheitern. D.h. die heutigen Neuronalen Netze kann man in keinster Weise mit der Arbeitsweise von Neuronen vergleichen, sie sind im Grunde was komplett anderes. Nun, um als Einsteiger ein Gefühl für NN's zu bekommen hat es sich eingebürgert eben NN's mit unseren Hirnen zu vergleichen. Allerdings ist dies eben auch falsch. Das hat mehrere Gründe. Computer NN's sind nur stark abstrahierte "Verwandte" unserer Hirne, und kommen in ihrer Auflösung, Komplexität und Fähigkeiten nicht im entferntesten an die Fähigkeiten ihrer biologischen Verwandten heran. Ein vergleichsweises Herangehen von Computer NN's zu Gehirnen würde bedeuten das ein Computer NN die gleichen Resultate wie ein Gehirn liefern müsste. Dies tut es aber nicht (noch nicht ).

Gruß Hagen
  Mit Zitat antworten Zitat
Minz

Registriert seit: 19. Dez 2002
476 Beiträge
 
#2

Re: Neuronale Netze ???

  Alt 15. Jan 2004, 12:39
Um die Arbeitsweise von z.B. Perzeptronen-Netzen zu verstehen, die für die Erkennung von Schrift eingesetzt werden können, ist die obige Herangehensweise durchaus praktikabel.
Das Feld Neuronaler Netze ist sicherlich groß und es kommen verschiedene Ansätze für unterschiedliche Aufgaben zum Tragen.
  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 15. Jan 2004, 13:03
Zitat:
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?

Der BIAS ist ein "Störsignal" das zusätzlich zu den Nutzsignalen am Neuron anliegt. Dadurch wird verhindert das das Netzwerk anfängt sinnlos zu schwingen bzw. sich selbst zu blockieren. D.h. durch den BIAS wird sichergestellt das das Netz einen definierten Input erhält der als Referenzsignal zu den Nutzsignalen dient. Ein BIAS muß nicht auf fester Größe stehen, normalerweise wird er aber auf 1 gesetzt und beliebt fixiert. In meinem RCC Netzwerk ist der BIAS ebenfalls fixiert nach dem Training des Neurons. Allerdings wird der BIAS eben auch wie die anderen Gewichte mittrainiert. D.h. jedes Neuron hat einen individuellen BIAS-Wert. Man kann sich dieses BIAS wie den Helligkeitsregler am Fernseher vorstellen. Er reguliert/dämoft/verstärkt die "Spannungen" der anderen Input-Gewiche so daß das Neuron auch reagieren kann. Ein positiver Bias von +10 Volt würde demnach bedeuten das die Gesammtspannungen aller Inputgewichte um 10V gedämpft werden. (dies ist aber nur eine bildliche Erklärung der Vorgänge im Netz).

Als Anfänger hat man immer wieder das Problem die Bestandteile einen Netzwerkes räumlich voneinander zu erklären. Man fragt sich also was denn nun ein Neuron und was eine Nervenbahn ist, in einem NN !? Betrachtet auf ein Computer-Netzerek sieht's so aus:
Das Neuron als solches existiert als solches NICHT in einem Netzwerk. Das aktive Element das das Neuron beschreibt ist die Aktivierungsfunktion, eg. die Schwellenwert-Funktion. Sollten externe Parameter zu dieser Aktivierungsfunktion existieren, z.B. die Mathematische Formel oder Parameter, so werden diese als Neuron an sich gespeichert. D.h. ein Neuron ist ein Speicherbereich in dem die verwendete Aktivierungsfunktion, dessen Position im Netzwerk und die Verbindungen zu den Input-Neuronen gespeichert sind.
Jetzt kommen wir auch schon zu den "Dentriten", eg. Nervenbahnen des Neurons. Eine Nervenbahn ist nur ein Zahlenwert. Dieser Zahlenwert bestimmt wie stark das Aktivierungspotential des Ausgangssignal des Eingangsneurons in die Aktivierungsfunktion des aktuellen Neurons ist. Sinnvollerweise sollte man also alle diese Zahlenwerte=Nervenbahnen zum Neuron selber speichern.

So, nun zu dem was die meisten Anfänger in einem Neuron als "Zahlenwert" mißverstehen. Wir wissen das ein Neuron nur eine Aktivierungsfuntion = mathematische Formal ist, und nur die Nervenbahnen zu seinen Inputneuronen speichert. Denoch wird auf Grund softwaretechnischer Gegebenheiten im Neuron noch das Aktivierungspotential gespeichert. Dies ist eine Zahl die durch die Aktivierungsfunktion beerechnet wird. D.h. die Aktivierungsfunktion berechnet aus allen Aktivierungspotentialen der Inputneuronen + den Gewichten der Nerevenbahnen das Aktivierungspotential des aktuellen Neurons = Resultat der Aktivierungsfunktion. Man macht dies aber NUR weil es Softwaretechnisch vom Berechnungsalgortihmus besser zu codieren ist. D.h. dieser Zahlenwert des Neurons ist nicht das Neuron selber sondern nur eine Hilfsvariable. Somit besteht ein Neuron nur "virtuell" als mathematische Formel und deren Inputvariablen = Nervenbahnen.

In vielen NN's wird noch gespeichert zu welchen Inpuitneuronen auch tatsächlich eine Nervenbahn besteht. Solche Netze besitzen also die Möglichkeit das ein Neuron sehr individuell mit anderen Neuronen verknüpft wird. Die Anzahl der Nervenbahnen=Verknüpfungen bestimmen die Berechnungskomplexität des Netzwerkes, eg. Laufzeitverhalten. Theoretisch kann jedes Neuron mit jedem anderen Neuron und sogar mit sich selber verküpft sein. Allerdings erhöht sich der Berechnungs-/Speicheraufwand damit sehr drastisch. In meinem RCC Netzwerk sind solche individuellen Verküpfungen enthalten. D.h. eine Nervenbahn besteht aus einem Integer der das Input-Neuron der Nervenbahn als Index beschreibt plus dem Gewicht dieser Nervenbahn als Doublezahl.
Diese individuelle Verknüpfungen kommen unserem realen Hirn schon sehr nahe. Sie verkomplizieren aber die Berechnungen innerhalb des Netzwerkes. Als programmtechnische Optimierung und Vereinfachung der Netzwerkberechnugen wird deshalb das Aktivierungspotential des Neurons=Aktivierungsfunktion im Neuron zwischengespeichert. Dies verhindert Rekursive-Endlosberechnungen, denn normalerweise könnte man ausgehend vom aktuellen Neuron diese ohne solche Zwischenspeicherungen berechnen. Man berechnet dazu rekursiv die Potentiale aller Inputneuronen usw. usw. bis man zur Input-Schicht des Netzwerkes gelangt. Dies ist aber vom Berechnungsaufwand her eine invers-exponentielle aufwendige Funktion !! Deshalb besitzt ein Neuron eben auch eine Variable die das Resultat seiner Schwellenwertfunktion=Aktivierungsfunktion zwischenspeichert. Diese Variable ist aber NICHT das Neuron an sich.

Gruß Hagen
  Mit Zitat antworten Zitat
Hackbart

Registriert seit: 12. Jan 2004
Ort: Ankh Morpork
6 Beiträge
 
#4

Re: Neuronale Netze ???

  Alt 20. Jan 2004, 12:58
Danke für die Antwort! Noch einmal eine Frage. Ich beschäftige mich zur Zeit mit einem bestimmten genetischen Allgorithmus, welcher einen Therm sucht, aus welcher man eine selbst eingegebene Zahl erechnen kann. z.B. 1+2+3*2 für 12. Die Chromosomen dabei stelle ich aus den (4- Stelligen) Binärwerten dar Operanden dar. Nun ist ein genetischer Allgorithmus nicht gerade der schnellste, deshalb möchte ich ihn auf folgende Art und weise erweitern:
Es werden Zwar immer neue Chromosomen gebildet, doch "die besten", welche am nächsten am Ergebnis dran sind, werden nicht gelöscht sondern gespeichert. Auch diese unterinander "vermehren" sich und danch wird neugeordnet. Die besten aus den neu Erzeugten und den schon gepeicherten Chromosomen werden wieder gespeichert und die "schlechten" fallen raus. Es fallen immer so viele raus, wie neu in die "best of" aufgenommen werden.
Kann man diese Modifikation nicht auch als NN realisieren? Wenn ja, wie müsste ich da ran gehen?

2) Wie müsste ein NN aussehen, wenn ein Bild (Aus Pannels/ Shapes zusammengesetz) abgetasten werden soll auf den dort gezeichneten Buchstaben/ Zahl?
ES GIBT KEINE GERECHTIGKEIT, ES GIBT NUR MICH
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

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

Re: Neuronale Netze ???

  Alt 20. Jan 2004, 15:51
Hi Hackbart,

1.) ich kenne solche Genetischen Algorithmen zur Formelfindung nur als Algos. die Formel finden sollen zu sehr vielen Eingabe- zu Ausgabevariablen. D.h. man kennt bestimmte Eingabeparamter wie Alter,Familienstand,finanzielles Einkommen, finanzielle Sicherheit, beantragter Kredit usw. verschiedener Personen der Vergangenheit und als Ausgabeparamter ob und wie diese Personen ihren Kredit in der gegenwart abgezahlt haben. Der Gen. Algorithmus versucht nun eine allgemeingültige Formel zu finden. Nungut, ich will darauf hinaus das in deinem Beispiel ein geneterischer Algorithmus ein viel zu überdimensioniertes Instrument ist. Mit einer einfachen linearen Analyse findet man sehr schnell entsprechende Lösungen. Zb. 12=12 oder 12=2*6 oder 12=1*12 usw. Ich vermute mal das deine jetzige Implementation enorm schnell solche trivialen Lösungen produziert.
Desweiteren ist es wichtig zu wissen was das Genom im Unterschied zu den Chromosomen ist. In deinem Falle besteht ein Individuum nur aus einem Chromosom=Formel und diese wierderum aus mehreren Genomen=zweigliedrigen Formelteile und diese wiederum aus mehreren Gene=Konstanten oder Operatoren. Das bedeutet das es keinen Sinn macht Chromosomen separat qualitativ zu bewerten. Normalerweise würde in einem Mehrfach-Chromosomen-Individuum ganze Chromosomenpaare untereinander zwischen den Individuuen oder eben bei geschlechtlicher Vererbung zwichen den Kindern ausgetauscht. Dies auf Genom-Ebene zu machen ist sinnlos. Auf Genebene wirkt am besten die Mutation = zufällige "Bit"-Änderungen. D.h. es gibt zwei wesentliche Triebkräfte die die Evolution vorrantreiben. 1. leichte Mutation auf Genebene und 2. nach der Selektion die Vererbung von Chromosomenmixturen an die Nachfahren der besten Individuuen. Die Selektion und die Gencodierung sind der einzigste Punkt an denen wir als Programmierer die Vorgaben=Zielrichtung der Evolution festlegen. Die Festlegung was ein gültiges Chromosom per Definition ist bestimmt auch die Korrektheit und Funktionsfähigkeit des Individuums nachdem es als Kind mit einem neuen Mix von Eltern-Chromosomen erzeugt wurde. D.h. die Chromosomen-Definition hat die Aufgabe möglichst Genketten untereinander zu kombinieren die auch sinnvoll sind, so daß das Individuum auch "lebenfähig" wird. Die einzelnen Genome auf diesem Chromosom sollen sicherstellen das die logische Struktur eines Chromosomes korrekt aus Genen zusammengesetz wird. In deinem Falle würden also die Genome sicherstellen das sich eine Formel aus abwechselnden Zahlen und Operatoren ergeben kann. Erst bei den Genen, also den Konstanten und Operatoren, wird eine Zufälige Bitänderung relevant. D.h. egel welche Bits in den Genen geändert wird, auf Grund der logischen Struktur nach Genomen->Chromosomen entsteht auf einem Chromosom immer eine funktionsfähige Formel.

Sollte denoch eine untaugliche Formel entstehen so wird diese NICHT durch spezielle Algorithmen ausgesiebt. Dazu ist ebenfalls nur die Selektions-Funktion zuständig. D.h. ein nicht überlebensfähiges Individuum, weil kaputte Chromosomen, wird einfach mit einer Fitness von NULL bewertet. Dadurch stirbt es in der nächsten Generation ganz von selber aus. Somit wird eine nicht funktionsfähige Formel am stärksten bestraft = mit dem Tode. Am Ende enthält unser Individuum-Pool nfast nur noch gültige Formeln. D.h. die Selektierungs-Funktion bewertet jedes Individuum abhängig davon ob es eine gültige Formel ist und wenn ja wie gut diese Formel an das Ziel herankommt. Danach werden alle Individuuen einer geschlechtlichen Fortpflanzung entsprechend ihrer Fitness unterzogen. D.h. man erzeugt die nächste Generation aus Individduen als Kinder der aktuell stärksten Individuuen. Anschließend wird ein sogenanntes Crossover auf die Chromosomen der neuen Generation angewendet. Dabei vertauscht man meistens innerhalb der Individuen ganze Chromosomen oder Genome untereinander. Abschließend wird noch eine Mutation an ca. 3% der Gene durch Bitänderungen durchgeführt. Nun wird erneut auf diese Generation die Selelktion durchgeführt usw. usw.

Im Grunde würdest du also keinerlei Neuronale Netzwerke usw. benötigen. Ich kenne auch keinen solchen Anwendungsfall wie du ihn beschreibst. Das einzigste was ich in diesem Zusammenhang weis ist das man NN's benutzt um die Evolutionsparamater = Mutationsrate, Vermehrungsrate usw. abhänig von der Stagnation der Evolution zu setzen. D.h. das Neuronale Netzwerk übernimmt die Aufgabe des Menschen indem es die Evolution abhänig von ihrer Wachstumsrate steuert.

Umgekehrt gibt es aber genetische Algortihmen die die Netzwerkstruktur von großen neuronalen Netzen optimieren sollen. D.h. die Aufgabe der gen. Algos. ist es möglichst Netzwerke zu finden mit wenig Neuronen und Verbindungen.

2.) Für OCR Systeme gibt es viele spezialisierte Netzwerke, zB. Hopefield Netzwerke. Im Normalfalle wird erstmal eine Sensorische Schicht definiert. Diese ist eine Matrix von Bildaktiven Sensoren. Dazu wird man technisch gesehen jedes Bild erstmal auf die Pixelgröße dieser Sensor-Matrix reduzieren. Nun wird diese Matrix nach bestimmten Regeln abgetastet. D.h. man reduziert zB. bei einer Matrix von 16x16 Pixeln auf zB. 32 oder 64 Inputs. Diese Inputs sind dann die Inpoutneuronen des Netzwerkes. Man macht diese Reduktion damit ein netzwerk eben nicht mit zB. 256 Inputs für eine 16x16 Matrix arbeiten muß. Dadurch wird das Netzwerk enorm beschleunigt da nun die "komplette" Bildinformation nur auf 32 oder 64 Inputs gemappt wird. Bei größeren Matrizen wird das noch deutlicher. Eine 1024x1024 Matrix hat 1 Mega Pixel, aber bei der H+V+D Abtastung eben "nur" 1024+1024+2047 Inputneuronen. Bei solch riesigen Matrizen lohnt selbst die H+V+D Abtastung nicht mehr da das Netzwerk einfach zu gigantisch wird. Ich habe dann immer mit einer Kombination per Fast Fourier Tranformation der Bilddaten gearbeitet.

Man sieht also das bei der Bilderkennung per NN's das Postprocessing der Bildinformationen sehr wichtig ist.

Ich persönlich habe mit mehreren solchen Matrix Typen für die OCR rumgespielt. Die besten Resultate erzielte ich wenn die Matrix horizontal, vertikal und diagonal in einer Richtung abgetatstet wurde. Desweiteren wurden die Sensoren der Matrix im Mittelpunkt der Matrix stärker verstärkt als die Randsensoren. Dies entspräche unserem Auge mit seinem hochaktiven Sehnerv. Wenn du also weitergehende Fragen hast dann frag einfach.

Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

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

Re: Neuronale Netze ???

  Alt 20. Jan 2004, 16:09
Übrigens, dein gen. Algorithmus wäre mit entspechenden Randbedingungen ein idealer Faktorizations-Algorithmus. Gegeben ist eine sehr sehr große Zahl die in zwei bis drei Konstanten per Multiplikation und einer Addition zerlegt werden soll. Die Konstanten selber müssen mindestens zweimal kleiner als die große Zahl sein. Wird damit ein Individuum mit Z=X*Y+U erzeugt wobei U=0 ist, so hat man die große Zahl Z in zwei Teiler zerlegt.

Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von flomei
flomei

Registriert seit: 17. Jan 2003
Ort: Schieder-Schwalenberg
2.094 Beiträge
 
Delphi 2005 Personal
 
#7

Re: Neuronale Netze ???

  Alt 8. Feb 2004, 00:07
Ich find das Thema durchaus interessant...
Heute war ich bei Jugend-Forscht und wir haben richtig schlecht abgeschnitten mit unserem Physik-Projekt...
Deshalb habe ich mir vorgenommen nächstes Jahr etwas im Bereich Informatik/Mathematik zu machen...
Dabei dachte ich an Neuronale Netze weil das ja noch ein wirklich unberührtes Thema ist. Ist zwar extrem kompliziert aber ich habe ja noch ein Jahr Zeit...
Wie fange ich am Besten mit dem Erlernen der Grundlagen von NN an?

Danke im Vorraus!

MfG Florian
Florian Meier
... ist raus.
Vielen Dank für die Zeit mit euch!
http://www.flomei.de -- http://www.md5hash.de
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

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

Re: Neuronale Netze ???

  Alt 9. Feb 2004, 01:15
Zitat:
Wie fange ich am Besten mit dem Erlernen der Grundlagen von NN an?
Puh, am besten nimmste dir 3-4 Tage Zeit und sammelst alles was im Netz dazu zu finden ist. Es gibt gute Einsteiger-Sites in deutsch die zwar einen oberflächlichen aber dennoch guten Einstieg bieten. Weiter gehts dann mit den meisten englischen Pages der Universitäten ua. die dann aber auch schon viel tiefer in die Technik eindringen. Du wirst dabei auch auf einige freie Software stoßen. Interessant sind dann auch schon die verschiedenen PDF's und PostScript's, die du benötigen wirst wenn du auf dem derzeitigen aktuellen Stand der Forschungen kommen willst.

Bücher solltest du mal bei Amazon versuchen.

Gruß Hagen
  Mit Zitat antworten Zitat
Benutzerbild von flomei
flomei

Registriert seit: 17. Jan 2003
Ort: Schieder-Schwalenberg
2.094 Beiträge
 
Delphi 2005 Personal
 
#9

Re: Neuronale Netze ???

  Alt 9. Feb 2004, 01:44
Vielen Dank für die Info... Ich hab ja noch rund 1 Jahr Zeit...

Mal sehen was ich so finde. Hast du da vielleicht ein paar sehr gute Einsteiger-Links oder soll ich mich erst durch alle Google-Ergebnisse quälen?

Danke!

MfG Florian
Florian Meier
... ist raus.
Vielen Dank für die Zeit mit euch!
http://www.flomei.de -- http://www.md5hash.de
  Mit Zitat antworten Zitat
Nicodius

Registriert seit: 25. Apr 2003
Ort: Graz
2.234 Beiträge
 
Delphi 2006 Architect
 
#10

Re: Neuronale Netze ???

  Alt 12. Nov 2004, 19:49
hab da noch einen sehr interessanten link ( bin jetzt auf den post hier gestoßen) da ich mich seit ein paar monaten schon über das thema informiere

hier isser
Nico Müller
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 5 von 7   « Erste     345 67   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 23:26 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 by Thomas Breitkreuz