Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
|
Re: Neuronale Netze ???
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
|