PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Einfaches neuronales Netz mit einer Elektronik realisieren



xtremecoder
30.01.2009, 17:02
Hallo RN-Crew!

Ich habe mich etwas in die Materie der künstlichen neuronalen Netze eingelesen, und wollte nun ein einfaches neuronales Netz aufbauen, um diese besser zu verstehen.
Ich hätte mir gedacht ich würde dies am liebsten ohne einen mikrokontroller realisieren... Denn im programmieren eines einfachen KNN sehe ich keine Große schwierigkeit, ich möchte es desshalb mal mit einem analogen oder digitalen Schaltkreis versuchen!
Ich bezeihe mich hierbei auf folgenden Thread:

https://www.roboternetz.de/phpBB2/zeigebeitrag.php?t=43897


Ich habe mir auch schon mein erstes KNN mit einer Elektronik geplant, nur kann dieses noch nicht dazulernen...

also mein erstes KNN:

es kann 3 verschiedene Muster erkennen anhand von 3 Inputneuronen. Enstprechend der jeweiligen Muster wird immer eines der 3 Outputneuronen aktiv!
Also ganz einfach, es setzt nur 3 outputneuronen entsprechend dem Muster am Eingang. Dies wäre wahrscheinlich viel einfacher einfach mit einer digitalen Schaltung aus einer Hand voll Logik-Gattern zu realisieren, aber das ist jetzt mal egal...

Als outputneuronen habe ich Transistoren verwendet. Der Basiswiderstand würde hier dann dem Aktivierungspotenzial entsprechen.
Die 3 Eingangssignale für das Muster habe ich einfach entsprechend mit nicht-invertierenden OPs "aufbereitet".
Nun ja, das ist ja alles schön und gut, die Verstärkung des Signals in den OPs (was natürlich der Gewichtung der Inputneuronen entspricht) habe ich schnell berechnet und selbst fesgelegt, aber natürlich kann mein KNN jetzt noch nicht dazulernen.

Das dazulernen möchte ich anhand des Backpropagationsverfahrens machen, also mein KNN soll selbst erlernen, welches Muster zu welchem Outputneuron gehört.
Anhand des Backpropagationsverfahrens kann man das sehr gut machen, dieses Verfahren ändert dann die Gewichtungen und Aktivierungspotenziale der Neuronen entsprechend ab und bis zum Schluss sollte dann alles perfekt eingestellt sein um dass das Netz seine entscheidungen treffen kann. Mein Problem ist jetzt aber, wie mache ich denn das mit dem Abändern dieser Größen?
Bei den Transistoren muss mein Netz den Basiswiderstand von selbst anändern können, und es muss das Widerstandverhältnis bei den OPs von selbst abändern können...

hmm...habt ihr da vielleicht Vorschläge wie man das machen könnte?

wäre euch sehr dankbar!

-alexander

Edit: Hab grad ein vielversprechendes pdf gefunden...

http://www.e-technik.uni-rostock.de/www/mess/29stuepmann.pdf

werde das morgen mal durchgehen!

xtremecoder
31.01.2009, 12:57
hallo Leute!

Tja, dieses pdf-dokument hat nun wirlich nicht sehr viel gebracht, da hier auch nur ein vorschlag für ein statisches netz gegeben wurde, also mit fixen gewichten und so...sprich es kann nicht dazulernen.
es ist zwar eine möglichkeit mit controllermatritzen beschrieben, allerdings möchte ich versuchen bei diesem experiment auf einen controller zu verzichten...

mein problem wäre nur, wie kann die schaltung ihre gewichte ändern...? also ich meine nicht, wie sie das vom verfahren her kann, sondern rein hardwaretechnesch...

danke für eure hilfe!

Hubert.G
31.01.2009, 20:23
Wenn du keinen Kontroller verwenden willst, dann wirst du die notwendigen Speicher mit FlipFlop lösen müssen.
Dazulernen ist meiner Ansicht nach nur mit speichern möglich.

xtremecoder
31.01.2009, 20:59
jap! ich denke mir das ist nicht so ein großes problem, aber mich würde halt interessieren wie ich die gewichte der neuronen am besten darstellen kann...also dass die schaltung die dann abändern kann...

die gewichte hätte ich mir irgendwie gedacht, so zu realisieren, dass ich Widerstände als Reziproke der Gewichte der Neuronen verwende...aber nur habe ich noch keine Ahnung wie ich diese Widerstände dann entsprechend in der Schaltung abändern soll, bzw wie die Schaltung selbst diese abändern soll...

thx!

Hubert.G
31.01.2009, 21:12
Darin wird ja das Hardware Problem liegen. Der Aufwand jedem Neuron einen Wert zuzuweisen und diesen dann auch einem Ereignis entsprechend abzuändern und in das weitere Geschehen einzubringen ist meiner Ansicht nach viel zu groß. Ein Kontroller nimmt dir die Hardware ab.
Selbst aufgebaut wird das ein Silikongrab.

i_make_it
31.01.2009, 21:52
ein Flipflop ist ja ein digitaler Speicher also müste eine Gewichtung digitalisiert und als digitales Datenwort gespeichert werden und später wieder auf analog gewandelt werden.
Spannungteiler mit Motorpoti als Speicher wäre eine Möglichkeit ohne den Digitalen Umweg verwenden zu müssen.

rossir
31.01.2009, 22:11
1) Apropo Silikongrab, wie viele Neuronen soll Dein Netz denn haben? Z.B.
7 input
4 hidden
3 output
Das ergibt 7*4+4*3=40 Verbindungen. Ist ne Menge!

2) Willst Du das Backpropagating auch in (analoge) Hardware gießen?
Schon ne Idee wie? Befürchte, das ist nicht einfach.

3) Wie sieht die Idee zur Hardwarelösung während der Lernphase aus? Ich meine, wie verdrahtest Du die Lernpattern? Annahme, Du hast 20 Lernpattern. Wie speist Du damit systematisch das KNN? Auch alles analog (= ohne Mikrokontroller)?

xtremecoder
31.01.2009, 22:41
hallo leute!

ja, wahrscheinlich habt ihr recht! das wird wohl doch nichts ohne nen microcontroller...

nun, im Moment bin ich dabei ein testprogramm für mein KNN zu schreiben in dem ich die sache mit dem backpropagationsprinzip mal entwerfe!
nachdem ich dann das genaue bild habe wie die topologie des Netzes aussieht, und das alles funktioniert, mache ich mich an die schaltung, aber die wird wohl doch mit mindestens einen microcontroller realisiert denke ich;-)

thx

also noch zur info:

bis jetzt schaut mein netz so aus:

2 inputneuronen, 5 hidden (auf 2 schichten verteilt, erste hidden schicht hat 3 neuronen, zweite 2), ein output.

wahrscheinlich wird das ganze dann noch etwas ausgebaut, aber ich möchte das ganze mal recht einfach halten zum testen