Hi Leute, ich bin mir nicht ganz sicher ob ich im richtigen Subforum bin, wenn nicht bitte ich um Verständniss/schiebung. Ich wollte mal fragen ob mir jemand Denkanstöße geben könnte (oder vll. möchte mir ja auch jemand beim ganzen Projekt helfen g) wie man elektronisch ein KNN (künstlich neuronales Netz) verwirklichen kann. Es gibt ja das RC Modell (Bsp: http://cancer.rutgers.edu/courses/CompNeuro04/Neuron%20plus%20RC.jpg) jedoch ist dies auch nur ein einzelnes "Neuron" und ich denke für den "Netzbetrieb" ungeeignet, da es so ja nicht trainiert werden kann. Hier liegt auch der Punkt an dem ich die größten Schwierigkiten sehe. Weil beim Training ja die Gewichte der "Synapsen" verändert werden müssen. Ich hoffe mir kann hier jemand helfen, bin für jeden Vorschlag dankbar. mfg Timm
Hallo Kommt natürlich sehr darauf an, in welcher Form die Inputs hereinkommen und in welcher Form die Outputs sein sollen. Wenn es sich z.B. um einige wenige digitale oder analoge Werte handelt und du auch nur wenige Outputs benötigtst, dann könnte es mit einem Mikrocontroller problemlos umsetzbar sein. Gruss Michael
Also es soll nicht so aufwendig sein, ich dachte an ca. 3 Inputs und ca. 3 Outputs. Inputs kommen (denke ich, ist aber nicht zwingend) digital rein und der Output soll auch digital erfolgen. Nur möchte ich es nicht einfach "nur" mit einem Mikrocontroller machen der in seinem Programm alles simuliert, sondern ich wollte schon die einzelnen "Zellen" als Hardware darstellen, die dann von (einem) Mikrocontroller(n) verwaltet werden oder so.
also als einzelnes neuron einen op als verstärker/integrierer/differenzierer.. die ausgänge kannste dann über summierer mit den eingängen vernetzen. um das gewicht einzustellen digitale potis. dann hättest du was analoges. kannst natürlich auch koparatoren nehmen und mit den schaltschwellen experimentieren.
Stimmt digitale potis sind ne gute Idee zum Verändern der Gewichte. Was genau die Komparatoren machen sollen versteh ich nicht ganz, daher lass ich die erstmal weg in meinem Konzept. Aber ich seh da immernoch ein Problem beim Lernvorgang bzw. Training. Ich dachte mir das mein Netz aus 3 Inputs 16 Hidden Neurons + 1 "Biasneuron" 3 Outputs besteht. 16 Hiddens sind nötig damit das auch vernünftig arbeiten kann, alles andere würde bereits bei simplen Aufgaben scheitern. Nur habe ich damit wenn ich keinen Denkfehler habe 102 Verbindungen/Gewichte. Diese 102 Gewichte müssen beim lernen verändert werden. Doch wie verwalte ich dann 102 digitale potis am besten? gg
Hallo Naja, ich weiss nicht, ob es der richtige Ansatz ist, das ganze in Hardware zu bauen. Damit verlierst du nämlich die Flexibilität, die Netzstruktur zu verändern. Und gerade dies ist ja auch ein wichtiges Mittel bei den neuronalen Netzen. Einen performancevorteil sehe ich eigentlich auch nicht - zumal du ja auch uCs parallel arbeiten lassen könntest. Und einen richtigen Demo-Effekt kann ich mir ebenfalls nicht vorstellen, da ja die Gewichte z.B. unsichtbar sind. Am PC könntest du das sehr viel effektiver darstellen. Aber es gibt ja auch Leute, die sich irgend einen alten Computer nachbauen kann, obwohl man im Laden zum halben Preis das 100fache an Rechenleistung bekommt - also, nix gegen dein Projekt! Es würde mich sogar sehr interessieren, wie du vorgehst und was für Ergebnisse herausschauen.
Also: Hab ich schon ein funktionierendes KNN in C++ geschrieben, welches ich in performance bei der Hardwareumsetzung glaube ich nicht schlagen kann, das ist richtig. Bei einem feedforward-Netz mit backpropagation brauche ich eigentlich kein flexibles Netz. Jedoch wäre es vll. auch möglich Hardwaretechnische flexibilität zu erreichen hmm. Aber nachdem ich gerade gesehen habe das diese digitalen potis nicht so billig sind, dass ich mir mal eben 102 Stück davon bestellen will, möchte ich die Gewichte doch anders handlen. Das mit dem paralellaufenlassen klingt gut. Ein "kleines" Prob ist natürlich das ich bei meinem C++ Projekt in meinem Element war und hier eher nicht, da ich nicht so viel Ahnung von Elektronik und AVRs habe. Habe bisher nur 2 Bücher darüber gelesen. Sinn des Projektes ist eigentlich ein weiteres (anschauliches) Beispiel für meine Facharbeit. Es soll also auch kein "Retroprojekt" wie mit den selbstgebauten Computern werden, sondern eher ne Spielerei. Ineteressant wirds da wo du mit der Paralelität angefangen hast, weil bei meinem C++ Projekt arbeite ich in Schleifen ohne Threads, daher wäre es wirklich interessant zu sehen ob bei "gleichen" Einstellungen von Hardware- und Software-KNN die gleichen Ergebnisse rauskommen.
Die Komparatoren hatte ich für den Fall gedacht, dass nur digitale Werte benutzt werden sollen. Also Feuern oder nicht Feuern. Analoge Ausgabewerte werden dir wohl auch nicht allzuviel bringen und machen die ganze Sache ein wenig ;) komplexer. 102 Digitalpotis anzusteuern wär ja kein Problem... 102 Digitalpotis kosten nur ne Menge ;) Ich würde erstmal digital anfangen. Zur Simulation erstmal am PC bevor du ein heiden Geld in die Geschichte butterst. Flexibler wärst du schon mit dem Controller, wie Mr. chip gesagt hat und billiger. Wenn dich Geschichten wie das hier -> http://www.jayemsonic.de/resoneuro.html interessieren, dann kommste um die analoge Variante nicht drum herum ;) Er arbeitet übrigends nur mit 6 Neuronen und die Ausgabe ist auch gewollt nicht deterministisch.
Aso jetzt habich dich verstanden, nein also das muss schon analog sein. "Flexibler wärst du schon mit dem Controller, wie Mr. chip gesagt hat und billiger." Wie genau sehe dann der Aufbau aus? Meinst du für jedes Neuron dann einen Controller?
Welche Ansätze (Literatur) haste benutzt? Eine Idee von mir war mal ATTinys als einzelne Neuronen zu programmieren und über SPI die Gewichte etc. auszutauschen. Zweck ist eine Klangsynthese zu schaffen, die modular kaskadierbar ist.
Bei der Tiny Methode hätte ich die ADC's und PWM's / R2R-DAC der Controller als Ein und Ausgänge genutzt. Wäre zwar nicht "astrein" analog aber auch ein wenig billiger. Man könnte auch ATMEGA48 nehmen, sind billig und mit 20Mhz getaktet auch recht flott. Ausserdem haben sie den Vorteil das man sie mit C Programmieren kann, was beim Großteil der Tinys nicht möglich ist (kein RAM)
Welche Literatur...hm....habe die Ansätze aus verschiedenen Foren und hab mich dann im Inet weitergebildet durch wiki oder http://wwwmath.uni-muenster.de/SoftComputing/lehre/material/wwwnnscript usw. Muss aber eh noch weitere Scripte lesen da ich in meine Facharbeit ja auch andere Arten von KNNs erläutern muss. Das mit den Tinys find ich gut, aber SPI? Serial Peripheral Interface? Oh man da bekomm ich ja noch viel zu lesen ^^
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.