Entwickler-Ecke
Sonstiges (Delphi) - KI, Bots, lernen...
galagher - So 14.03.04 18:13
Titel: KI, Bots, lernen...
Hallo!
Habe hier ein bisschen im Forum gelesen und bin dabei auf den Begriff Bots im Zusammenhang mit KI gestossen. Vom Web her weiß ich schon mal, daß KI im Prinzip auf "Zellen" beruht, von denen jede mehrere Eingänge und einen Ausgang hat. Wenn nun der Gesamtwert aller Eingangssignale einen bestimmten, definierten Level übersteigt, feuert die Zelle ihr eigenes Signal ab. Man kann sich vorstellen, was das bedeutet, wenn alle Zellen miteinander vernetzt sind. Soweit ist theoretisch alles klar. Aber wie kann man mit Delphi auch nur annähernd so etwas hinbekommen? Was sind Bots?
Mir schwebt ein Programm vor, das eine primitive Art der Intelligenz hat, weiß aber noch nicht, was genau. Keine Ahnung auch, ob ich das je hinbekommen werde, aber vielleicht hat jemand einen Ansatz, wie ich zumindest mal mit einer "Zelle" anfangen könnte! Wie programmiert man so was? Ich stelle mir "Zellen" mal als Prozeduren und Funktionen vor - die sich gegenseitig aufrufen.
Kennt sich da jemand aus?
Danke!
NetZwerg - So 14.03.04 18:16
Kommt ganz drauf an was du machen willst. Ich habe mal ein kleines Programm geschrieben, was mit mir gechattet hat (in 2/3 der fälle hat es gesagt, dass es keine ahnung hat, was ich meine :D ). Du musst das ganze schon ein bisschen präziser ausdrücken :roll:
cYa, Dave :twisted:
MaxiTB - So 14.03.04 18:33
Du würfelst da einige Dinge sehr durcheinander - Bots, KI, neuronale Netze *g*.
Ich denke mal, du solltest dich noch ein bisserl genauer erkundigen über das Thema (Bücher, Diplomarbeiten, Doktorarbeiten) bevor du dich praktisch an diese Sache ranwagst. Ich hab ja keine Ahnung, was du machen willst, aber hier gehts nicht um sowas triviales wie Apfelmännchen ;-) .
patrick - So 14.03.04 19:19
Das hier wird dir ganz sicher weiterhelfen:
http://www.robsite.de
schau dir mal alles an wo du das kürzel KI findest :D
(links, tutorials und büchtertipps)
galagher - So 14.03.04 19:19
Na ja, "neuronales Netz" ist doch KI, oder? Ich möchte ein Programm, das eine Sache tut, weil es sie für gut befindet, und nicht, weil es sie errechnet hat. Wie stelle ich es aber an, das das Programm das tut?
Wie könnte es zB. erkennen, das es nur dann läuft, wenn auch der Computer - seine Umwelt - läuft? Das ist logisch, aber wenn man's nicht weiß...! Ich suche einfach mal einen Anfang, ich weiß ja nicht, wie man KI programmiert. Ein Programm, das chatten kann, ist doch schon was, aber woher nimmt es die Worte? Lernt es, und wenn ja, wie? Im Moment hab ich nur Fragen und keine Antwort!
Danke!
Raphael O. - So 14.03.04 19:23
galagher hat folgendes geschrieben: |
Ich möchte ein Programm, das eine Sache tut, weil es sie für gut befindet, und nicht, weil es sie errechnet hat. |
errechnen MEnschen nicht eigentlich auch, was besser ist durch abwägen der GEgebenheiten...
anders geht es bei einem PC auch nicht :/
NetZwerg - So 14.03.04 19:23
der befindet das aber gut, weil er es berechnet hat, und nich weil es gut riecht oder aussieht... N computer hat doch keine eigene meinung! :?
galagher - So 14.03.04 19:27
NetZwerg hat folgendes geschrieben: |
der befindet das aber gut, weil er es berechnet hat, und nich weil es gut riecht oder aussieht... N computer hat doch keine eigene meinung! :? |
Ein normaler PC nicht, aber es gibt doch lernende Programme, die sehr wohl abwägen können und nicht stur logisch rechnen. Habe hier aber was gefunden, das ich mal lesen werde:
http://www.robsite.de/links.php?link=ki
Vielleicht bringt's ja was!
MaxiTB - So 14.03.04 20:53
Ein neuronales Netz ist nur eine mögliche Form einer Realisierung von KI.
Wie gesagt - dieses Thema ist sehr komplex und umfangreich wenn man tiefer drauf eingeht - mindestens Universitätsniveau. Wenn du allerdings ernsthaft eingehen willst, dann sollten auch gute Kenntnisse in Neuralbiologie und Philosophie vorhanden sein (wie funkts bei Lebewesen/Bewertungskriterien für Entscheidungsfindung). Es ist also mit ein bisserl Grundwissen in KI noch lange nicht getan um wirklich was ernsthaftes zu realsieren.
Ich geb dir ein Beispiel: Ich hab damals an meiner HTL (entspricht eure FH) innerhalb eines Jahres ein selbstlernendes Backnoation Netzwerk gebastelt mit 100x25 Knoten. Nach dem Training konnte diese Ding erkennen, ob es sich bei einem Monochrom-Bitmap um einen Kreis handelt. Naja - meistens jedenfalls, bei komplexeren Mustern reichen natürlich 2.500 Knoten nicht mehr aus; und ich hatte nur ein Monat Zeit fürs trainieren.
Delete - So 14.03.04 20:58
Akso ich glaube bei den Zellen bist du eindeutig bei biologischen neuronalen Netzen, denn der Aufbau, den du beschrieben hast ist prinzipiell der eines Gehirns auf unterster ebene. Damit hättest du dann das 'I' aber halt kein 'K'.
Alle KIs aus Computerspielen, die du wohl meinen solltest, sind funktionelle KIs. Das heißt, sie sind auf eine bestimmte Situation hin konstruiert und arbeiten streng mathematisch genau das ab, was man ihnen gesagt hat. Gut, es sei denn der Programmierer fügt einen Zufallsgenerator ein, wobei dass ja dann auch schon wieder irgendwie eine Vorgabe ist. Lernende KIs gibt es auch, aber auch nur, weil wieder ein findiger Programmierer einen Algorithmus aufgestellt hat, um das Verhalten des Spielers zu analysieren und dann passend Variablen in der KI zu verändern um deren Verhalten anzupassen.
Wenn du für dein Spiel eine KI willst, dann denk am besten einfach darüber nach, was deine KI machen soll und konstruiere sie dann darauf hin.
Muss ja gar nicht kompliziert sein. Für einen 2DShooter reichen schon ganz einfache Algorithmen um zum Beispiel festzustellen, ob sich ein Geschoss auf Kollisionskurs befindet und in welche Richtung man ausweichen sollte.
@Fiji-Fighter
Das Ergebnis mag, wenn die Situation eindeutig ist, bei der Entscheidung eines Menschen und einer KI gleich sein, aber die Art wie Computer und Gehirn zu dieser Entscheidung kommen, sind grundverschieden.
Das Gehirn ist ein riesiger, parralel arbeitender Assoziativprozessor. Das heißt er kann gigantisch komplexe Situationen in Kürze mit ähnlichen Situationen vergleichen und eine als positiv in Erinnerung liegende Handlungsweise damit in Verbindung bringen. Dabei behält es gleichzeitig noch eine Art Abdruck der momentanen Situation (eine Erinnerung) als Referenz für die Zukunft.
Wenn man sich mal das Verhalten von Menschen ansieht, würde ich mir zwar wünschen, dass sie öfter eine Entscheidung durch sinvolles Abwägen von Gegebenheiten fällen würde, normalerweise ist das aber nicht der Fall.
Ein Computer kann nur linear, praktisch in riesigen If..Then..Else Blöcken versuchen, eine Situation zu erkennen, wobei jeder Schritt winzig klein sein muss und die Art der Analyse sowie mögliche Ergebnisse genau festgelegt. Dafür ist der Computer sehr präzise und natürlich auch sehr schnell bei dem was er tut, qualifiziert sich damit also für andere Aufgaben, die das Gehirn nicht kann.
galagher - So 14.03.04 21:15
Danke zuerst mal für eure Hilfe!
Ist ja echt ein komplexes Thema - viel schwieriger, als ich dachte! Programme schreiben ist eine Sache, aber KI ...
Ich hatte früher, unter DOS, ein Programm sbaitso.exe, das konnte mit Soundkarte mit mir englisch reden; mehr oder weniger - eher weniger - sinnvoll. Ich weiß nicht, ob das schon KI war, aber jedenfalls ließ es sich nicht auf ein bestimmtes Thema festlegen (es wusste ja nicht wirklich etwas darüber), das war dann eher immer Smalltalk! Jedenfalls läuft das Prog nicht unter Windows9 und ich hab's deshalb nicht mehr.
Aber es wär schon toll, sowas mal zu machen. Aber Universitätsniveau hab ich nun auch nicht...
galagher - So 14.03.04 21:25
MaxiTB hat folgendes geschrieben: |
Ich hab damals an meiner HTL (entspricht eure FH) innerhalb eines Jahres ein selbstlernendes Backnoation Netzwerk gebastelt mit 100x25 Knoten. |
Das ist ja schon was! Was ist daraus geworden? Entwickelst du es nicht weiter?
MaxiTB - So 14.03.04 23:05
Zitat: |
Das ist ja schon was! Was ist daraus geworden? Entwickelst du es nicht weiter? |
Das fustrierendeste an einem neuronalen Netz ist seine Begrenztheit. Irgendwann bringts nix mehr, es weiter trainieren zu lassen, weil die Resultate nicht mehr besser werden - ich hab damals 10 Netze trainiert - Nummer 6 war das beste.
Aber das war eine alte Spielerei - Borland C++ unter DOS *g* Leider hab ich aus der Zeit nur mehr sehr wenig - Sourcen gar keine mehr. Sind mit meiner 400 MB Festplatte von meinem ersten PC flöten gegangen. Aber ist ja nicht schade drum, weil was soll ich noch damit ? Die Grundprinzipien kenne ich ja und das Anwendungsbeispiel würde ich heute ganz anders machen.
Weiters kannst du zum Emulieren von Small-Talk was anderes verwenden - ich verweise auf
ELIZA von
Joseph Weizenbaum. Okay, das Prinzip ist ein bisserl angestaubt (weil ja aus den 60ern ;-) ), aber es geht genau in die Richtung, die du erwähnt hast !
Suche am besten in Google unter den Begriffen ... da findest du sicher was.
iGoA - Mo 15.03.04 10:45
Es gibt im Netz ein paar Delphi-Komponenten für Neuronale Netzwerke. Die kann man allerdings auch nur mit einem gewissen Know-How benutzen. Es ist zudem nicht leicht die passende Netzstruktur zu definieren, für das was das Programm lernen soll. Wir haben im Studium als Einstieg den Netzen erstmal logische Grundfunktionen wie AND oder XOR beigebracht. Das war leicht. Später sollte automatisch anhand einiger Personen-Kriterien entschieden werden, ob eine Person eine Lebensversicherung bekommen sollte oder nicht. Dort das passende Netz zu bauen war schon schwieriger.
galagher - Mo 15.03.04 19:00
Ich stell mir vor, sowas wie ein Chat-Programm zu schreiben. Anfangs soll es gar nichts können und "lernt" vom Benutzer. Die "erlernten" Worte werden abgespeichert und - nach dem Muster, wie der User sie einsetzt - vom Programm eingesetzt. Je mehr man sich mit dem Programm beschäftigt, desto mehr Worte lernt es. Wie ich die Daten abspeichere, weiß ich noch nicht genau, und ein Problem wird sicher werden, daß das Programm sinnvolle Sätze bildet, auf Fragen einigermassen sinnvoll antwortet usw.
Aber sowas in der Richtung schwebt mir vor, das würde wenigstens Spaß machen!
Es gibt im Net ein "KI-Tool" für Delphi 5, das haut aber schon beim Installieren nicht hin!
Raphael O. - Mo 15.03.04 19:05
Brainiac hat folgendes geschrieben: |
Das Ergebnis mag, wenn die Situation eindeutig ist, bei der Entscheidung eines Menschen und einer KI gleich sein, aber die Art wie Computer und Gehirn zu dieser Entscheidung kommen, sind grundverschieden.
Das Gehirn ist ein riesiger, parralel arbeitender Assoziativprozessor. Das heißt er kann gigantisch komplexe Situationen in Kürze mit ähnlichen Situationen vergleichen und eine als positiv in Erinnerung liegende Handlungsweise damit in Verbindung bringen. |
dabei ist es aber doch trotzdem nur abwägen der aktuellen Bezug unter berücksichtigung der gespeicherten Daten...
eine der neuen Situation ähnliche alte zu finden wird wohl nahezu unmöglich sien, bei Vomputer-KI aber ich bin der Meinung, dass es vom Prinzip her das gleiche ist, was ein Computer macht und was der Mensch macht, wenn auch verscheiden komplex...
galagher - Mo 15.03.04 19:14
Zitat: |
dabei ist es aber doch trotzdem nur abwägen der aktuellen Bezug unter berücksichtigung der gespeicherten Daten... |
Ja, aber millionenfach komplizierter und komplexer als ein Computer!
MaxiTB - Mo 15.03.04 19:27
::galagher
Dir ist schon klar was du da machen willst :D ?
Eine Frage - wie lange hast du vor zu leben ? 100 Jahre, vielleicht 200 Jahre ? 1000 Jahre ?
Wenn ich zusammenrechne, wieviele Leute sich bis jetzt mit KI beschäftigt haben und wieviele Fortschritte gemacht wurden in der Richtung - dann sind das sehr, sehr winzige im Vergleich, was du schaffen willst. Abgesehen davon brauchst du (wenns dus auf neuronaler Netz-Basis machen willst), einen Rechner, der ein paar Millionen Layers an Nodes packt in eine guten Zeit - Backnonation ist klar, daß Ding soll ja selbstständig lernen. Input/Output Layer müssen gewaltig viele Eingänge haben, um die Informationen richtig aufzuarbeiten.
Na - ich denke, selbst wenn du die richtige Konfiguration des Netzes aus dem Internet laden könntest - alleine für die Realisierung brächtest du 1000 Mannjahre um ein Programm zu entwickeln, daß diesen Aufgabe gerecht wird. Da reicht keine mikrig Compo mehr aus. Und was das Training angeht, muß ich dich enttäuschen - so einfach ist das bei der Komplexität nicht - vergiß nicht - der Mensch benötigt min. 2 Jahre um zu plappern - mit 4 Jahren kann man mal von reden sprechen. Das ist aber der Mensch und kein mikriges neuronales Netz. Ich denke mal, selbst wenn du so ein Netz hast, dann brauchst du hunderte Versuche, bis du es einigermaßen richtig trainiert hast ... ein Trainingszyklus durchschnittlich 20 Jahre (weil Daumen mal pi man ja behauptet, bei einem ideal konfgurierten Netz braucht man für einen Trainingszyklus 10x solange wie beim Menschen - die Hälfte, weil man ja schon vorzeitig abbrechen kann und neu beginnen, wenn man merkt, der Zyklus trainiert in die falsche Richtung).
Daher will ich dich nur ein bisserl in deiner Euphorie bremsen - nicht glauben, nur weil etwas simple klingt ists auch einfach zu realisieren (vor allem was Zeit angeht).
galagher - Mo 15.03.04 19:38
MaxiTB hat folgendes geschrieben: |
Dir ist schon klar was du da machen willst :D ? |
Aber es wär doch toll: Da gibt's so ein VCL-Tool, das fügst du in dein Formular ein, und im OI gibt's dann eine Einstellung, zB. "Kann chatten-True/False" oder so!
Im Ernst: Ich werde mal versuchen, ob ich sowas mit Sätzen oder Begriffen hinkriege. Ich behaupte ja nicht, dass ich klüger bin als alle anderen! Mein Proggi soll einfach "nachäffen", was ich vormache, es soll seine Daten speichern und laden, mir scheint es sinnvoll, zunächst mal nach Substantiven, Adjektiven etc. zu trennen, Redewendungen zu speichern usw. Das Programm soll das dann einfach benutzen, immer mehr und mehr. Das müßte doch gehen, oder? Zwar ist das noch nicht KI, aber besser, als "Hello World" oder noch ein Texteditor oder noch ein Grafikprog!
MaxiTB - Mo 15.03.04 19:42
Zitat: |
Weiters kannst du zum Emulieren von Small-Talk was anderes verwenden - ich verweise auf ELIZA von Joseph Weizenbaum. Okay, das Prinzip ist ein bisserl angestaubt (weil ja aus den 60ern ), aber es geht genau in die Richtung, die du erwähnt hast ! |
Dann hab ich dir ja schon einen guten Tipp gegeben ! Hast du dich da schon schlau gemacht ? Das ist genau das, was du machen willst - du kommst ganz ohne neuronales Netz aus und es ist immer noch anspruchsvoll, wenn mans in alle Details und Feinheiten realisieren will ;-).
ELIZA JOSEPH WEIZENBAUM
Im Google findest du eine Menge zu dem Thema !
galagher - 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
MaxiTB - 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.
Raphael O. - 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 (
http://bs.cyty.com/stjakobi/archiv/games/rat.htm)
anscheinend nur mit dem INterexplorer lauffähig :/
Delete - 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 - 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!?
patrick - Mo 15.03.04 22:19
für das training am anfang:
http://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
http://dev.robotbattle.com/
kann man sich den source runterladen.(kein delphi)
galagher - 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"?
Delete - 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 - 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 - 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.
Delete - 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 - 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ß!
minnime - 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 - 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 - 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!
ähM_Key - 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 :D
...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
minnime - 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 - 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.
minnime - 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.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!