PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Künstliche Intelligenz


X-Eon
21.11.2006, 10:43
Hallo zusammen,


Mich interessiert das Thema mit der KI / AI etc. :)

Habe dazu auch schon nen paar Artikel gelesen, jedoch konnte ich auf eine Frage bisher keine zufriedenstellende Antwort finden ;) Ab wann ist denn nun ein Programm "intelligent"? Ist die Amazon-Seite intelligent, weil sie die Klicks eines Users in der Datenbank speichert und anhand irgendwelcher Regeln Artikel vorschlägt?


Außredem wär ich dankbar über Quellen bezüglich Algorithmen mit bezug auf KI. Es gibt sicherlich bereits wahnsinnig durchdachte Formeln um "etwas" intelligent erscheinen zu lassen (z.b. Hindernisse erkennen & ausweichen, Deckung suchen, schlechte Erfahrungen merken).


LG X-Eon


Pukys
21.11.2006, 11:59
Hallo zusammen,


Mich interessiert das Thema mit der KI / AI etc. :)

Habe dazu auch schon nen paar Artikel gelesen, jedoch konnte ich auf eine Frage bisher keine zufriedenstellende Antwort finden ;) Ab wann ist denn nun ein Programm "intelligent"? Ist die Amazon-Seite intelligent, weil sie die Klicks eines Users in der Datenbank speichert und anhand irgendwelcher Regeln Artikel vorschlägt?


Außredem wär ich dankbar über Quellen bezüglich Algorithmen mit bezug auf KI. Es gibt sicherlich bereits wahnsinnig durchdachte Formeln um "etwas" intelligent erscheinen zu lassen (z.b. Hindernisse erkennen & ausweichen, Deckung suchen, schlechte Erfahrungen merken).

Was ist "intelligent"? Es ist nicht leicht, eine umfassende, intelligente Antwort darauf zu finden. Und eine allgemein formulierte gibt es wohl auch kaum.

Im Bereich Computerspiele ist dies wohl am ehesten, daß ein Computerspieler aufgrund der Umgebung und Situation angepasste, mehr oder weniger logische Entscheidungen trifft. Wichtig ist dabei, daß die Entscheidungsfindung situativ ist, und nicht nur einfachen Mustern folgt.
Die Abstufungen sind dabei fast beliebig fein, wie du intelligentes Verhalten wahrnimmst und implementierst.
Das Grundprinzip einer intelligenten Steuerung besteht aus den folgenden Punkten:
Wahrnehmung der Situation
Bewertung der Situation
Anwendung von Regeln
Abwägen von FolgenPunkt 1 ist das sog. Scanning. D.H. du mußt eine Form der Sensorik entwicklen, mit der du eine (Spiel-)Situation in eine für die "Intelligenz" bewertbare Form bringst. Das beinhaltet auch z.B. Sichtbarkeitsgrenzen oder situative Einschränkungen.
In den folgenden Schritten wird eine Bewertung (reaktiv) vorgenommen, um eine Aktion zu planen oder durchzuführen (aktiv), und danach die Folgen des Tuns abgeschätzt.
In diesem Punkten wird oft mit einer Rückkopplung
(feedback) gearbeitet, d.h. das Tun wird wieder bewertet. In diesem Punkt setzt oft auch das Gedächtnis an, in dem geplante Aktionen sowie bekannte Reaktionen auf Aktionen gespeichert wird. Die Speicherung von Bewertungen und externen Reaktionen ist essentiell fürs lernen. Beim Lernen und bei der Verwaltung des Gedächtnisses gibt es noch einen anderen essentiellen Punkt, nämlich selektives Vergessen. Dieses ist notwendig, um das Gedächtnis ist übermäßig groß werden zu lassen (auf der einen Seite) und zu verhindern, daß die AI in die repetive Anwendung von als halbwegs funktionierend erkannten Reaktionen verfällt (auf der anderen Seite). Letzteres ist ein großes Problem bei aktiven AI's: Sie verfallen gern in Stereotype oder gar in eine Art Hospitalismus. Vergessen ist wichtig, um dies zu verhindern.
Um Rechenzeit zu sparen, reduziert man die oft die Entwicklung neuer Strategien sondern greift gern auf Reaktionspattern zurück, die aufgrund von Situationen gewisse feste Aktionsabläufe generieren, zu vergleichen mit Instinkten bei Menschen oder Tieren. Instinkte oder Reaktionspattern sind im Grunde genommen vorgespeichertes Wissen...

Das ist nur ein ganz, ganz grober Überblick, um mal abzustecken, *wie* komplex das ganze Thema wirklich ist. Man kann den Aufwand in jedem Bereich der AI fast beliebig hochtreiben.

X-Eon
21.11.2006, 13:31
Ok *g*

Mal nen bischen näher an die Programmierung angelehnt ... Wie programmiere ich denn eine situative Entscheidungsfindung?

Genau das ist es nämlich was mir nicht so klar ist. Ich kann mir nicht vorstellen das die super intelligenten Computerspieler aus so spielen wie Ghost Recon ihre Entscheidungen mit einer Millionen If-Bedingungen treffen, also muss es doch irgendwelche Algorithmen (oder sowas) geben die das vereinfachen.


Mal angenommen ich möchte irgendetwas programmieren was einfach nur wahllos durch nen Raum flitzt, Hindernissen ausweicht und auf Schläge reagiert.

Man programmiert doch dann nicht ...
if(wand vorraus) -> funktion drehDich.
if(status = muede) -> funktion bleibStehen.
if("jemand schlägt dich") -> funktion laufWeg.


So müsste man ja für jede Eventualität eine Bedingung festlegen, was irgendwann wohl sehr unperformant wird und nach meinem Verständiss auch nix mit Intelligenz zu tun hat.

Jan Krüger
21.11.2006, 13:48
Wenn ich dir ein Buch empfehlen darf:

Russell, Stuart J. & Norvig, Peter: Artificial Intelligence. A Modern Approach. Prentice Hall, Second Edition, 2003. ISBN: 0137903952

(deutscher Titel: "Kuenstliche Intelligenz. Ein moderner Ansatz")

Ich weiss, dass es teuer ist, aber dafuer ist es eine ziemlich gute Balance aus Umfang und Einstiegshilfe. Gewisse Kenntnisse werden vorausgesetzt. Es ist ein wissenschaftliches Buch, liest sich aber verhaeltnismaessig gut.

Das Vorwort auf Englisch: http://aima.cs.berkeley.edu/preface.html -- auf der Seite gibt es auch ein paar andere Kapitel aus dem Buch sowie weitere Informationen.

eViL_oNe
21.11.2006, 22:35
ein Programm ist intelligent, wenn es den Turing-Test besteht:

ein durchaus interessanter Artikel dazu findet sich bei Wikipedia:

http://de.wikipedia.org/wiki/Turing-Test

*ggg*

Pukys
22.11.2006, 09:49
ein Programm ist intelligent, wenn es den Turing-Test besteht:

ein durchaus interessanter Artikel dazu findet sich bei Wikipedia:

http://de.wikipedia.org/wiki/Turing-Test

*ggg*

Ok, das geht ziemlich am Thema vorbei und ist bestens dafür geschaffen, eine Grundsatzdiskussion loszutreten. Meine Antwort darauf ist: "Unsinn". 8-)

Jan Krüger
22.11.2006, 15:04
ein Programm ist intelligent, wenn es den Turing-Test besteht
Heutzutage ist ein Programm (bzw. ein Agent) bereits künstlich intelligent, wenn es sich "intelligent verhält".

Siehe auch http://de.wikipedia.org/wiki/K%C3%BCnstliche_Intelligenz.

Pukys
22.11.2006, 16:47
Ok *g*

Mal nen bischen näher an die Programmierung angelehnt ... Wie programmiere ich denn eine situative Entscheidungsfindung?

Genau das ist es nämlich was mir nicht so klar ist. Ich kann mir nicht vorstellen das die super intelligenten Computerspieler aus so spielen wie Ghost Recon ihre Entscheidungen mit einer Millionen If-Bedingungen treffen, also muss es doch irgendwelche Algorithmen (oder sowas) geben die das vereinfachen.


Mal angenommen ich möchte irgendetwas programmieren was einfach nur wahllos durch nen Raum flitzt, Hindernissen ausweicht und auf Schläge reagiert.

Man programmiert doch dann nicht ...
if(wand vorraus) -> funktion drehDich.
if(status = muede) -> funktion bleibStehen.
if("jemand schlägt dich") -> funktion laufWeg.


So müsste man ja für jede Eventualität eine Bedingung festlegen, was irgendwann wohl sehr unperformant wird und nach meinem Verständiss auch nix mit Intelligenz zu tun hat.

Ah, jetzt wirst du konkreter.
Am Beispiel von Pathfinding - Pathfinding ist *keine* KI-Technik! Beim Pathfinding steht das finden einer effizienten Route im Vordergrund, nicht die Entscheidungsfindung. Daher ist Pathfinding eher ein algorithmisches denn ein KI-Problem. Trotzdem wird auch hier getrickst (wie auch bei der KI.. Man versucht nicht intelligenter zu sein als gerade nötig oder sinnvoll - man versucht nur, möglichst intelligent zu *erscheinen.*..).

Spiele wie GhostRecon oder Co benutzen in den seltesten Fällen dynamisches Pathfinding. Dynamisches PF macht nur dann Sinn, wenn sich der Computerspieler in einer Umgebung befindet, die ihm nicht vorher "bekannt" ist oder sich während des Spiel dynamisch stark ändert. Spiele mit einer statischen Map arbeiten oftmals anders, denn dort werden die möglichen Wege schon vorkompiliert und als sog. Graph abgelegt. Die Graphentheorie verfügt über einige sehr ausgereifte und schnelle Algorithmen, um gute (nicht unbedingt ideale) Wege zu berechnen. Allerdings ist pathfinding in Graphen kein einfaches Problem (es fällt in die Kategorie N=PN-Probleme).
Für dynamisches Pathfinding gibt es viele, viele andere andere Methoden, so z.B. die Methode der kürzesten Linie oder bucket filling. Gegenüber graphenbasierten (also abstrahiertem, "kompilierten") Lösungen sind diese zwar flexibler, aber auch teurer in der Rechenzeit.

eViL_oNe
22.11.2006, 21:42
Heutzutage ist ein Programm (bzw. ein Agent) bereits künstlich intelligent, wenn es sich "intelligent verhält".

Siehe auch http://de.wikipedia.org/wiki/K%C3%BCnstliche_Intelligenz.

schon klar -- mir wäre auch kein Programm bekannt, dass den Test tatsächlich in seiner abstrakten Art und Weise bestünde. Ich möchte meine Aussage von vorhin etwas revidieren: Ein Programm, dass den Test besteht, kann nicht von einem Menschen zweifelsfrei unterschieden werden.

Im Übrigen ist das Thema KI mir viel zu erschöpfend -- habe mich bislang gerade mit passiver Intelligenz (etwa in Form von trainierbaren neuronalen Netzen oder Expertensystemen) beschäftigt, deswegen will ich nicht allzu viel mehr dazu sagen *g*

X-Eon
23.11.2006, 22:43
Ah, jetzt wirst du konkreter.
Am Beispiel von Pathfinding - Pathfinding ist *keine* KI-Technik! Beim Pathfinding steht das finden einer effizienten Route im Vordergrund, nicht die Entscheidungsfindung. Daher ist Pathfinding eher ein algorithmisches denn ein KI-Problem. Trotzdem wird auch hier getrickst (wie auch bei der KI.. Man versucht nicht intelligenter zu sein als gerade nötig oder sinnvoll - man versucht nur, möglichst intelligent zu *erscheinen.*..).

Spiele wie GhostRecon oder Co benutzen in den seltesten Fällen dynamisches Pathfinding. Dynamisches PF macht nur dann Sinn, wenn sich der Computerspieler in einer Umgebung befindet, die ihm nicht vorher "bekannt" ist oder sich während des Spiel dynamisch stark ändert. Spiele mit einer statischen Map arbeiten oftmals anders, denn dort werden die möglichen Wege schon vorkompiliert und als sog. Graph abgelegt. Die Graphentheorie verfügt über einige sehr ausgereifte und schnelle Algorithmen, um gute (nicht unbedingt ideale) Wege zu berechnen. Allerdings ist pathfinding in Graphen kein einfaches Problem (es fällt in die Kategorie N=PN-Probleme).
Für dynamisches Pathfinding gibt es viele, viele andere andere Methoden, so z.B. die Methode der kürzesten Linie oder bucket filling. Gegenüber graphenbasierten (also abstrahiertem, "kompilierten") Lösungen sind diese zwar flexibler, aber auch teurer in der Rechenzeit.



Joa das Beispiel war vielleicht falsch ;)
Aber Pathfinding ist auch recht interessant :)


Zu der eigentlichen Entscheidungsfindung - was eigentlich das ist was ich wissen will - :P Vllt kann man das Spiel Creatures besser zur veranschaulichung heranziehen. Wenn ich dem Biest nen Gegenstand vor die Füße werfe entscheidet es selbst ob es den benutzte/isst oder nicht. Diese Entscheidung hängt vom Status ab, aber ich denke auch von Variablen Größen. Vllt werden auch parallele Bedürfnisse berücksichtig.
Wie wird diese Entscheidungsfreiheit realisiert?


@Jan Krüger: Danke für den Buch-Tipp :) Ich denke das ist was für Weihnachten *hüstel*

Xpyder
24.11.2006, 02:08
Was mir spontan zum Thema "künstliche Intelligenz" einfällt, sind neuronale Netze und Entscheidungsbäume.

Ein neuronales Netz funktioniert (stark vereinfacht) so ähnlich wie z.B. das Gehirn.
Man hat einige "Eingänge", einige "Ausgänge" und innen ein "Netz" mit mehreren "Ebenen" (bestehend aus Knoten). Jeder Knoten sammelt die Werte, die er von allen Knoten der vorigen Ebene erhält und wenn diese einen bestimmten Schwellenwert übersteigen, sendet er an die nächste Ebene. Alternativ möglich: Einfach mit dem "Schwellenwert" multiplizieren und das Ergebnis an die nächste Ebene. Die letzte "Ebene" ist der Ausgang.

Am Ausgang werden die erhaltenen Ergebnisse auch bewertet, d.h. je nachdem, wie "gut" das Ergebnis war, werden dann - entweder rückwärts durch das Netz - oder (was aber nur geht, wenn Anzahl Eingänge = Anzahl Ausgänge) noch einmal vorwärts die Ergebniswerte durchgeschickt, um sie zu verstärken oder abzuschwächen...
Diese Schwellenwerte sind also das einzige am Netz, was sich ändert - und die Gesamtzusammenfassung dieser Werte zusammen ergibt die gelernte Informationsmenge.

Das ist bewußt äußerst primitiv erklärt, wollte es nicht so lang werden lassen. Zur Not kann ich mal ein Beispiel bringen, wie so etwas funktionieren kann. (Anm.: Es müssen nicht alle mit allen Knoten der Ebenen verbunden werden, aber es ist die normale Vorgehensweise.)

Ich sollte dazu vielleicht erwähnen, daß neuronale Netze meist ziemlich rechenintensiv sind - vor allem, was die "Anlernphase" betrifft. Ihre Ergebnisse sind "über das Netz verteilt" gespeichert - das Netz funktioniert meist auch dann noch, wenn einzelne Knoten ausfallen - und man kann die Information nur "eingeben und ausgeben" - im Netz selbst ist sie nicht sichtbar.

Solche Netze eignen sich z.B. zur Mustererkennung und zur Situationseinschätzung, ebenfalls aber auch für Wegfindung etc.
Außerdem sollte ich noch erwähnen, daß man bei der Festlegung der Größe eines neuronalen Netzes (wieviele Ebenen, wieviele Knoten pro Ebene) zwar "Faustformeln" benutzen kann, aber eher auf Schätzungen angewiesen ist, da sich die Gesamtanzahl der speicherbaren Daten auch daran orientiert, wie ähnlich oder unterschiedlich die Daten zueinander sind und wie ähnlich oder unterschiedlich die Beziehung zwischen den verschiedenen Eingabe- und Ausgabewerten.
(Das klärt auch, wieso der Mensch im Verlaufe seines Lebens nur 10-20% seiner "Gehirnkapazität" (die man ohnehin nur schätzen kann) einsetzt. Der Rest ist die bei neuronalen Netzen nötige Redundanz. Und es erklärt, warum Menschen schlimme Hirnverletzungen/Unfälle überleben können, teils ohne Beeinträchtigungen... - OK, bei manchen Menschen liegts vielleicht auch daran, daß man erstmal 20 mal auf die Rübe schießen muß, bevor man überhaupt 1x das Gehirn getroffen hat... - oder das Gehirn nur drin ist, damit der Kopf schwer genug zum Nicken ist...)

Ich habe hier irgendwo ein knallgelbes Buch namens "Neuronale Netze" rumfliegen. Muß ich mal suchen, dann kann ich den Autor nennen.

(Allerdings gibts für Wegfindung auch etliche andere Methoden...)

Die zweite erwähnte Möglichkeit sind die bei weitem nicht so rechenintensiven Entscheidungsbäume, deren Arbeitsweise auch weitaus nachvollziehbarer ist. Es gibt da so ein einfaches Spiel "Tiere raten", das man mit Hilfe von Entscheidungsbäumen nachbilden kann. (Einfach ein "Binärer Baum" - Arbeitsweise habe ich mal im Zusammenhang mit Verwendung bei der Darstellung von 3D-Levels erklärt. http://igames.inside1.net/html/dosd2.htm)

Der Witz ist der, daß so ein Baum aus mehreren Knoten besteht, jeder Knoten "enthält" entweder eine Entscheidungsfrage oder ein Ende.

Eine "Entscheidungsfrage" hat dann zwei Ziele, eins für "Ja", eins für "Nein" - diese Ziele sind dann wieder jeweils neue Knoten.

Ein "Ende" dagegen enthält eine "Lösung".

Beim Raten "hangelt" der Rechner sich von Knoten zu Knoten weiter - entsprechend der Antworten, die der Spieler gibt - bis er an ein Ende kommt und diese Lösung präsentiert.

Sollte die Lösung nicht stimmen, so ist das geratene Tier unbekannt und es erfolgt z.B. der folgende Dialog:

Ist es ein Fisch?
N (Nein)
Das von Ihnen gemeinte Tier kenne ich wohl noch nicht. Geben Sie bitte den Namen des Tieres ein:
Frosch
Geben Sie jetzt bitte eine Entscheidungsfrage (Ja/Nein-Frage) ein, die nach dem Unterschied zwischen Fisch und Frosch fragt.
Kann es springen?
Und für "Frosch" wäre die Antwort darauf?
J (Ja)
Danke. Ich habe ein neues Tier gelernt.

Intern passiert dabei folgendes: Das Ziel des letzten Knotens (vor "Fisch" wird nicht auf "Fisch", sondern auf einen neuen Knoten gesetzt, der die eingegebene Frage beinhaltet. Das "Nein"-Ziel wird auf den "Fisch" Knoten gesetzt, das "Ja"-Ziel auf einen ebenfalls neuen Knoten, der ein Ende namens "Frosch" enthält.

Aus naheliegenden Gründen ist es hier durchaus möglich, daß man Entscheidungsknoten und "Enden" auf unterschiedliche Art speichert. Möglich wäre dann z.B., daß ein Zeiger auf ein Ende ein gesetztes oberes Bit hat, einer auf einen Entscheidungsknoten ein gelöschtes oberes Bit. Entscheidungsknoten würden zwei Zeiger enthalten, Enden natürlich (in dem Fall) Zeichenketten, bzw Zeiger darauf.

Zurück zur eigentlichen Theorie (und weg von dem Ratespiel) :

Ebenfalls möglich wäre es, daß solche Knoten nicht nur zwei, sondern eine dynamische Anzahl von Zielen enthalten. Ein Knoten mit nur einem Ziel wäre dann ein "Ende", alle weiteren müßten abgefragt werden. Träfe die Routine bei der Bewertung auf eine "Frage" (bzw Entscheidung), deren Ergebnisse (Ziele) alle nicht als Antwort ausreichen, so würde ein neues "Ziel" für diesen Knoten geschaffen werden, ansonsten wieder durchgeleitet.

Kleiner Nachteil von Entscheidungsbäumen ist dabei natürlich, daß sie "hierarchisch" sind, d.h. es sind keine Quer- oder Rückverbindungen mehr möglich. (Theoretisch zwar schon, aber hier besteht auch die Gefahr, Endlosschleifen zu bauen.)

Natürlich sind sowohl beim neuronalen Netz als auch beim Entscheidungsbaum die Formate der Ein- und Ausgabewerte sinnvoll anzupassen.

Kleine Anmerkung zum Schluß:
Erfolgreiche Computerspiele (und auch teilweise deren Beliebtheit), sowie die Tatsache, daß gute Spiele (die, die man relativ schnell begreift und dann trotzdem stundenlang zocken kann) beruhen nämlich auf dem "vereinfachten Prinzip":

D.h. Dinge aus dem realen Leben oder einer erfundenen Geschichte werden auf vereinfachte Prinzipien reduziert. Bei einem Jump'n'run wird z.B. die komplette Tiefenebene weggelassen - trotzdem (oder gerade deswegen) machts trotzdem Spaß.
Bei 2D-Spielen mit "Draufsicht" wird die Höhenebene weggelassen.

Bei 3D-Egoshootern werden keine Raumebenen weggelassen, was aber (wie auch bei 2D-Spielen) vereinfacht wird, ist die Verhaltensweise und die Interaktionsfähigkeit der beteiligten Mitspieler und Computergegner. (Beschränkt sich meist auf Seek&Destroy - also Intelligenz in etwa = Amöbe, Virus oder US-Marine.)

Diese vereinfachten Prinzipien erlauben aber auch gewisse Vereinfachungen bei der Steuerung, sowie Bewertung von Situationen durch den Computer - die man definitiv nutzen sollte. "Echte" neuronale Netze, eingesetzt in einem Ballerspiel ist, wie das berühmte "mit Kanonen auf Spatzen schießen" - also weit über das Ziel hinausgeschossen. (Würden die Computergegner da wirklich Intelligenz entwickeln, würden sie den Spieler gefangennehmen und die Probleme zivilisiert ausdiskutieren. "Seek&Destroy" als einziges Mittel der Konfliktbewältigung einerseits und "echte Intelligenz" andererseits schließen sich beide gegenseitig völlig aus.)
(Oh, um in diese Richtung gehende Befürchtungen zu zerstreuen: Nein, ich bin nicht p.c. und auch kein blümchenschnüffelnder Hippie. Kaum etwas läge mir ferner...)

OK, genug von mir zu diesem Thema.

Jan Krüger
24.11.2006, 13:08
Deinen Beispieldialog würde ich eher unter Expertensystemen als unter Entscheidungsbäumen einordnen. Der englische Wikipedia-Artikel zu "Decision tree" ist recht gut, um etwas zu letzteren zu erfahren.

Das von mir genannte Buch geht übrigens auf beides ein. ;)

Xpyder
24.11.2006, 17:33
Deinen Beispieldialog würde ich eher unter Expertensystemen als unter Entscheidungsbäumen einordnen.
Der Beispieldialog besteht ja nur aus vollständig vorgegebenen Sätzen. Er ist eher nicht so ein "Eliza"/"Psy-Chat" Clone, der Satzteile ersetzt und sich merkt. Ich habe ja auch erklärt, wie er (der Baum) zustande kommt.
Also, kannst es mir glauben, ist intern eindeutig nur Entscheidungsbaum.
Das "neu Gelernte" ist in dem Fall wirklich nur der "Gegenstand" und die vollständige Entscheidungsfrage. (Also ziemlich "durchschaubar", das Ganze.) Soll halt wirklich nur verdeutlichen, wie dem Baum ein neuer "Ast" hinzugefügt wird. Der "Text drumherum" sind fest eingespeicherte Texte und dienen dann eher dem "Unterhaltungswert".
Hatte ja auch gesagt, daß diese Form (es in Form eines Ratespiels zu machen) natürlich nur ein Beispiel ist.

(Anm.: Und so schlecht find ich meine Erklärung nicht.)

Viel bekannteres Beispiel, das allerdings nichtmal einen "Baum" braucht (da nur ein Merkmal existiert und die Elemente in geordneter Form vorliegen) ist das bekannte "Zahlenratespiel".
("Ich denke mir eine Zahl zwischen 1 und 100 und Du mußt sie in möglichst wenigen Versuchen erraten." - Auf jeden Versuch antwortet Rechner mit "meine Zahl ist größer", "meine Zahl ist kleiner" oder "du hast richtig geraten".)
In dem Fall bildet also der Mensch den "Entscheidungsbaum".

Kam fast sofort dahinter (war damals glaub 11 Jahre alt) :
Statistisch gesehen braucht man die wenigsten Versuche, indem man die Mitte der zur Verfügung stehenden Menge erfragt und dann als Menge nur die Teilmenge vor oder nach dieser Mitte weiterbenutzt. Von dieser bildet man wieder die Mitte, usw...
Und kurz darauf kam ich drauf, daß man das auch benutzen könnte, um in vorsortierten Feldern viel schneller Werte zu finden. (Wenn man selber einen Interpreter oder Assembler schreibt, findet man so viel schneller die Befehle.)
Ich weiß nicht mehr genau, wie ich das damals genannt habe, später hab ichs "Iterations-Verfahren" bzw "Iterative Suche" getauft. Bin mir sicher, daß auch andere schon drauf gekommen sind, weiß aber bis heute nicht, wie andere das Verfahren nennen. (Hab mittlerweile auch noch andere Methoden für Befehlsinterpreter/-compiler/Assembler gefunden.)
(Mit einem diesem Entscheidungsbaum (des Zahlenratespiels) ziemlich ähnlichen Verfahren habe ich übrigens damals mal auf einem 8bit-Rechner (dessen CPU keine Multiplikation/Division hat) eine Assembler-Subroutine geschrieben, die (natürlich binär) die Quadratwurzel einer Zahl ermittelt.)

Jan Krüger
24.11.2006, 23:25
Ich weiß nicht mehr genau, wie ich das damals genannt habe, später hab ichs "Iterations-Verfahren" bzw "Iterative Suche" getauft. Bin mir sicher, daß auch andere schon drauf gekommen sind, weiß aber bis heute nicht, wie andere das Verfahren nennen.
Binärsuche (wegen binärer Verzweigung). Noch besser ist allerdings Interpolationssuche. Dabei berücksichtigt man bei jedem Schritt die Abweichung zwischen erwarteter Annäherung an den Zielwert und tatsächlicher Annäherung und passt die nächste Schrittgröße entsprechend an (dann ist es lineare Interpolation).

Zu Entscheidungsbäumen: die werden (laut gängigem Verständnis) dazu benutzt, aus einer Serie von Objektbeschreibungen, die in Klassen (z.B. Tierarten oder verschiedene Sprecher von Sprachaufnahmen) vorunterteilt sind, neue Objekte anhand ihrer Beschreibungen (hoffentlich) korrekt in die entsprechend passenden Klassen einzuordnen. Diese Aufgabe heißt Klassifizierung.
Ein paar weitere Klassifizierungsverfahren (oder sehr mächtige Werkzeuge hierfür) für unterwegs (= zum Nachschlagen ;)):

- Bayes-Netze (kommt z.B. in SpamAssassin zum Einsatz)
- Boosting
- Hidden Markov Models (HMM)
- k-Nearest Neighbor (k-NN)
- Linear Discriminant Analysis (LDA)
- Neuronale Netze, speziell: Perzeptrons
- Support Vector Machines (SVM; das ist zurzeit der letzte Schrei in der Forschung)

X-Eon
28.11.2006, 00:11
Danke danke =) Das ist eine Menge Input, werde mir das mal zu gemüte führen. Ich glaube das hilft mir schon seeehr weiter ;) Entscheidungsbäume ... das ist gut *g*


Thx!


LG X-Eon


P.S.:Xpyder, würde mich freuen wenn du noch Autor/ISBN des "gelben" Buches postest.

Xpyder
28.11.2006, 03:06
Entscheidungsbäume ... das ist gut
P.S.:Xpyder, würde mich freuen wenn du noch Autor/ISBN des "gelben" Buches postest.

Werner Kinnebrock

Neuronale Netze
Grundlagen, Anwendungen, Beispiele

Oldenbourg Verlag
ISBN 3-486-22947-8


Achja: Da gehts aber *nur* um neuronale Netze - sowie auch unter anderem Anwendungsbeispiele (als Pascal-Programme).
Falls Dich Entscheidungsbäume interessieren - diese sind dort nicht zu finden.

cipoint
07.12.2006, 20:16
Ein Programm wäre intelligent, wenn es hier deine Frage beantworten könnnte.

eViL_oNe
08.12.2006, 22:45
Fragen beantworten kann jedes Programm -- schwieriger isses schon, die richtige Frage zur Antwort zu finden *g*