Laden...

Künstliche Intelligenz - praktische Beispiele - Buchtipp

Erstellt von tonka vor 14 Jahren Letzter Beitrag vor 12 Jahren 7.019 Views
tonka Themenstarter:in
373 Beiträge seit 2006
vor 14 Jahren
Künstliche Intelligenz - praktische Beispiele - Buchtipp

Hy@all,

ich versuche schon seit geraumer Zeit mir Wissen bezüglich KI (AI) zu anzueignen. Ich habe mittels google schon sehr viele deutsch- und englischsprachige Beschreibungen, Erklärungen, etc. gefunden. Die Basics habe ich (meiner Meinung nach) verstanden, jedoch fehlt mir noch die "praxisbezogene Ebene". Ich verstehe nicht so ganz wie die neuronalen Netzte und co. für den praktischen(programmiertechnischen) Einsatz nutzbar sind, genauer gesagt -> Wie beziehe ich die Informationen aus dem Netz um diese in einem praktischen Beispiele wie z.B. Mustererkennung zu verwenden.

Solltet ihr ein paar gute Bücher/Links zu dem Thema kennen, die sowohl die Grundlagen als auch den praktischen Einsatz (am besten mit Source-Snippets oder etwaiges) erklären, ich würde mich über jeden Vorschlag freuen.

MfG
Tonka

6.911 Beiträge seit 2009
vor 14 Jahren

Hallo Tonka,

künstliche Intelligenz und Mustererkennung sind sehr weitläufige Begriffe und mir ist kein Buch bekannt dass beides abdeckt, zumal diese Methoden speziell auf das Problem angepasst werden müssen - eine allgemeine Lösung gibt es nicht.

Eine gute Übersicht über die Methoden der KI bietet Andries P. Engelbrecht in Computational Intelligence. Darin ist auch Pseudocode für die meisten Methoden enthalten. Generell ist es jedoch eine mathematische Abhandlung des Themas, Praxisbeispiel finden sich wenige jedoch werden die Einsatzgebiete gezeigt.

Speziell für C# und neuronale Netze kann als Einführung von Jeff Heaton Introduction to Neural Networks for C# verwendet werden. Dieses Buch ist praxisorientiert hat aber leider viele Fehler die einen nicht wissenden falsches lehren. Wenn man vorher schon die Grundlagen kennt kann man darüber hinwegblicken und das Kapitel das mit SOM bezeichnet wurde eben als Vector quantization bezeichen, nur als Beispiel. Daher empfehle parall zu diesem Buch auch das Forum dazu zu beachten in dem ich auf die meisten Fehler hingewiesen habe.

Ich verwende zur Mustererkennung im Zuge von Data-Mining eine Selbst organisierte Karte (SOM, Kohonen-Netz) und für dieses ist Kohonens Monograph Self-Organizing Maps sozusagen die Bibel dafür. Dieses Buch ist sehr mathematisch (man hat damit Freude oder hasst es - bei mir ersteres) und bietet alles rund um das Thema SOM. Praxisbeispiele sind darin auch enthalten. Aber kein Code sondern nur Formeln - diese sollten sich aber leicht in Code umsetzen lassen.

Für andere Themen wie neuronales Gas, etc. ist es am Besten die Origanalarbeiten der jeweiligen Erfinder zu lesen. Dies sind meist Artikel mit ca. 10 Seiten die eine Einführung in das Thema geben und mit einem typischen Praxisbeispiel für die Anwendung abgeschlossen werden. Dazu ist es vorteilhaft ein Mitglied von zB IEEE zu sein, denn dort werden solche Arbeiten bevorzugt veröffentlicht.
Weiters ist es empfehlenswert sich in dan Universitäten wo die treibenden Kräften sind sich die Dissertationen durchzulesen. Bei der SOM zB ist dies die Helsinki University of Technology.

Ich kann nur eine ziemlich allgemeine Antwort geben da das Thema eben sehr weitreichend ist. Mustererkennung kann Texterkennung, Gesichtserkennung, Data-Mining, etc. sein. Weiters muss auch zwischen Clustern und Klassifizierung unterschieden werden. Ersteres lässt sich durch unüberwachtes Lernen bewerkstelligen letzeres respektive mit überwachten Lernen. Für beide gibt es wiederum verschiedenste Methode die angewandt werden können. Welche zu bevorzugen ist kann auch nicht pauschal beantwortet werden, denn das hängt - wie immer - vom Anwendungsfall ab. Persönlich verwende ich meist fürs Clustern ein (wachsendes) neuronales Gas und für die Klassifizierung die Learning Vector Quantization oder ein Feedforward-Netzwerk - je nachdem was sich bei Referenztest als "besser" herausstellt.

Wie im letzten Absatz kurz angeschnitten gibt es überwachtes und unüberwachtes Lernen. Weiters gibt es eine grobe Unterteilung in vektorbasierte (distanzbasierte) und skalarproduktbasierte Netzwerke. Erstere haben zudem gemein dass sie kompetitiv lernen. Somit unterscheidet sich die "Ausgabe" dieser Netzwerktypen. Die vektorbasierten haben als Ausgabe ein "Siegerneuron" während die skalarproduktbasierten eine reelle Zahl ausgeben. D.h. auch dass erstere distkrete und letztere kontinuierliche Ausgaben haben. Diese Ausgaben gilt es entsprechend zu interpretieren oder durch "Postprocessing" entsprechend aufzuberetein.

Nehemen wir hierzu als Beispiel eine einfache Zeichenerkennung welche als Klassifizierung angesehen werden kann. Dazu eignet sich zB die Learning Vector Quantization (LVQ). Dies ist ein Netzwerk das ähnlich einer SOM aufgebaut ist, das Lernverfahren unterscheidet sich jedoch dahingehend dass die SOM unüberwacht ist und die LVQ ein überwachtes Verfahren. Es gibt auch mehrere Varianten der LVQ - relevant sind meiner Meinung nach nur LVQ-I und OLVQ (sowie die Batch-Varianten davon).

Zurück zum Beispiel: Das Bild des zu erkennenden Buchstaben muss zuerst aufbereitet werden indem es "normalisiert" wird. D.h. ausgerichtet, beschnitten, skaliert, etc. Danach wird die Information jedes Pixels - weiß/schwarz - am Netzwerk angelegt, d.h. jedem Eingabeneuron wird der Wert eines Pixel angelegt. Das (tranierte) Netzwerk verarbeitet diese Information und als Ausgabe bekommt man den Index des Siegerneurons. Da mit dieser Ausgabe nicht viel anzufangen ist muss das Netzwerk im Anschluss an das Training kalibriert werden. D.h. alle zu erkennenden Buchstaben werden dem Netz präsentiert und die Zuordnung Buchstabe <-> Siegerneuron gespeichert - in einer Haschtabelle. Somit kann im Einsatz über dieses Zuordnungstabelle vom Siegerneuron auf den erkannten Buchstaben geschlossen werden.

Im obigen Beispiel würde ein vektorbasiertes Netzwerk verwendet. Das gleiche Beispiel kann auch mit einem skalarproduktbasierten Netzwerk wie einem Multilayer-Perzeptron (MLP) umgesetzt werden - funktioinert allerdings nicht so gut, aber für das Verständnis reicht es.
Hierzu gibt es für die Ausgabe zwei Möglichkeiten:*für jede Klasse (Buchstabe) wird ein Ausgabeneuron vorgesehen - für das Beispiel wären dies 26 *ein Ausgabeneuron und Unterteilung der Klassen durch Bereiche im Ausgabeintervall (-> Defuzzierung der Ausgabe). ZB wenn das Ausgabeintervall [-1,1] ist so könnte das Teilintervall [-1, -1+1/26] für A, [-1+1/26,-1+2/26] für B, ... [1-1/26,1] für Z stehen

Welche der beiden Varianten verwendet wird hängt wieder vom konkreten Anwendungsgall ab.

So, nun hoffe ich dass die Antwort ein wenig hilfreich ist und zuguter letzt sei noch eine weitere wichtige Quelle zu erwähnen: Fragen hier bei myCSharp 😉

mfG Gü

Speedski

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

Q
5 Beiträge seit 2009
vor 14 Jahren

Gibt es eigentlich auch ein möglichst aktuelles Buch, welches sich mit den Grundlagen der KI allgemein befasst? Also das eine Übersicht über die verschiedenen Ansätze liefert (neuronale Netze z.B.), diese erläutert und dabei garnicht unbedingt allzu sehr ins Detail geht? Dass man einfach mal einen Überblick hat, für welche Aufgaben man welche Art von KI einsetzt und wie diese grob funktioniert.

Bin zwar der Englischen Sprache mächtig, aber bei solch eher komplexn Themen wäre etwas deutsches vielleicht besser, ist halt nunmal kein Roman 😉

297 Beiträge seit 2008
vor 14 Jahren

Du könntest mal auf den Webseiten von Universitäten schauen, ob es dort Skripte zu den Vorlesungen zum runterladen gibt. Diese sind zwar meistens mit einem Passwort geschützt, aber manche eben auch nicht.
Ich habe mal bei der Uni Stuttgart eine Einführung in die (verteilte) KI gefunden und diese hatte kein Passwort. Ansonsten hilft es auch, den entsprechenden Professoren eine Mail zu schreiben, und nach dem Passwort zu bitten, die meisten sind ja ganz nett und umgänglich.

There are 10 kind of people, those who understand binary and those who don't.

S
56 Beiträge seit 2009
vor 12 Jahren

Hallo, das Thema ist zwar schon etwas älter, aber vielleicht interessiert es ja trotzdem mal jemanden:

Da ich mich mit KI, vor allem mit logischer Programmierung, im Rahmen meiner Diplomarbeit beschäftigt habe, kann ich ein paar gute Bücher zur Einführung in die KI emfpehlen. Diese Behandeln auch andere Bereiche der KI wie:

  • Fuzzy Logic
  • Suche-Verfahren
  • Logik-Programmierung
  • künstliche neuronale Netze

etc.

Ertel, Wolfgang: Grundkurs Künstliche Intelligenz. Eine praxisorientierte Einführung. 2. Auflage. Wiesbaden: Vieweg+Teubner, 2009

Lämmel, Uwe; Cleve, Jürgen: Künstliche Intelligenz. München: Carl Hanser Verlag, 2008

Mainzer, Klaus: KI – Künstliche Intelligenz. Grundlagen intelligenter Systeme. Darmstadt: Wissenschaftliche Buchgesellschaft 2003

Beste Grüße solick