Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki

Aktuelle Zeit: Sa Jan 20, 2018 16:12

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Machine learning, JIT und OGL
BeitragVerfasst: Fr Jan 12, 2018 18:20 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2498
Wohnort: Berlin
Programmiersprache: C/C++, C#
Oft kommen tolle sachen durch das über den Tellerrand gucken ans Tageslicht.

Ich lerne mich aktuell in Machine learning ein, Deep learning, Deep Q learning und so weiter.
Da hab ich überlegt, ob man nicht eine pre prediction für Befehlsketten, Daten anfordern und culling machen könnte, die bei komplexeren Szenen besser skaliert als was hardwired.

Nehmen wir mal das entfernen von ungebrauchten Daten. Das culling hängt stark vom input ab, also geht der benutzer links, rechts, hoch oder runter, im Sidescroller. Aufgrund der ungewissheit opimiert man in der Richtung nicht und auch beim Ressourcen laden ist es der gleiche Grund. Man legt in der Regel per hand gepflegte Listen an, die in einer Zone auslösen.
Ein trainiertes netz kann nach einer weile recht genaue prognosen geben, wie der Spieler sich bei bestimmten States verhalten wird und kann schon im vorraus das culling für den kommenden frame beginnen oder weit vorher das laden von ressourcen auslösen.
Da das Resultat, auf die Handlung erst später bekannt ist, benötigt man ein Reward basiertes System.
Beim culling könnte man dann so viel komplexere szenen in der gleichen Zeit schaffen, wenn ich dann auch noch Objekte cluster, dann sollte es nicht nur mehr schaffen, sondern auch niedere latenzen haben.

Beim Kommandolisten könnte man Objekt basierte Befehlsblöcke erlenrnen. Ala

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Machine learning, JIT und OGL
BeitragVerfasst: Fr Jan 12, 2018 19:45 
Offline
DGL Member

Registriert: Fr Mai 11, 2012 13:25
Beiträge: 211
Programmiersprache: c++, c, JavaScript
Hab ich auch schon drüber nachgedacht, da gibt es tolle Kombinationsmöglichkeiten für 3D und ML.
Habe da kürzlich auch ein paar Videos gesehn, wo sie Zweibeinern und Vierbeinern das Laufen beigebracht haben, oder auch Kämpfen etc.
ML wird bald noch viel mehr in Games einfließen, schätz ich.
Am spannendsten ist es aber immer noch für die KI, die sich nicht nur auf die motorischen Fähigkeiten auswirkt oder etwas optimiert, sondern die die Bots vielseitiger kommunizieren und entscheiden lässt, da ergeben sich ganz neue Möglichkeiten.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Machine learning, JIT und OGL
BeitragVerfasst: Sa Jan 13, 2018 01:27 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2077
Wohnort: Vancouver
Programmiersprache: C++
Aber was wenn die prediction falsch war ..? Dann hast du entweder darstellungs probleme (wegen falschem culling / resource loading), oder wenn du jedes frame ueberpruefst ob die vorhersage korrect war, dann sparst du auch nicht wirklich viel - oder?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Machine learning, JIT und OGL
BeitragVerfasst: Sa Jan 13, 2018 11:28 
Offline
DGL Member

Registriert: Fr Mai 11, 2012 13:25
Beiträge: 211
Programmiersprache: c++, c, JavaScript
Ich denke, es wäre so, dass die Meisten Leute kürzere Ladezeiten hätten, aber gerade die, die gegen den Strom schwimmen und aus der Reihe tanzen längere Ladezeiten hätten. Schöne neue Welt ;) Was nicht optimal ist, wird optimal gemacht. Dieses ML wird sicher nicht nur Gutes hervorbringen ( man denke an menschliche Arbeitskräfte-Optimierung durch ein künstliches neurales Netz. Ich fürchte fast, dass es sowas schon gibt, z.B. bei riesigen Versandhändlern. Im Grunde sind wir schon fast in der Matrix ;) Und danach gehts weiter mit den Reapern aus Mass Efect), aber ich finds definitiv faszinierend.

Ich denke aber auch, dass man so viele Ergebnisse zum Lernen erstmal bekommen muss. D.h. erst wenn das Spiel so und so oft durchgespielt wäre, gäbe es eine vernünftige Optimierung, zumindest für einige Anwendungsfälle. MMORPGs mit riesigen Welten könnten toll profitieren, schätz ich.
Einige Sache wären aber einfach auch nur mit Kanonen auf Spatzen geschossen.
Z.B. Ein Mesh nach Blickwinkel zu cullen durch ein neurales Netz ersetzen, wäre Verschwendung.
Bzw. es gibt ja auch Octrees, ob ein neutrales Netz da was besseres und performanteres findet ist fraglich.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Machine learning, JIT und OGL
BeitragVerfasst: Sa Jan 13, 2018 17:36 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jun 05, 2013 15:12
Beiträge: 115
Wohnort: Glinde
Programmiersprache: Delphi 7
Ich glaube am Ende eines Versuchs wird man klüger sein.
Ich habe ein paar Versuche mit solchen Neztwerken gemacht, um einen komprimierung meiner Daten zu erzeugen.
Das Ende des Versuchs war sehr ernüchternt.
Ja, Neurale Netze können Daten sehr klein packen, sogar deutlich kleiner als Rar, Zip und Huffman.
Aber sie benötigte ebenso viel mehr Zeit und liegt damit weiter hinter den üblichen Standarts.
Da jede Datei anders aufgebaut ist, findet man auch wenige beispiele, wo der vorher gegangene algorythmus noch ein zweites mal Funktioniert.
Genau dort wird mit großer Wahrscheinlichkeit das Problem beim Cullen liegen.
Am Ende müsste wohl jede Karte eines Spieles ähnlich aufgebaut sein oder zumindestens für jede Karte ein eigener Algrythmus gefunden werden.

Code:
  1. Einige Sache wären aber einfach auch nur mit Kanonen auf Spatzen geschossen.

Hier kann ich absolut zustimmen.

Gruß Wolf

_________________
幸福は笑う人に来て ~~ koufuku wa warau hito ni kite
Das Glück kommt zu denen die lachen


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Machine learning, JIT und OGL
BeitragVerfasst: So Jan 14, 2018 14:29 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2498
Wohnort: Berlin
Programmiersprache: C/C++, C#
Aya hat geschrieben:
Aber was wenn die prediction falsch war ..? Dann hast du entweder darstellungs probleme (wegen falschem culling / resource loading), oder wenn du jedes frame ueberpruefst ob die vorhersage korrect war, dann sparst du auch nicht wirklich viel - oder?

Das ist wie bei der pre prediction von cpu instructions oder speicherzugriffen. Die cpu verliert bei einer falschen annahme Zeit, weil sie es nun ausführen muss, statt es schon getan zu haben, während man auf die Antwort wartete.
Was also passiert, ist die hervorsage welche richtung der spieler einschlägt und auf der ungenutzten cpuzeit das training, die vorhersage und die aufgaben zu erledigen. So kann bei dem punkt, wo man die berechnung machen würde schon mal die Vorhersage prüfen und eventuell die berechneten daten verwenden, statt sie jetzt erst zu berechnen.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Machine learning, JIT und OGL
BeitragVerfasst: Mo Jan 15, 2018 04:48 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2498
Wohnort: Berlin
Programmiersprache: C/C++, C#
Die Algorithmen für ML werden immer mehr und der Lernprozess wird immer kürzer bzw. die Aufgaben, die man der AI vorwirft immer komplexer. Um z.B. den Go Meister zu schlagen, hat man Monte Carlo für die Antwortwahl verwendet. Statt unglaublich viele Möglichkeiten durch zu iterieren und zu bewerten, hat man Chaos angewendet.
Pseudo Zufall wählt ein kleines Set von der Menge und bewertet diese, dann im nächsten Zug wieder und so weiter. So bekommt man sehr schnell gute Ergebnisse, weil man viele Schwachsinnige Züge überspringt, vieleicht auch den besten aber der ist garnicht das Ziel.
Bei Menschen nutzt man Zeitverzögerte Bewertungen, die man Rewards nennt. So kann die KI Wege gehen, die zwar kein sofortiges bestes Ergebnis bedeutet aber auf lange Sicht halt mehr bringt.
Viele dinge gehen jetzt erst, weil wir mehr Speicher und eine Menge brach liegende CPU-Zeit haben, sowie neue Algorithmen, bzw. alte man heute weiß, wo diese noch gut sind(z.B. Monte Carlo).

Ich denke daran die CPU Zeit zu nehmen, die eh brach liegt. Wenn man z.B. Backbuffer swap, system calls oder serielle Aufgaben löst, dann liegen die anderen Kerne häufig brach und nun haben AMD und Intel CPUs "Hyper Threading", was sogar erlaubt die Mathematik, für ML, auf dem wartendem Kern auch aus zu führen.
Was ich denke, was gut gehen kann, ist eine Richtungsvorhersage.
Also ein untrainiertes Netz, welches mit Handgeschriebenen Wichtungen kommt soll hervor sagen, wie der Richtungsvektor vom Spieler aussehen wird.
Als erstes würde ich den Richtungsvektor vereinfachen, in dem ich ihn Normalisiere und die Werte, die er annehmen kann, reduziere z.B. 0°,45°,90°,... ° auf jeder Achse.
Nun kann ich eine Vorhersage machen, multipliziere die Maximalgeschwindigkeit und schaue welche Ressourcen nun gebraucht werden, wenn ich im Octree an der Position stehe und forder diese an. Dann berechne ich die sichtbaren Objekte von der Position und pack das Ergebnis in den Frustum culling Cache. Welcher abgefragt wird, ob für das Node im Octree was vor liegt, sonnst es berechnet.
Wenn ich also eine falsche Prognose mache, dann berechne ich die Sichtbarkeit eh aber lag ich richtig kann ich diesen Frame die Sichtbarkeitsberechnung einsparen.
Resourcen sollte man eh asynchron laden und dauern ihre Zeit, wenn nun also klar ist, welche Resourcen wirklich gebraucht werden, dann sind sie schon auf dem Weg in Speicher und das erzeugen einer Anfrage, sowie ein Teil der Ladezeit kann eingesparrt werden.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.037s | 16 Queries | GZIP : On ]