Autor |
Beitrag |
galagher 
      
Beiträge: 2556
Erhaltene Danke: 45
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: Mo 15.03.04 20:02
MaxiTB hat folgendes geschrieben: | Dann hab ich dir ja schon einen guten Tipp gegeben ! Hast du dich da schon schlau gemacht ? |
Bin gerade dabei! Hab auch schon ein Tool für Delphi, aber mangels zugehöriger Hilfe - und wohl auch Wissen - hab ich keinen Schimmer, was ein TNeuralVector ist. Das Beispielprogramm löst sein Problem auch ohne Training !!!??? Werde das ganze wieder deinstallieren!
Moderiert von DeCodeGuru: BBCode korrigiert
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
|
|
MaxiTB
      
Beiträge: 679
Win2000, WinXp, Workbench ;-)
D7 Ent, VS2003 Arch.
|
Verfasst: Mo 15.03.04 20:09
Laß dich nicht entmutigen - fange klein an ...
Dann lese ein paar Bücher über KI. Aber glaubs mir, daß Thema ist nix für einen blinden Mittendrin-Einsteig; da erlebst nur Frust, weil du keine Ahnung hast, was eigentlich alles soll - auch wenn die Beispiele noch so gut kommentiert sind, sie setzen eben Grundwissen voraus.
_________________ Euer Mäxchen
Wer früher stirbt, ist länger tot.
|
|
Raphael O.
      
Beiträge: 1596
VS 2013
|
Verfasst: Mo 15.03.04 20:29
MaxiTB hat folgendes geschrieben: | Im Google findest du eine Menge zu dem Thema ! |
und sogar auch im DF!! ELIZA
allerdings ist das angegebene applett ( bs.cyty.com/stjakobi/archiv/games/rat.htm)
anscheinend nur mit dem INterexplorer lauffähig :/
|
|
Brainiac
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 15.03.04 20:38
Fiji-Fighter hat folgendes geschrieben: | eine der neuen Situation ähnliche alte zu finden wird wohl nahezu unmöglich sien |
Doch doch das geht so... und nur so.
Das Gehirn vergleicht ja jetzt nicht stur die gesamte Situation mit allen anderen Situationen, sondern splittet die Situation jetzt auch noch in beliebig viele kleine Elemente, die dann alle untereinander verglichen werden, sodass die neue Situation dann in ihren Einzelheiten mit vielen anderen Situationselementen assoziiert wird. Dann kommt noch ein Filter drüber, der, auch wieder auf Erfahrung beruhend, entscheidet, was an der momentanen Situation gerade bewusste Aufmerksamkeit erfordert. Dieses wird dann nochmal genauer assoziiert und eine passende Entscheidung aus dem Gedächtnis abgerufen (bzw. teilweise abgerufen und dann intelligent kombiniert).
Bis jetzt gibt es keine KI, die so arbeitet. Man versucht es in Ansätzen in der Forschung aber in Computerspielen suchst du da vergebens.
|
|
galagher 
      
Beiträge: 2556
Erhaltene Danke: 45
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: Mo 15.03.04 22:17
Brainiac hat folgendes geschrieben: | viele kleine Elemente, die dann alle untereinander verglichen werden |
Also benutzt auch unser Gehirn einen "Algorithmus"? Eine Art supereffizienten Code, der jedem Computer weit überlegen ist, was Flexibilität, aber weit unterlegen ist, was Genauigkeit anlangt!?
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
|
|
patrick
      
Beiträge: 1481
WIN2k, WIN XP
D6 Personal, D2005 PE
|
Verfasst: Mo 15.03.04 22:19
für das training am anfang:
www.robotbattle.com/
ziel des spiels ist es mittels vorgegebener scriptsprache einen möglichst intelligenten robot zu erstellen und diesen gegen einen oder mehrere anderer antreten zu lassen.
dort kannst du schon mal versuchen eine möglicht guten robot zu machen, der sich sicher bewegt(und nicht andauernd gegen die mauer fährt) und sicher zielt.
eins sag ich dir schon mal gleich: das ist gar nicht so einfach wie das alles manchmal aussieht.
unter
dev.robotbattle.com/
kann man sich den source runterladen.(kein delphi)
_________________ Patrick
im zweifelsfall immer das richtige tun!!!
|
|
galagher 
      
Beiträge: 2556
Erhaltene Danke: 45
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: Mo 15.03.04 22:33
patrick hat folgendes geschrieben: | für das training am anfang: |
Gute Idee, danke! Werd ich spielen!
NetZwerg hat gestern geschrieben: "Ich habe mal ein kleines Programm geschrieben, was mit mir gechattet hat"
Kannst du mir sagen, wie du es angestellt hast, dass das Programm Worte "lernt"?
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
|
|
Brainiac
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 15.03.04 23:53
galagher hat folgendes geschrieben: | Also benutzt auch unser Gehirn einen "Algorithmus"? Eine Art supereffizienten Code, der jedem Computer weit überlegen ist, was Flexibilität, aber weit unterlegen ist, was Genauigkeit anlangt!? |
Algorithmus ist vielleicht das falsche Wort, weil das wieder eine Art festgelegtes sequentielles Analyseschema wäre, aber prinzipiell ist das so richtig.
Assoziation ist denke ich wirklich das richtige Wort. Eine komplexe Verschaltung direkt von einem zum nächsten.
Aktiviert ein Situationsbestandteil eine bestimmte Anordung von Neuronen, sagen wir die für 'rundes Objekt', so aktivieren diese weitere bestimmte Neuronen in der nächsten Verschaltungsstufe. Hier werden nun sagen wir die Impulse von 'rundes Objekt' und 'rotes Objekt' verschaltet. Diese Neuronen aktivieren also nur Folgeneuronen, wenn ein 'rundes, rotes Objekt' erkannt wird.
Das ginge nun so weiter bis letztendlich 'roter Ball, der auf mich zukommt und mir gleich gegen die Birne knallt' dabei herauskommt.
Diese Neuronen aktivieren dann wiederum direkt Neuronen, die eine Ausweich oder Blockbewegung auslösen.
Der Witz ist, dass die Information 'Faust, die mir entgegen kommt' genau die gleichen Neuronen angesprochen hätte.
Die Komplexität kommt also durch die Milliarden Verschaltungen und nicht durch ein kompliziertes Rechenverfahren...
Einfach aber genial... halt technisch nur schwer nachzuahmen.
|
|
minnime
      
Beiträge: 171
Win 7
Delphi Prism 2011, C# (VS 2010)
|
Verfasst: Do 18.03.04 16:43
Hierzu habe ich mir mal überlegt wie Kindererziehung funktioniert bzw. woher die ihre Entscheidungsmuster kriegen. Das Kind kommt auf die Idee: "Ich will jetzt etwas" (meinetwegen einen Schokoriegel). Da steht jetzt die Methode "quängeln bei Mami" zur Verfügung. Die Operation wird durchgeführt(sagen wir mal mit Erfolg), das Ergebnis wird inclusive aller Umgebungsvariablen(Zielperson, Ort,Wetter(es muss ja erstmal gelernt werden was wichtig ist und was nicht)). Bei einem späteren Zeitpunkt wird das gleiche versucht, nur dieses mal regnet es und die Taktik klappt nicht, also weitermachen, jetzt geht es aber nicht mehr um einen Schokoriegel sondern um einen Dauerlutscher, und es funktioniert. Daraus folgt die Erkenntnis: wenn ich einen Schokoriegel haben will einfach qnängeln, aber nur wenn die Sonne scheint, bei einem Dauerlutscher geht das auch bei Regen. Solche Versuche werden immer wieder wiederhohlt, wobei sich die Konstellation der Umgebungsvariablen immer anders ist und die Ergebnisse unterschiedlich ausfallen, dabei stellt sich dann heraus, dass einige davon unbedeutend sind(wie das Wetter) und sie werden entfernt. Im laufe der Zeit werden die Methoden auf andere Ziele angewandt, so können weitere Bedingungen gesammelt werden, der Ausscheidungsprozessschreitet fort, die Bedingungen werden genauer umrissen, somit werden die Methoden veralgemeinert und es stellt sich heraus dass sie für Ziele einer bestimmten Kategorie zulässig sind.
Eine KI lässt sich also durch eine Datenbank realisieren in der die Ziele, Methoden und deren Bedingungen in Tabellen gespeichert und entsprechend miteinander verknüpft werden. Lisp und Prolog, die klassischen Sprachen der künstlichen Intelligenz haben schließlich auch mit Listen bzw. Relationen gearbeitet. Man müsste also eine Datenbank so anlegen, dass sie selbst Tabellen anlegen und Verknüpfungen herstellen kann.
|
|
galagher 
      
Beiträge: 2556
Erhaltene Danke: 45
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: Do 18.03.04 18:08
minnime hat folgendes geschrieben: | Eine KI lässt sich also durch eine Datenbank realisieren in der die Ziele, Methoden und deren Bedingungen in Tabellen gespeichert und entsprechend miteinander verknüpft werden. |
Das ist einfach genial, wie du das beschreibst! Genau das suche ich, aber ich möchte mit Textdateien arbeiten, und die Daten in TListBox laden. Dazu eine Frage: Wie gross darf die Datenmenge sein, die ListBox-Komponenten verarbeiten können? (Habe einen 2 MHz Prozessor).
Bisher habe ich 2 Dateien: Eine für klein geschriebene Worte, die andere für alle Worte, die mit einem großen Anfangsbuchstaben beginnen. Ist aber vielleicht eine einzige Datei besser... Was noch fehlt, ist eine Methode, die Worte in einen sinnvollen Zusammenhang zu setzen.
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
|
|
Brainiac
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 18.03.04 18:55
minnime hat folgendes geschrieben: | Man müsste also eine Datenbank so anlegen, dass sie selbst Tabellen anlegen und Verknüpfungen herstellen kann. |
Dass das theoretisch so funktionieren muss, ist klar.
Die Rechenkosten aufgrund der dafür schlecht geeigneten Computerarchitektur sind der Knackpunkt.
'Ziele', 'Methoden' und 'Bedingungen' sind wohl eher auch nicht die optimalen Datenbanken. Da reichen schon 'Reize' und 'Reaktionen'.
galagher hat folgendes geschrieben: | Was noch fehlt, ist eine Methode, die Worte in einen sinnvollen Zusammenhang zu setzen. |
Der nächste Schritt wäre nun, die Assoziationen auch irgendwohin führen zu lassen. Dafür bräuchte man dann für jeden Eintrag in der 'Reaktionen' Datenbank wieder eine Art Erregungswert, der mit jeder erfolgreichen Assoziation erhöht und bei längerem Nichtaufruf abgesenkt wird.
Beispiel: Der Satz "Wie ist das Wetter in Spanien?" wird eingegeben.
- "Wie ist" wird aus der Eingabe-Datenbank erkannt und erhöht den Erregungslevel für alle Antworten auf "Wie ist etwas"-Fragen.
- "das" wird als zu häufiges Wort ignoriert
- "Wetter" wird aus der Eingabe-Datenbank erkannt und erhöht den Erregungslevel für alle Antworten, die auf Fragen zum Wetter antworten.
- "in" wird aus der Eingabe-Datenbank erkannt und erhöht den Erregungslevel für alle Antworten auf räumliche "in"-Fragen (hier unwichtig).
- "Spanien" wird aus der Eingabe-Datenbank erkannt und erhöht den Erregungslevel für alle Antworten auf Fragen zu Spanien.
- Eingabe beendet -> Prüfung der Erregungszustände -> Antwort[wie,Wetter,Spanien,jetzt] hat die meisten Assoziationen erhalten und wird gegeben.
- Alle Erregungswerte werden für die nächste Eingabe auf 0 gesetzt.
So viel zur Theorie. Mit einfachen vorgefertigten Antworten funktioniert es so prima, wenn es auch sehr rechenintensiv wird.
Mit dem Lernen wird es glaube ich aber etwas zu schwer.
|
|
galagher 
      
Beiträge: 2556
Erhaltene Danke: 45
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: Do 18.03.04 19:16
Brainiac hat folgendes geschrieben: | Beispiel: Der Satz "Wie ist das Wetter in Spanien?" wird eingegeben.
- "Wie ist" wird aus der Eingabe-Datenbank erkannt und erhöht den Erregungslevel für alle Antworten auf "Wie ist etwas"-Fragen. |
Danke! In dieser Richtung werde ich weitermachen! Erst mal ein paar Dutzend vorgefertigte Antworten, damit das Programm etwas "kann". Neue Reize werden einfach in neuen Dateien abgelegt. Das ist besser, als Wort für Wort abzuspeichern, da es ja keine Logik gibt, wie die Worte zusammen zu setzen sind. Einen Taschenrechner zu schreiben ist vergleichsweise einfach.
Danke jedenfalls für deinen Denkanstoß!
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
|
|
minnime
      
Beiträge: 171
Win 7
Delphi Prism 2011, C# (VS 2010)
|
Verfasst: Sa 20.03.04 03:04
Das mit den Datenbanken war auch nicht auf den Vorliegenden Fall mit konzipiert sondern ganz allgemein, z.b. für Bots für Anwendungen die mit logischen Zusammenhängen arbeiten wie Wirtschaftssimulationen. Hier ist wohl eine ganz andere Herangehensweise erforderlich. Eigentlich ist es gar nicht möglich dass das Programm wirklich eine Kommunikation führen kann, vielmehr versucht es anhand von Schlüsselwörtern Beziehungen zu den Inhalten seiner Satzbibliothek herzustellen und wählt dann Sätze aus die da am wahrscheinlichsten passen. Für eine echt Kommunikation müsste das Programm wirklich verstehen was wir im mitteilen, dazu ist es aber ersteinmal nötig die Syntax unserer Sprache auseinander zu klamüsern, dann erst kann man sich anm die Bedeutung der einzelnen Wörter wagen. Vergleicht man jetzt mal die Syntax der normalen Sprache mit der einer Programmiersprache, so stellt amn fest, die der Ps. meistens einheitlich ist und eindeutigen Regeln folgt. Bei der menschlichen Sprache ist das anders, da kann man die zweite Hälfte des Sat´zes vor die erste Hälfte setzen und die Bedeutung ist immernoch gleich, genauso ist es möglich nur zwei Wörter zu vertauschen und man erhählt eine andere Bedeutung. Versuch das mal einem Computer beizubringen. Es wäre jedoch möglich eine künstliche Sprache zu erfinden die eine einheitliche einfache Syntax aufweist, erst dann bekommt der Computer überhaupt eine Chance zu verstehen was man von ihm will.
|
|
minnime
      
Beiträge: 171
Win 7
Delphi Prism 2011, C# (VS 2010)
|
Verfasst: Sa 20.03.04 03:17
Bevor ichs vergesse irgendwo hier schwirrt einer rum, der hat einen ICQ Bot geschrieben, welcher genau die hier gefordete Aufgabe ausführt. Nun sollen ein paar Leute mit ihm reden damit er dazulernt und das hat wohl auch schon was gebracht.
Ich habe mir übrigens auch vorgenommen einen Bot zu schreiben, für Scotland Yard, um Mister X zu simulieren, dann kann ich es auch allein spielen. Das ist allerdings ein wenig einfacher, da muss ich nur einen Pfad durch das Stationsnetzwerk festlegen, dessen Stationen in absehbarer Zeit nicht von Agenten erreicht werden können. Da besteht das größte Problem darin die Daten der Stationen und der späteren Ergebnisse in geeigneter Weise abzuspeichern und die erfolgreichste der zur Verfügung stehenden Routen herauszufinden(Problem der Berechnung, nicht des Routings).
|
|
galagher 
      
Beiträge: 2556
Erhaltene Danke: 45
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: Sa 20.03.04 10:18
minnime hat folgendes geschrieben: | vielmehr versucht es anhand von Schlüsselwörtern Beziehungen zu den Inhalten seiner Satzbibliothek herzustellen |
An Schlüsselwörter habe ich auch schon gedacht, so wird's am ehesten gehen. Bis jetzt bin ich so weit: Beim Beginn fordert das Programm ein Thema, das Schlüsselwort ist "Über", gefolgt vom Thema (worüber reden wir - Über ...). Fix ist auch schon Zeit- und Datumsantworten (Schlüsselwörter: Tag, heute, gestern, morgen, spät, Uhr). Eine Byte-Variable wird bei jeder mit der vorigen Eingabe identen Eingabe um 1 erhöht; bei 6 gleichen Eingaben meckert das Programm zufallsgesteuert auf 6 verschiedene Arten, dass das langweilig wird. Ich muß nun noch eine Wort"datenbank" aufbauen (werde dazu einfach eine Textdatei schreiben). Irgendwie möchte ich erreichen, daß unbekannte neue Worte der Liste hinzugefügt werden und mein Programm sich "merkt", wie ich sie benutze, und sie dann auch so benutzt.
Aber noch weiß ich nicht, wie!
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
|
|
ähM_Key
      
Beiträge: 88
Windows XP Professional
D7 Enterprise
|
Verfasst: Sa 20.03.04 11:19
Ich hab damals noch auf dem GTR ein Mau Mau und ein 4-Gewinnt programmiert.
Bei Mau Mau haben die Computer-Gegner genauso viel gewonnen, wie ich (hab Statistik geführt), obwohl die noch eine Stufe weniger "denken" konnten als ich. Das zeigt natülich, wie zufallbehaftet das Spiel ist.
4-Gewinnt (wo man von oben solche Chips in vordefinierte Reihen fallen lässt und es Ziel ist horizontal, vertikal oder schräg 4 von seiner Farbe zusammenzubringen) war das schon etwas anspruchsvoller. Aber ich konnte es nicht bis zur Perfektion treiben, da der GTR nur extrem begrenzte Rechnenleistung hat, und in der letzten Version schon 3min für einen Zug gebraucht hat. Trotzdem hab ich noch gewonnen
...nur so als kleine Anregung...
Ich glaube für KI ist es wichtig alle Inputs aufzufangen, diese z.B. in einem Punktesystem auszuwerten, und der Output, der am höchsten bewertet wird, wird ausgführt! Dabei ist es natürlich schwer, dass alle richtig zu werten.
Grüße; ähM_Key
_________________ Alles geht ni! Aber ein bissl' was muss!
|
|
minnime
      
Beiträge: 171
Win 7
Delphi Prism 2011, C# (VS 2010)
|
Verfasst: Sa 20.03.04 20:00
galagher hat folgendes geschrieben: | mein Programm sich "merkt", wie ich sie benutze, und sie dann auch so benutzt. |
Und genau da kommen wir wieder zu meinem Syntaxthema zurück. Man müsste dem Programm beibringen wie unsere Syntax funktioniert und das ist wohl etwas zu schwierig. Wobei, in kleinem Stil wird das schon gehen, die Subjekt-Prädikat-Objekt Regel kriegt man dem reingehämmert indem sie Wörter nach diesen Klassen sortiert werden und der Computer sie dann nur noch in einer vorgegebenen Reihenfolge Ausgeben kann, je nachdem ob es sich um eine Aussage oder Frage handelt. Dabei muss noch beachtet werden dass er keine Verben konjugieren kann. Deswegen müssen müssen entsprechende Textteile wie "hast du?" oder "hat er?" auch so gespeichert werden, mit den entsprechenden Attributen, hier: Frage, Besitzanzeige, Gesprächspartner/dritte Person, so in etwa. Warum willst du das eigentlich mit Textdateien und nicht mit Datenbanken machen, wenn das Wissen größer wird und die Dateien auf mehrere hundert Kilobyte oder mehr ansteigt(das ist bei anständiger Qualität des Programms schon erforderlich) kann das zu nem PRoblemj werden, da sich das Programm totsucht.
|
|
galagher 
      
Beiträge: 2556
Erhaltene Danke: 45
Windows 10 Home
Delphi 10.1 Starter, Lazarus 2.0.6
|
Verfasst: Sa 20.03.04 20:24
minnime hat folgendes geschrieben: | Warum willst du das eigentlich mit Textdateien und nicht mit Datenbanken machen, wenn das Wissen größer wird und die Dateien auf mehrere hundert Kilobyte oder mehr ansteigt |
Ich habe vor ca. 2 Jahren einmal eine einfache Datenbankanwendung geschrieben, da hat dann die Textsuche nicht so 100%-ig geklappt - weiss nicht, wieso! Man kann mit TListBox einfach sortieren, einfügen usw, wenn man die Datei erstmal geladen hat. Zugegeben: Ich kenn mich mit Datenbanken nicht so gut aus! Aber ich liebe TListBox geradezu - damit ist für Textzwecke praktisch alles möglich.
_________________ gedunstig war's - und fahle wornen zerschellten karsig im gestrock. oh graus, es gloomt der jabberwock - und die graisligen gulpen nurmen!
|
|
minnime
      
Beiträge: 171
Win 7
Delphi Prism 2011, C# (VS 2010)
|
Verfasst: Sa 24.07.04 14:53
Eigentlich muss man KIs in Kategorien unterteilen, Die herangehensweise an eine KI für Sprache ist eine gänzliche andere als die, die man für das durchführen von Aktionen braucht, für Bewertungen nochmal eine andere. Bots wie ich sie verstehe sind eigentlich mehr für das Durchführen von Aktionen gedacht. Dafür genügt es gigantische Entscheidungstabellen anzufertigen und diese natürlich in Datenbanken abzuspeichern. Die eigentliche Engine dahinter macht dann nichts anderes als als bei jeder Situation die DAtenbank abzuklappern und nach der richtigen Bedingungskonstellation und den zugehörigen Aktionen zu suchen. Will man das ganze noch lernfähig haben muss man selbst diese Aktionen durchführen und die KI "zusehen" lassen und für jede Aktion einen Eintrag in der Tabelle anfertigen lassen falls dieser noch nicht vorhanden ist.
Wenn die Datenbank wie in diesem Fall eigentlich nur aus zwei Tabellen besteht kann man diese natürlich auch mit zwei Textdateien selbst erstellen.
|
|
|