2017-05-14 2 views
-1

Ich fange an, über Deep-Learning zu lernen und gefunden synaptic.js.Einfache Deep-Learning-Vorhersage

Ich möchte ein Vorhersagesystem erstellen, wo ich eine Eingabe von Zahlen habe und möchte, dass die AI das Muster versteht.

Meine Trainingsdaten wären ein Array aus 2 Zahlen, und die Ausgabe, die ich validieren möchte, ist [x, y, z], wobei x und z eine Art boolescher Werte für gerade/ungerade sind und y die Summe von beiden ist Zahlen in der Eingabe.

So:

var trainingSet = [{ 
    'input': [20, 34], 
    'output': [1, 54, 0] 
}, { 
    'input': [22, 33], 
    'output': [1, 55, 1] 
},{ 
    'input': [24, 35], 
    'output': [1, 59, 1] 
},{ 
    'input': [23, 36], 
    'output': [0, 59, 0] 
}]; 

und ich würde die AI gerne die Antwort wissen, ob ich Eingang [20, 31].

Wie würde ich eine solche Logik einrichten?

Ich begann ein jsFiddle basierend auf einem YouTube talk aber nicht verstehen, was der Code tatsächlich tut ...

machten eine Schleife trainig Daten in this jsFiddle, die im Grunde ist zu generieren:

// training data generator: 
 
var trainingSet = []; 
 
for (var i = 0; i < 500; i++) { 
 
    var obj = {}; 
 
    obj.input = [ 
 
     Math.random() * 10, 
 
     Math.random() * 10 
 
    ].map(Math.round); 
 
    obj.output = [ 
 
     Number(obj.input[0] % 2 == 0), 
 
     obj.input[0] + obj.input[1], 
 
     Number(obj.input[1] % 2 == 1) 
 
    ] 
 
\t trainingSet.push(obj); 
 
} 
 

 
document.body.innerHTML = JSON.stringify(trainingSet);

+0

Dowvotes und "zu breit" close-votes sind willkommen zu erklären, warum. Ich habe versucht, das auf ein bestimmtes Problem in einer bestimmten Sprache in einer bestimmten API/Bibliothek zu beschränken. Ich sehe nicht, wo das "zu breit" sein kann, aber natürlich sind Kommentare willkommen. – Rikard

+0

Vielleicht haben Sie die Sprache und das Problem ausgewählt (beides schlechte Wahl für NNs), aber Sie haben keinen eigenen Versuch hinzugefügt. Das sieht nach schlechter Vorbereitung aus. ** Edit: ** Nach dem Besuch dieses jsFiddle-Links (nicht der beste Weg, um SO), gibt es vielleicht ein einfaches Modell, aber wenn das wirklich ein (lineares) Perzeptron ist, wird es nicht gut funktionieren und Sie werden das lernen innerhalb der ersten Teile eines guten Neural-Network-Kurses (ist die Modellkomplexität für Ihr Problem ausreichend? Ist Ihr Problem linear trennbar? Nein und Nein). Also lerne zuerst die Theorie. – sascha

+1

@sascha Ich sehe keinen Grund, dieses Problem zu reduzieren. Es ist spezifisch, gut beschrieben und der Autor hat eindeutig versucht, es zu lösen. Die "Lerntheorie" zu sagen ist nutzlos und kann auf die meisten Fragen zu SO angewendet werden. An den Autor: Richtig, wenn ich falsch liege, aber sollte das Problem nicht umgekehrt sein? In Ihrer Anweisung möchten Sie die Eingabe basierend auf der Ausgabe vorhersagen, so dass die Ausgabe effektiv Ihr Training sein sollte. –

Antwort

1

Wenn der Generator, den Sie bauen, einfach das Problem erklärt, kann das Problem nicht gelöst werden. Formal gibt es keine Funktion, so dass Sie die Eingabe von der Ausgabe wiederherstellen können. Der Generator erzeugt Zufallszahlen und was erhalten bleibt ist, ob sie ungerade/gerade und die Summe waren. Es gibt eine unendliche Menge von Zahlen, die diese Kriterien erfüllen. Aus Ihrem Beispiel: 54 = 20 + 34 = 18 + 36 = 16 + 38 ... Wenn es einen Prozess gab, der dies antreibt, kann es gemacht werden. Aber es ist zufällig. Dein neuronales Netzwerk kann niemals ein Muster lernen, weil es kein Muster gibt.