Forum: Mikrocontroller und Digitale Elektronik Neuronales Netz


von NN (Gast)


Lesenswert?

Hi,

ich muss in einem uC ein Neuronales Netz implementieren.
Nun frage ich mich, wieviel RAM-Speicher ich für eine solceh Aufgabe 
einplanen müsste...

Kann soetwas noch sinnvoll mit 4kB gelöst werden, oder braucht man unter 
16kB garnicht anfangen an solche Aufgaben zu denken?

Es wird ca. 4 Inputmesswerte geben und drei unterschiedliche 
Outputwerte.
Wie die Zwischenschicht ausfällt ist mir selber noch nicht ganz klar,
allerdings muss ich mich nun für einen uC entscheiden und möchte nicht 
unnötig teure Controller verwenden...

mfg und Danke

von j. c. (jesuschristus)


Lesenswert?

Das geht mit dem billigsten Controller. Ein neuronales Netz ist auch 
nichts weißer als eine Vektormultiplikation. Ram brauchst Du bei so 
wenigen Werten kaum, eine Zwischenschicht vielleicht noch nichtmal, oder 
die besteht im kompliziertesten Fall halt aus 8 Einheiten.
Mach Dir lieber mal Gedanken, wie du das Netz trainieren willst.

von NN (Gast)


Lesenswert?

Dazu habe ich auch gleich eine Folge-Frage:

Wie signalisiert man dem Netz, dass die "Entwicklung" gerade in die 
gewünschte Richtung geht?

Soweit ich es verstanden habe, werden die Wichtungen in der mittleren 
Ebene im Lernprozess verschoben. Wie aber weiß so ein Netz, dass die 
daraus resultierende Ausgabe bei Wichtung A erwünschter ist, als bei 
Wichtung B?

mfg

von Tommy S. (tommys)


Lesenswert?

Hi,

NN schrieb:
> Kann soetwas noch sinnvoll mit 4kB gelöst werden, oder braucht man unter
> 16kB garnicht anfangen an solche Aufgaben zu denken?
>
> Es wird ca. 4 Inputmesswerte geben und drei unterschiedliche
> Outputwerte.

Die Input/Output-Geschichte wird wahrscheinlich x-mal mehr Speicher 
benoetigen als das NN. Wie j.c. schon geschrieben hat, ist das im 
Idealfall eine Matrix die multipliziert wird. Man kann NN auch anders 
implementieren, aber der Speicherverbrauch ist dann entsprechend 
groesser.


NN schrieb:
> Wie signalisiert man dem Netz, dass die "Entwicklung" gerade in die
> gewünschte Richtung geht?
>
> Soweit ich es verstanden habe, werden die Wichtungen in der mittleren
> Ebene im Lernprozess verschoben. Wie aber weiß so ein Netz, dass die
> daraus resultierende Ausgabe bei Wichtung A erwünschter ist, als bei
> Wichtung B?

Stichwort: Backpropagation

Ich habe waehrend meiner Studienzeit auch relativ viel mit NN 
gearbeitet. Ich habe mir dafuer ein Tool geschrieben, das Trainingsdaten 
einliest und auf dem "schnellen PC" die Wichtungen (=Parameter) der 
einzelnen Knoten ermittelt - sprich, das Netz trainiert. Diese Parameter 
musste ich dann nur noch in den Controller uebertragen. Geht relativ 
zuegig das zu implementieren, ein Nachmittag sollte vollkommen 
ausreichend sein.

Gruesse,
TommyS

von py (Gast)


Lesenswert?

Javanns ist zb ein Tool damit du einen Einblick bekommst wie deine 
Hiddenschichten aussehen könnten damit ein nahezu gewünschtes Ergebnis 
herauskommt

von Plop (Gast)


Lesenswert?

Ein NN ist das richtige fuer Leute, die sich nicht richtig mit dem 
Problem befassen wollen oder koennen, und beliebig viel Rechenleistung 
haben.

Daher sollte man die Struktur und die Gewichtung mit dem PC machen. Und 
erst nachher das NN in den Controller laden. Da man nicht inkrementell, 
sondern nur auf's Mal lernen kann, muss man die Muster repetitiv 
anlegen. Sowas kann man in der Realitaet nicht, sondern nur in der 
Testumgebung.

von Tommy S. (tommys)


Lesenswert?

Plop schrieb:
> Da man nicht inkrementell,
> sondern nur auf's Mal lernen kann,

Verstehe Dich nicht so ganz. Du trainierst einen Datensatz nach dem 
anderen und kannst ja auch jederzeit mit dem Training aufhoeren und 
"Echtdaten" verarbeiten. Dann kannst Du wieder eine "Trainingssession" 
einschieben und so weiter. Das ist fuer mich ziemlich inkrementell.

Gruesse,
TommyS

von j. c. (jesuschristus)


Lesenswert?

Notfalls mach es halt mit einem anderen Artificial Intelligence Tool. 
SVM oder weiß-der-Geier-was. Am wichtigsten ist nicht die 
Klassifikationsmethode, sondern die Auswahl möglichst informativer 
Eigenschaften, die man der Klassifikation füttert. Ein neuronales Netz 
um Beethoven zu erkennen, sollte man lieber nicht mit dem 
RAW-Spannungsverlauf der Musik füttern.

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.