www.mikrocontroller.net

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


Autor: Timm Robert (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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/Neur...)
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

Autor: mr.chip (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Timm Robert (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Lokko (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Timm Robert (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: mr.chip (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Timm Robert (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Lokko (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Timm Robert (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Lokko (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Lokko (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)

Autor: Timm Robert (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...
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 ^^

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.