Forum: Mikrocontroller und Digitale Elektronik Elektronisches KNN verwirklichen, aber wie?


von Timm Robert (Gast)


Lesenswert?

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

von mr.chip (Gast)


Lesenswert?

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

von Timm Robert (Gast)


Lesenswert?

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.

von Lokko (Gast)


Lesenswert?

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.

von Timm Robert (Gast)


Lesenswert?

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

von mr.chip (Gast)


Lesenswert?

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.

von Timm Robert (Gast)


Lesenswert?

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.

von Lokko (Gast)


Lesenswert?

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.

von Timm Robert (Gast)


Lesenswert?

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?

von Lokko (Gast)


Lesenswert?

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.

von Lokko (Gast)


Lesenswert?

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)

von Timm Robert (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.