Frage

Ich schrieb einmal ein Tetris AI, die Tetris ganz gut gespielt. Der Algorithmus I verwendet ( in diesem Papier beschrieben) ist ein zweistufiger Prozess.

Im ersten Schritt entscheidet der Programmierer Eingänge zu verfolgen, die „interessant“ für das Problem sind. In Tetris könnten wir interessiert sein bei der Verfolgung, wie viele Lücken dort in einer Reihe ist, weil minimieren Lücken Ort Zukunft Stücken leichter helfen könnten. Ein anderer könnte die durchschnittliche Säulenhöhe sein, weil es eine schlechte Idee sein kann, Risiken zu übernehmen, wenn Sie im Begriff sind zu verlieren.

Der zweite Schritt ist die Bestimmung, Gewichte mit jedem Eingang verbunden ist. Dies ist der Teil, wo ich einen genetischen Algorithmus verwendet. Jeder Lernalgorithmus wird hier tun, solange die Gewichte im Laufe der Zeit auf der Grundlage der Ergebnisse angepasst werden. Die Idee ist, den Computer entscheiden zu lassen, wie die Eingabe in die Lösung bezieht.

Mit diesen Eingaben und deren Gewichte wir den Wert des Nehmens jede Handlung bestimmen kann. Zum Beispiel, wenn die gerade Linie Form des ganzen Weg in der rechten Spalte setzen wird, die Lücken von 4 verschiedenen Reihen eliminieren, dann könnte diese Aktion bekommt eine sehr hohe Punktzahl, wenn sein Gewicht hoch ist. Ebenso könnte es flach mit an der Spitze tatsächlich Lücken verursachen und so wird diese Aktion eine niedrige Punktzahl.

Ich habe mich immer gefragt, ob es einen Weg gibt, einen Lernalgorithmus zum ersten Schritt anzuwenden, wo wir „interessant“ potenzielle Eingänge finden. Es scheint möglich, einen Algorithmus zu schreiben, in dem der Computer zuerst lernt, was Eingänge nützlich sein könnten, gilt dann lernen, diese Eingänge zu wiegen. Hat alles wie zuvor getan worden? Ist es bereits in allen AI-Anwendungen eingesetzt?

War es hilfreich?

Lösung

In neuronalen Netzwerken können Sie ‚interessant‘ potenzielle Eingänge auswählen, indem diejenigen zu finden, die die stärkste Korrelation haben, positiv oder negativ, mit den Einstufungen für Sie trainieren. Ich denke, Sie können auch in anderen Kontexten in ähnlicher Weise tun.

Andere Tipps

Ich glaube, ich könnte das Problem nähern Sie sich durch die Fütterung primitiveren Daten an einen Lernalgorithmus beschreiben sind. Zum Beispiel kann ein tetris Spielzustand kann durch die Liste der belegten Zellen beschrieben. Eine Folge von Bits mit diesen Daten beschreiben würde eine geeignete Eingabe in dieses Stadium des Lernalgorithmus sein. tatsächlich die Ausbildung auf das ist immer noch eine Herausforderung; wie Sie wissen, ob solche, die Ergebnisse sind. Ich nehme an, Sie könnten den ganzen Algorithmus in einen einzigen Klecks rollen, wobei der Algorithmus mit den aufeinanderfolgenden Zuständen des Spiels und der Ausgang nur die Blockplatzierungen wären zugeführt wird, mit einem höheren Scoring-Algorithmen für zukünftige Generationen ausgewählt.

Eine andere Wahl könnte eine große Korpus von Stücken aus anderen Quellen zu benutzen; wie von menschlichen Spielern oder ein handgearbeitetes ai aufgezeichnet angehört, und die Algorithmen wählen, die eine starke Korrelation zu einigen interessanten Tatsache oder ein anderer aus der Zukunft spielen, wie die Partitur in den nächsten 10 Züge verdient Ausgänge ist zu tragen.

Ja, es gibt einen Weg.

Wenn Sie M ausgewählte Features gibt es 2 ^ M Untergruppen, so gibt es eine Menge zu sehen. Ich würde auf die folgenden:

For each subset S
   run your code to optimize the weights W
   save S and the corresponding W

Dann für jedes Paar S-W, können Sie G-Spiele für jedes Paar laufen und für jeden die Partitur L speichern. Jetzt haben Sie eine Tabelle wie folgt aus:

feature1    feature2    feature3    featureM   subset_code game_number    scoreL
1           0           1           1           S1         1              10500
1           0           1           1           S1         2              6230
...
0           1           1           0           S2         G + 1          30120
0           1           1           0           S2         G + 2          25900

Jetzt können Sie einige Komponenten Auswahlalgorithmus (PCA zum Beispiel) ausgeführt werden und entscheiden, welche Funktionen sind im Wert von scorel zu erklären.

Eine Spitze. Wenn der Code ausgeführt wird W, Saatgut den Zufallszahlengenerator zu optimieren, so dass jede unterschiedliche sich entwickelnden Gehirns gegen die gleiche Sequenz Stück getestet

Ich hoffe, es hilft bei der etwas!

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top