Forum: PC-Programmierung Neuronales Netz in Java


von Leopold N. (leopold_n)


Lesenswert?

Hallo,

ich muss füf meine seminararbeit ein netz programmieren, welches eine 
zahlenfolge erkennt und auch fortführen kann...

Jetzt weiß ich bloß nicht wie ich das Ganze angehen soll.

Kann mir da jemand helfen?

Vielen Dank im Vorau
Leo

: Verschoben durch Admin
von Dussel (Gast)


Lesenswert?

Aufgabe lesen und verstehen, Lösungsmöglichkeiten überlegen, beste 
Möglichkeit aussuchen und diese dann schrittweise umsetzen. Literatur 
habe ich dazu nicht, aber irgendein Wirtschaftler hat sicher schon was 
dazu geschrieben.

von MaWin (Gast)


Lesenswert?

Leopold N. schrieb:
> Jetzt weiß ich bloß nicht wie ich das Ganze angehen soll.

Zunächst durch eine Beschränkung des Wertebereichs.

z.B. Zahlen bis 10. Jede Leitung signalisiert, ob die Zahl vorkommt (1) 
oder nicht (0).

Dann eine Matrix aus Gleitpunktzahlen mit 10 Spalten als Eingängen und 
10 Zeilen als Ausgängen und eine Matrixmultiplikation des Eingangswertes 
um einen Ausgangsvektor zu erhalten, in dem dann der grösste Wert sagt, 
welche Zahl am wahrscheinlichsten folgt.

Diese Matrix muss mit passenden Gleitpunktzahlen befüllt werden, in dem 
sie trainiert wird, also Eingänge eine Zahlenfolge, den Ausgang der 
Folgezahl festlegen und reinmultiplizieren, und das mit 1000 
beispielhaften Zahlenfolgen mit ihren Ergebnissen.

Danach kann man die trainierte Matrix befragen.

Das wird so übrigens nicht erfolgreich. Man braucht noch mehrere Spalten 
mit Steigung (Abstand der Eingangswerte), Steigung von Steigung 
(arithmetische oder geometrische Reihe) und ein paar Eigenschaften nach 
denen Zahlenreihen aufgebaut sein können, beispielsweise abwechselnde 
Abstände. Diese Kennwerte muss man vorher normal algorithmisch 
analysieren.

von Leopold N. (leopold_n)


Lesenswert?

Hättest du mal nen beispielcode für mich wie du dir das vorstellst?

von MaWin (Gast)


Lesenswert?

Nein, schon gar nicht in Java, der Lisp-back propagation Code ist wohl 
vor 30 Jahren mit dem Rechner verschrottet worden.

http://cs.uni-muenster.de/Professoren/Lippe/lehre/skripte/wwwnnscript/prin.html

von Arc N. (arc)


Lesenswert?

https://class.coursera.org/ml-005/lecture/preview

In den Programmieraufgaben des Kurses wurden auch neuronale Netze in 
Octave umgesetzt genauer gesagt das Erkennen handschriftlicher Ziffern

@Schon gar nicht in Java
Vor allem würde ich nie auf die Idee kommen in Java auch nur ansatzweise 
komplexere Formeln etc. umzusetzen, solange es da noch nicht mal 
Operatorüberladung gibt

: Bearbeitet durch User
von Neuron (Gast)


Lesenswert?


von Neuron (Gast)


Lesenswert?

Leopold N. schrieb:
> seminararbeit

Leopold N. schrieb:
> in Java

alles klar!

von Karl H. (kbuchegg)


Lesenswert?

Was ist das für ein Seminar?

Oder ist das wieder so eine Sache, bei der man sich auf eine 
Lösungsmöglichkeit versteift, weil sie so wahsinnig toll und technisch 
klingt?

Die meisten Zeahlenfolgen, die in Rätsel auftauchen sind von ganz 
simpler Natur. Mit der Analyse der Differenzen bzw. der Differenzen der 
Differenzen sind die meisten zu klären.


(Ganz abgesehen davon, dass es für die meisten Folgen sowieso unendlich 
viele Fortführungsmöglichkeiten gibt)

Auch interessant
https://www.youtube.com/watch?v=vKA4w2O61Xo

: Bearbeitet durch User
von Boris O. (bohnsorg) Benutzerseite


Lesenswert?

Das ist eine objektorientierte Sprache, folglich werden ein paar Klassen 
anzulegen sein. Wie wäre es mit einer Klasse für ein Neuron? 
Anschließend werden viele dieser Neuronen miteinander assoziiert (ein 
Neuron hat bspw. eine Liste von anderen Neuronen, die Eingänge 
darstellen und solche, die Ausgänge darstellen) und zwischendrin kommt 
noch etwas mit Mustern in der objektorientierten Entwicklung. Es genügt 
bspw. nicht, einfache Listen zu führen, da auch die Richtung und 
Gewichtung der jeweiligen Verbindung zwischen zwei Neuronen entscheidend 
ist.

Es ist auch kein Grund zur Traurigkeit, nicht jeder ist für die 
Bedienung und schon gar nicht Steuerung von Datenverarbeitungsanlagen 
gemacht. Es gibt ja auch noch immer Floristen, Einzelhändler und 
Bankberater.

von asdf (Gast)


Lesenswert?

> Es gibt ja auch noch immer Floristen, Einzelhändler und
Bankberater.

Vielleicht Berufe, ueber die jemand der zu faul ist, die 
Standardimplementierungen von kNN nachzulesen und stattdessen was von 
Neuron als Objekt faselt, nachdenken sollte.

von Karl H. (kbuchegg)


Lesenswert?

Boris Ohnsorg schrieb:
> Das ist eine objektorientierte Sprache, folglich werden ein paar Klassen
> anzulegen sein. Wie wäre es mit einer Klasse für ein Neuron?
> Anschließend werden viele dieser Neuronen miteinander assoziiert (ein
> Neuron hat bspw. eine Liste von anderen Neuronen, die Eingänge
> darstellen und solche, die Ausgänge darstellen) und zwischendrin kommt
> noch etwas mit Mustern in der objektorientierten Entwicklung. Es genügt
> bspw. nicht, einfache Listen zu führen, da auch die Richtung und
> Gewichtung der jeweiligen Verbindung zwischen zwei Neuronen entscheidend
> ist.

Äh. Das ist Quatsch,

Ein Neuronales Netz ist nichts anderes als Matrixmultiplikation. Nur mit 
haufenweise Spalten und haufenweise Zeilen in der Matrix.

Mit deinem Ansatz kommst du nie auf Speed.

Allerdings frage ich mich immer noch, woher der Ansatz kommt, da ein 
neuronales Netz einzusetzen.

: Bearbeitet durch User
von Ulrich F. (Gast)


Lesenswert?

Karl Heinz schrieb:
> Mit deinem Ansatz kommst du nie auf Speed.
Danach wurde bisher noch nicht gefragt.

von Karl H. (kbuchegg)


Lesenswert?

Ulrich F. schrieb:
> Karl Heinz schrieb:
>> Mit deinem Ansatz kommst du nie auf Speed.
> Danach wurde bisher noch nicht gefragt.

Richtig.
Man muss aber auch nicht mit Gewalt und voller Absicht dem Prozessor 
Prügel zwischen die Beine werfen.

von Udo S. (urschmitt)


Lesenswert?

Leopold N. schrieb:
> füf meine seminararbeit

Leopold N. schrieb:
> Hättest du mal nen beispielcode für mich wie du dir das vorstellst?

Super, kannst du nicht einfach ehrlich schreiben:
"Ich bin zu faul meine Arbeit selbst zu machen, ist hier jemand, der sie 
für mich macht."

Dein Berufsziel ist:
[ ] Berater
[ ] Chef
[ ] Verteidigungsminister

von Albert M. (Firma: Bastler aus Mönchengladbach) (albertm) Benutzerseite


Lesenswert?

Hier gibt es eine umfangreiche Freeware Library für neuronale Netze, 
unter anderem wird auch Java unterstützt:

http://leenissen.dk/fann/wp/

von Udo S. (urschmitt)


Lesenswert?

Karl Heinz schrieb:
> Man muss aber auch nicht mit Gewalt und voller Absicht dem Prozessor
> Prügel zwischen die Beine werfen.

Wegen Java?
So schlecht ist da die Performance beim Rechnen gar nicht. Wir haben 
hier den Levensthein Algorithmus produktiv für unscharfes Suchen im 
Einsatz.
Als ich den implementiert hatte, habe ich es im Vergleich in C 
implementiert. Der Code ist quasi identisch. Dann die Überraschung: Java 
war schneller! Der Fehler war schnell gefunden, der C Code war mit Debug 
Info und damit ohne Optimierung.
Aber selbst mit Optimierung war der Algorithmus nur 50% schneller in C 
als in java und das war damals java 1.4. und der damalige MS-C Compiler,
Plattform Windows 32Bit.

von Karl H. (kbuchegg)


Lesenswert?

Udo Schmitt schrieb:
> Karl Heinz schrieb:
>> Man muss aber auch nicht mit Gewalt und voller Absicht dem Prozessor
>> Prügel zwischen die Beine werfen.
>
> Wegen Java?

Nein.
Wegen 'neuronales Netz mit Neuronen Objekten und deren Verknüpfungen' 
implementieren.

> Aber selbst mit Optimierung war der Algorithmus nur 50% schneller in C
> als in java und das war damals java 1.4. und der damalige MS-C Compiler,
> Plattform Windows 32Bit.

Ja. Die JiT Compiler sind schon ziemlich gut geworden.

Ich mag Java trotzdem nicht. Eine Sprache mit Garbage Collection ist mir 
suspekt :-)

von Karl H. (kbuchegg)


Angehängte Dateien:

Lesenswert?

Udo Schmitt schrieb:

> So schlecht ist da die Performance beim Rechnen gar nicht. Wir haben
> hier den Levensthein Algorithmus produktiv für unscharfes Suchen im
> Einsatz.

Der Levensthein? Der ist super!
Benutz ich auch gerne.

von Udo S. (urschmitt)


Lesenswert?

Karl Heinz schrieb:
> Ich mag Java trotzdem nicht. Eine Sprache mit Garbage Collection ist mir
> suspekt :-)

Wars mir am Anfang auch. Inzwischen recht problemlos sogar als 
langlaufende (IMB MQ) Serverprozesse im -sagen wir mal- empfindlichen 
Bereich. Es geht um Finanztransaktionen bei Banken und Versicherungen . 
Wenn da was steht werden die Bankster ganz schnell sehr nervös :-)

von Karl H. (kbuchegg)


Lesenswert?

Egal. Wie auch immer

Mir fehlt immer noch die Rückmeldung vom Leopold.
Ausser "Ich will neuronales Netz" und "Hat wer Code für mich" kam da 
noch nicht viel.

: Bearbeitet durch User
von Klaus (Gast)


Lesenswert?

Man kann die armen Schweine mit einem 'h' zwischen 's' und 't' in ihrem 
Namen nur bedauern. Es wird ihrer gedacht, aber kein Mensch findet sie 
bei Wikipedia. :-)

von Udo S. (urschmitt)


Lesenswert?

Klaus schrieb:
> Es wird ihrer gedacht, aber kein Mensch findet sie
> bei Wikipedia. :-)

Zum Glück hat auch Google eine unscharfe Suche und korrigiert den Namen. 
Sehr wahrscheinlich mit ebendem Algorithmus.
Asche auf mein Haupt, war natürlich falsch geschrieben.
https://de.wikipedia.org/wiki/Levenshtein-Distanz

von Klaus (Gast)


Lesenswert?

Udo Schmitt schrieb:
> Klaus schrieb:
> ...
> Zum Glück hat auch Google eine unscharfe Suche und korrigiert den Namen.
> Sehr wahrscheinlich mit ebendem Algorithmus.

Das mag so sein. :-) Ich kann es nur nicht beurteilen, weil ich google 
nicht benutze.

> Asche auf mein Haupt.
Na, na. So schlimm ist das auch nicht. :-)

von Andreas H. (ahz)


Lesenswert?

Karl Heinz schrieb:
> Udo Schmitt schrieb:
>
>> So schlecht ist da die Performance beim Rechnen gar nicht. Wir haben
>> hier den Levensthein Algorithmus produktiv für unscharfes Suchen im
>> Einsatz.
>
> Der Levensthein? Der ist super!
> Benutz ich auch gerne.

Na dann wird Euch das hier sicherlich begeistern ;-)

http://www.electronicproducts.com/Test_and_Measurement/Test_and_Measurement_Software/Computer_scientists_admit_40_year_old_algorithm_is_perfect_cannot_be_improved_upon.aspx

Grüße
Andreas

von Besucher (Gast)


Lesenswert?

Karl Heinz schrieb:
> Allerdings frage ich mich immer noch, woher der Ansatz kommt, da ein
> neuronales Netz einzusetzen.

Ach, schätze mal das wird im Kontext des Seminars halt irgendwie Sinn 
machen.


PS: Derweil in Texas: https://www.youtube.com/watch?v=qv6UVOQ0F44

von Andreas R. (daybyter)


Lesenswert?

Ich hätte mal eher im java-forum gefragt...

von Karl H. (kbuchegg)


Lesenswert?

Besucher schrieb:
> Karl Heinz schrieb:
>> Allerdings frage ich mich immer noch, woher der Ansatz kommt, da ein
>> neuronales Netz einzusetzen.
>
> Ach, schätze mal das wird im Kontext des Seminars halt irgendwie Sinn
> machen.

Bin ich mir gar nicht mal so sicher.
Es ist hier im Forum gar nicht mal so selten, dass sich Anfänger 
komplett übernehmen. Da ist dann oft das Wollen größer als das Können, 
viel größer. Die orientieren sich bei der Wahl der selbst gewählten 
Aufgabenstellung an gut klingenden Buzzwords und nicht an dem was sie 
noch stemmen können.

: Bearbeitet durch User
von Pandur S. (jetztnicht)


Lesenswert?

Neuronale Netze beinhalten ausser in akademischen Arbeiten jeweils die 
Aussage : Ich verwende ein selbstlernendes System, weil mich weder die 
Aufgabe, noch die Loesung interessiert.

Das uebliche Resultat ist dann : Die Loesung ist unbefriedigend, wir 
haetten nochmals ein Jahr reinbuttern sollen. Oder die Rechenleistung 
hat nicht gereicht.

Dieses Ziel erreicht man schneller, imdem man's mit einem Interpreter, 
zB Basic, Javascript, oder sonstwas schreibt. Dann reicht man noch eine 
Studie, wie man alle Rechner der Schule zu einem Cluster 
zusammenschalten sollte  nach, und das war's dann.

von Sven J. (svenj)


Lesenswert?

Moin,

Um mit Neuronalen Netzen anzufangen kann mal hier spielen:
http://www.ra.cs.uni-tuebingen.de/SNNS/

Mittlerweile gibt's da auch eine Java Implementierung. Jedenfalls kann 
man da recht komfortabel Netze bauen und Lernen lassen.

--
 SJ

von Jonando (Gast)


Lesenswert?

Leopold N. schrieb:
> ich muss füf meine seminararbeit ein netz programmieren, welches eine
> zahlenfolge erkennt und auch fortführen kann...

Typischer Fall von:

a.) Ich hab' beim Seminar immer blau gemacht und muss jetzt plötzlich 
und unerwarteterweise was tun...

b.) Ich war zwar da, bin aber zu faul, das jetzt zu machen...

c.) Ich war zwar da, hab' aber nix kapiert, weil das eh überflüssig ist, 
denn ich finde sowieso immer eine paar Doofe, die das für mich machen.. 
Sollte ich diese Dumpfbacken wider Erwarten mal nicht finden, so lass 
ich mir von Papa halt 'nen Ghostwriter kaufen...

d.) Sind neuronale Netze nicht genau dafür da, mir eben diese Arbeit mal 
irgendwann abzunehmen ???

von Vlad T. (vlad_tepesch)


Lesenswert?

Dussel schrieb:
> aber irgendein Wirtschaftler hat sicher schon was
> dazu geschrieben.

das wären die letzten, die ich für sowas konsultieren würde ;-)

: Bearbeitet durch User
von Vlad T. (vlad_tepesch)


Lesenswert?

Boris Ohnsorg schrieb:
> Das ist eine objektorientierte Sprache, folglich werden ein paar Klassen
> anzulegen sein.

Die Übung hatten ein Kommilitone und ich mal gemacht (auch in Java).

Er einen gut designten objektorientierten Entwurf und ich einen 
Float-Array-basierten Ansatz. An Details Kann ich mich nicht mehr 
erinnern.
Ich glaube die Größe war so einstellige Anzahl an hidden layer und 
niedrige zweistellige Anzahl Neuronen pro Layer.

Der Unterschied beim Training lag (zweistelligen) vielfachen Bereich.

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.