Künstliche Intelligenz -> Evulotionäre/Genetische Algorithmen - Schwierigkeitsgrad

Hallo,

Ich werde in den nächsten Monaten meine Bachelorarbeit schreiben und bin noch auf der Suche nach einem Thema. Eines der Themen welches ich sehr intressant finde ist die Künstliche Intelligenz bzw. genauer gesagt Evulotionäre/Genetische Algorithmen.

Sowas hier finde ich z.B. extremst intressant:

Das Problem ist aber, dass wir im Studium leider keine KI-Veranstaltung gehabt haben. Ich habe von dem Gebiet also absolut keine Ahnung und kann daher auch nicht abschätzen wie komplex das ganze ist und vorallem was für eine (höhere) Mathematik dahintersteckt.
Vielleicht gibt es hier ja jemanden der etwas mehr über das Thema weiß und einschätzen kann, wie schwer es z.B. wäre, ein Programm obiger Art zu erstellen? Ist das mit ein wenig einlesen in die Thematik getan und durchaus für eine Bachelorarbeit geeignet, oder steckt da wirklich ziemlich komplexe Mathematik dahinter?

Es ist auch schwer einzuschätzen, was andere schwer finden.

Das Video ist ja ganz lustig. Hat mich irgendwie an QWOP erinnert ( QWOP ) :smiley:

Man könnte da jetzt weit ausdifferenzieren, zwischen „schwierig“ und „aufwändig“ und „kompliziert“. Ich denke, bei dem ganz konkreten Beispiel wäre es erstmal schon relativ aufwändig, die Phsyik"engine" dafür zu erstellen. Da steht ja leider nichts dazu dabei, vielleicht könnte man da auch auf irgendwas zurückgreifen (Box2D bietet ja einiges an Physikzeug).

Ansonsten ist der Begriff „Künstliche Intelligenz“ ja sehr allgemein. „Evolutionäre/Genetische Algorithmen (GA)“ schränkt das schon sehr stark ein, aber auch da gibt es verschiedenste Ansätze und Ziele. GA sind ja nur eine spezielle Form einer ganzen Klasse von Verfahren/Algorithmen. Bei einigen dieser Algorithmen kann man jedenfalls sagen, dass der Algorithmus an sich ziemlich trivial ist…

for (manyManyTimes) {
    letBadOnesDie();
    letGoodOnesMate();
}

aber die „Ausprogrammierung“ sehr aufwändig, weil man sich überlegen muss, wie man sein konkretes Problem (bei GA z.B. in einer „Population“ bzw. einem „Individuum“) repräsentieren will, und es meistens bei solchen Algorithem tausende Tuning-Parameter gibt. (Dass es nicht abwegig ist, die Parameter für einen GA mit Hilfe eines GA zu optimieren, spricht wohl Bände :D).

Ein Experte bin ich da aber auch nicht. Ich habe zwar mal ein paar Vorlesungen zu diesen Themen gehört, aber… an der Tatsache, dass da z.B. „Neuronale Netze“ mit 1-2 Vorlesungsstunden abgefrühstückt wurden, sieht man schon, dass die Schwerpunkte da andere waren. Das, was ich dazu weiß, legt für mich nicht die Vermutung nahe, dass man sich da einen Mathe-Overkill geben müßte (ich hatte mir mal ein Buch über Neuronale Netze gekauft, aber das damals nicht verstanden … ich hätte vielleicht warten sollen, bis wir gelernt haben, was diese komische Zickzack-Linie bedeutet (Summenzeichen … ist laaaange her ;))).

Ein nahe liegender Einstiegspunkt, um sich mal umzusehen, ist natürlich immer sowas wie http://de.wikipedia.org/wiki/Evolutionärer_Algorithmus - aber allem voran eigentlich die Rücksprache mit dem potentiellen Betreuer/Prof für die Arbeit.

auch wenn es blöd klingt - mach etwas was Du im Studium gehabt hast. KI ist nicht ganz trivial (zumal sich die Fachleute bei Fuzzy-Logik nicht einig sind ob es eine Wissenschaft ist oder „Schätzendes-Rätselraten“). Du kannst Dich dann im Master auf KI konzentrieren.

[QUOTE=Jack159]
Vielleicht gibt es hier ja jemanden der etwas mehr über das Thema weiß und einschätzen kann, wie schwer es z.B. wäre, ein Programm obiger Art zu erstellen? Ist das mit ein wenig einlesen in die Thematik getan und durchaus für eine Bachelorarbeit geeignet, oder steckt da wirklich ziemlich komplexe Mathematik dahinter?[/QUOTE]

Ganz wie du willst - ziemlich komplexe Mathematik gibt es auf dem Gebiet eine ganze Menge.

In welchem Fach schreibst du überhaupt deine Arbeit?

Und: Ist es OK, wenn es nur einen kurzen Theorieteil gibt und ansonsten ein angemessenes Softwareprojekt durchgeführt wird?

Und: Wie gut kannst du programmieren - selbst ein “simples” Programm, das einen evolutionären Algorithmus implementiert ist relativ komplex…

[QUOTE=Marco13]Ich denke, bei dem ganz konkreten Beispiel wäre es erstmal schon relativ aufwändig, die Phsyik"engine" dafür zu erstellen. Da steht ja leider nichts dazu dabei, vielleicht könnte man da auch auf irgendwas zurückgreifen (Box2D bietet ja einiges an Physikzeug).
[/QUOTE]

Stimmt. Wenn ich mir mal überlege allein jetzt von der KI abgesehen nur eine Anwendung zu programmieren, in der verschiedene Figuren physikalisch korrekt „laufen“ wie in dem Video, dann wäre das schon eine ziemlich schwere Aufgabe. Und dann käme ja noch erst die eigentliche KI bzw. der genetische Algorithmus dazu…

Einen Master mache ich nicht. Und nach dem Bachelor werde ich denke ich auch nicht speziell im KI Feld tätig sein. Das ganze wäre also nur „just4fun“.

[QUOTE=Bleiglanz;93714]Ganz wie du willst - ziemlich komplexe Mathematik gibt es auf dem Gebiet eine ganze Menge.

In welchem Fach schreibst du überhaupt deine Arbeit?

Und: Ist es OK, wenn es nur einen kurzen Theorieteil gibt und ansonsten ein angemessenes Softwareprojekt durchgeführt wird?

Und: Wie gut kannst du programmieren - selbst ein „simples“ Programm, das einen evolutionären Algorithmus implementiert ist relativ komplex…[/QUOTE]

Ich studiere Informatik.
Ja, so hatte ich mir das auch gedacht. Wobei ich aber doch eher glaube, dass das Beispiel aus einem Startpost doch zu komplex für mich wäre…

Schon allein deswegen würde ich von diesem Projekt abraten. Solche „Nebensächlichkeiten“ wie eine ansehliche, physikalisch korrekte Simulation fressen ohne Ende Arbeitszeit - ohne, das es einem jemand dankt. Vielleicht wäre es ja eine Alternative genetische Algos für andere Probleme zu untersuchen? Traveling Salesman oder Palette Loading oder sowas, dafür lassen sich Testumgebungen ja recht leicht implementieren.

Auch wenn ich persönlich es immer begrüße wenn sich jemand in neue Themen einarbeiten möchte, so möchte ich Mogel doch zustimmen: Mach etwas was Du im Studium gehabt hast. Das erscheint einem vielleicht langweilig, und sieht am Ende nicht so schmuck aus wie ein laufender Roboter, aber dafür wird man wahrscheinlich weniger Arbeit haben und eine bessere Note abgreifen können. Und gerade letzteres ist es, wonach der Hahn am Ende kräht.

Ansonsten - wenn man im Bereich KI bleiben möchte - gäbe es auch noch gänzlich andere Bereiche, z.B. Wissensrepräsentation und nicht monotone Logiken (Reiter, Poole, Dempster/Shafer etc). Ich selber fand das ganz interessant in der Anwendung aber ätzend zu lernen… Oder Mustererkennung: Neuronale Netze, Support Vector Machines, Hidden Markov Models etc - ist alles ganz nützlich, aber möglichweise zu einfach für einem Bachelorarbeit. Man könnte es jedoch kombieren: Ein Neuronales Netz, das mit einem genetischen Algorithmus trainiert wird - klingt das nach einer Alternative? (in Feed Forward NNs hat man sich, wie Marco schon andeutete, in zwei Stunden eingelesen; der Teil sollte also nicht das Problem sein).

PS @ Mogel:
Unterschätz mal das Schätzen nicht, das ist schon eine Wissenschaft für sich. Da gibt’s ja die verschiedensten Methoden (ML, MAP, EM, Parzen usw.) die man durchaus alle analysieren/bewerten/verbessern kann. :wink:

ich gehöre zu der Gruppe die Fuzzy Logik als Wissenschaft einstufen

Ich habe Forward NNs mal bei Youtube gesucht und folgende Beispielanwendung gefunden:

Das fände ich auch recht intressant. (Das Beispiel aus meinem Startpost war vielleicht doch etwas zu komplex :smiley: )
Da könnte ich mir z.B. vorstellen verschiedenste Arten von „Karten/Strecken“ einzubauen, auf dem die „Autos“ dann lernen zu fahren. Das wäre auch was für mich.

In sowas könnte man sich also innerhalb weniger Stunden problemlos einlesen, selbst mit 0 Vorkenntnissen aus dem Bereich KI?

Als Kombination/Erweiterung wäre vielleicht noch ein Algorithmus denkbar, der die Karten zufällig erzeugt wie die Spielwelt in Minecraft z.B.

@Jack, ich finde es sehr gewagt, so was zu machen, wenn es nicht mal im Studium vorkam. Bedenke, du musst dich in ein neues und komplexes Gebiet einarbbeiten. Du hast für deine Abschlußarbeit aber nicht ewig Zeit.

Ich hab von KI kein Plan, finde es sehr interessant und werde mir das bestimmt mal anschauen. Es ist aber ein Unterschied, ob ich j4f mir einfach Zeit lassen kann oder ob ich am Datum X mit meiner Abschlußarbeit anfangen muss und dann alles sitzen muss um das Projekt überhaupt erfolgreich abschließen zu können.

Hmmmmjain. In „sowas“ nicht, aber zumindest in die Grundlagen von NNs. Nach einem Nachmittag wird man natürlich noch kein hinreichend umfassendes Wissen haben um ein Auto durch die Stadt düsen zu lassen, und auf dem Stand der Technik ist man schon gar nicht. Aber man kann zumindest eine Vorstellung davon bekommen was bei NNs abgeht.

Ich habe mich selber erst vor nicht langer Zeit in Multilayer Perceptrons - den wohl einfachsten NNs - eingelesen. Die sind nun nun wirklich simpel; nachmittags angefangen zu lesen und am Abend hatte ich dann mein erstes NN für Klassifikationsprobleme implementiert :slight_smile: . Inklusive Trainingsmethoden (Gradientenabstieg) ging das in nur ca. 100 LOC.
Aber wie gesagt, auch wenn man sich MLPs in 2 Stunden aneignen kann, so kratzt man damit nur an der Spitze des Eisbergs. Zumindest kann man dann aber abschätzen ob einen das Thema interessiert und ob man damit weitermachen möchte.

PS: Man sollte bei der ganzen Sache schon zwischen dem eigentlichen NN (welches Entscheidungen trifft) und dem Training des NNs (also der Bestimmung der ganzen Parameter, die für eine gute Entscheidungsfunktion benötigt werden) unterscheiden. Das Training kann man z.B. mit GAs realisieren, und diese sind widerum ein Thema für sich, in das man sich dementsprechend separat einarbeiten müsste.

Hi,

komme nicht aus dem Gebiet der Informatik, aber die Bachelor Arbeit müsstest du doch auch in einer thematisch verwandten Arbeitsgruppe machen, oder? Weil dann würde es vielleicht Sinn machen sich bei einer dieser Arbeitsgruppen vorzustellen und die auch zu Fragen, ob/ wie gut so ein Thema in der Bachelorarbeit möglich ist. Dann hast du auch dirket zu dennen Kontak, wenn du wirklich deine Arbeit in dem Gebiet machst.