Neuronales Netz in Java

Gast #4167405
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.
Gast #4167417
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.
#4168045
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
Persönliche Seite #4168271
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.
Gast #4168314
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.
#4168317
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.
#4168353
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.
#4168366
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 :-)
#4168397
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 :-)
#4168578
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
#4169316
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.
#4169389
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.
Gast #4173594
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 ???
#4173681
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren