Und dann so OK. Wie sieht das aus?
Na ja, Mario läuft jetzt absolut wie auf der World, das schnell
mal raus. Dein Podcast wohnt um
Softwareentwicklung und aktueller Technews.
Herzlich Willkommen. Was?
Halli Hallo und herzlich Willkommen zur neuen Folge des
Coding Bodys Podcasts. Schön, dass ihr wieder
eingeschaltet hast. Damit sind wir alle 3 wieder
zusammen. Meine Wenigkeit Tino, du liebe
Zuhörerin, lieber Zuhörer und natürlich auch wieder mal an
meiner Seite der fantastische Fabi Moin Fabi, Grüße dich Hey
Tino Grüße dich was geht ab? Was geht denn ab?
Sag was geht ab?
Neue Podcast Folge Neue Podcast Folge Genau und ich habe auch
ein spannendes Thema mitgebracht, aber lass kurz noch
checken ob alles startklar ist. Hast du einen Kaffee?
Ich. Habe einen Kaffee gut.
Ich auch. Der ist zwar nicht mehr ganz so
viel drin, weil wir jetzt uns ein bisschen verquatscht haben
im Vorfeld, aber es muss reichen.
Ich denke, das wird so eine 5 Minuten folge.
Sie ist alle entschuldigt mich kurz.
Und ich würd sagen, deswegen lass uns keine Zeit verlieren,
bevor der Kaffee wirklich schon alles bevor das Thema losgeht.
Ich hab n Thema mitgebracht, ich hoffe du hast da Bock drauf, ich
werde es mal ganz kurz erläutern.
Und zwar haben wir letzte Woche. Unseren KI Wettbewerb gestartet.
Dazu möchte ich kurz ausholen. Liebe zuhören lieber Zuhörer,
falls du nicht weißt wovon ich rede.
Wir haben ja auf Instagram einen Grundlagenkurs gemacht, um so
den Einstieg in die Softwareentwicklung zu
erleichtern und so die Basics richtig zu vermitteln.
Das ganze Jahr in Java und Python.
Und haben uns gedacht, Na ja, gut, jetzt wo der Kurs zu Ende
ist, muss es ja oder wäre es cool, wenn es noch so ne Art
abschlussaufgabe gibt, wo man denn das Gelernte anwenden kann
und da haben wir fabi uns ja entschieden dafür ein Spiel zu
entwickeln und zwar ein einfaches 4 gewinnt, weil wir
dachten, das müsste eigentlich auch jeder so aus der Jugend
oder Kindheit kennen, wo man so die Steine von oben reinschmeißt
und quasi gegen einen anderen spielt und gewonnen hat, wenn 4
in einer Reihe übereinander oder diagonal zusammenkommen,
richtig? Das sind so die internationalen,
europaweiten Standard regeln. So spielt man das so.
Spielt man das? Alles andere, sind nicht die
offiziellen Regeln und genau, und da haben wir eine
Schnittstelle eingebaut, dass man ein Bot KI entwickeln kann,
die quasi für einen spielt, nach einem Algorithmus, den ein Mann
entworfen hat, und das ist die Abschlussaufgabe und das Ganze
haben wir jetzt letzte Woche gelauncht, das heißt, wir haben.
Den Code zur Verfügung gestellt mit dem Spiel das Ganze auf
einem Repository hochgeladen und ja, man kann das jetzt quasi
sich ziehen, auschecken und die KI für den Spieler entwickeln.
Genau also da findet man auch noch genauere Informationen,
auch zum Beispiel bei Instagram oder auch auf unserer Homepage.
Genau www.codingbuddies.de mal kurz angemerkt genau, ist aber.
Auch natürlich in den Shownotes dann drin.
Genau und also der Kurs ist ja im Endeffekt sag ich jetzt mal
eine Komposition aus Posts zu entsprechenden Themen, die wir
ausgewählt haben für den Grundkurs genau, und wenn jetzt
zum Beispiel jemand sagt, Hey, das ist ja irgendwie cool.
Dann guckt doch einfach mal rein.
Muss man allerdings natürlich jetzt mittlerweile ein bisschen
im Feed von uns runter scrollen. Genau das ist schon ne Menge
zusammengekommen über die letzten Monate.
Ja zu dem Wettbewerb noch ganz kurz, der läuft bis zum 31.3.
Also falls du jetzt, liebe Zuhörer, lieber Zuhörer, Bock
bekommen hast, quasi eine KI für dieses Spiel zu entwickeln und
gegen andere aus der Community anzutreten, das heißt gegen
deren KIS, wir werden nach dem 31 03, das ist der einsendestop
du kannst dich auf eine Plattform bei uns melden und uns
deinen Code zukommen lassen, werden wir ein Turnier live auf
Twitch austragen, nicht wahr, Fabi, das wird richtig geil und
dann werden wir live quasi das Turnier.
Durchführen und den Gewinner ermitteln.
Genau. Also es gibt auch auf jeden Fall
was zu gewinnen. Für alle, die sozusagen nicht
den ersten Platz belegen, gibt es natürlich auch was zu
gewinnen und zwar ne jede Menge Erfahrung, weil das ist ja im
Endeffekt eigentlich so, dass Hauptaugenschlag.
Jetzt ein bisschen wie der Trostpreis, aber das ist
natürlich absolut der Grund dahinter.
Da. Klingt immer total abgedroschen,
aber im Endeffekt soll es ja wirklich dazu dienen, was zu
lernen, weil wir sagen ja immer, Übung macht den Meister
beziehungsweise die Meisterin, um das Ganze auch komplett zu
machen und das ist halt wichtig. Und aus den Gründen haben wir
uns überlegt, OK, was könnten wir denn genau machen und gerade
solche Spiele zum Beispiel sind halt eben natürlich.
Sage ich jetzt mal durch etwas mehr Spaß als irgendwas.
Ganz stumpfes, Langweiliges, sozusagen immer ein bisschen
bisschen spaßiger. Einfach auch dieses diesen
Lerneffekt zu haben. Das heißt, natürlich soll hier
der Spaß im Vordergrund stehen und nicht irgendwie.
Weiß ich nicht. Die Angst, dass man vor anderen
verliert, sondern einfach, man soll da einfach Spaß haben,
einfach probieren, auch wenn man sich zum Beispiel sagt, bei
Instagram hatten wir auch so eine kleine Umfrage gemacht, da
haben auch einige gesagt, dass sie sich vielleicht noch nicht
so richtig bereit dazu fühlen, so einen Bot zu schreiben.
Das Ganze zielt darauf ab, dass man theoretisch mit dem Wissen
von dem Grundkurs es schafft, einen solchen Bot zu schreiben,
der für einen das Spiel 4 gewinnt, spielen kann.
Und es geht im Endeffekt darum, genau eine Funktion zu
implementieren. Und.
Quasi Platz für. Man kann natürlich eigene
Funktionen noch dazu schreiben, ist ja klar, aber im Großen und
Ganzen geht es genau darum, eine Funktion zu implementieren.
Alles drumherum ist quasi da und muss nicht gemacht werden.
Genau und wie gesagt, auf den auf unserer Website gibt es noch
weitere Infos dazu. Auch Hilfestellungen, wie man
das Ganze startet, welche Funktion zu implementieren ist
und ja wie man quasi ins Doing kommt, denn diesen Algorithmus
zu entwerfen und was ich da nochmal ergänzen möchte oder was
ich halt auch cool daran finde ist, es ist halt eine definierte
Aufgabe, es ist klar, was zu tun ist.
Man kann sich vorstellen. Was zu tun ist, also quasi, was
das Ziel ist und was sich dabei immer ganz cool findet, ist,
dass du ein sofortiges Feedback bekommst, weil du kannst ja,
denn das Spiel mit deinem Bot starten und siehst ja, was deine
Ki oder dein Bot tut und das finde ich halt irgendwie ganz
cool. Du kriegst halt so ein Instant
Feedback und es macht halt Spaß und dann kannst du ja auch gegen
dich selbst spielen, also quasi gegen deinen Board und so das.
Das macht auf jeden Fall Spaß, denn daran rumzuentwickeln und
sich zu überlegen, wie könnte denn so eine Strategie so n
Algorithmus aussehen? Wir haben ja auch n kleinen, wir
haben ja auch n Client entwickelt, auch in dem
entsprechenden Repo platziert, dass man auch die Möglichkeit
hat. Manuell zu spielen, das heißt,
man kann theoretisch sagen, also ich könnt mich jetzt hinstellen
und sagen, OK, ich schreib jetzt meine eigenen, meinen eigenen
Bot, der sozusagen dann das Spiel spielt und ich persönlich
trete gegen ihn an und einfach rum, zum Beispiel mal zu gucken.
Wäre es besser ich oder ich? Ich oder ich, meine KI oder ich?
Genau. Ja, so viel mal n bisschen
Eigenwerbung dazu. Also wie gesagt Check das gerne
mal aus Liebe zuhören lieber Zuhörer und nehm auf jeden Fall
dran Teil, das wird n Riesenspaß.
Was aber so n bisschen das Thema ist, wir haben quasi diesen
Wettbewerb und ich würde halt gern mal noch mal so n bisschen
motivieren, wie man das Ganze angehen könnte.
Vielleicht auch so ein 2 Gedanken Richtung
Implementierung bringt. Vorweg würde ich aber gerne noch
mal n bisschen in die Vergangenheit mit dir reisen,
weil es gibt ja n Grund, warum wir uns für n Spiel entschieden
haben. Und zwar hatten wir das haben
wir glaub ich im Podcast auch schon mal erwähnt oder
zumindestens in Twitch haben wir schon mal darüber gesprochen.
Also auf Twitch quasi in der Live Session.
Und zwar hatten wir damals im zweiten Semester ja auch eine
Programmieraufgabe, wo wir eine KI für ein Mario Ableger
schreiben sollten, das heißt auch quasi.
Ein Bot, der für uns Mario steuert und hoffentlich Heiler
durchs Level bringt. Und genau diese genannten
Punkte, man kriegt sofort n Feedback, man sieht wie er sich
verhält. Das waren halt damals auch
Punkte, die ich halt total spaßig daran fand.
Das war nicht einfach, aber es war echt ne Challenge, an der
man gewachsen ist und man halt auch so diesen Fortschritt
gesehen hat, so sagen wir mal die ersten 10 der bekannteste.
Hörner hast du 2 geschafft, dann hat dein Bottom von 3 geschafft
4 und so und dann hast du gemerkt, EY, der wird wirklich
besser. Weißt du was ich mein?
Also das das ist halt so n cooler Progress den man da sehen
kann und genauso könnte man ja bei unserem Wettbewerb dann
merken Hey schau mal. Am Anfang musste ich quasi nur 4
Züge machen, da hab ich mein Bot geschlagen und jetzt wird's
langsam echt knackig als menschlicher Spieler diese KI zu
besiegen, das wäre ja irgendwie auch ein cooler Progress so.
Wie war denn das also, wenn du dich zurückversetzt und du
kriegst jetzt genauso wie unsere Community diese Aufgabe
vorgesetzt und denkst dir so, ich sag mal damals wir im
zweiten Semester und Leute, die jetzt so unseren Kurs
durchgeackert haben, das ist ja schon ein sehr ähnliches Niveau
dann. Wie siehst du das also, wie bist
du das angegangen, was waren deine Emotionen, deine Gefühle,
wenn du dich da nochmal zurückversetzt, das würde mich
mal interessieren, weil vielleicht findet sich da denn
der eine oder andere wieder. Also ich fand es damals gar
nicht so. Spaßig in dem Sinne, weil es
halt eben nur ne Prüfungszulassung ging.
Ja gut, das fällt bei uns aus. Alle anderen dürfen ganz normal
weitermachen. Aber ich weiß auf jeden Fall,
dass ich mir damals dachte, OK, du musst es halt machen, ne.
Also es ist jetzt nicht so, dass man dass, dass ich mir damals
sagt, okay ich habe diese Wahl mehr oder weniger schon klar
habe ich die Wahl getroffen, das Studium zu machen, aber in dem
Fall war es dann so okay wenn du durch dieses Fach willst, musst
du eine Kleine, einen kleinen bot, eine kleine KI schreiben,
die das für dich macht und ja, ganz am Anfang, da war ich halt
schon, also da habe ich ziemlich in der Luft gehangen, weil ich
einfach programmiertechnisch noch nicht so weit war einfach.
Und wir waren ja damals auch schon so weit, dass es auch in
Richtung Objektorientierung ging.
Das ist ja jetzt hier noch gar nicht notwendig, dieses Wissen
an der Stelle, das heißt, man kann es natürlich benutzen, wenn
man es hat, aber wenn man es nicht hat, ist es nicht
unbedingt notwendig, das ist halt an der Stelle nicht
verkehrt. Das war zum Beispiel n Punkt,
der mir damals bei dem KI Wettbewerb oder bei diesem Mario
Ableger eben n bisschen im Weg stand.
Und ich hab mich dann mühselig, sag ich jetzt mal da rein
gequält, um dann zu gucken, OK, wie kann ich denn zum Beispiel
springen, wenn ein Abgrund kommt oder was muss ich tun oder was
für Möglichkeiten hab ich denn zum Beispiel um zu sehen.
Wann der nächste Abgrund da ist oder wann irgendwie n Gegner
kommt oder was auch immer. Ne das Waren für mich schon mal
so die ersten Schwierigkeiten damals.
Und da hab ich auch echt ganz schön mit zu knabbern gehabt,
weil ich hab echt lange und viel überlegt und probiert.
Aber genau das ist halt der Knackpunkt.
Also man überlegt natürlich am Anfang also ich hab zum Beispiel
einfach zu krass diesen diesen bot sozusagen overfitted weißt
du ich also ich kann mich noch erinnern wie du meintest, so man
kennt ja ein paar Level und dann wurden die glaube ich generiert,
das heißt dein Mario Deine Mario Logik musste sozusagen auch mit.
Sachen klarkommen, die eigentlich noch gar nicht, die
man noch nicht kannte. Und ich hab dann einfach so weit
den glaube ich überfitted, dass also Überfitted bedeutet ja im
Endeffekt, dass ich quasi bestimmte Level genommen habe
und mir dachte okay dann und dann muss ich dies und jenes
tun, einfach nur um das war so der Lernprozess und habe dann
aber gemerkt, dass ich damit gar nicht gut weiter komme, das wäre
ja zum Beispiel bei 4 gewinnen, dass man zum Beispiel sagt okay,
ich weiß ganz genau, was zu tun ist, wenn der Gegenspieler
sozusagen in die erste Spalte wirft, aber ich habe gar keine
Ahnung, was ich tun sollte, wenn er eine 2.
Reihe wirft, weiß ich meine. Jaja.
Also so diese Eventualitäten und hab dann quasi ja auch
tatsächlich echt krass den Kopf zerbrochen.
Wie könnte ich das machen? Und ich muss ganz ehrlich sagen,
eigentlich lief es nicht gut. Die Sache an sich.
Bis ich halt irgendwann. Ich glaub wir haben auch dann
uns darüber unterhalten. Und ne, also ich sag mal zweites
Semester haben wir uns ja auch schon so n bisschen
kennengelernt, so richtig. Sind wir natürlich erst übers
Studium zusammengewachsen als Freunde.
Aber Fakt ist auf jeden Fall, dass wir uns ja unterhalten
haben und. Wir ja dann auch ähnliche
Ansätze verfolgt haben. Möchtest du vielleicht mal
sagen, was wir da so für n Ansatz dann verfolgt haben?
Wahrscheinlich das war ja sehr ähnlich.
Ja. Was ich erstmal spannend finde
ist also ist n cooles Learning was du gerade genannt hast, was
wir vielleicht noch mal so n bisschen heraus kristallisieren
sollten und zwar das Overfitting.
Echt n reales Problem ist man nicht in diese Falle tappen
darf, dass man so versucht seinen Algorithmus so spezifisch
an Situationen anzupassen. Dass man mal, blöd gesagt, das
erste Spiel gewinnt und danach alle verliert, weil halt diese
Situation, sozusagen die Wiedereintritt, jetzt mal auf
unseren Wettbewerb gemünzt oder halt bei Mario das erste Level
läufst, du dadurch bist der Beste, der schnellste und danach
verlierst du jedes Level und stirbt gleich ersten Abgrund
oder so. Weißt du also Overfitting ist
auf jeden Fall ein reales Problem bei bei so Bots und KI
s. Was ich hatte.
Und weil du gefragt hast, was wir am Ende gemacht haben, bevor
wir zu unserem finalen Ansatz gekommen sind, hatte ich nämlich
ein anderes Problem, was sich auch mal herausstechen
herauskristallisieren möchte, ist, und zwar einfach zu
kompliziert denken, was auch so ein bisschen dieses Overfitting
ist, aber quasi direkt. Irgendwie versuchen, ultimativ
komplizierten Algorithmus zu entwerfen, der übermächtig ist.
So gefühlt. Weil das hat bei mir alles da
gar nicht funktioniert. Ich hatte halt angefangen, so ja
keine Ahnung, hab mal irgendwas von von Pfadfindung gehört,
Vorausberechnen wo der beste Weg ist mit Heuristiken, wo ist die
Wahrscheinlichkeit am größten, dass ich das Level schaffe und
hab dann angefangen da irgendwie Algorithmen runter zu coden, die
ich im Netz gefunden habe und das hat halt einfach überhaupt
nicht funktioniert bis hinzu Ich bin komplett aus dem Speicher
also der Speicher ist voll gelaufen, das halt gar nichts
mehr ging weil ich halt riesen Maps aufgebaut habe für so einen
Stern Algorithmus zum Beispiel. Dann bin ich halt total
verzweifelt. Und dann?
Ja, quasi haben wir alle drüber geredet, so mit unseren Leuten
und wir beide und sind komplett zurückgesteppt und haben gesagt,
ja, was mach ich denn als Spieler?
Klar also man hat so viele Möglichkeiten, man trifft
superschnell Entscheidungen. Wenn du jetzt live also selbst
spielst. Aber was macht Mario eigentlich
am Ende? Und dann haben wir gesagt, Pass
auf, wir nehmen ganz einfach regelbasierten Ansatz mit 23
Regeln hatte glaube ich die der Bot am Ende nur.
Wo die erste war so nach dem Motto du sprintest erstmal, also
egal was du machst, du läufst schön einfach nach vorne und
gibst Gas, wo sich jetzt Leute schon denken, ey was was was
gegnerabgründe ja. Ja, ist richtig, aber die zweite
Regel war, du springst dauerhaft.
Ja genau, also wenn du springen kannst, springst du genau.
Genau. Und dann so OK.
Wie sieht das aus? Na ja, Mario läuft jetzt absolut
wie auf der Word, das schnell mal raus.
Läuft halt einfach wie n Wahnsinniger los und springt die
ganze Zeit so und damit sind wir schon durch sehr sehr viele
Level tatsächlich gekommen. Marx sein, dass es ist halt so n
gewisser Zufall da drin, dass du halt nicht in einen Abgrund
fällst. Aber die Wahrscheinlichkeit war
einfach größer, dass du nicht irgendwo reinfällst, dass du
halt wirklich durch die Level gekommen.
Bist das heißt, man hat sogar schon mal einen großen Progress
gesehen, obwohl noch gar nicht so viel rein theoretisch
passiert ist. Selbst mit diesen 2 Regeln,
glaube ich, haben wir schon 50% der Level geschafft oder so.
Oder 40 oder so, also schon gar nicht so wenig.
Und dann haben wir uns gedacht, Na ja, gut, wie könnten wir das
jetzt verbessern mit unserem regelbasierten Einsatz, also
haben wir uns überlegt, naja, wir können ja sagen, kann ich,
wie du ja schon meintest, kann ich überhaupt gerade springen
oder springe ich zum Beispiel in einen Gegner rein oder lande ich
in einem Abgrund? So, mit diesen beiden
Ergänzungen, was am Ende wirklich nur 4 Regeln war.
Haben wir es ja dann geschafft. Ich glaube, wir waren bei 7080%
der Level am Ende und da ich glaube 70 oder 60 brauchte man
für die Zulassung. Ja, sogar noch genau.
Wir waren ja noch n gutes Stück besser.
Witzigerweise waren wir. Glaub ich in den Top ten der
eingereichten und ich dachte mir so was soll das gerade
passieren? Ja, weil das war so simpel, dass
ich, also ich glaub das waren 20 Zeilen Code oder so am Ende.
Oder? 30 maximal also das aufwändigste
war eigentlich das Auslesen des Levels, um zu wissen, wo ist ein
Gegner, wo ist ein Abgrund, so nach dem Motto.
Ich hatte 50, aber ich hatte sehr viel.
Kommentare das kann nicht funktionieren, das funktioniert.
Oh mein Gott, es funktioniert und das ist halt so ein
klassisches Beispiel, wissen wir nicht diesen Punkt anbringe,
dass es manchmal besser ist, gar nicht so kompliziert zu denken,
sondern erst mal zum Beispiel auch mit so einem regelbasierten
Ansatz anzufangen. Weißt du, was ich lustig finde?
Also es ist ja zum Beispiel, ich hab mein erster Ansatz war also
ganz am Anfang und das war halt viel zu kompliziert zu sagen,
wann muss ich springen und am Ende sind wir ja quasi, haben
wir das ja quasi sozusagen invertiert, um zu sagen, ich
springe immer und kann und gucke, wann darf ich nicht
springen. So.
Genau, weil man nämlich sozusagen, damit man genau
verhindert hat, dass man, wenn man springt, in den Abgrund
reinspringt, anstatt zu sagen, ich springe immer, und wenn da
ein Abgrund kommt, dann springe ich kurz nicht warte und springe
dann. Also dann, da landet zwischen
halt ne sowas hatten wir denn drin?
Genau. Und das das war halt interessant
und da, das ist ja, das ist ja also das, was ich meine, ist es,
manchmal hilft es einfach auch noch mal, sich komplett zu
überlegen. OK, vielleicht ist der erste
Ansatz vielleicht nicht genau der Richtige, vielleicht muss
ich noch mal umdenken, zum Beispiel kann man ja
beispielsweise als Erstes bei einem, wenn ich jetzt mal ganz
kurz das, also ein kleines Beispiel bringe für den 4
gewinnt Wettbewerb, man könnte sich ja beispielsweise
hinstellen und sagen okay. Als erstes könnte ja nicht die
Frage sein, wie gewinne ich, sondern zum Beispiel, wie kann
ich verhindern, dass jemand anders gewinnt.
Als erstes Mal. Das wäre ja zum Beispiel auch
eine Möglichkeit, um dann halt iterativ sozusagen zu gucken,
okay welche Strategie verbessere ich, setze ich oben drauf oder
was auch immer. Na also nur mal so als kleines
Beispiel in Raum geworfen. Ja, gutes Beispiel.
Sehr gutes Beispiel. Weil das ist ja auch eigentlich
der, der was dann am Ende Spaß macht, dass man sieht, okay der,
der Bot wird. Besser, ich krieg halt wirklich
mit wenig Zeilen Code und mit mit 1, also in
Anführungsstrichen einfacher Programmierung wie zum Beispiel
so ein 2 Impfbedingung. Es hin, Entscheidungen zu
treffen, die zu einem guten Bot führen und das fand ich, war so
der aha Moment zu der damaligen Zeit und deswegen Liebe zuhören,
liebe Zuhörer, wollen wir dir das gerne mal mitgeben und auch
so als Motivation dann quasi an unserem Wettbewerb teilzunehmen,
weil ich meine klar am Ende ist das ein Wettbewerb, das war es
damals bei uns auch und es gab Kommilitonen die einfach schon
absolut krasse Algorithmen entworfen haben, also es hat
auch jemand geschafft. So eines a Sterns umzusetzen,
indem er einfach so Speicheroptimiert das ganze
gemacht hat und wahrscheinlich die Heuristik besser war, dass
er wirklich den Pfad berechnen konnte.
Und halt dann keine Ahnung 9095% aller Level geschafft hat.
Also da gab es halt wirklich wenige Situationen, nur noch die
dafür gesorgt haben, dass der Bot das nicht schafft.
Ja. Aber das ist ja genau der Punkt.
Ich fand es in dem Moment halt nicht schlimm, dass ich mir
dachte, oh Scheiße, jetzt hab ich nicht den ersten gemacht,
sondern für mich war es einfach. Unglaublich motivierend, dass
ich mir dachte, OK, pass auf, ich hab meine Prüfungszulassung,
das heißt, ich habe quasi diese Aufgabe erfüllt, damit habe ich
am Anfang gar nicht gerechnet und ich habe auf jeden Fall
super viel dabei gelernt. Und das das war halt, das war
halt auf jeden Fall cool, weil es ging ja auch im Endeffekt
darum, sich, also man hat ja Gedanken, die, wobei denen man
sagt, OK, ich möchte jetzt gern, dass das und das vielleicht
passiert, vielleicht in den und den Situationen, und dann muss
man das ganze ja irgendwie algorithmisch in Code gießen und
genau das finde ich, ist eine der.
Schlüssel. Punkte, die man quasi überwinden
muss, die man lernen muss. Am Anfang, wenn man in die
Softwareentwicklung, in das Programmieren einsteigt, das
finde ich, ist, weil wenn man erstmal über diesen Punkt sage
ich mal, zu einem gewissen Grad hinweggekommen ist.
Dann dann dann hat sich so ein Knoten gelöst und dann
funktioniert alles andere noch ein bisschen besser, aber dafür
bedarf es halt eben Übung. Und genau aus diesem Mario
Ableger, den wir den wir damals hatten und dadurch, dass halt
gerade solche Spiele halt auch ein bisschen mehr Spaß machen
als irgendwas anderes, Langweiliges, nenne ich es jetzt
einfach mal. Ist das natürlich irgendwie ne
gute Art und Weise das zu machen.
Und selbst wenn man diese Folge nach dem 30.
März hört. Hat man immer noch die
Möglichkeit, sich das trotzdem noch mal zu nehmen?
Genau dann ist der Wettbewerb zwar sehr wahrscheinlich rum
oder die Einreichungsfrist abgelaufen, aber wir werden ja
das Spiel auch online lassen, so dass man sich das trotzdem
angucken kann und für sich implementieren.
Kann. Und vielleicht sind noch einige
Bots dazugekommen, gegen die man spielen kann.
Das kann sein ja, memo. Selbst der Gewinner bot wird
natürlich mit eingereicht. Dann ja, wenn die Person das
erlaubt, natürlich dann ne, aber das wär natürlich cool, weil
dann kann man immer sehen, hätte ich den Sieger des Turniers
geschlagen. Das ist ne coole Idee.
Fabi gefällt mir gut. Genau jetzt haben wir ja schon
so n bisschen über Mario gequatscht.
Also unser Mario damals, der hieß ja n bisschen anders und so
verschiedene Ansätze, dass wir n sehr einfachen Ansatz gewählt
haben und sehr gut damit gefahren sind, dass andere.
Ja, denn doch halt schon, sag ich mal komplexere Algorithmen
verwendet haben. Lass uns doch jetzt mal
basierend auf unseren Wettbewerb mal so verschiedene Ansätze.
Beschreiben also, was ist so für?
Na ja, also nicht direkte Strategien, sondern so Arten an
Ansätze gibt. Ich hoffe du weißt was ich
meine, ich würd einfach mal mit n Beispiel anfangen, wir hatten
ja jetzt zum Beispiel. Gesagt, dass wir so Regelbasiert
ein Bot geschrieben haben. Das ist für mich so, sagen wir
mal fast so ne zweite Stufe, man könnte ja noch einfacher
anfangen. Und zum Beispiel ne Art Skript
schreiben. Also ich hab jetzt meine
Funktion, die ich implementieren soll und sage dann halt sowas,
beispielsweise im ersten Zug nimmst du bitte.
Das erste Feld, da wirfst du deine Münze rein, im zweiten Zug
wirfst du sie dann noch mal rein und so weiter ne, also dass du
halt immer das gleiche machst. Also n statischer Ablauf, der
quasi. Wirklich n fest codierter Ablauf
und also der auf keiner. Anderen Input quasi achtet.
Ja. So, das ist doch super easy.
Kannst ja einfach sagen, ich hab mir überlegt die 4 Felder, das
sind meine ersten. 4 Züge oder zum Beispiel ne einfache Art
davon wäre ja beispielsweise eine ein Bot ein Skript, besser
gesagt sozusagen. Wenn wir das jetzt so nennen
wollen oder Scriptlike zu sagen, ich werfe immer in die vierte
Zeile Zeile spalte, weil das. Ganze haben wir ja auch schon
mal. Wir haben ja 2 Beispiel K is
abgelegt. Die wir so mitgegeben haben.
Und da ist gibt's ja die sogenannte Phil KI, und die
wirft ja immer einfach in dieselbe Spalte, das ist ja
genau das, was wir meinen, das ist ein fester Ablauf, so und
interessanterweise, die andere KI ist ja auch ganz witzig, die
ist einfach Zufall, basiert, das heißt ja, die Random KI wählt
einfach zufällig aus, als wenn ein Spieler sich denkt, ist mir
eigentlich egal, was jetzt passiert, ich mach mal erste och
mal vierte und so weiter. Und interessanterweise, oder das
wird vielleicht viel auch nicht überraschen, gewinnt die Phil KI
eigentlich ziemlich gut gegen die Random KI.
Ja, weil der Zufall ist ja nicht immer scharf zu verhindern, dass
da 4 übereinander liegen haben, das ist halt, das ist halt schon
cooles Zeichen dafür, dass man eventuell gegen quasi Ki s schon
gewinnen kann mit so einem einfachen.
Ablauf also. Das wäre.
So für mich der unterste trivialste Ansatz.
Genau, also prinzipiell kann man ja an der Stelle noch mal ganz
kurz so reinwerfen. Das natürlich.
Es ist natürlich schwierig, wir hatten ja auch zum Beispiel
schon mal gehört, ja gut, aber ist ja jetzt nicht immer dann
gleich eine KI, weil KI als künstliche Intelligenz ist
natürlich heute im Volksmund mittlerweile.
Umfasst das was anderes, weil man das Verständnis über dieses
Thema ist natürlich ein anderes, muss man mal gucken, was man
jetzt sozusagen als Ki betraftet Prinzessin prinzipiell in der
Information. Ist ja die künstliche
Intelligenz ein Themen, ein Bereich, was sehr, sehr viele
Unterbereiche behandelt. Ne ja, also zum Beispiel gibt es
ja auch keine Ahnung sowas wie Machine Learning ist ja ein
Unterbereich von. Künstlicher Intelligenz genauso
ist zum Beispiel eine Support. Vector Machine ist ja eine ein
Modell, was quasi ich sag mal Entscheidungen Datenpunkte teilt
ne sowas wie keine Ahnung ich sag jetzt einfach mal damit man
sich es vorstellen kann rote Punkte von blauen Punkten
trennt, also eine Linie zieht und sagt da werden diese beiden
Mengen geteilt. Um das ganz, ganz, ganz grob
anzureißen, was ich meine ist, das ist ja auch ein einfach eine
Art von Reglement, nach denen diese Daten geteilt werden.
Also nachdem quasi eine Entscheidung getroffen wird und
eine Support Vector Machine ist deutlich statischer als zum
Beispiel ein evolutionärer Algorithmus.
Also was ich meine, es gibt verschiedene Modelle,
verschiedene Ansätze, die aber im groben und ganzen.
Dynamischer statischer sind nach komplexeren oder einfacheren
Regeln handeln, aber am Ende unter den Oberbegriff künstliche
Intelligenz fallen. Ja, deswegen ist es halt.
Was ich meine, ist ja, was ich meine.
Es war kurz n kleiner Ausflug in die verschiedenen Themen.
Ja, aber genau hast du natürlich absolut.
Recht nur, weil man natürlich sich jetzt hinstellen könnte und
sagen könnte, na ja gut, wenn du jetzt random irgendwas
reinwirfst ist das ne Mars rand Funktion die irgendwie also ne
Spalte von 1 bis 7 auswählt. Das ist ja keine künstliche
Intelligenz in dem Sinne also. Man muss natürlich an dem Punkt
auch sagen, wir reden hier über Bots.
In Spielen und da in der Welt. Wenn du jetzt nicht so in dem
absolut wissenschaftlichen Bereich unterwegs bist, sag ich
mal, ist KI und bot oft Synonym, das mögen jetzt vielleicht viele
nicht cool finden und sich denken, hey nee, das ist wie du
ja schon meintest, alles richtig ist.
Okay es gibt Teilbereiche und Maschinelles Lernen und alles,
aber was wir hier meinen in dem Punkt, ich versuche auch oft
Bots zu sagen, manchmal rutscht mir dann auch KI raus, weil aus
Spielen kennt man das so, es gibt keine.
Einfach KI Mittel und KI hart wie damals in alten Spielen.
Genau, aber im Prinzip hast du recht.
Es gibt halt so zum Beispiel, wie wir gesagt haben, so
regelbasierte Ansätze, das zähl ich jetzt auch irgendwo als KI
dazu, weil ne Entscheidung getroffen wird, aber so n so n
einfaches Maß random schwierig, hast du recht.
Nur das, was noch mal ein bisschen trennen, weil das ja
quasi da schon mal so ein bisschen haben wir auch schon
mal drüber gesprochen. Und nur, dass man jetzt quasi
vielleicht dem einen oder anderen vielleicht ein bisschen
Wind aus den Segeln nimmt. Aber es ist natürlich durchaus
möglich zu sagen, OK, der eine reicht jetzt vielleicht.
Ne Random ki, ein Random bot was auch immer und eine andere
Person sagt sich zum Beispiel ja gut, aber ich schreibe jetzt
wirklich eine ein Algorithmus der anhand von Spielen lernt ist
ja genauso möglich. Demzufolge haben wir gesagt du.
Kannst ja auch ein maschinelle Ansätze verfolgen.
Du kannst auch gerne mit neuronalen Netzen arbeiten oder
mit Heuristiken und selbst dir Training Daten geben, woran du
deinen Algorithmus anlernst und dann Spiel alles okay.
Aber das ist so ein bisschen vorweggreifend lass uns mal noch
mal ganz unten anfangen und dann vielleicht so iterativ.
Diese Komplexitätslevel hochschrauben also wie gesagt,
es gibt so einfache Skripte, dann regelbasierte Ansätze.
Regelbasierte Ansätze hatten wir ja gerade gesagt, so wenn dann
Strukturen unser Bot damals war einfach sind.
Aneinanderreihung von IF Bedingung und daran wurde die
Entscheidung getroffen. Das heißt du hast quasi in der
IF Bedingung schon deinen Zustand gehabt und dann
entschieden jetzt spring jetzt laufen und so.
Weiter genau dann gibt es ja zum Beispiel auch noch sowas wie
Entscheidungsbäume. Beispielsweise sind ja auch
Möglichkeiten, dass du sozusagen eine Art, das ist ja auch
irgendwie in gewisser Weise so eine Art, wenn dann.
Überprüfung bloß, dass man vielleicht noch eher sagt, dass
diese wenn dann regeln nicht irgendwie völlig unabhängig
voneinander agieren, sondern tatsächlich aufeinander
aufbauen. Das kann man sich immer.
Vorstellen. So verschachtelt.
Sind genau, dass du so gedanklich so einen Knotenpunkt
hast, der dir sagt, wo eine Entscheidung zu treffen ist und
nach einer entsprechenden Entscheidung hast du wieder
Möglichkeiten, die du dann treffen kannst.
Also sagen wir mal 2 bis noch mehr Möglichkeiten wo du sagst
okay ne Fall x geht jetzt quasi links lang, Fall Y geht durch in
der Mitte lang und Fall rechts führt dann die Aktion auf der
rechten Seite außer nach dem Motto.
Also das sind halt so mögliche. Dass man sagt, man verschachtelt
das Ganze. Man hat dann im Endeffekt
entscheidungsbäume, die einem dann sagen, OK ne, keine Ahnung,
das Spielfeld sieht gerade so und so aus, also mach ich dann
in dem Fall dies. Ne zum Beispiel findest du 3
verschiedene. Steine irgendwo auf dem
Spielfeld und musst jetzt ne Entscheidung daran treffen,
unter dieser Bedingung, dass 3 Steine nebeneinander liegen.
Was du was du tust. Genau, du schmeißt das Spielfeld
um, rennst weg. Genau du, genau du gibst auf.
Nee, also das ist eigentlich ganz cool cool beschrieben
gewesen, das finde ich gut, also im Prinzip, dass du
verschiedene. Metriken oder oder Situationen
hast. Die du dann quasi miteinander
verknüpfst und dann sozusagen in deinem Baum von ganz oben nach
ganz unten läufst. Also ich hoffe, alle haben so
so, so diese Baumstruktur im Kopf, wenn nicht, können wir da
auch gerne mal was posten. Schreibt uns einfach, wenn euch
das interessiert und du halt quasi sagst, ja habe ich.
Hat der Gegner 3 Steine nebeneinander, was du gerade
meintest? Ja dann vielleicht kannst du
schon direkt eine Entscheidung treffen.
Naja, da muss ich da in die vierte Stelle werfen, sonst habe
ich direkt verloren, aber es kann ja auch sein, Nein hat er
nicht, habe ich 3 Steine irgendwo kann ich das Spiel
gewinnen, so nach dem Motto, obwohl das wäre sogar besser als
erste Entscheidung statt zu verhindern, dass der Gegner
gewinnt, also drehen wir das gedanklich mal um gucke ich
erstmal habe ich 3 Steine so ja dann habe ich ja gewonnen, dann
muss ich den da reinwerfen, danach prüfe ich ob der Gegner
das hat und so kann ich ja quasi.
Einen richtigen Baum aufspannen, um so die richtige Entscheidung
hoffentlich zu treffen. Am Ende so, das ist so.
Im Prinzip zum regelbasierten Ansatz noch mal so ne Stufe
drauf, bisschen komplexer. Find ich auch gut.
Also entscheidungsbäume waren weiß ich gar nicht wie es
mittlerweile ist, aber früher auf jeden Fall auch in Spielen
sehr beliebt als künstliche Intelligenz für Bots.
Das ging glaube ich, auch bei so.
Schach beim Schachspiel zum Beispiel ging das, Glaube ich,
auch mit Entscheidungsbäumen los.
Ja, genau, weil du versuchst ja den bestmöglichen Zug quasi zu
ermitteln sozusagen. Genau, und da sind ja den zig
Sachen rausgekommen. Dann gab es irgendwann mit Max
Bäume und alle möglichen Ansätze, das ist ja dann
wirklich, das sind ja dann schon komplexere Algorithmen, die man
quasi implementieren könnte, um damit das Spiel zu spielen oder
im Prinzip den bestmöglichen Zug zu schätzen, zu ermitteln, und
da wird es dann kommen wir jetzt halt auf eine Ebene, wo es halt
denn schon wirklich komplexer wird, und wer darauf Bock hat,
kann das auch gerne machen und wir freuen uns auch auf super
kreative Lösungen, aber sagen wir mal, ich würde jetzt hier
mal so ein Strich ziehen erstmal.
Gedanklich auch für dich Liebe zuhören, liebe Zuhörer,
angenommen du hast wirklich keine Vorerfahrung und hast
unseren Grundlagenkurs gemacht. Bis hier kommst du auf jeden
Fall. Ja, also n Skript schreiben, auf
jeden Fall regelbasierten Ansatz, auf jeden Fall auch.
Ja, es waren ja so if Bedingungen waren ja if
Konstrukte waren ja Teil des Kurses und.
Damit kannst du halt auch schon ne wirklich gute KI schreiben,
keine Frage. Richtig?
Ja, auf jeden Fall also. Und es gibt ja immer noch die
Möglichkeit, sich auszutauschen auf diversen Plattformen, ne mit
uns, mit der Community und das ist ist ja quasi, soll ja auch
ein bisschen. Motivieren und.
Hoffentlich ist das natürlich auch für die Leute, die du
gerade beschrieben hast, Tino. Soll weil dann, wenn man
sozusagen neue Sachen ausprobieren muss, sozusagen an
seine Grenzen kommt, dann merkt man halt auch, OK, das ist
natürlich der Bereich, in dem ich jetzt auch mich
weiterentwickel. Genau.
Ja. Genau, ganz.
Hast du noch was? Ja, ganz kurz noch, wenn man
noch mal über diesen Strich, den du gerade gezogen hast, mal
gedanklich n bisschen weiter rüber gehen möchte und sagen
möchte, OK, wir kommen jetzt vielleicht wirklich n bisschen
mehr in den Bereich KI, dass man zum Beispiel sagt, OK, so n
Entscheidungsbaum ist ja natürlich, trotzdem hat n festes
Reglement auf bestimmten sag ich jetzt mal Bedingungen
Verhältnissen. Zuständen, die gerade da sind
und theoretisch noch mal n bisschen sozusagen den den
Vergleich zu ziehen. Angenommen man schreibt einen
Algorithmus. Der guckt.
OK, mein. Einer KI mein mein Gegner bot
eröffnet oft zum Beispiel mit einem bestimmten, mit einer
bestimmten Zugabfolge, die oft relativ schnell dazu führt, dass
3 zum Beispiel nee und 3 Steine nebeneinander liegen.
Dann könnte man ja in dem Fall schon mal sagen, okay, daraus
habe ich jetzt gelernt, also dieser Algorithmus könnte jetzt
sagen, daraus habe ich gelernt, die Wahrscheinlichkeit, dass das
wieder eintrifft, ist sehr hoch, also setze ich meinen Stein
schon mal an die Stelle, wo ich erwarte erfahrungsgemäß, dass ZB
dieser Stein an dieser Stelle gesetzt wurde, um sozusagen.
Den gegnerischen Bot schon mal ein bisschen aus der Reserve zu
locken, das wäre auf jeden Fall schon Ansatz, der dann sozusagen
adaptiv auf bestimmte Situationen eingeht.
Ja, das ist ja hart im Bereich maschinelles Lernen, dass du
halt sagst, okay. Ich habe, also ich trainiere
quasi mein Bot, das heißt, ich spiele beispielsweise gegen ihn
und er berechnet quasi den Ausgang der Spiele und.
Bewertet die also im Prinzip. Er wird am Anfang wahrscheinlich
sehr, sehr komische Züge machen, wo dir denkst, OK, das war jetzt
nicht so clever, weil jetzt gewinn ich, du hast das nicht
geblockt, mein Angriff hier sage ich mal ne dann wird er also
dann wird der Algorithmus sagen wir es mal so quasi
dementsprechend ja auch diesen finalen Zug bewerten und ihn
nächstes mal nicht machen in dieser Situation, dann wird er
halt abgestuft und so, dass andere Züge quasi höher bewertet
sind um das mal hoffentlich. Bildhaft darzustellen und dann
halt andere Züge ausgewählt. Und wenn ich du das jetzt über
sehr viele Iterationen machst, dann wird sich halt der
Rauskristallisieren, dass der Bot eine Strategie hat, womit er
viele Spiele für sich entscheiden kann.
Also ist halt auch wieder die Frage auch wieder Stichwort
Overfitting wenn er immer gegen dich spielt und du hast so eine
eigene Art zu spielen, dann wird er irgendwann gegen dich perfekt
spielen, aber vielleicht gegen andere nicht mehr, das ist halt
dann auch wieder ein ganz anderes Thema, aber.
Interessant an diesen Ansätzen ist halt dieser dieser
Trainingsfaktor, also dass du so Trainingsdaten hast.
Also zum Beispiel du bist sein, sein Sparringpartner sozusagen
ne und spielst halt gegen ihn und schickst ihn dann ins
Turnier und sagst so und jetzt. Bot Schlag sie alle.
Das genau, und da sind halt auch ganz coole Ansätze, da gibt es
ja auch sehr, sehr verschiedene. Ich finde auch so evolutionäre
Algorithmen interessant, können wir ganz kurz mal anschneiden,
das. Im Prinzip ein ähnlicher Ansatz,
dass du sagst, du hast Heuristiken und du du Simulierst
oder imitierst du die diese Evolution der Natur sozusagen
also wie der Mensch sich ja auch angepasst hat an seine Umgebung
und optimiert hat dahingehen würde, denn der bot auch
versuchen sich seinen Gegebenheiten anzupassen und
stellt sich halt quasi nach jedem Spiel die Frage er war das
jetzt irgendwie cool was ich gemacht habe oder war das eher
nicht so cool? Und dann adaptierte sich halt
auch darauf. Das ist halt auch ganz, ganz
cooler Ansatz. Also da gibt.
Es auch Tausende gefühlt. Halt genau.
Ich wollte gerade sagen, es gibt auf jeden Fall super viel, was
man machen kann, was man aber natürlich nicht machen muss.
Wichtig ist natürlich, und das steht hier auf jeden Fall im
Vordergrund. Dass man einfach also auch du,
liebe Zuhörerin, lieber Zuhörer, wenn du dir sagst, ich möchte da
gerne mitmachen und ich weiß noch nicht, ob ich so weit bin
oder nicht. Wir sagen, du bist so weit, wir
sagen, mach einfach mit und guck, wie weit du kommst.
Tausch dich mit uns, Tausch dich mit der Community aus und
Versuch dein Bot für dieses Spiel zu schreiben und mach beim
Wettbewerb mit. Du kannst nur Erfahrungen
dadurch sammeln und das ist auch sehr wertvoll.
Genau. Und alle anderen macht auch mit.
Ja, macht auch mit, indem zeigt ihr uns die besten Algorithmen,
die ihr drauf habt. Genau auf jeden Fall hoffen wir,
dass wir dann ein cooles Turnier dann live bei Twitch zeigen
können. Genau und in dem Sinne würde ich
sagen, haben wir das Ganze eigentlich ja mal ein bisschen
angeschnitten diskutiert, was meinst du, Tino ja.
Ich hoffe, wir konnten es auch gut motivieren, daran
teilzunehmen, weil es halt wirklich echt eine coole Sache.
Ist genau und wenn dich liebe, zuhören, Liebe zuhören
interessiert. Zum Beispiel auch im Podcast mal
den ein oder anderen Algorithmus, wie zum Beispiel
den evolutionären Algorithmus, also diese Art und Weise, wieso
etwas funktioniert, mal im Podcast in der Folge behandeln
sollen, wenn. Gesagt, wenn dich das
interessiert, dann schreibt uns gerne auf der Podcast Mail.
Die ist in den Showload Shownotes verlinkt oder auch bei
Instagram. Da zählen wir einfach auf euer
Feedback oder auf dein Feedback. Das ist auf.
Jeden Fall mal ne deepdive Folge machen.
Genau also. Alles, was euch dahingehend
interessiert, gebt. Feedback schreibt uns genau und
in dem Sinne würde ich auch sagen, das war es für diese
Folge einen schönen Tag noch und bis zum nächsten Mal.
Deine Coding Buddies gemeinsam besser.
Was?