... ist ein sehr bedeutsamer KI-Aspekt.
Das ist doch eigentlich genau das, was ein Großteil der menschlichen Intelligenz ausmacht: gelerntes anwenden. Na klar muss auch irgendwer mal was neues erfinden aber es existiert derzeit ein riesiges praktisches Wissen für alle Lebensbereiche auf der Erde.
Menschen müssen vor allem Verhaltensweisen lernen und auch wenn sie zum Erfinden neuer Verhaltensweisen fähig sind, so ist das meist nur ein Rekombination und Anpassung von bereits erlernten Verhaltensweisen an die aktuelle Situation.
Eine KI brauch also vor allem eine große und möglichst gut strukturierte Datenbank (DB) mit Verhaltensweisen und Beispielen für alle Situationen. Bezogen auf die Entwicklung einer Starcraft II Game-KI bedeutet das, dass Menschen eine möglichst effiziente Datenbank mit klugen Taktiken, Strategien, hilfreichen Regeln, usw. aufbauen und ein Programm schreiben, das dieses Wissen auch anwenden kann. Die Starcraft II Game-KI kann damit (mit der simplen Suche nach passenden Reaktionen und Strategien in einer DB) schon sehr viel erreichen, sie muss kein bisschen höhere Intelligenz haben. Wenn ein Profi-Spieler die KI besiegt, dann kriegt er eine Prämie und seine erfolgreiche Spielweise wird in die KI-DB aufgenommen.
Das ist quasi auch ein Beweis, warum neuronale KI mangelhaft ist, warum effizient programmierte algorithmische KI besser sind: eine optimierte DB ist mit klassischen Software-Routinen und Algorithmen viel effizienter nutzbar, als wenn man ein neuronales Netzwerk als Gehirnsimulation verwendet.
Na klar muss auch eine Situationserkennung und die Anwendung von DB-Wissen programmiert werden (auch mit vorheriger Simulation möglicher Folgen) aber das sollte machbar sein. Eine trainierte neuronale KI (NKI) erscheint da einfacher aber das zeigt auch nur wie leistungsfähig Computer bereits sind, wenn eigentlich ineffiziente/mangelhafte NKI ein erster vielversprechender Weg zu sein scheinen.
So und nun macht euch mal klar, wie weit die Computer-Hardware bereits ist: 32 GB RAM mit bis zu ca. 25 GB/s Datenrate (Dual Channel DDR3-1600), 4x 1-2 TB SSDs mit je einigen 100 MB/s bis zu einigen GB/s ("... Samsungs 960 Pro mit PCIe-NVMe-Interface schaffte beim Lesen mehr als 3,3 GByte/s und beim Schreiben über 2 GByte/s ..." http://www.heise.de/newsticker/meldung/Rasante-SSDs-mit-rekordverdaechtiger-Leistung-3412954.html ) und Multi-Core-CPU sind heute bezahlbarer PC-Standard und Supercomputer können ein vieltausendfaches leisten.
Ein besserer Heimcomputer mit einigen Kilowatt Leistung könnte bereits erstaunliches quasi-intelligentes leisten, es fehlt nur noch die Software und insbesondere eine effiziente Wissensdatenbank, die halt erstmal von Menschen programmiert werden muss aber irgendwann von KI selbst optimiert werden kann. Siehe auch "Wikipediaerstellung" bei http://www.heise.de/forum/heise-online/Meinungen-zu-heise-online/Wie-koennte-man-die-Bewertungsfunktion-verbessern/posting-29381682/show/
Ein komplexes Echtzeit-Strategiespiel ist da schon eine unnötig große Herausforderung, denn die Stärke der Computer liegt auch im 24h pro Tag und 7 Tage die Woche pausenlosen "nachdenken". Kampfroboter müssen im direkten Roboterzweikampf schnell sein aber im praktischen Kampf ist das Soldatenleben nicht so schwierig: aus der Deckung schießen und langsam vorrücken, nachdem die Luftunterstützung die gegnerischen Stellungen zerbombt hat.
Eine Heim-KI muss nicht gleich in allen Punkten dem Menschen überlegen sein, es reicht schon ein bedeutsames Gebiet, wo eine erste ansatzweise KI besser sein muss und das kann im ersten Schritt ein Expertensystem sein, das einfach nur versucht, gute Vorschläge zu machen und nach neuen Ideen sucht und im ersten Schritt einfach nur hilft, Informationen für die aktuelle Tätigkeit des Menschen zu finden, man denke auch an Ingenieure und Unternehmen.
Ein weiteres sehr wichtiges Entwicklungsziel ist eine KI für Softwareentwicklung und da kann man auch als erstes menschliches Expertenwissen in eine DB packen, z.B. ganz simpel auch in Form von fertigen Unterprogrammen und Frameworks. Java ist teilweise mangelhaft und ätzend, da braucht es mal eine Optimierung (*). Ein erster Ansatz kann auch die Prüfung bestehender Software sein: statische/dynamische Codeanalyse mittels Supercomputer und einer DB mit typischen Fehlern und Verbesserungsvorschlägen - so was gibt es ja glaube ich schon und das muss kein bisschen neuronal sein. Siehe auch http://www.heise.de/security/meldung/Cyber-Grand-Challenge-IT-Security-koennte-sich-radikal-aendern-3288820.html und meinen Beitrag http://www.heise.de/forum/heise-Security/News-Kommentare/Cyber-Grand-Challenge-IT-Security-koennte-sich-radikal-aendern/Hinweise-und-Verbesserungsvorschlaege/posting-29010488/show/ dazu.
Na klar ist das alles nicht so einfach aber es wurde auch schon einies in den letzten Jahren erreicht - wie weit werden wir 2030 sein? Können KI sich spätestens 2050 koordiniert weiterentwickeln? Schon in diesem Jahrhundert können Tausende große und Hunderttausende kleine Supercomputer mit der Weiterentwicklung beschäftig sein und das bei steigender Leistungsfähigkeit der Hardware. Da wird es schon auch mal Zeit, sich die Konsequenzen klarzumachen: die KI werden irgendwann das Universum beherrschen und deswegen müssen unbedingt überlegene gute KI entwickelt werden, siehe auch http://www.wallstreet-online.de/diskussion/1240557-1-10/entwicklung-ueberlegener-guter-ki-rettung-menschheit - dieser simple Gedanke darf nicht unterdrückt werden, das muss endlich mal Mainstream werden. (alles imho)
(*) Der Fehler von Java ist möglicherweise die übertriebene Fixierung auf objektorientierte Programmierung. Einzelne fertige Klassen, ja eine ganze Klassenbibliothek mit fertigen (gut geprüften, dokumentierten) Methoden sind prima aber der Programmierer sollte damit auch einfache prozedurale Programme
schreiben können, z.B. auch mit einfacher nachrichtenbasierter Kommunikation (Mailbox, Message Passing) zwischen einzelnen Modulen, Prozessen.
Die Idee ist, dass man vielleicht die Vorteile von Java, C++, Rebol (http://en.wikipedia.org/wiki/REBOL), Scala (http://de.wikipedia.org/wiki/Scala_%28Programmiersprache%29), Ada (http://de.wikipedia.org/wiki/Ada_%28Programmiersprache%29) irgendwie in einer Sprache
vereinen kann, wobei GC (http://de.wikipedia.org/wiki/Garbage_Collection) optional/wahlfrei sein sollte.
Mit Möglichkeit zur Kompilierung plattformabhängiger Standalone-Programme, die dann keine JVM mehr brauchen (im einfachsten Fall wird die JVM/Laufzeitumgebung einfach reinkompiliert). Irgendwie muss Java (bzw. die Nachfolgesprache) jedenfalls auch schneller sein können. (alles imho)
Das Posting wurde vom Benutzer editiert (07.11.2016 06:53).