KI(Künstliche Inteligenz)
-
Evolver schrieb:
und für viele spiele ist es vollständig ausreichend eine ki zu implementieren, die vollständig auf zufall basiert.
Wobei das nichts mit Intelligenz zu tun hat. Mag sein, dass der Spieler durch zufällig agierende Gegner auch ausreichend gefordert ist, aber "(künstlich) intelligent" darf man die dann nicht nennen.
da widersprech ich
es gibt keine feste definition, ab wann ein system "intelligent" ist. das kann nur an menschliches verhalten angelehnt werden, welche aufgaben benötigen intelligenz? interessanterweise kann man fast alles, wozu ein mensch in der lage ist, mit intelligenz belegen. die definition einer starken KI scheitert deshalb schon daran, dass der mensch selbst gar nicht weiss, was intelligenz eigentlich wirklich ist.schwache KI kann man sich, wenn man so möchte, wie eine blackbox vorstellen. in diese blackbox wird der zustand eines systems gesteckt und am andere ende kommt die zustandsänderung heraus, von der die KI "denkt", dass sie das system zum gewünschten endzustand lenkt.
was nun in dieser blackbox passiert spielt eigentlich keine große rolle für die definition einer schwachen KI selbst. eine KI die rein auf zufall basiert wäre wohl nur schwerlich denkbar, sie braucht zumindest wissen darüber, wie das zu manipulierende system funktioniert, welchen regeln es unterliegt. dadurch bestitzt das system "wissen". diesem wissen folgend wird der nächste zug geplant. wie das geschieht ist, wie bereits gesagt, in diesem fall egal. er mag auch regelgetreu zufällig generiert worden sein.
-
es gibt den turing test um festzustellen ob ein programm wirklich inteligent ist, im generellen sagt er aus, dass etwas intelligent ist, wenn man es nicht vom verhalten eines anderen lebewesen unterscheiden kann, das man als inteligent ansieht

natuerlich muss der test dafuer inteligenz foerdern, wenn man von einem menschen 100 zufallszahlen zwischen 1 und 6, und von einem wuerfel fordert, die ergaebnisse dann aber nicht unterscheiden kann, ist der wuerfel noch lange nicht inteligent *hehe*
-
der turing-test war eine vorgabe zum test starker KI. ob dieser dazu geeignet ist, bleibt aber eh fragwürdig. den turing test könnte nämlich auch eine theoretische turing maschine bestehen, die absolut nichts besitzt, was wir "intelligent" nennen:
schaffe eine datenbank mit allen möglichen permutationen der wörter einer sprache bis zu einer bestimmten satzlänge. dies sind die fragen. schreibe nun zu jeder "frage" eine antwort in die datenbank. die "KI" sucht nun für jede frage des testers die entsprechende antwort heraus. et voila, die "KI" besteht lediglich darin, in einer datenbank einen string zu suchen. erfolg 100% garantiert.
diese lösung ist rein theoretischer natur und aufgrund begrenzter resourcen schwerlich umsetzbar, spiegelt aber wider, was eines der grundsätzlichen probleme des turing-tests ist: er ist anwendungsbezogen.
-
thordk schrieb:
der turing-test war eine vorgabe zum test starker KI. ob dieser dazu geeignet ist, bleibt aber eh fragwürdig. den turing test könnte nämlich auch eine theoretische turing maschine bestehen, die absolut nichts besitzt, was wir "intelligent" nennen:
schaffe eine datenbank mit allen möglichen permutationen der wörter einer sprache bis zu einer bestimmten satzlänge. dies sind die fragen. schreibe nun zu jeder "frage" eine antwort in die datenbank. die "KI" sucht nun für jede frage des testers die entsprechende antwort heraus. et voila, die "KI" besteht lediglich darin, in einer datenbank einen string zu suchen. erfolg 100% garantiert.
Bestimmt nicht - spätestens wenn eine "Frage" mehrfach vorkommt, fällt die (fehlende) Intelligenz auf.
-
thordk schrieb:
der turing-test war eine vorgabe zum test starker KI. ob dieser dazu geeignet ist, bleibt aber eh fragwürdig. den turing test könnte nämlich auch eine theoretische turing maschine bestehen, die absolut nichts besitzt, was wir "intelligent" nennen:
doch, gerade das testet der test, stumpf saetze wiederzugeben ist nicht schwer, aber zusammenhaenge zu erkennen ist schwer. das ist es was inteligenz ausmacht.
schaffe eine datenbank mit allen möglichen permutationen der wörter einer sprache bis zu einer bestimmten satzlänge. dies sind die fragen. schreibe nun zu jeder "frage" eine antwort in die datenbank. die "KI" sucht nun für jede frage des testers die entsprechende antwort heraus. et voila, die "KI" besteht lediglich darin, in einer datenbank einen string zu suchen. erfolg 100% garantiert.
was wuerde denn die datenbank auf die frage: "wie war nochmal dein letzter satz?" sinnvoll antworten ohne geringste logic?
diese lösung ist rein theoretischer natur und aufgrund begrenzter resourcen schwerlich umsetzbar, spiegelt aber wider, was eines der grundsätzlichen probleme des turing-tests ist: er ist anwendungsbezogen.
er ist sehr gut auf andere bereiche von inteligenz beziehbar, denn er sagt im grunde nur aus, dass man ein system mit einem referenzsystem vergleicht und wenn man beide nicht/kaum unterscheiden kann, sind sie gleichwaertig im verglichenen aspekt.
wenn du also eine maschine mit etwas vergleichst was du als inteligent bezeichnest und beide gleiche leistung bringen, sind sie gleich intelligent.
-
was wuerde denn die datenbank auf die frage: "wie war nochmal dein letzter satz?" sinnvoll antworten ohne geringste logic?
"hab ich vergessen."
"grad nen kaffee eingeschenkt, was hab ich grad nochmal getippt?"
"findest die frage nicht bescheuert?"
"frag ich mich auch."
"lol, das tipp ich doch nicht nochmal."
(diverser weiterer blödsinn)der gesprächspartner soll nicht eloquent und intelligent sein, er soll den tester nur davon überzeugen, das er keine maschine ist.
eine wichtige defintion von intelligenz ist, dass sie universell ist. ein system, dass sich mit jemanden unterhalten kann, besitzt eine gewisse "sprachliche kompetenz", versagt aber komplett bei problemlösungen auf anderen gebieten. dabei soll das system nicht ein universalgenie sein, aber eben auch nicht anwendungsbezogen. auf fragen zu reagieren und den frager davon zu überzeugen, dass inhaltlich reagiert wird ist ebenso anwendungsbezogen, wie das visuelle erkennen von objekten oder die analyse einer gesummten melodie und der vergleich mit einer audiodatenbank, um das gesummte stück zu identifizieren.
das sind alles intelligente systeme, aber weit von starker KI entfernt. und darum gings mir in der diskussion.
-
Und was würde die Antwort auf die Frage "Stimmt es, dass Autos schneller fahren, wenn ich beim Tanken Benzin trinke und keinen Alkohol?" sein? Eine einfache DB ohne viel Logik würde nie erkennen, dass das eine mit dem anderen nix zu tun hat, obwohl Wörter drin vorkommen die zusammen passen. Wenn überhaupt, dann würde so eine "dumme" Antwort wie "Don't drink and drive" kommen.
-
eine wichtige defintion von intelligenz ist, dass sie universell ist.
Darüber lässt sich nun auch wieder streiten. Meines Wissens nach gibt es keine einheitliche, wirklich von allen Seiten anerkannte Definition von "Intelligenz". Ich für meinen Teil würde sagen, das Intelligenz muss nicht universell sein.
Eine Definition von Intelligenz, die ich interessant finde ist:
Intelligenz ist die allgemeine Fähigkeit eines Individuums (Lebewesen/Software/...), sein Verhalten [durch Denken] bewusst (->Mensch) oder unbewusst (->primitive Tiere, Software) auf Anforderungen der Umgebung einzustellen.
In diesem Zusammenhang eine Definition von KI:
Künstlich intelligente Systeme sind Computer- / Softwaresysteme, die in ihrem Verhalten oder ihrer Struktur Eigenschaften zeigen, die natürlichen Systemen mit Intelligenz zukommen und die von traditionellen künstlichen Systemen noch nicht erfüllt werden.
-
thordk schrieb:
und für viele spiele ist es vollständig ausreichend eine ki zu implementieren, die vollständig auf zufall basiert. bei solchen spielen wie 4-gewinnt kommt man mit sowas sogar ziemlich weit. und ein prominenteres beispiel: einer der geister bei pacman bewegt sich ausschliesslich per zufall.
Naja bei Pac Man bewegen sich keine der Gester per zufall, alle Bewegen sich abhängig von Spieler, was dazu führt, dass es einen Lösungsweg gibt, der immer Funktioniert, aber das nur so am rande.
Also wenn man eine Wirklich gute KI aufbauen will, dann sollte man erstmal dafür sorgen, dass man einen Bereich hat, der sich ausschießlich mit der KI beschäftigt, so eine Art KI script, des dann vom Programm für die Bots benutzt wird, so ist es einem möglich, sich in einem Bereich ausschlißlich um die KI zu kümmern, und alles andere ausser acht zu lassen. Solche jederzeit austauschbaren KI scripts sind z.B. in Colobot(komerziell) und auch in TA spring(Open-Source) enthalten, wobei ich mit letztern wenig auseinandergesetzt habe. OK keines der Spiele hat eine wirklich tolle KI, aber bei Colobot kann man auch lernen, wie man eine KI (in diesem Fall bei Robotern) Programmiert, und wie man sich eine KI entwicklungsumgebung zurechtbasteln könnte, wenn man wirklich mal eine KI basteln möchte (In Colobot hab ich meine ersten Programmir-Erfahrungen überhaupt gemacht). In Colobot wird einem ins kleinste Deteil erklärt, wie man eine KI für einen Sammelroboter bastelt, der Erz sammeln geht, dies zum Konverter packt, und dann das gewonnene material wieder irgenwo verteilt (Lager gibts nicht), und noch jede menge Tutorials mehr, das alles in challenges verpackt. Mir hat viel spaß gemacht.
OK jetzt hab ich genug werbung für Colobot gemacht.
Es gibt noch eine künstliche Intelligenz die selbstlernend ist, die wird allerdings fast nirgends angewendet, was nicht bedeutet, das es sie noch nicht gibt. ---> Nero
-
hi

Also danke euch allen wirklich dass ihr mir so weites wie möglich erklärt.
Nun also hab ich erstmals die Grundlagen verstanden,dass es nicht nur per Zufall,sondern auch mit anderem geht.Ich schätze,dass ich noch nicht soweit bin,mich mit der KI oder im genaueren mit Grafikprogrammierung zu beschäftigen,denn mir fehlen noch massen an Kapitel von den Standartgrundlagen.
Aber wenigstens weiß ich dank euch,dass nicht immer alles per Zufall gesteuert wird
Da ich gerade Gothic III auf meinem Computer spiele,würde ich gerne einiges zum Aufbau der KI erfahren.
Bsp. wie man mit einem 3D-Editor und mit einer KI zusammenarbeitet.
Ist das vielleicht so,dass man im Editor so einen Punkt namens bsp. "awp" definiert und im Codebereich dann ..if(npc.bewegen()) { ++bewegen; }.. einfach reinschreibt und schon hab ich den ersten Waypoint eines NPC's?
Primer

-
Primer schrieb:
hi

Da ich gerade Gothic III auf meinem Computer spiele,würde ich gerne einiges zum Aufbau der KI erfahren.
Bsp. wie man mit einem 3D-Editor und mit einer KI zusammenarbeitet.
Ist das vielleicht so,dass man im Editor so einen Punkt namens bsp. "awp" definiert und im Codebereich dann ..if(npc.bewegen()) { ++bewegen; }.. einfach reinschreibt und schon hab ich den ersten Waypoint eines NPC's?
Primer

Ich weiß ja nicht, wie der Editor von Gothic III aussieht, aber so ist das schonman nicht richtig, glaub ich jedenfalls.
Waypoints können unsichtbare Objekte sein, mit den koordinaten von den nächsten Waypoints, die bein ankommen einfach abgerufen werden, und dann angesteuert werden, sie können auch Informationen enthalten, wie sich die NPCs/Bots verhalten sollen. Die waypoint Objekte werden dann auch von den Bots gezielt angesprochen, welcher Waypoint angesprochen werden muss wissen sie ja vom Waypoint vorher. An zweigstellen, da kann dann mit zufall gearbeitet werden. Aber so bekommt man kein wirklich intelligent wirkendes Lebewesen hin, aber es reicht für bots in Schootern.
-
thordk schrieb:
was wuerde denn die datenbank auf die frage: "wie war nochmal dein letzter satz?" sinnvoll antworten ohne geringste logic?
"hab ich vergessen."
"grad nen kaffee eingeschenkt, was hab ich grad nochmal getippt?"
"findest die frage nicht bescheuert?"
"frag ich mich auch."
"lol, das tipp ich doch nicht nochmal."
(diverser weiterer blödsinn)kein mensch da nicht faehig nach mehrmaligem nachfragen sinnvoll zu antworten.
der gesprächspartner soll nicht eloquent und intelligent sein, er soll den tester nur davon überzeugen, das er keine maschine ist.
indem er die aufgabe erfuellt, naemlich einen dialog zu fuehren, wenn er redet wie TGGC, werden die meisten tester sehr schnell rausfinden dass da keine inteligenz hinter steckt, weil man keinen sinnvollen dialog fuehren kann, wenn auch foermlich richtig.
-
ich glaube hier herrscht ein misverständnis vor.
dieses "datenbank system" ist nicht praktikabel, das habe ich vorausgeschickt. die datenbank müsste soviele einträge enthalten, dass sie niemals in ein sinnvollen zeitspanne gefüllt werden könnte. das ganze sollte als ein greifbares beispiel dafür dienen, dass:
a) schwache KI ohne logik auskommt.
b) der turing-test nicht zum testen starker KI geeignet ist.ihr habt nun daraus irgendwas gedreht, wofür es nicht gedacht war.
Naja bei Pac Man bewegen sich keine der Gester per zufall
das original pacman hatte 4 (oder 5) geister, die jeweils eine andere KI verwendet haben. einer hat stets den kürzesten weg zur aktuellen spielerposition verfolgt, einer hat rudimentäre trajektorien verfolgt und eine war gänzlich zufällig gesteuert. sie hat eine richtung eingeschlagen und sobald eine richtungsänderung möglich war, hat sie sich zufällig für eine der möglichkeiten entschieden.
und selbst diese "blöde" KI, die nach auffassung einiger hier keine KI darstellt, hat den spieler häufig erwischt und kam dem spieler dadurch intelligent vor. die zufällige steuerung, die zufällige KI, war also für das spiel angemessen und hat ihre aufgabe erfüllt.
-
thordk schrieb:
ich glaube hier herrscht ein misverständnis vor.
dieses "datenbank system" ist nicht praktikabel, das habe ich vorausgeschickt. die datenbank müsste soviele einträge enthalten, dass sie niemals in ein sinnvollen zeitspanne gefüllt werden könnte. das ganze sollte als ein greifbares beispiel dafür dienen, dass:
a) schwache KI ohne logik auskommt.
b) der turing-test nicht zum testen starker KI geeignet ist.Wieso sollte eine Lösung die nicht realisierbar und somit nicht wirklich eine Lösung ist beweisen, dass der Turing Test nicht zum testen starker KI geeignet ist? Wenn man mit einem System spricht, dass nichts von dem versteht was man oder es sagt, dann merkt man doch sehr schnell, das hier nur vorgefertigte Antworten kommen, weil sie im Zusammenhang keinen Sinn ergeben.
-
Wirklich viel helfen kann ich nu nicht, aber ich kann soviel sagen: Bots (Computergegner) haben oft ne state machine (Zustandsautomat), wo du verschiedene Zustände (states) hast. z.B. "frontal angreifen", "von hinten anschleichen", "blöd rumlaufen" etc.
Ereignisse (events) die diese State machine steuern sind dann vielleicht Dinge wie "vom Spieler getroffen worden", "Bereich hinter Spieler erreicht", "in Waffen-Reichweite", "Timer Tick", "Spieler hat Geräusch gemacht", "Spieler im Sichtfeld" etc.
Wenn die KI nun gerade im Zustand "blöd rumlaufen" ist und das Ereignis "Spieler hat Geräusch gemacht" eintritt kannst du z.B. würfeln (rand), dann je nach der Lautstärke von "Geräusch" und der gewürfelten Zahl entscheiden ob du ihn gehört hast, und wenn ja, den Zustand auf "von hinten anschleichen" oder sowas umschalten.
Und wenn die KI grad im Zustand "von hinten anschleichen" ist und das Ereignis "Bereich hinter Spieler erreicht" eintritt schaltest du vielleicht auf "frontal angreifen" um.
Du musst halt zusehen dass die state machine nicht immer das gleiche macht, und nicht "hängen bleibt". Und eben nicht allzu vorhersehbar reagiert, da kommt dann das würfeln (rand) ins Spiel. Oder eben auch wenn du den Schwierigkeitsgrad tunen willst, also die "Schlauheit" der KI ändern willst, bzw. andere Parameter (Aufmerksamkeit, Zielgenauigkeit, ...).
----
Ich sage aber gleich dazu dass ich sowas selbst nie implementiert habe. Kann mir aber durchaus vorstellen dass es so ganz gut funktionieren kann, und habe gehört & gelesen dass es so oder so ähnlich oft gemacht wird. Du kannst auch gucken ob du den Source für die Quake III Bots findest, die sollten mittlerweise Open Source sein wenn ich mich recht erinnere. Dann hättest du mal ein Beispiel dafür wie sowas in der Praxis bei einem fertigen Spiel aussieht.
Vielleicht kannst du mir der Info ja ein wenig was anfangen.
-
C.Santa schrieb:
thordk schrieb:
ich glaube hier herrscht ein misverständnis vor.
dieses "datenbank system" ist nicht praktikabel, das habe ich vorausgeschickt. die datenbank müsste soviele einträge enthalten, dass sie niemals in ein sinnvollen zeitspanne gefüllt werden könnte. das ganze sollte als ein greifbares beispiel dafür dienen, dass:
a) schwache KI ohne logik auskommt.
b) der turing-test nicht zum testen starker KI geeignet ist.Wieso sollte eine Lösung die nicht realisierbar und somit nicht wirklich eine Lösung ist beweisen, dass der Turing Test nicht zum testen starker KI geeignet ist? Wenn man mit einem System spricht, dass nichts von dem versteht was man oder es sagt, dann merkt man doch sehr schnell, das hier nur vorgefertigte Antworten kommen, weil sie im Zusammenhang keinen Sinn ergeben.
Genau. Eine "Datenbank KI" kann ich immer identifizieren, z.B. indem ich sie mit vollkommen sinnlosem Quatsch voll-labere den ich mir gerade ausgedacht hab. Dinge die sozusagen "sicher nicht in der DB vorkommen". Oder viel Rückbezüglich ausdrücke/formuliere.
@thordk:
Naja, wenn die KI auf jede Frage die "state" verlangt ("über was haben wir vorhin noch gesprochen?", "kannst du mir das genauer erklären?" etc.) bloss mit einem "universellen Standardsatz" antwortet, und du behauptest dass das reicht sie für intelligent zu halten ... was wäre dann mit einer KI die einfach eine grosse Liste von Beleidigungen hat, und daraus einfach immer eine auswählt wenn man sie anspricht? Theoretisch könnte das auch ein Mensch sein, bloss würde so eine KI (oder auch ein Mensch der sich so verhält) bei mir den Turing Test nicht bestehen. Der Test ist ja dazu da zu beweisen dass man intelligent ist, ergo muss die KI bzw. der Mensch der die Antworten liefert auch versuchen diesen Beweis zu erbringen. Ein Gegenüber dass also ständig ausweicht, oder aber auf eine bestimmte Art von Frage immer mit dummen Floskeln antwortet, die auf sogut wie alles passen, würde ich also wie gesagt durchfallen lassen.Wenn man die "will bestehen" Forderung nicht stellt und gleichzeitig keine "false negatives" erlaubt ist der Touring Test sowieso komplett sinnlos -- dann könnte ich z.B. ein Gegenüber welches auf alles immer bloss "Was meinst du damit?" zurückschreibt nichtmal durchfallen lassen, denn es könnte ja ein Mensch sein der absichtlich verlieren will. Ich könnte nichtmal ein absolut stilles Gegenüber durchfallen lassen.
Wenn man allerdings die "will bestehen" Forderung stellt, ODER "false negatives" erlaubt, ist der Touring Test IMHO absolut ausreichend um das Kriterium "starke KI" zu entscheiden.