Transkript: PP08 - Machine Learning am Beispiel Bildklassifikation

· Zurück zur Episode

Vollständiges Transkript der Episode. Zeitstempel beziehen sich auf die Audiowiedergabe.

Dominik

Ja, hallo liebe Hörerinnen und Hörer, willkommen zum Python Podcast in der achten Episode.

Dominik

Wir sind direkt wieder da.

Dominik

Es ist noch gar nicht lange Zeit vergangen, nachdem wir gestern eine Episode über Machine Learning aufgenommen haben.

Dominik

Und weil wir fanden, dass wir dort sehr viele Beispiele gebracht haben, aber so ein paar Grundlagen noch nicht erklärt hatten, gibt es heute direkt eine neue Folge.

Dominik

Wir sind im Wintergarten bei Jochen, mit Jochen.

Dominik

Ja, wenn ihr Fragen, Anmerkungen, Kommentare, alles so andere, was ihr loswerden wollt, schickt eine E-Mail an uns an.

Dominik

Hallo at pythonpodcast.de.

Dominik

Könnt ihr uns eigentlich relativ fix erreichen.

Dominik

Links und zusätzliche Infos findet ihr wie immer unten in den Shownotes.

Dominik

Ja, was machen wir denn heute?

Dominik

Wir gehen noch ein bisschen auf die Grundlage von Machine Learning ein und wollen euch aber erstmal kurz ein bisschen vorstellen, wo wir in letzter Zeit noch waren.

Dominik

Und zwar waren wir außer auf der Subscribe, wo wir gestern schon drüber geredet hatten, noch auf dem PyCamp Cologne, einem Python-Treffen für die Python-Community.

Jochen

Ich mache hier gerade mal eine Kapitelmarke, weil das können wir nämlich jetzt seit neuestem auch.

Jochen

Und sag mal, wir nennen die jetzt mal, wo waren hier so in letzter Zeit.

Dominik

Ja, also wir können jetzt tatsächlich Kapitelmarken in unserer eigenen Software Django Cast.

Dominik

Das heißt, auch wenn ihr die benutzen wollt für euren eigenen Podcast, könnt ihr sowas wie Kapitelmarken machen.

Dominik

Und vielleicht könnt ihr das nächste Mal, wenn ihr uns hört, dann auch das skippen, was euch nicht interessiert und wisst recht, worum es geht.

Jochen

Ja, das war, also genau, wir waren eben auf so einer Podcaster-Konferenz in Köln.

Jochen

Wir dachten uns, wenn die schon mal hier in der Gegend ist, dann kann man da ja mal hingehen, wenn man jetzt auch schon so mit dem Podcast mal angefangen hat.

Jochen

Und das war eine tolle Konferenz und wir haben da halt auch mal versucht, irgendwie mitzubekommen, was die Leute denn so haben wollen von so einer erwarten, an Features erwarten von so einer Podcast-Publishing-Lösung.

Dominik

Also eigentlich alle wollten sagen, habt ihr keine Kapitelmarken?

Dominik

Also wir benutzen das eigentlich immer.

Jochen

Hat mich ehrlich gesagt so ein bisschen überrascht, weil ich benutze das nie.

Jochen

Ich höre jetzt schon ganz lange Podcasts oder so, aber ich habe noch nie Kapitelmarken benutzt, weil ich höre das immer in einem sehr wenig interaktiven Setting, ehrlich gesagt.

Jochen

Also das läuft halt auf meinem Telefon und ich habe Kopfhörer drin und ich kann da nicht viel tun.

Jochen

Ich kann da nicht auf irgendwelche Kapitel, weil selbst wenn ich es, also ich möchte mich ja eigentlich gar nicht drum kümmern, sondern das soll halt laufen.

Jochen

Das soll halt auch gern sehr lang laufen.

Jochen

Also ich mag auch längere Podcasts lieber.

Dominik

Ich habe gerne beim Cars Radio immer die Werbeunterbrechung, die Nachrichten geskippt.

Jochen

Okay, gut, da macht das schon irgendwie Sinn.

Jochen

Aber die meisten, also eigentlich alle Podcasts, die ich höre, haben keine, doch, es gibt sogar welche Mitwerbungen, aber ja, das kippe ich dann eher so von Hand.

Jochen

Stimmt.

Jochen

Ja, aber Kapitelmarken werden dafür natürlich auch recht praktisch.

Dominik

Ja, ich benutze sie eigentlich auch tatsächlich nicht.

Dominik

Also entweder höre ich halt oder nicht.

Dominik

So, plus, minus, Stopp.

Dominik

Aber gut, für euch jetzt, da ist er natürlich trotzdem da.

Jochen

Ja, aber nachdem das irgendwie alle irgendwie angemerkt haben, dass sie das doch gut fänden, wenn das da drin ist.

Jochen

Und natürlich ist es schon irgendwie auch natürlich sinnvoll, da eine gewisse Struktur drin zu haben, haben wir dann halt mal geguckt, ob sich das irgendwie einbauen lässt.

Jochen

Und das war, das war nicht so schwer.

Jochen

Und jetzt sind sie, jetzt sind sie drin, also gut in einer etwas vereinfachten Form.

Jochen

Also was halt momentan noch nicht geht, sind halt sowas wie dass Links und Bilder, die ja auch in Kapitelmarken enthalten sein können, automatisch mit drin sind, wenn man da jetzt so den Text, der bei Ultraschall beispielsweise, wenn man sagt, exportiere Kapitelmarken, dann fällt daraus halt so eine Textdatei, wo die erste Spalte ist halt irgendwie so ein Zeitsteinpil oder ein Startzeitpunkt und die zweite Spalte ist halt irgendwie ein Titel.

Dominik

Ich glaube, jetzt haben schon einige Leute diese Kapitelmarke übersprungen.

Naja, genau.

Jochen

Man kann jetzt aber zum Beispiel auch noch da Links reinschreiben, wenn man die in spitze Klammern setzt.

Jochen

Und man könnte halt auch noch Bilder hinzufügen.

Jochen

Jedenfalls kann man das, wenn man die jetzt, was man natürlich tun sollte, bei Aphornec auch noch mit reintut, damit die halt in der Audiodatei auch mit drin sind, damit man die auch im Player hat.

Dominik

Ja, aber sie haben doch gar nicht so Perspektifs gesagt, also wie man das überhaupt macht irgendwie.

Dominik

Also den Podcast aufnehmen mit Ultraschall, irgendwie dann das in Auphonic reinpumpen und dann halt unserem Cast hosten.

Dominik

Ja, wir wollten eigentlich über Spice and Camp, glaube ich, nochmal reden.

Dominik

Also wir haben jetzt schon viel über die Pet-Mark gesagt.

Dominik

Ihr habt die jetzt bei uns mit im Django Cast.

Dominik

Finde ich ja auf PiPi und auf Jochens Repo.

Genau.

Jochen

Ja, genau, eine weitere Veranstaltung, auf der wir waren, das ist jetzt letzte Woche, letzte Wochenende das Spicy-Camp.

Dominik

Das war richtig cool, also richtig tolles Community-Treffen und gab leckeres Grillen am Abend und so und ganz viele tolle Talks und ja, also kleine Lightning-Talks, um verschiedene kleine Projekte vorzustellen und richtige gute Sessions.

Dominik

Jochen hat selber eins gemacht über Machine Learning und dann hatten wir den Cast auch da.

Jochen

War ziemlich gut.

Jochen

Und genau, das war, das war, das war echt toll.

Jochen

Ja, ich weiß nicht genau, ob wir irgendwas darüber erzählen wollen, was wir uns da so angeguckt haben.

Dominik

Man kann ja irgendwie bei Python Barcamp.eu auf die Seite mal gehen, kann sich erstmal alles angucken.

Dominik

Es gibt auch relativ gute Dokumentation in den einzelnen Sessions jeweils, was da so gemacht worden ist.

Dominik

Also zumindest haben ziemlich viele ein Protokoll gebaut.

Dominik

Ja, ich habe ein bisschen was zu Fox dort gemacht, das ist so eine Musikbibliothek für Python.

Dominik

Ich habe noch ganz, ganz tolles vom Oliver gesehen, hat irgendwie die Landtagsreden irgendwie da alle gepasst, das ist sehr spannend.

Jochen

Das ist eine super interessante Geschichte, genau.

Jochen

Die haben halt alle ihre Reden und Protokolle, Sitzungsprotokolle als PDF veröffentlicht.

Jochen

Und das wäre natürlich schon sehr praktisch, wenn man da irgendwie Statistiken drüber machen könnte oder so.

Jochen

Und genau, Oliver hat da versucht, das irgendwie alles mal so irgendwie zu parsen und in so einheitliches Format zu bringen.

Dominik

Ja, auf jeden Fall sehr spannend unsere Tage, dass man das weiter ist, ein bisschen, was man damit alles so bauen kann.

Dominik

Ja.

Dominik

Und dann ist es natürlich noch einige andere spannende Sachen.

Dominik

Von DevOps war noch ein ziemlich cooler Talk dabei, irgendwie der gut gefallen hat und so wie man Kommentare in Python am besten schreibt.

Dominik

Und ja, also wenige Menge andere Dinge, die spannend waren mit GeoPython und ein bisschen Micro-Python-Bau und sowas.

Ja.

Jochen

Ja, das war sowieso einer der, ein überraschender Trend.

Jochen

Also ich meine, dass irgendwie Machine Learning und so ein Thema ist, das ist Data Science.

Jochen

Das war eigentlich in den letzten Jahren auch schon immer so, aber es gab wirklich mehrere Sessions und damit halt auffällig viele für diesen ganzen Bereich Internet of Things Home.

Ja gut, aber

so Bastelgang war auch schon immer so dabei bei den Sprints auch und so.

Dominik

Da war doch immer mitens ein, zwei Gruppen, die ja irgendwas gebastelt.

Jochen

Einer war meistens dabei, der irgendwas mit Raspberry Pi gebastelt hat oder so, aber dass es jetzt wirklich mehrere gab, die da irgendwie ihre Steckdosen, mit ihren Steckdosen irgendwie ihre Gebäude warm sanieren wollten, irgendwie in eigenen Regie.

Jochen

Das war eigentlich.

Jochen

Das hatte ich, fand ich jedenfalls auffällig.

Dominik

Also da werden wir euch auch gerne nochmal was zu erzählen, aber das wird vielleicht noch ein bisschen auf sich warten lassen.

Dominik

Unser Liste ist das noch nicht so ganz nach oben gerutscht.

Dominik

Ja, haben wir den nette Managen gelernt, also vielleicht bringen wir da auch noch die eine oder andere Folge mit zusammen und

mal gucken, was da so rauskommt.

Jochen

Genau, wir haben auch kurz vorgestellt, dass wir da so einen Podcast machen.

Jochen

Und da werden bestimmt noch einige interessante Gespräche daraus entstehen.

Jochen

Also das klang alles sehr gut.

Dominik

Jetzt ist es halt eine Chapter-Marke.

Dominik

Soll ich mal hebe ich immer die Hand und winke?

Jochen

Genau, wir wink einfach mal.

Jochen

Was soll ich denn da reinschreiben?

Dominik

Veranstaltungshinweise.

Jochen

Ah, Veranstaltungshinweise, alles klar, okay.

Veranstaltung.

Dominik

Ja, wir haben nämlich tatsächlich dann natürlich auch mit Leuten geredet, die ganz viele neue Veranstaltungen vorgestellt haben, wo man über also hinfahren kann.

Dominik

Jetzt als nächstes, das ist ja schon nächste Woche, ist die Pykon X in Florenz.

Dominik

Das ist ein internationales Event.

Dominik

Also warum man da hinfahren sollte, ist natürlich tolles Wetter jetzt gerade so in den Urgana.

Dominik

Man kann da so ein bisschen Urlaub machen, wenn man da Lust hat und dann so ein bisschen Python machen.

Dominik

Das ist bestimmt cool.

Dominik

Vom 2.

Dominik

bis 5.

Dominik

Mai Florenz.

Dominik

Ja, dann geht es weiter.

Dominik

Ich weiß nicht, das ist jetzt gerade gar nicht so geordnet.

Dominik

Ich muss ja erstmal gucken.

Dominik

Juni geht es weiter mit der GeoPython in Basel.

Dominik

In Basel, der Martin hat da so ein paar Sachen erzählt, der macht da ziemlich viel und der hat im Juli direkt das nächste.

Und zwar ist dann nämlich die Europython.

Jochen

Ist auch in Basel irgendwie im gleichen Gebäude, denke ich mal.

Dominik

Das haben sie extra dafür gebaut, hat er jetzt.

Jochen

Ja, ja, genau.

Jochen

Schönes neues Gebäude, ja.

Jochen

Teilweise jedenfalls.

Jochen

Für diese Veranstaltungen.

Jochen

Ja, ja, Europython ist eigentlich immer toll und ehrlich gewartet, ich war aber noch nie da.

Jochen

Ich habe immer nur gehört, dass es super sein soll.

Dominik

Gehst du nach Basel in die Schweiz?

Jochen

Ja, aber ich glaube, dieses Jahr, das wird alles.

Ja, ist ein bisschen krampf.

Jochen

Warum ist denn das eigentlich alles irgendwie so im Frühjahr?

Jochen

Also Juni, Juni,

Dominik

Oktober, Frühjahr.

Jochen

Naja, Conference Season.

Ja, okay.

Dominik

Ja, also danach im September geht es nach Bilbao.

Dominik

Am 2.

Dominik

bis 6.

Dominik

ist im Bilbao die Urusci-Pi.

Dominik

Ganzwirtschaftlichen Sachen sind auch sehr interessant.

Dominik

Und wir haben die Pi Data in Berlin, von 9.

Dominik

bis 13.

Oktober.

Jochen

PiCon.de bzw.

Jochen

PiData kombiniert in Berlin.

Jochen

Und also zumindest ich werde auf jeden Fall da auch sein.

Dominik

Da bin ich nicht da, da bin ich in Prag.

Jochen

Tja.

Dominik

Chicago Blackhawks.

Jochen

Ja, ja.

Jochen

Und genau, damit haben wir ja schon fast alle, müssen wir dieses mit den Veranstaltungshinweise auch nie wieder machen dieses Jahr, weil damit haben wir alles Richtige durch, oder?

Dominik

Ja, vielleicht kommt noch den MP Sprint erwähnen, den gibt, den haben wir, glaube ich, immer vergessen.

Jochen

Oh, achso, richtig, stimmt.

Jochen

Genau, Pi-DDF-Sprint, wann war denn der nochmal?

4.

Jochen

Ich glaube schon.

Jochen

Ja.

Jochen

Vierter, 5.

Dominik

Mai.

Dominik

Tatsächlich bei Trivago wieder hier im Medienhafen in Düsseldorf.

Ja.

Jochen

Das ist auch mal eine tolle Veranstaltung.

Jochen

Gut, macht natürlich nur wirklich Sinn, wenn man so ein bisschen aus der Gegend kommt, aber da ist das wirklich auch einmal sehr, sehr nett.

Jochen

Genau, und dann

Dominik

bildet nicht an den Grüppchen und programmieren an irgendwelchen Projekten rum.

Dominik

Und da ist immer sehr lustig, hat Spaß zusammen, lernt sich ein bisschen kennen.

Dominik

Solltet ihr euch für anmelden beim Meetup?

Und ja.

Jochen

Genau.

Dominik

Ja, ich glaube, das war so das nächste hier so in der Gegend.

Jochen

Ja, okay, dann haben wir damit die Veranstaltungshinweise auch irgendwie durch.

Dominik

Dann wäre es wieder Zeit für einen Chaptermarks.

Dominik

Also hier linke übrigens hinter dir ist ein bisschen.

Dominik

Weil ihr gerade seid mit dem Wildungsbruch, manchmal und ja.

Gut, okay.

Jochen

Dann und danach gehen wir einfach so quasi.

Dominik

Ja, ein Thema wirst du wieder, genau.

Dominik

Alles klar.

Dominik

Wir fangen jetzt mit der Einführung in Machine Learning nochmal so ein bisschen an.

Dominik

Was denn das nochmal und warum?

Wieso?

Dominik

Wollen wir da auch noch irgendwas strukturieren?

Puh.

Dominik

Ja, also wir haben da auf jeden Fall verschiedene Unterthemen und sonst setzen wir die Chaptermarks also da später.

Dominik

Kannst du da irgendwie so einen anonymen Chaptermark setzen, dass man einfach dann später den benennt, dann müssen wir nicht so viel einfach

Jochen

so klickt.

Das geht natürlich auch.

Jochen

Ich brauche da eigentlich nur

Dominik

ich brauche so einen Buzzer in Handwies zu drücken.

Dominik

Selbst Auslöser von so einer Kamera.

Jochen

Das wäre tatsächlich nochmal toll, wenn man irgendwie so einen Bluetooth-Buzzer oder sowas hätte, der das irgendwie dann irgendwie eine Kapitelmarke setzt.

Jochen

Naja, da müssen wir halt hardware-technisch noch so ein bisschen aufrüsten, aber ja.

Dominik

Dass wir irgendwo ein Respie stehen, den können wir über das Netzwerk anchechen, dann checken wir den per Bluetooth ans Respi und dann blickt er einfach Signal und dann sagt der Chapter, der mag Boben.

Jochen

Ja, genau, das ist das.

Dominik

Das brauchen wir in Python.

Jochen

Ja, nächstes Mal.

Dominik

Ja, also Machine Learning, ja, was hatten wir gestern der ganzen Folge gemacht, wo wir so ein bisschen die Einführung haben.

Jochen

Genau, beim Daten hat auch schon eine Menge Menge zu erzählt und die Teile versuchen wir jetzt auch mal nicht zu wiederholen.

Jochen

Mal schauen, ob das klappt.

Jochen

Aber es ist natürlich irgendwie ein weites Feld und man kann da irgendwie ganz viel zu erzählen.

Jochen

Und wenn ich mich richtig erinnere, also Dinge, die wir gestern dann noch nicht so wirklich erzählt hatten, aber die auch irgendwie wichtig sind, ist halt, ich würde mal sagen, so eine grundsätzliche Einteilung, was hat man da irgendwie an groben Geschichten, die wichtig sind.

Jochen

Ja, Supervised Learning, Unsupervised Learning, Reinforcement Learning.

Jochen

Wir hatten gestern das Beispiel Supervised Learning, also sozusagen Textklassifikation, das ist ein klassisches Beispiel, das Alereinfachste ist binäre.

Dominik

Genau, wir hatten Reuters Textdatensatz und der wurde dann gemeinsam analysiert mit dem Jupyter Notebook, was der Jochen auch veröffentlicht hat.

Dominik

Da kann man das alles so ein bisschen nachvollziehen und daran dann auch so ein bisschen die Praxis vielleicht lernen.

Dominik

Ja, aber vielleicht aus dem theoretischen Background dann jetzt nochmal Details.

Dominik

Was ist denn der Unterschied von Supervised Learning?

Jochen

Naja, dass man halt sozusagen zu jedem Beispiel weiß, was rauskommen soll.

Jochen

Also dass man halt nur, das in Anführungsstrichen nur das Problem hat, dass man irgendwelchen Eingaben, halt Ausgaben zuordnen muss und das halt anhand von Beispielen tut, die man schon kennt.

Jochen

Und der Bereich ist auch, also wenn man jetzt, das hatten wir gestern auch nicht so wirklich viel davon drin, wir werden wahrscheinlich auch nochmal eine eigene Folge machen, die sich jetzt, wie dann en Detail auch nochmal so auf Deep Learning-Geschichten eingeht, aber ich denke schon, dass auch ganz interessant wäre, mal eben den Bereich, der halt auch in den letzten Jahren so wichtig geworden ist, nämlich Deep Learning, doch nochmal ein bisschen drauf einzugehen, da ist es halt so, dass viele Tasks, die vor

Jochen

her schwer waren, also eben im Bereich Bilderkennung oder Speech to Text, alles was irgendwie, worüber geht, ja, so ein Signal, wo die Features nicht so richtig offensichtlich sind.

Jochen

Also man hat die Daten nicht strukturiert, sondern man hat irgendwie ein Bild, also Pixel oder man hat halt irgendwie ein Audiosignal oder so.

Jochen

Und man möchte das halt irgendwie, möchte damit halt überwachte, also so supervised Machine Learning machen, dann war das pro Domain früher immer sehr aufwendig, weil man dann halt domainspezifische Features erstmal extrahiert hat.

Jochen

Also das heißt irgendwie bei Bildern sowas, diese Scale im Sift, Scale-Invariant Feature-Geschichten und bei Audio dann wiederum andere und so und so, dass es halt eine große Rolle spielt, in welcher Domain man da unterwegs war.

Jochen

Und das ist natürlich eine sehr unschöne Geschichte, weil man kann halt sozusagen die Erfahrung, die man im einen Gebiet gesammelt hat, nicht so richtig gut in ein anderes Gebiet mitnehmen.

Jochen

Und das hat auch nicht wirklich gut funktioniert.

Jochen

Also wenn man jetzt nicht Texte klassifizieren möchte, das hat halt auch mit diesem Back-of-Words-Ansatz, den wir gestern auch schon hatten und TF-IDF funktioniert das schon halbwegs gut.

Jochen

Das ist schon ziemlich klasse.

Jochen

Aber wenn man jetzt Bilder zum Beispiel klassifizieren möchte in sowas wie Hunde, Katzen oder Elefanteneichchen, das hat nie wirklich gut funktioniert.

Jochen

Es gibt also ein klassisches Dataset namens ImageNet.

Jochen

Da sind anderthalb Millionen Bilder drin, ungefähr 1000 Klassen.

Jochen

Und ja, das ist manchmal so ein bisschen, das ist manchmal so ein bisschen eigen, dieses Data-Set.

Jochen

Jemand hat mal, ach ich glaube das war André Carpassy oder so, der jetzt irgendwie Data Science-Chef von Tesla ist, der hat irgendwann mal, weil er wissen wollte, wie ist eigentlich der Fehler von Menschen auf diesem Set, selber sich so ein Annotationstool in JavaScript gebastelt.

Jochen

Und ja, dabei halt irgendwie eine der Sachen, die er gelernt hat, die für ihn überraschend waren, ist, dass halt ein Drittel der Bilder sind halt irgendwie irgendwelche Hunde oder Hunderassen und das ist natürlich total auch für Menschen super ätzend schwierig, irgendwie genau rauszukriegen, wenn man jetzt ein Bild, und die sind dann, wir werden alle relativ klein gerechnet, die Bilder, ja, also man hat da irgendwie so 150 mal 150 Pixel Ding, wo man nicht viel drauf erkennt, wenn das ein großes Bild war und man hat das so runterskaliert.

Jochen

Und man sieht da irgendwas Wuscheliges und dann muss man sagen, ist das jetzt irgendwie, keine Ahnung, ein Dackel oder ein, weiß ich nicht, äh,

Dominik

eine Terrigen.

Jochen

Sozialdacke, ich kenne mich jetzt auch damit nicht aus.

Jochen

Und er auch nicht und dann hat er ganz schön geflucht.

Jochen

Und hatte irgendwie dann daneben sich dann Bilder von den einzelnen Hunderassen da irgendwie hingelegt und dann irgendwie das und ja, hatte doch erstaunlich viele Fehler dabei.

Jochen

Und das war, das war auch mit den klassischen Ansätzen war dieses Problem furchtbar schwierig für Computer.

Jochen

Bis dann halt irgendwann 2011, glaube ich, war das mit Alexnet.

Dominik

Ja, also nochmal ganz kurz, ImageNet ist irgendwie von Princeton und Stanford so eine Gemeinschaftsproduktion, die auch jeder frei benutzen kann, wo halt tatsächlich diese Datenbanken mit den Labels verfügbar sind für alle Bilder.

Dominik

Und Alexnet ist jetzt das nächste.

Jochen

Genau.

Jochen

Ich guck grad nochmal nach, wann das genau sozusagen diese, es gibt dann eine Challenge zu diesem Dataset.

Jochen

Und da gibt es dann sowas wie Top-5-Fehler, also wie viele von den Top 5 Klassen, die man halt für ein Bild ausgespuckt hat, waren halt falsch oder so.

Jochen

Und ich guck grad nochmal nach, wann das genau war.

Jochen

Ah ja, das ist genau, es gibt halt diese Image Net Large Scale Visual Recognition Challenge und genau, 2012, also nicht 2011, hat das Ding halt das gewonnen und hat halt den Fehler um mehr als 10% irgendwie reduziert und das war halt irgendwie gewaltiger Schritt.

Jochen

Also es war halt so, ähm, naja, wie hat das, das hat mal, wie ich mal in einem Interview mit Jeffrey Hinton, glaube ich.

Jochen

Nee, wer war?

Jochen

Nee, das war, das war Jan Nikun, hat das irgendwie mal in einem Interview erzählt, der meinte halt, vorher war es so.

Jochen

Es gab diese Convolutional Neural Nets, die da verwendet wurden, ja auch schon lange, vorher, aber das hat niemand so wirklich ernst genommen.

Jochen

Die waren so ein bisschen esoterisch.

Jochen

Und es war bis zu dem Zeitpunkt, die waren auch lange Zeit nicht so wirklich on vogue und es war sehr schwierig, irgendwie einen Paper durchzukriegen, also in einer Zeitschrift veröffentlicht zu bekommen, wenn man da irgendwie sich mit Convolutional Neuralnetz beschäftigt hat.

Jochen

Und nach diesem Erfolg von Alex Nett, irgendwie so 2014, war es praktisch unmöglich, ein Paper, was sich irgendwie mit Bildern oder Vision oder so beschäftigt hat, irgendwo unterzubekommen, dass sich nicht mit Convolutional Neuralnetz beschäftigt hatte.

Jochen

Das heißt, in zwei Jahren hat sich das irgendwie, es gab so einen kompletten Paradigmenwechsel in diesem Bereich und das ist natürlich schon sehr erstaunlich.

Jochen

Also und ja, es sind also dramatische Verbesserungen irgendwie eingetreten.

Jochen

Und das ist halt auch nicht nur in dem einen Bereich passiert, sondern bei Spracherkennung halt auch.

Jochen

Und du

Dominik

musst ja vielleicht daher nochmal die Basis erklären, die hatten wir nämlich gestern alle nicht.

Dominik

Also was ist jetzt überhaupt ein Convolutional Neural Network?

Dominik

Vielleicht auch nochmal kurz, was ist überhaupt ein Neural Network?

Dominik

Da haben wir mich gestern einfach alles so vorausgesetzt, aber für jetzt Menschen, die jetzt noch nicht so tief in dem Thema drin sind, das sollte man kurz erkennen,

Jochen

sollte man, ist aber auch schwierig wirklich zu erklären, was es ist.

Jochen

Also man erkennen, was man immer so, wenn man jetzt das aus Medien mitbekommt, worum es da geht, da wird dann meistens das so dargestellt, naja, das ist natürlich ein Vorbild des Gehirns modelliert oder so.

Jochen

Weiß ich nicht.

Jochen

Ich finde, das ist alles immer sehr irreführend, weil wie das Gehirn funktioniert, weiß nicht man so richtig.

Jochen

Und im Grunde, ja, man könnte sagen, es ist irgendwie inspiriert von Neuronen, aber es ist auch mehr, mehr auch nicht.

Jochen

Und mittlerweile hat das, was man da macht, nicht mehr viel zu tun mit dem, was man mal nur mit einem Bahn angefangen hat.

Dominik

Irgendwie so ein paar leuchtende Punkte auf so einer Karte, die dann irgendwie aufleuchten, wie die irgendeine kryptische Verbindung haben, weil da irgendwie Strom von A nach B fließt oder so und dann halt irgendwie eine Beziehung dargestellt werden kann.

Dominik

Vielleicht meint Neuron irgendwie sowas?

Jochen

Naja, also eine passendere Bezeichnung fände ich jetzt irgendwie, das sind so gestapelte Funktionsapproximatoren.

Jochen

Also im Grunde geht es darum, halt Funktionen zu approximieren und man hat halt irgendwie herausgefunden, dass das super geht, wenn man das in Schichten organisiert und wenn man sozusagen da bestimmte Aktivierungsfunktionen verwendet, da hat sich auch viel getan.

Jochen

Und ja, man kann sich das ungefähr so vorstellen, dass, also man hat halt sozusagen Schichten von so parametrisierten Dingen, die halt irgendwie etwas machen mit einer Eingabe.

Jochen

Es kommt halt eine Eingabe rein und dann wird das von sehr, sehr basalen oder sehr, sehr konkreten Dingen, die da detektiert werden, immer zu immer abstrakteren Geschichten, je tiefer das durch das Netz durchgeht.

Dominik

Vielleicht machen wir das einmal so kurz als Beispiel anhand von so einem Hundebild.

Dominik

Also ich habe jetzt vielleicht als erste Information, die Bildpixel irgendwie in verschiedene Sektoren unterteilt.

Dominik

Dann vielleicht sowas wie eine Abstraktionsschriebene als die Helligkeit des Bildes oder so oder andere Dinge, vielleicht dann noch so grobe Strukturen unterteilt

Jochen

in Kantenakten oder so, Kanten.

Jochen

Genau, wo ist hier eine Kante, wo ist eine Ecke, was sind helle Flecken in dem Bild und so.

Jochen

Und das ist

Dominik

vielleicht das.

Dominik

Das ist eine Neuronenschicht.

Jochen

Ja, oder mehrere Schichten.

Jochen

Also genau.

Jochen

Und das, was da passiert im Grunde, ist halt das, was die Convolutional-Geschichte, ich will jetzt gar nicht mehr so ausführlich beschreiben, was da für eine mathematische Operation ist, das ist eigentlich relativ simpel passiert, aber was das macht, ist, dass es dafür sorgt, dass Dinge, die nah beieinander sind, halt irgendwie auch zusammenbleiben, sozusagen.

Jochen

Weil man hat sonst immer das Problem, oder das hatte man bei den anderen Verfahren, mit denen man da angefangen hat, hat halt auch, dass sobald sich irgendwas so ein bisschen geändert hat, also wenn das Hund, wenn der Hund im Trainingsbeispiel, im ersten Trainingsbeispiel nicht an der gleichen Stelle ist wie im zweiten Trainingsbeispiel, dann wurde das schon nicht mehr erkannt, weil, naja, sozusagen, wenn man einfach ein Bild einfach so als Vektor auffasst, dann, wenn sich da drin sozusagen räumlich irgendetwas bewegt, dann ist das halt an einer ganz anderen Stelle.

Jochen

Da werden halt ganz andere Features sozusagen aktiviert.

Jochen

Man könnte ja sagen, naiv, ein Bild ist einfach nur, irgendwie hat so viele Dimensionen wie Pixel oder so viele Dimensionen wie Pixel mal drei, wenn man halt für jeden Kanal halt noch ein Dimension.

Jochen

Aber dann hat man eben dieses Problem, was passiert, wenn sich Dinge in dem Bild bewegen und dann wird es halt ätzend und funktioniert einfach auch nicht mehr.

Jochen

Und dafür, dass da helfen diese Convolutional-Geschichten halt stark, weil die dafür sorgen, dass Dinge halt sozusagen unabhängig davon, wo sie passieren, irgendwie detektiert werden können.

Jochen

Und ja, man fängt halt mit sowas an wie eben Kanten, Helligkeiten, ganz einfachen Formen.

Jochen

Und die werden dann sozusagen in den Schichten halt immer weiter abstrahiert.

Jochen

Sodass halt man auf, wenn das jetzt durch mehrere Ebenen gegangen ist, hat man halt abstraktere Features, die halt weiter unten im Netz sozusagen detektiert werden.

Jochen

Also es gibt dann halt irgendwo sozusagen Teile, Layer, die detektieren, dann Ohren oder Augen oder Haare oder sowas.

Jochen

Oder vielleicht irgendwie ist da überhaupt ein Tier oder ist das nicht eher Himmel oder ist das irgendwie eine Wiese oder so?

Dominik

Ja, also auch Masterklassen, also was, also ne, Tier, wenn es halt guckt, ist ein Hund, guckt dann erstmal irgendwann, ist überhaupt ein Tier oder sowas, ne?

Dominik

Können natürlich passen.

Dominik

Oder ist das ein Lebewesen oder sowas?

Dominik

Oder ist das überhaupt ein Bild?

Ja, ja.

Jochen

Und ja, das passt halt, äh, passt halt super, weil irgendwie diese räumlichen, Dinge haben halt eine räumliche Ordnung und sind halt irgendwie hierarchisch strukturiert.

Jochen

So ist halt unsere Welt irgendwie strukturiert, die wir wahrnehmen.

Jochen

Und wenn man das und ja, diese Modelle sind halt, bilden das halt sehr gut ab und repräsentieren darum, halt das, was man da bekommt, halt, also sind halt in der Lage, das sehr, sehr gut zu repräsentieren.

Dominik

Ist das ein Ölgemälde, ein Foto oder eine Skizze?

Jochen

Ja, und genau, so alle solche Sachen, was ist die Textur von Dingen.

Jochen

Ja, und das hat halt super funktioniert.

Jochen

Und was halt auch total toll ist, ist, dass man im Grunde keine echtes, kein Feature Engineering mehr so machen mehr machen muss, so wie früher.

Jochen

Sondern dass das halt zum großen Teil automatisch passiert.

Jochen

Und na gut, die Architektur des Modells ist natürlich noch so eine Sache.

Jochen

Aber das ist halt nicht mehr das gleiche, als wenn man da jetzt von Hand irgendwelche irgendwelche Features rauszieht aus einem Bild, sondern das ist alles gelernt.

Dominik

Also das heißt tatsächlich, durch diese Bibliotheken weiß man halt dann direkt, hey, ein Bild hat diese verschiedenen Dinge, Netze, Schichten und durch die ich dann einfach durchiterieren kann und.

Jochen

Ja, also das Modell trainiert halt eben nicht nur, passt sich nicht nur den vorher hart gecodeten Features an, sondern die, das Lernen, was sind eigentlich gute Features, ist halt mit dabei.

Jochen

Und das ist halt ein riesen Fortschritt.

Dominik

Schwarmintelligenz schon wieder.

Jochen

Schwarm, naja.

Ja.

Jochen

Aber ja, es macht das halt viel einfacher und man kann halt die gleichen Methoden verwenden, ob man jetzt auf Audiodaten arbeitet oder eben auf Bildern oder auf irgendwas völlig anderem.

Jochen

Und das ist natürlich auch total toll, weil dann sozusagen Erfolge in einem Feld halt irgendwie in eine andere Domain transportieren kann.

Jochen

Ja, und das geht so weit, dass halt inzwischen man, ja, es gibt immer so den Satz, Perception ist solved.

Jochen

Also irgendwie alles, was damit zu tun hat, Dinge zu erkennen, irgendwie Handschrift, Ziffern, Autokennzeichen, irgendwie Hausnummern, Straßenschilder oder eben auch Katzenhunde, irgendwelche Alltagsgegenstände.

Jochen

Das machen diese Dinger mittlerweile besser als Menschen.

Jochen

Also die haben da auch eigentlich überall Superhuman-Performance erreicht.

Jochen

Also wenn man dann selber das von Hand labelt und dann guckt, wer macht mehr Fehler, dann machen Menschen üblicherweise mehr Fehler.

Jochen

Und das ist schon ganz erstaunlich.

Jochen

Das wäre zu dem Zeitpunkt, wo man das halt noch nicht wusste, dass es geht, hätten viele gesagt, das ist völlig unabsehbar, wann das jemals ist, oder ob es überhaupt jemals möglich sein wird, dass sowas passiert.

Jochen

Und dann ging es innerhalb von wenigen Jahren.

Jochen

Also das ist, da ist tatsächlich ein Riesenfortschritt passiert.

Jochen

Auf der anderen Seite muss man natürlich sagen, das heißt jetzt nicht, dass alles gelöst ist oder dann wird immer davon künstlicher Intelligenz geredet und das ist schon irgendwie Quatsch, weil also ich meine, Machine Learning ist halt so ein Teilbereich der künstlichen Intelligenz und wahrscheinlich auch so der interessanteste zurzeit, aber die wirklich knackigen Probleme, wenn es darum geht, irgendwie wirklich intelligentes Verhalten oder wirklich.

Dominik

Was heißt das überhaupt und wie definiert man das ja?

Dominik

Also wenn ich jetzt tatsächlich als ein individuelles, autonomes Individuum hätte, das sich dann als intelligent definieren kann, dann ist das natürlich was anderes, als wenn ich jetzt eine Maschine habe, die immerhin binäre Entscheidungen treffen kann oder sowas, die einigermaßen richtig sind.

Jochen

Das ist auch überraschend, wie viel sich auf solche Entscheidungen reduzieren lässt.

Jochen

Also das ist tatsächlich, macht das schon viel aus, aber diese Welt sozusagen gesehen aus der Sicht von so einem Netz ist halt sehr, sehr, das ist eine sehr, sehr oberflächliche Sicht der Welt.

Jochen

Die lassen sich auch alle sehr, diese Modelle lassen sich sehr leicht täuschen, weil sie eben fast nichts über die Welt wissen.

Dominik

Also du fällt das alles nicht für intelligent.

Dominik

Also ich finde das halt wirklich schon riesen, also um bei dem Griff zu bleiben, Intelligenz, die da irgendwo hintersteckt.

Dominik

Also man ist natürlich jetzt nicht ungefragt hinnehmbar und die sticht dazu in der Stelle noch kein Menschen aus oder kann irgendwie Konkurrenz werden oder sowas, wie vielleicht dann die Gefahren, die mit so einem AI-Ding da irgendwie verknüpft werden, auch noch da hinzu kämen.

Dominik

Aber ich finde das schon sehr beeindruckend.

Dominik

Also ich würde fast auch schon von Künstlerintelligenz sprechen wollen, so aus dem Laienverständnis heraus, als wenn es jetzt so eine richtige Intelligenz jetzt vielleicht noch nicht ist.

Dominik

Aber in gewisser Weise kann halt die Maschine tatsächlich, also das ist glaube ich der Fortschritt, mit neuen Dingen umgehen.

Dominik

Und das ist halt nicht das, was sie vorher gelernt hat und das ist ja das, was das Spannende daran ist.

Dominik

Und das vielleicht schon irgendwo Intelligenz.

Jochen

Ich denke, der große Unterschied zu früher ist halt, dass in, muss man auch sagen, begrenzten Bereichen muss man halt nicht mehr und nicht mehr wirklich explizit Sachen programmieren, sondern man zeigt jetzt einer Maschine nur noch irgendwie Beispiele dafür, wie es richtig sein soll und dann kann sie das halt auch mehr oder weniger genauso gut machen.

Jochen

Das heißt, man muss nicht mehr, muss in vielen Bereichen nicht mehr explizit programmieren sein.

Jochen

Und das ist natürlich ein Riesenvorteil, weil das war bisher immer so ein Bottleneck für viele Anwendungen natürlich.

Dominik

Ja genau, also wenn man halt immer noch Menschen dann drauber gucken lassen musste, stimmt das jetzt alles oder nicht?

Jochen

Ja, vor allem, die müssen das halt irgendwie hinschreiben, die müssen das auch verstehen.

Jochen

Ja, klar.

Jochen

Also insofern ist das natürlich schon ein Riesenfortschritt, aber es ist halt nicht auf alle Probleme anwendbar.

Jochen

Es gibt auch viele Probleme, bei denen das grundsätzlich nicht so gut funktioniert.

Jochen

Und ja, da kommen wir auch dann zu den Geschichten mit dem Unterschied zwischen Supervised, Unsupervised und Reinforcement Learning.

Jochen

Also, Supervised geht.

Jochen

Also, da sind wir mittlerweile ziemlich gut.

Jochen

Aber auch nur, wenn es um so ganz oberflächliche Geschichten geht.

Jochen

Also die Modelle wissen nicht, was sie da tun.

Jochen

Sie haben kein Verständnis dafür, was da passiert.

Jochen

Deswegen lassen sie sich auch eben sehr leicht täuschen, weil es muss halt nur irgendwie halbwegs oberflächlich so aussehen.

Jochen

Das reicht ja vollkommen.

Jochen

Wenn da irgendwas sozusagen physisch unmöglich wäre oder so, wo ein Mensch sofort erkennt, das kann ja gar nicht sein, ist es für so ein Modell völlig unmöglich.

Dominik

Ja, man könnte so ein paar lustige Surveillance-Aktionen machen, indem man irgendwie so Plakate hochhält mit gesuchten Persönlichkeiten oder bedrohlichen Dingen und dann Leute trollt oder so.

Jochen

Aber gut, das sind so Machine Learning Security ist immer ein ganz eigenes Ding.

Jochen

Was aber jetzt zum Beispiel Menschen Tiere super können, also einmal ist es halt total interessant, dass Menschen nicht so viele Trainingsbeispiele brauchen.

Jochen

Also man sich zum Beispiel anguckt, wie viel gelabelte Daten sieht, so irgendwie ein Kind von null bis es kann irgendwie sprechen und verstehen, dann ist das sehr, sehr wenig.

Jochen

Und man versteht überhaupt nicht, wie das sein kann, dass man mit so wenig Trainingsbeispielen irgendwie auskommt, weil diese ganzen Deep Learning-Geschichten brauchen viel, viel mehr.

Jochen

Was jetzt nicht so ein Problem ist, wenn man halt inzwischen Internet und so, man hat die Daten und wenn da alle Leute sprechen, da irgendwie in ihre Telefone und dann sammelt man davon halt irgendwie tausend, Stunden, Millionen, Milliarden, keine Ahnung, und dann hat man genug, um halt mal große Modelle mit vielen, vielen Parametern zu finden.

Jochen

Und dann funktioniert das auch.

Jochen

Aber es wäre natürlich schon interessant, rauszukriegen, wie kommt das, dass Menschen das auch super hinkriegen, aber diese Daten nicht brauchen.

Ja, wahrscheinlich steht das an der Auflösung mit der Information, die die Menschen bekommen, ist wahrscheinlich auch so hoch und so riesengroß und so polymorph und so fraktal, dass da dann doch wieder alles hinten rausfällt, was an Informationen wichtig wäre für so ein neues Netzwerk.

Dominik

Und Menschen lernen das dann anhand dieser Masse von Informationen so schnell noch.

Jochen

Ja, man könnte jetzt sagen, also Menschen eben sehen auch Sachen, hören nicht nur Dinge und so.

Jochen

Aber ich glaube, das ist gar nicht so sehr der Punkt, sondern, oder das, was halt so der übliche Ansicht ist, ist halt, dass Menschen halt und Tiere irgendwie super, unsupervised learning halt wirklich, wirklich gut können und wirklich gut in der Lage sind, einfach nur durch Beobachten super Repräsentationen der Welt irgendwie aufzubauen.

Jochen

Und das kann man halt mit, ja, können halt die Modelle, die wir da verwenden, in Computern momentan nicht.

Jochen

Und da kriegt man halt eben schon sowas nicht hin wie, was ist da überhaupt eine geeignete Verlustfunktion?

Jochen

Also wenn man zum Beispiel sich so ein Problem anguckt wie, man möchte vorhersagen, was als nächstes passiert in einem Film, den man sieht.

Jochen

Also da, man sieht irgendwie, keine Ahnung, eine Savanne in Afrika oder laufen irgendwie Tiere durch die Kamera, ja, irgendwie dieses Problem, was ist da für ein Tier, das ist sozusagen, das geht.

Jochen

Aber ja, was passiert jetzt in fünf Minuten in diesem Film?

Jochen

Oder was passiert im nächsten Frame?

Jochen

Wenn die Tiere von links nach rechts durchlaufen, sind dann plötzlich keine Tiere mehr drin oder so, das muss man natürlich noch in entsprechenden irgendeinen experimentalen Aufbau übersetzen.

Jochen

Aber wenn man sich jetzt anguckt, wie gut können Menschen das vorhersagen, was da passiert, super, ja.

Jochen

Also die verstehen auch, dass wenn die Sonne untergeht, dann wird es dunkel oder so.

Jochen

Für solche Machine Learning-Modelle sehr, sehr schwierig.

Jochen

Die kriegen halt vielleicht einen Frame, vielleicht ein paar irgendwie auch ganz gut vorhergesagt, aber je länger das wird, desto absurder wird das, was halt vorhergesagt wird.

Jochen

Und man weiß nicht mal, wie man jetzt da gut irgendwie eine Distanz ausrechnet zu dem, was sie hätten vorhersagen müssen.

Jochen

Das heißt, man kennt nicht mal eine Verlustfunktion, die man da.

Jochen

Das heißt, man kann das Optimierungsproblem nicht gut lösen, weil man gar nicht weiß, was man optimieren soll.

Dominik

Ja, du darfst nicht verlassen.

Dominik

Genau an dem Problem, dass die Maschinen an der Stelle nicht diese Sinneswahrnehmung von einer echten Welt, in der Gänze der Erfahrungsmöglichkeiten, was jetzt so fraktale dimensionale Strukturen angeht, erfassen konnten.

Dominik

Und das dann nicht vorliegt in dem Datensatz.

Dominik

Möglicherweise wäre das eine Option, da irgendwie so ranzugehen.

Dominik

Es gibt ein paar Fraktaltheorien, wie Mendelboden, naja, ist ja wieder Hilgespitze, aber ja, vielleicht kann man da durch irgendwann sowas dann doch basteln und dann die KI vertigen.

Jochen

Ja, kann man bestimmt, aber momentan wissen wir halt nicht wie.

Jochen

Und ja, ist halt schwer.

Jochen

Und das ist sozusagen, wenn man es schaffen würde, den Erfolg, den man jetzt beim Supervised Learning hatte, irgendwie zu übertragen auf Unsupervised, das wäre natürlich ganz, ganz toll, aber ist halt noch nicht so.

Jochen

Aber da arbeiten ganz viele Leute dran.

Jochen

Und Reinforcement Learning ist halt so ein Zwischending.

Jochen

Wenn man halt nicht zu allem, was man tut, jetzt ein Label hat oder eben ein Feedback bekommt, war das jetzt richtig oder falsch?

Jochen

Sondern man bekommt diese Labels, die Labels werden Spars.

Jochen

Also man bekommt halt nur ab und zu gesagt, ob jetzt was richtig war oder nicht.

Jochen

Und dann muss man das halt irgendwie verteilen auf das, was man getan hat.

Jochen

Also vielleicht ist da auch das praktische Beispiel irgendwie am besten, also wenn man spielen funktioniert das halt super, wenn man jetzt irgendwie Schach spielt oder Go oder sowas, dann spielt man halt eine ganze Zeit lang, macht viele Züge und dann am Schluss bekommt man halt gesagt, okay, du hast jetzt gewonnen oder verloren.

Jochen

Aber man bekommt keine Aussage zu, wie gut war jetzt dieser Zug, den ich gemacht habe, weil das weiß halt eh keiner so genau.

Jochen

Und irgendwie definitive Aussage ist ja, es kann ja auch sein, dass ein Zug, der irgendwie schlecht aussieht, eigentlich sehr gut war.

Dominik

Es sei denn, du verlierst im nächsten Zug oder so,

Jochen

aber ja.

Jochen

Ja, aber tatsächlich ist es halt so, so wirklich definitiv weiß man es erst, wenn man gewonnen oder verloren hat.

Jochen

Und dann hat man das Problem, okay, jetzt muss ich irgendwie sozusagen dieses Feedback irgendwie zurückassignen an alles, was ich irgendwie gemacht habe.

Jochen

Und das ist genau Reinforcement Learning und das ist halt sozusagen so ein Zwischending zwischen Überwacht und Unüberwacht, weil halt da auch viel Unüberwacht passiert, aber ab und zu hat man ja doch so ein bisschen Feedback und das hat halt viele Anwendungen.

Jochen

Selbst fahrende Autos sind halt auch so ein, oder überhaupt laufende Roboter und so, das ist alles Reinforcement Learning.

Jochen

Oh, laufende

Roboter ist schön.

Dominik

Hast du es gesehen von Boston Dynamics, das neue Ding, da haben irgendwie 15 diese, weiß nicht, pferdeförmigen Hunderoboter, so ein LKW gezogen oder so.

Irgendwo irgendeine Straße.

Jochen

Ich finde diese Videos immer sehr beunruhigend.

Dominik

Ja, das ist etwas spooky hier tatsächlich.

Dominik

Die könnte sowieso wie Militärtechnik, wenn man sich da überlegt, da ist dann irgendwie so eine Waffe drauf oder sowas, dann hüpfen die durch den Wald und

Jochen

irgendwann die Türen aufzumachen und um die Ecke zu gucken.

Dominik

Das ist schon ein bisschen spooky tatsächlich.

Dominik

Ja, ist ja auch vom DAPA finanziert, ne?

Jochen

Ja, ich glaube, die Firma selber ist gekauft worden von Google.

Dominik

Ja, ich glaube, die haben sie wieder verkauft.

Jochen

Haben sie wieder verkauft, also ja kann auch sein.

Dominik

Aber ja, die war mitfinanziert vom DAPA vor allen Dingen und so.

Dominik

Mal gucken, was da Schönes für die Zivilgesellschaft noch bei rausspringen.

Jochen

Ja, auf jeden Fall irgendwie auch so ein hartes Problem.

Jochen

Auch da gibt es tolle Erfolge, wenn man sich anguckt, was AlphaGo Zero angeht und so.

Jochen

Das ist gar keine Frage.

Jochen

Das ist ein super toller Erfolg, weil irgendwie früher waren ja auch die Lösungen, also Schach sozusagen das erste Mal, dass man Menschen keine Chance mehr hatten gegen Schachcomputer, da soll irgendwann 98, oder so als Kasparow gegen die Plou dann verloren hat.

Dominik

Ich hab schon als Kind immer gegen meinchcomputer verloren.

Jochen

Ja, ja, aber nicht jeder Mensch hätte gegen deinen Schachcomputer verloren.

Dominik

Das wollen wir nochmal sehen.

Jochen

Ja, aber heute ist es so, dass kein Mensch mehr eine Chance hätte gegen einfach nur so ein blödes iPad.

Jochen

Weil das ist halt schon schnell genug, als dass man da irgendwie völlig aussichtslos.

Jochen

Und das damals, ja, so nach 98 war dann halt klar, okay, Menschen haben jetzt irgendwie hier keine Chance mehr.

Jochen

Aber.

Dominik

Wer gewinnt denn eigentlich, wenn ich das Spiel von einem anderen Rechner mitspielen lasse?

Dominik

Das wäre doch mal interessant.

Dominik

Also ich spiele auf dem einen Rechner manuell, Schach gegen den Bot und lass mir meinen Zug aber von einem anderen Bot predikten.

Dominik

Also gewinnt halt der schnellere Bot oder was das, wenn der beide Bot gegeneinander spielt, ist es dann Zufalls.

Jochen

Nee, nee, üblicherweise kommt halt darauf an, was das für Dinger sind.

Jochen

Wenn die gleich sind, dann ist es vielleicht Zufall oder soll es 50% 50-50 sein, aber.

Jochen

Aber vielleicht kommt

Dominik

eine Regel raus, vielleicht gewinnt immer weiß.

Jochen

Nee, ja, nee, es ist schon so, dass 70% glaube ich, zwei Drittel ungefähr weiß gewinnt.

Jochen

Also wenn es gewinnt, also die meisten Spiele sind sowieso Remi, aber wenn es eine Entscheidung gibt, dann gewinnt meistens weiß.

Jochen

Weil weiß ja schon einen leichten Vorteil hat durch den Anzug.

Jochen

Aber ja, trotzdem hättest du halt, oder sagen wir so, auch ein schlechtes Schachprogramm hätte halt keine Chance gegen ein wirklich.

Jochen

Also eins von 98 oder so hätte halt keine Chance gegen eins der modernen.

Jochen

Auf einer modernen Hardware ist halt, das ist so viel besser geworden.

Jochen

Aber eben, auch in dem Ding, was halt 98 KSV aufgeschlagen hat, steckt da halt ganz viel domainspezifisches Wissen drin.

Jochen

Da steckt da halt viel Schachtheorie drin, da war eine Endspieldatenbank dran.

Jochen

Da war viel

Dominik

glatter Overhead.

Dominik

Brauchen wir halt alles nicht mehr wegschmeißen, lern von einem einen fertig.

Jochen

Ja, also da steckt ja ganz, ganz viel menschliche Arbeit drin, sozusagen.

Jochen

Und das, also wenn man jetzt zum Beispiel sagt, okay, wir möchten jetzt nicht einen Schachcomputer bauen, der den Schachweltmeister schlägt, sondern wir möchten jetzt ein, ja, weiß ich nicht, Baggerfahrprogramm irgendwie bauen, das mit den besten Baggerfahrern mithalten kann oder so, dann müsste man dafür genauso viel Zeit investieren wie, oder vielleicht noch mehr oder keine Ahnung, auf jeden Fall sehr, sehr viel Zeit, um das halt diese Domäne genauso gut zu modellieren, wie man das damals mit Schach gemacht hat.

Jochen

Und das ist halt völlig aussichtslos, würde sich niemals rechnen.

Jochen

Es gibt so viele Dinge, die man irgendwie gut können will, aber wo es absolut aussichtslos wäre.

Dominik

Mir fällt ja immer so das Erste ein, was sich für einen Roboter mir selber anschaffen würde, für jede Menge Geld wäre so der Haushaltsroboter, der putzen kann und das ganze Haus in Ordnung hält.

Dominik

Vielleicht dann irgendwann auch ein bisschen kochen.

Dominik

Also dann habe ich natürlich meine eigenen Rezepte oder so, aber das wäre natürlich toll, weil dann müsste man das nicht mehr machen.

Jochen

Ja, aber es ist schwierig.

Jochen

Also all diese Dinge, wo man mit der realen Welt interagiert, da komme ich auch gleich nochmal drauf.

Jochen

Die sind alle leider nicht so leicht.

Jochen

Und man hat auch sofort immer irgendwie so Sicherheitsprobleme.

Jochen

Also, aber nochmal zu dem, das grundsätzliche Problem wäre halt, das würde sich überhaupt nicht lohnen, für jeden Bereich, für jede Domäne, für jedes Problem, das man irgendwie hat, so viel Theorie und Wissen zu investieren, um das wirklich zu lösen.

Jochen

Auf diese Art.

Jochen

Deswegen ist das ja ein netter Erfolg, so nach außen hin, aber eigentlich ist es wertlos, weil man kann das zwar für Schach machen und bei Schach hat es halt einen so hohen symbolischen Wert, dass man es da tatsächlich gemacht hat.

Jochen

Aber es ist nicht keine praktische Lösung.

Jochen

Es ist nicht wirklich effizient.

Und naja.

Jochen

Ja, für Schach, aber in anderen, ja.

Jochen

Aber jetzt irgendwie durch Alpha Gui Ziro und so, das sind Dinger, wo kein Domänenwissen mehr drinsteckt.

Jochen

Die sind, also Alpha Guiro ist von, also null Schachtheorie zu irgendwie superjungen Performance innerhalb von ein paar Stunden durch gegen sich selbst spielen gut geworden.

Dominik

Ja, also der Bot, der dann auch gegen Go gespielt hat, hat ja irgendwelche völlig unkonventionellen Tüge gespielt, wo keiner machte, was macht der denn da?

Dominik

Das würde ja ganz anders spielen und dann hat er trotzdem gewonnen, das war schon ein bisschen spieler.

Jochen

Ja, ja, also das ist jetzt außerhalb von dem, was irgendwie, also wir haben ein paar hundert Jahre Schachtheorie, wir haben irgendwie ein paar tausend Jahre vielleicht Go-Theorie und da jetzt sind wir halt viel weitergekommen in sehr, sehr kurzer Zeit und verstehen nicht mal mehr, was da passiert, weil es halt außerhalb von unseren, ja, wir kriegen das nicht mehr, wir sind halt leider ein bisschen zu dumm dafür, offenbar.

Jochen

Oder nicht gut genug, jedenfalls ein Go oder Schach, um das noch nachvollziehen zu können, was die Dinger da machen.

Jochen

Aber es funktioniert, denn sie gewinnen immer.

Jochen

Und das ist halt deswegen so ein Riesenfortschritt, weil man jetzt, da diese, also solche, auch diese Reinforcement Learning Geschichten sind jetzt nicht prinzipiell auf irgendein Problem geeicht.

Jochen

Also das ist deswegen heißt das Ding ja auch Alpha Gosh, dieses Alpha Gosero-Ding, das ist quasi das gleiche Ding, was halt Schach-Shoku, das ist dieses japanische Schach irgendwie und Go irgendwie gelernt hat.

Jochen

Das heißt, es funktioniert über unterschiedliche Spiele hinweg.

Jochen

Das muss nicht unbedingt jetzt, also es ist halt, so jetzt kann man sich vorstellen, wenn man jetzt Probleme hat, die ähnlich sind, dann kann das möglicherweise auch relativ schnell so gut lernen, dass es halt besser ist als jeder Mensch.

Jochen

Und dann lohnt sich das plötzlich, das für diverse Bereiche einzusetzen, weil man gar kein Domain-Wissen mehr braucht.

Jochen

Also die sich das alles selber beibringen.

Jochen

Das klingt jetzt auch relativ erschränkend wahrscheinlich, aber so schlimm ist es auch wieder nicht, weil wir haben, das funktioniert nur dann super, wenn man eben durchgegen sich selbst spielen oder super viele Spiele ausprobieren, irgendwie lernen kann, was halt super geht in solchen Situationen, wo man die komplette Welt simulieren kann.

Dominik

Welcher Gott das und Werte mit Machine Learning gebaut.

Dominik

Relativ unwahrscheinlich, dass sowas funktioniert, ja.

Jochen

Ja, es gibt da schöne Theorien zu ja, das finde ich.

Das ist halt

Dominik

für den kleinen Ex-Kurs.

Ich wollte ja alles beim Arkt setzen.

Jochen

Ja, ich wollte das nur noch kurz zu Ende führen.

Jochen

Also wenn man das simulieren kann, ist super.

Jochen

Spiele sind halt, da hat man die Simulation halt schon.

Jochen

Genau, es gab da große Erfolge bei den Atari-Games.

Jochen

Voll toll, aber der Witz ist eigentlich, dass die Dinger sind halt super simulierbar, deswegen hat das da so gut funktioniert.

Jochen

So, die physische Realität ist nicht wirklich gut simulierbar.

Dominik

Ja, wir haben ja auch keine vernünftige Abbildung von einem Modell der physischen Realität in den ganzen Variablen.

Dominik

Die kennen wir alle nicht, alle zu viele Unbekannten.

Jochen

Ja, also das kennt man schon, aber das ist alles nicht so einfach umzusetzen.

Dominik

Naja, kennen.

Jochen

Und das Problem ist halt auch, du musstest ja nicht nur die sozusagen so eine Physikengine, die relativ gut ist, haben, das geht vielleicht noch, aber es passieren halt die ganze Zeit so Dinge.

Jochen

Wo man nicht weiß, wie man das irgendwie simulieren soll.

Jochen

Keine Ahnung.

Jochen

Wenn man draußen rumläuft, da passiert so viel komischer Kram.

Dominik

Vielleicht müssen wir unsere Sensorspektren endlich erweitern und die Maschinen damit füttern.

Jochen

Ja, nee, es ist eher, das ist nicht, also von der Sensorseite, das funktioniert eigentlich alles, aber was halt nicht funktioniert, ist alles Mögliche ausprobieren, um rauszukriegen, wie diese Realität dann funktioniert, weil das Problem ist, wenn man das jetzt mit einem selbstfahrenden Auto macht, dann macht man ganz schön viel kaputt.

Jochen

Und auch ganz schön viele selbstfahrende Autos kaputt, die sind ja teuer.

Jochen

Und es ist ja, selbst wenn ich das alles simuliert mache, brauche ich sehr viel Rechenleistung und muss das ganz, ganz, ganz viel probieren.

Jochen

Wenn ich das ja, wenn ich das mit physischen Objekten da draußen machen muss, das funktioniert nicht.

Jochen

Das ist, äh, ja.

Jochen

Und daher wird das, wird alles, was irgendwie mit physisch, also mit einer Manipulation von irgendwelchen physischen Dingen zu tun hat, das ist alles noch nicht so richtig, äh, noch nicht so richtig im Griff und bleibt schwierig, jedenfalls, solange man das nicht ordentlich simulieren kann.

Jochen

Und das ist momentan auch noch nicht gelöst.

Jochen

Aber ja, ist natürlich schon interessant, was es da alles so an Fortschritten gibt.

Ja.

Jochen

Genau.

Jochen

Ja, vielleicht machen wir jetzt doch nur Chapter.

Dominik

Ja, also Chapter war auf jeden Fall Supervised Learning, Unsupervised Learning und Reinforced Learning.

Dominik

Was ist das nächste Kapitel?

Dominik

Ist das nochmal Fehler und wir wollten noch was über Fitness?

Jochen

Achso, genau, wir wollten, wir wollten irgendwie was, genau, das, das, äh, ja.

Jochen

Das hatten wir gestern auch noch nicht so richtig drin, wenn man jetzt so Modelle trainiert, was ist eigentlich, was passiert da eigentlich, was kann da eigentlich schief gehen?

Jochen

Es gibt da Metriken und so, da hatten wir gestern auch schon so ein bisschen was erzählt, aber oder beim letzten Mal was zu erzählt, aber es gibt da so prinzipielle Geschichten und die hatten wir irgendwie nicht mit drin.

Jochen

Und zwar, wenn man jetzt, oder das ist vielleicht sogar am einfachsten, wenn wir das am

Dominik

Ende willst du kurz einführen, wo bist du gerade?

Jochen

Ja, ich überlege gerade, wie das mit dem praktischen Beispiel aussieht, weil wir wollten ja auch noch so Hunde versus Katzen machen.

Jochen

Und da könnte man das auch noch rein, aber ja, egal.

Jochen

Nein.

Ja, aber

Dominik

ich fand das ganz gut, wie du es gemacht hast bei dem PiDF-Vortrag.

Dominik

Da kann man dann hinterher tatsächlich ganz gut dahin, dass man sowas wie Overfitting relativ gut da reinbauen könnte.

Dominik

Und dann müsst ihr das mit den Pias-Variants auch reinpassen.

Jochen

Ja, stimmt, stimmt.

Dominik

Aber deshalb fangen wir vielleicht dann doch nochmal mit dem Beispiel an.

Jochen

Genau, dann machen wir doch nochmal Beispiele hier.

Jochen

Und genau, ich mache noch Kapitelmarke.

Dominik

Also wir erklären das jetzt kurz nochmal, wie man das macht, wenn man jetzt so Hunden- und Katzenbilder hat und ja, wie man die dann versuchen will, voneinander zu entscheiden und wie man dann die Maschine dazu bringt, dass sie das versteht, was da passiert.

Dominik

Weil, wie man sich vielleicht vorstellen kann, Hunde und Katzen sind unterschiedliche Tiere zwar, aber die sehen vielleicht doch schon ganz schön ähnlich aus und vor allem, wenn die irgendwie halb verdeckt sind oder so von einem Schlank oder in irgendeine Kiste reinhüfen.

Jochen

Also wir nehmen das einfachste Problem sozusagen, was wir haben, nämlich binäre Klassifikationen, nur jetzt die Klassen sind 100 und Katzen.

Jochen

Es gibt so ein Dataset, das mal in der Kagel Competition verwendet worden ist.

Jochen

Ich glaube 20.000 Hunde, 20.000 Katzen oder 10.000, 10.000 Katzen, ich weiß nicht mal genau.

Jochen

Aber wir nehmen nur Hunde, 1000 Katzen und nochmal 1000, also 500, 100, 500 Katzen.

Jochen

Also ein Trainingset, ein Test-Set und ein Validationsset da raus.

Jochen

Und das ist im gleichen, ja.

Dominik

Warum nehmen wir nicht denn alle 10.000 Jochen?

Jochen

Ja, weil das so lang dauern würde, das wäre irgendwie nicht gut.

Jochen

Das ist sowieso schon auch selbst mit den Wen, selbst nur mit 1000 Beispielen ist es schon so, dass man da ohne GPU nicht so richtig viel Spaß hat.

Jochen

Das ist so ein bisschen blöd.

Jochen

Man braucht so ein bisschen Spezialhardware.

Dominik

Also mit der 1080 kann ich aber schon ein bisschen was rechnen.

Jochen

Ja, ja.

Jochen

Also das wäre schon sehr gut.

Jochen

Aber viele Leute haben ja vielleicht auch jetzt keine GPU irgendwie zu Hause direkt.

Dominik

Glück, wenn man Computerspiele mag.

Jochen

Ja.

Jochen

Aber da muss man auch mal diesen ganzen Kram installieren und so und das ist auch alles nicht so richtig einfach.

Jochen

Und ja, also in dem Data Science-Projekt gibt es halt in dem Notebook-Verzeichnis auch so ein Ding Hunde versus Katzen.

Dominik

Mit welchem Modul kann man die Grafikhard benutzen?

Jochen

Ja, das ist, ja, man muss erstmal das Betriebssystem dazu kriegen, dass das ordentlich funktioniert.

Jochen

Dann braucht man halt irgendwie die Nvidia-Bibliotheken da unten drunter, also QDN und KUDA und so.

Jochen

Und dann gibt es halt diverse Machine Learning-Bibliotheken, die das benutzen, um damit irgendwie Deep Learning-Netze zu bauen.

Jochen

Das ist dann halt sowas wie Tensorflow oder halt eben PyTorch oder was gibt's denn da noch alles?

Jochen

Also diverse Geschichten.

Jochen

Und das, was wir hier verwenden im Beispiel, ist Keras, das ist sozusagen die Python, ähm, Python Bindings für TensorFlow und die sind auch im TensorFlow-Projekt, ist das Ding mit drin enthalten, hat die gleiche AP wie bei den anderen Cikit-Learn-Modellen.

Und wenn ihr auf Windows das nutzen wollt, dann könnt ihr es zum Beispiel einfach mit Chuku im Paketmanager CUDA installieren und das dann ausprobieren.

Dominik

Mit Over X.

Jochen

Aber das, da, also kann ich vorwarnen, das wird böse Üraschungen geben, das ist nicht so einfach.

Jochen

Das ist alles ziemlich schwierig.

Jochen

Oder du kannst es ja mal bei dir ausprobieren.

Dominik

Ja, ich würde sagen, das werde ich auf jeden Fall tun.

Dominik

Ja.

Dominik

Und werde berichten.

Genau.

Jochen

Man kann das auch inzwischen, ich habe das auf meinem, ich habe so, ich habe so ein Fable für Apple, ich bin so ein Apple-Jünger.

Jochen

Und leider werden ja keine Nvidia-GPUs mehr verbaut, daher funktioniert das alles nicht mehr so richtig.

Jochen

Es gibt aber da auch so ein Projekt, das sollte man auch noch nicht auch noch in die Shownotes packen, Plate.ml.

Jochen

Damit kann man die AMD-GPUs, die ja darin sind, benutzen.

Jochen

Es gibt ja die Abstraktion von Apple selber, Metal heißt die irgendwie, wenn man die benutzt, dann ist das auch schon recht schnell.

Jochen

Also sozusagen die AMD-GPU, die jetzt in meinem MacBook, das ist ein relativ altes Ding von 2016, drin steckt, die ist auf jeden Fall irgendwie doppelt so schnell, wenn nur die GPU läuft, wie die vier i7-Kerne, die da sonst drin sind.

Jochen

Wusch.

Jochen

Und das ist dann halt schon, also man kann so sagen, ungefähr GPU zu CPU-Performance-Unterschied ist so 1 zu 10, mindestens.

Jochen

Kommt dann halt darauf an, was man für CPUs und GPUs hat, aber so eine Größenordnung mindestens mal.

Jochen

Und genau, wenn man jetzt keine GPU hat, dann, weil, also auf einer GPU dauert das jetzt mit den Katzenhunden, mit den tausend Beispielen, wenn man es vom Scratch einfach so trainiert, auch schon fünf Minuten.

Jochen

Und das wäre dann jetzt, wenn man eine CPU verwenden würde, so mindestens mal ungefähr eine Stunde.

Jochen

Da macht das dann schon keinen Spaß mehr.

Jochen

Fünf Minuten kann man mal machen, aber irgendwie eine Stunde irgendwie darauf warten, dass da irgendwas, dass man so eine Stunde lang so ein Progress Bar angucken.

Jochen

Das ist vielleicht irgendwie nicht jedermanns Sache.

Jochen

Und genau, also ja, ich kann ja einfach mal, was man tun kann, wenn man jetzt keine eigene GPU hat, ist, man geht auf Google Colab oder bei Azure gibt es auch irgendwie freie Instanzen, wo man Notebooks ausführen kann, sozusagen, ohne dass man dafür bezahlen muss.

Jochen

Man kann bei Colab auch Notebooks direkt aus dem GitHub irgendwie ausführen.

Jochen

Und das ist natürlich ganz praktisch.

Jochen

Man muss nur unter Edit Notebook-Settings GPU anwählen.

Jochen

Und man sollte das auch machen mit dem, also man muss zuerst dieses Prepared Training Data Notebook ausführen, wo dann halt dieses Hunde-Katzenbeispiel irgendwie gezogen wird.

Jochen

Das liegt bei mir irgendwie auf dem S3-Ding.

Jochen

Und ja, dann werden halt auch diese Samples daraus gezogen.

Jochen

Wenn man das getan hat, da muss man auch schon die GPU aktivieren, damit das auf der gleichen Maschine bleibt.

Jochen

Und wenn man damit fertig ist, kann man das Notebook Model from Scratch irgendwie mal ausführen.

Jochen

Und ja, dann halt so ein kleines Convolutional Deep Learning Netz irgendwie trainieren.

Jochen

Ja, also das Beispiel ist auch aus dem Buch Deep Learning with Python von Saint Collet.

Jochen

Das ist der Autor von Keras und wir arbeiten bei Google.

Jochen

Ja, das sind sehr schöne Beispiele, die darin sind.

Jochen

Das Buch ist sowieso sehr empfehlenswert, also wenn man sich für Deep Learning und wie man das mit Python und Keras macht, interessiert, dann ist das auch auf jeden Fall eine Leseempfehlung.

Jochen

Und ja,

Dominik

wir fangen halt an, das Modell wieder von Anfang an zu trainieren.

Jochen

Genau.

Jochen

Also zuerst baut man das Modell halt irgendwie zusammen.

Jochen

Das macht man dann bei irgendwann in der Deep Learning-Folge, was macht eine Convolution-Operation eigentlich, was ist Max Pooling und so.

Jochen

Aber das wird einfach jetzt ein bisschen zu weit führen.

Jochen

Aber man kann halt dieses Modell bauen, man kann sich ausgeben lassen, welche Layer sind da drin, welche Parameter oder so, wenn da so durchgeht, sieht man das.

Jochen

Das ist jetzt nicht so groß, es hat nur so dreieinhalb Millionen Parameter, aber ist halt schon so ein Bereich, wo das halt mit CPU irgendwie zu trainieren schon relativ knackig wird.

Jochen

Dann nimmt man halt eben für, man legt noch die Verlustfunktion fest.

Jochen

Das wäre an der Stelle Binary Cross-Enthrophy.

Jochen

Das ist einfach nur Logloss.

Jochen

Kann man auch einfach nachgoogeln, dann weiß man, was das für eine Verlustfunktion ist.

Jochen

Die benutzt man eigentlich immer, wenn man sowas wie binäre Klassifikationen so ein Problem hat oder irgendwie Dinge klassifizieren möchte.

Jochen

Und legt halt noch den Optimierungsalgorithmus fest.

Jochen

Ja, und dann, da man bei Bildern oft das Problem hat, dass man die Datenmengen also nicht so richtig einen Hauptspeicher packen kann.

Jochen

Ich weiß auch nicht, wie groß ImageNet ist, aber irgendwie so 140 GB oder ich weiß, es ist auf jeden Fall schon recht groß.

Jochen

Das kriegt man nicht mal so.

Dominik

Hauptspeicher nicht über 140 GB groß?

Doch, kriegt es schon.

Jochen

Da gibt es wahrscheinlich Maschinen, die das.

Jochen

Kann sein, dass ich total einen Blödsinn gerade erzählt habe, wie groß das ImageNet ist.

Das müssen wir schnell kontrollieren.

Jochen

Das müssen wir gut nach kontrollieren.

Dominik

Die Größe, ImageNet Size.

Jochen

Ja, habe ich gerade nachgegoogelt und einen Wikipedia-Artikel gefunden.

Jochen

Steht nicht drin.

Jochen

Ja, egal.

Jochen

Also ist wahrscheinlich auf jeden Fall sehr, sehr groß.

Jochen

Und ja, man arbeitet halt dann bei Bildern meistens mit so Generatoren.

Jochen

Das ist ja auch sowieso eine schöne Idee, wenn man.

154 GB.

Jochen

Ah, okay.

Jochen

Also so schlimm ist es nicht, aber ja, hat man wahrscheinlich auch nicht unbedingt zu Hause.

Jochen

Und diese Image-Data-Generator-Klasse abstrahiert das sozusagen weg und man iteriert sozusagen über die Bilder, ohne dass man den ganzen Kram immer im Hauptsprecher halten muss.

Jochen

Und sagt dann halt, okay, hier sind die Trainingsdaten, da sind die Validationsdaten.

Jochen

Validationsdaten werden dazu benutzt, auch während der Trainingszeit schon anzuzeigen, wie gut das Modell momentan performt, sozusagen, auf Daten, die man halt noch nicht gesehen hat.

Jochen

Und am Schluss rechnet man halt einen Score aus auf dem Testset.

Jochen

Das ist auch so eine ganz wichtige Geschichte, das hatten wir gestern nicht, da haben wir einfach Training und Tests genommen.

Jochen

Aber eigentlich muss man noch eine dritte Kategorie haben.

Jochen

Man muss halt irgendwie ein Training-Set haben, man muss ein Set haben, auf dem man validiert.

Jochen

Also vielleicht schon während man irgendwie ein Modell trainiert, sieht, geht das jetzt in die richtige Richtung oder nicht.

Jochen

Und auf den man halt auch Überparameteroptimierung macht, aber das sollte man eben nicht auf dem Testset machen, sonst overfittet man das Testset.

Jochen

Und man kann halt sehen, dass man overfittet, wenn man auf dem Validationsset immer bessere Resultate erreicht und dann aber das nicht sozusagen auf dem Testset reproduziert werden kann.

Dominik

Das kann man wieder tatsächlich am besten sehen, wenn man das wieder visualisiert, also indem man irgendwie kurz und plottet.

Jochen

Also wenn man das jetzt hier mal fittet, das Modell, dann kriegt man eben viele progressbare Geschichten angezeigt, das läuft über 30 Epochen, das bedeutet 30 Mal geht man über das komplette Set rüber.

Jochen

Und ja, man sieht dann halt so.

Jochen

Genau, nee, das ist nicht TQDM.

Jochen

Nein, ist man nicht irgendwie bei Karas eingebaut.

Jochen

Achso.

Jochen

Aber man sieht halt sozusagen, wie sich da die Accuracy, die hier als Maß für den Fehler genommen wird, weil an der Stelle ist es tatsächlich mal so, dass es halbwegs aussagekräftig ist, was das, weil wenn man halt zwei Klassen hat, gleich viele Elemente, dann weiß man halt, 50% ist halt Zufall und wenn man irgendwie davon Richtung 1 geht, dann ist das gut und je näher an 1, desto besser.

Jochen

Und man sieht auch, dass das auf den Trainingsdaten halt passiert und auf den Validationsdaten auch, die man halt eben nicht in den Trainingsetten hat, aber halt nicht so stark.

Jochen

Und irgendwann geht die Accuracy auf dem Validation-Set nicht mehr weiter hoch, auf dem Trainingsset aber schon.

Jochen

Und das kann man sich auch irgendwie dann mal rausplotten und sieht dann halt irgendwie sozusagen, ja, das als.

Dominik

Eine lineare Kurve und eine, die fällt dann irgendwann so ein bisschen ab.

Jochen

Also auf der X-Achse sieht man halt die.

Dominik

Entfernen sich so ein bisschen voneinander an.

Jochen

Genau, wie oft man über das Trainingset drüber gelaufen ist, dann auf der Y-Achse die Accuracy.

Jochen

Und man sieht halt Training Accuracy geht halt so schön immer weiter hoch und ja, Validation Accuracy bleibt halt irgendwo so bei knapp über 70 Prozent und steigt dann nicht weiter an.

Jochen

Und beim Fehler sieht man das eigentlich noch schöner, dass halt das so quasi auseinanderläuft.

Jochen

Und das ist, also geht halt so eine Schere auf zwischen dem Fehler auf den Trainingsdaten und Fehler auf den Validationsdaten und der Grund dafür ist.

Dominik

Also mit Fehler meinst du jetzt, die ja falsch einsortiert hat, oder meinst du damit diejenigen, die richtig einsortiert hat, die aber falsch sind?

Jochen

Das ist an der Stelle egal.

Also ja, beides.

Jochen

Sozusagen Accuracy ist sozusagen ein kombiniertes Maß für beides an der Stelle, weil es die Accuracy sozusagen gleich verändert, ob ich das, ob ich die eine Art Fehler habe oder die andere an der Stelle.

Jochen

Ja, ich könnte natürlich auch jetzt, wenn ich ein anderes Problem hätte, könnte ich beide, weil wenn ich jetzt Precision und Recall hätte, könnte ich das halt beides plotten oder eben das kombinierte Maß irgendwie F1 nehmen und plotten.

Jochen

Ja, aber immer wenn man das sieht, dass das halt so auseinanderläuft, dann weiß man halt, okay, man overfettet gerade das Trainingset.

Jochen

Und das bedeutet halt, dass man eigentlich nicht mehr wirklich lernt, also etwas, also generalisiert von den Trainingsbeispielen, die man sieht, sondern man wird halt immer besser auf den Trainingsdaten, aber das hilft einem gar nicht bei neuen Daten, sondern macht das Ergebnis eigentlich nur noch schlechter.

Dominik

Weil man halt quasi die Trainingsdaten auch schon nicht lernt.

Jochen

Genau, weil man, weil man, ja, genau.

Jochen

Und ja, also sozusagen es gibt diverse Gründe dafür, warum das passiert.

Jochen

Es kann sein, dass man einfach zu wenig Daten, Trainingsdaten hat für die Komplexität des Modells, das man, oder für die Anzahl der Parameter, die das Modell hat.

Jochen

Es kann sein, dass das Modell halt nicht hinreichend quasi Maß, dass man da nicht hinreichend Regularisierungsmaßnahmen gegen Overfitting getroffen hat.

Jochen

Also bei neuronal Netzen wäre das Dropout.

Jochen

Man kann aber auch irgendwie für die Parameter halt irgendwie sagen, dass.

Dominik

Entschuldigung, was das Dropout?

Jochen

Ja, da sozusagen schmeißt man einige der Verbindungen halt weg, also einen Anteil, irgendwie zwischen 10 und 50 Prozent oder sowas.

Jochen

Und zwingt damit sozusagen das Netz nicht nur, also ja, da schon generellere Geschichten gelernt zu haben, weil es muss halt auch funktionieren mit, wenn halt ein Teil davon nicht mehr funktioniert, sozusagen.

Jochen

So ist es nicht so einfach zu erklären, warum das funktioniert.

Jochen

Das ist auch nicht so, das, also das war schon, das war auch irgendwie ja bekannt, dass das irgendwie klappt oder so, aber niemand wusste genau warum.

Jochen

Also es ist, ja, das ist auf jeden Fall etwas, was halt, ja, ein Modell, das sehr, sehr stark sich den Daten anpasst, halt bestraft irgendwie dafür, dass es das tut.

Jochen

Und in dem Sinne wirkt es halt overfitting entgegen.

Jochen

Bei anderen Arten von Modellen gibt es halt auch eine klassische Regularisierung bei linearen Modellen, wäre halt sowas, wie man bestraft das Modell dafür, dass die Größe, dass halt ja betracht, dass halt, ja, zum Beispiel die Länge des normalen Vektors, also die Länge des Modells, die Größe, der Betrag, Länge des Vektors, dass der zu groß wird, ja, in der L2-Norm zum Beispiel.

Jochen

Und sagt halt, das ist nicht gut.

Jochen

Das sollten immer möglichst kleine Werte sein.

Jochen

Und das regularisiert auch.

Jochen

Es gibt halt die unterschiedlichsten Arten, wie man das hinkriegt.

Jochen

Aber ja, also an der Stelle ist es halt einfach 1000 Beispiele sind einfach zu wenig, um wirklich zu lernen, was Katzen von Hunden unterscheidet.

Jochen

Und ja, Overfitting ist halt so der große, fiese Fehler, also einer der beiden großen fiesen Dinge, die passieren können.

Jochen

Genau, da wären wir jetzt auch bei diesem Bias versus Variance Ding, wenn man halt eben sieht, dass das so aussieht wie in dem Plot bei dem Model from Scratch Notebook, dann hat man halt Overfitting.

Jochen

Aber es könnte halt auch sein, dass man dass der Training-Error halt irgendwie ja sozusagen und das Training-Error und Validation Error beide noch relativ stark beieinander liegen, aber halt hoch sind, dann kann es halt sein, dass man underfittet.

Jochen

Das kann dann passieren, wenn man das Modell zu einfach ist, was man benutzt.

Jochen

Also wenn man zum Beispiel, wenn die Daten irgendwie verteilt sind in der Parabel, aber man legt halt ein Gerade durch oder so, dann hat man einen zu großen Bias im Modell, dadurch, dass es halt vielleicht zu einfach ist.

Jochen

Man geht halt davon aus, dass es irgendwie sich durch eine Gerade darstellen lässt, ist es aber nicht so, dann underfittet man halt.

Jochen

Oder in dem Fall wäre das halt, ja, wenn man jetzt sozusagen einfach zu wenig Trainingsepochen nehmen würde.

Jochen

Man würde jetzt einfach nur einmal über die Training oder zweimal über die Trainingsdaten gehen, dann wäre zwar der Validation-Error nicht viel schlimmer als der Trainings-Error, aber man wäre nicht bei einem optimalen Ergebnis einfach deswegen, weil man noch nicht lange genug die Parameter optimiert hat und hätte sozusagen das Problem underfittet.

Jochen

Und zwischen Underfitting und Overfitting gibt es halt irgendwo einen Bereich, der optimal ist und man muss halt irgendwie versuchen, den zu treffen.

Perfekt Match.

Jochen

Ja, und dann gibt es da auch immer noch so einen Unterschied zwischen Trainings- und Validation Error, den man nicht wegkriegt.

Jochen

Das ist so ein unreduzierbarer Fehler, der halt vielleicht daherkommt, dass es da Rauschen gibt, vielleicht dass es irgendwie nicht geht.

Jochen

Ja, also die Overfitting und Underfitting-Geschichten bekommt man halt irgendwie, wenn man das richtig macht, in den Griff.

Jochen

Aber es gibt halt auch immer einen Unterschied zwischen Trainings- und Validationserror, den man nicht wegbekommt.

Jochen

Ja, aber das halt voneinander unterscheiden zu können, ist relativ wichtig, weil wenn man sich jetzt an dem Fehler abarbeitet, den man nicht wegbekommt, dann ist das halt sinnlos.

Jochen

Und wenn man irgendwie denkt, man ist fertig und hat aber einen der Fehler, die man eigentlich noch wegoptimieren kann, dann kommt man halt auch nicht zum welchen Ergebnis, genau.

Jochen

Ja.

Jochen

Genau, damit haben wir das eigentlich im Grunde schon so halbwegs.

Dominik

Ja, also ich glaube, das wäre dann wieder Zeit für den Chaptenmarkt, weil die Frage ist, was fällt dir noch so ein?

Dominik

Außer dem Deep Learning, was wir auf jeden Fall nochmal machen wollen, aber was wir wahrscheinlich in der eigenen Folge irgendwie besprechen.

Jochen

Ja, also was ich noch genau, ähm, was ich auf jeden Fall noch erzählen wollte nach dem Beispiel, ist, warum Deep Learning auch auf kleineren Datensätzen funktioniert.

Okay, okay.

Dominik

Was sind dann da kleinere Datensätze?

Jochen

Ja, eben sowas wie das, was wir hier haben.

Dominik

Also 1000, 10.000 bis 1000 Datensätze.

Jochen

Genau.

Jochen

Also groß ist halt sowas, also da funktioniert es ja gut, das weiß man ja.

Jochen

ImageNet, aber das sind anderthalb Millionen Bilder.

Jochen

Jetzt könnt man auf die Idee kommen, zu sagen, okay, so viele Bilder habe ich leider nicht für mein Problem.

Jochen

Ich möchte jetzt irgendwie, keine Ahnung, irgendwie das praktisch anwenden und ich möchte jetzt aber nicht Hunde von Katzen unterscheiden oder irgendwie Tische in Bildern finden, sondern ich habe das Problem, ich mache jetzt, weiß ich nicht, bin in einer Müllverbrennungsanlage oder so bin ich an einem Platz, wo ganz viel Müll angeliefert wird und ich möchte jetzt irgendwie den Müll auseinandersortieren.

Jochen

Und das sind halt alles Klassen.

Jochen

Also ich möchte jetzt zum Beispiel feststellen, ist das eine Plastikflasche oder ist das halt irgendwie was anderes als Glas.

Dominik

Plastiflasche mit einem Hunde-Etikett.

Jochen

Ja, also meine Klassen sind halt anders.

Jochen

Die sind in dem Image-Net-Data-Set so nicht drin.

Jochen

Und dann kann ich denken, okay, dann muss ich jetzt erst anderthalb Millionen Bilder sammeln.

Jochen

Blöd, das kriege ich vielleicht nicht hin.

Jochen

Und ich kann die auch nicht labeln.

Jochen

Das ist alles irgendwie nicht wirklich handhabbar für mich.

Jochen

Dann kann ich halt denken, okay, Deep Learning ist nichts für mich, das funktioniert alles nicht.

Jochen

Ich lasse weiter, dass irgendwie einen Euro-Jobber und die sortieren das dann noch von Hand oder so.

Jochen

Aber nein, man kann tatsächlich da was machen.

Jochen

Und zwar braucht man gar nicht so viele Beispiele.

Jochen

Man kann nämlich die vortrainierten Modelle einfach benutzen.

Jochen

Also die wurden dann halt auf ImageNet trainiert.

Jochen

Und geht halt dann davon aus, dass sozusagen ein Großteil von dem, was unsere visuelle Realität ausmacht, dann da schon irgendwie ordentlich trainiert worden ist.

Jochen

Sozusagen, also Feature-Extraktionen aus Bildern hat dann, funktioniert damit halt schon ziemlich gut.

Jochen

Und diese Annahme wird wahrscheinlich halten.

Jochen

Und dann trainiert man halt ein eigenes Modell, was aber nur die von einem Deep Learning-Modell, das aus ImageNet trainiert wurde, generiert wurden.

Jochen

Also man nimmt sozusagen, also bei den Deep Learning-Modellen, die auf ImageNet trainiert wurden, ist halt so der letzte Layer zum Beispiel der Klassifikationslayer, der das sind halt in die 1000, das ist halt nochmal ein dichter Layer und danach sind nochmal 1000 Ausgabeneuronen, die halt dann die 1000 Klassen von ImageNet darstellen und dann bei jedem Ding kommt halt dann eine Wahrscheinlichkeit raus, sozusagen, dafür, dass es in der Klasse liegt.

Jochen

Und diese beiden Dinger nimmt man einfach weg, also den Klassifikationslayer, und nimmt nur das, was dabei rauskommt, wenn man jetzt, jetzt wirft man halt ein Bild von einer Plastikflasche oben rein und dann kommt halt das raus, was jetzt normalerweise dann als Elefant oder Hund klassifiziert würde.

Jochen

So, ein Feature-Vektor, das an der Stelle noch nicht ein Vektor, das ist halt ein Tensor, der irgendwie so ein bisschen anders aussieht.

Jochen

Den klopft man dann halt flach, irgendwie so in einen Vektor.

Dominik

Einmal mit der großen Küchenrolle drüber.

Jochen

Genau, und dann hat man halt so einen Feature-Vektor extrahiert und das macht man halt mit allen Bildern, die man hat.

Jochen

Vielleicht hat man halt nur so tausend, aber tausend kann man durchaus sammeln, dass das geht.

Jochen

Und halt, oder tausend für jede Klasse, die man halt hat.

Jochen

Und dann trainiert man einen eigenen Klassifikationslayer, sozusagen, ein eigenes Modell auf diesen Features.

Jochen

Und dann kommt man damit auf auch gar nicht so schlechte Ergebnisse.

Jochen

Und hat sozusagen das Deep Learning-Modell nur zur Feature-Extraktion benutzt.

Jochen

Also das ist halt ein, das ist ein super billiges Verfahren.

Jochen

Also, damit kommt man schon im Bereich, in dem man früher nie gekommen wäre, mit wenig Trainingsdaten.

Jochen

Einfach deswegen, weil man sich halt viel von dem Generalisierungs-Power oder Feature-Extraktionsgeschichte, die halt auf einem Image-Nett trainierten Modell, was halt drinsteckt, irgendwie sozusagen transferieren kann auf das Problem, was man hat.

Dominik

Ja, also ich denke mal, diese Daten können wir relativ einfach sammeln.

Dominik

Ist stellt euch einfach mit eurer Kameradato dem Unternehmen, wo ihr das einführen wollt.

Dominik

Ihr müsst halt pro Kategorie 1000 Fotos aus verschiedenen Perspektiven schießen und schon wisst ihr, was da passiert.

Jochen

Genau, genau.

Jochen

Also es ist immer noch nicht einfach.

Jochen

Ja, aber muss das dann auch labeln und so.

Jochen

Aber das wird dann alles, kommt in den machbaren Bereich.

Jochen

Ein Verfahren, was noch besser funktioniert, ist, das nennt sich Feintuning.

Jochen

Da nimmt man halt so ein Modell, so ein Deep Learning-Modell und sagt halt, okay, ich nehme jetzt den obersten Klassifikationslayer oder vielleicht noch ein paar von den Layern mit den abstraktesten Features.

Jochen

Vielleicht ist, wenn ich Plastikflaschen erkennen will, gar nicht so relevant, ob da jetzt Fell drauf ist oder nicht, weil die haben halt kein Fell.

Jochen

Aber ich möchte jetzt zwei Arten von Plastikflaschen unterscheiden, da ist halt vielleicht was anderes wichtig.

Jochen

Das heißt, man nimmt einige der abstraktesten Layer oder Layer, die halt die abstraktesten Features detektieren, die macht man trainierbar den Rest von dem Modell.

Jochen

Also die ganzen Layer, die halt so eher einfache Sachen detektieren, die friert man ein.

Jochen

Dann kann man in Keras einfach sagen, so, diese Layer sind alle eingefroren, die ändern sich beim Training nicht.

Jochen

Und nur die obersten paar Layer dürfen sich halt ändern.

Jochen

Und dann trainiert man neu.

Jochen

Das ist halt wieder ein bisschen aufwendiger, weil man halt viel mehr Parameter halt finden muss.

Jochen

Aber das funktioniert dann noch viel besser.

Jochen

Und damit kommt man dann schon so in die Region von dem, was ImageNet halt auch, äh, was diese Modelle halt auch ImageNet für eine Genauigkeit haben.

Jochen

Und also da kommt man ja vielleicht nicht ganz Richtung menschlich Parum, also aber schon sehr, sehr, also es ist dann schon sehr, sehr gut.

Jochen

Also Feintuning heißt die Methode, funktioniert ziemlich klasse.

Jochen

Und damit kriegt man sozusagen Probleme, wo man früher gedacht hätte, das geht gar nicht, kriegt man nicht in den Griff.

Jochen

Und wenn man jetzt so ein bisschen was von Deep Learning gehört hat, dann denkt man sich vielleicht so, oh, so viele Trainingsbeispiele habe ich gar nicht.

Jochen

Wäre schön, ich kriege es vielleicht theoretisch in den Griff, aber praktisch kann ich es auch nicht machen.

Jochen

Man kriegt die Dinge auch tatsächlich praktisch in den Griff.

Jochen

Also das ist schon, da sollte man vielleicht wissen, dass das möglich ist und wie man das machen kann.

Dominik

Müssen wir mal alles ausprobieren?

Ich bin da total neu richtig drauf.

Dominik

Ich muss mal ein, zwei Leute finden, die Lust haben, dass man bei denen mal so ein Projekt baut.

Jochen

Ja, und damit kann man dann auf jeden Fall schon so richtige.

Dominik

Also wenn ihr Lust habt, dass wir so ein Maschinen-Projekt machen, dann sagt auch mal Bescheid.

Jochen

Wow-Effekt mit erzeugen.

Jochen

Ja, das wollte ich auf jeden Fall noch erwähnen.

Jochen

Deswegen ist das auch so interessant.

Jochen

Und ich bin auch gespannt, da wird es halt in den nächsten Jahren, das dauert natürlich jetzt sehr lange.

Jochen

Also es gibt halt viele Dinge, die so theoretisch gelöst sind.

Jochen

Und ImageNet ist natürlich so ein Dataset, das kann man jetzt für viele Sachen in der Praxis geht das, aber für manche Sachen geht das noch nicht.

Jochen

Für viele andere Sachen gibt es noch keine tollen Datasets.

Jochen

Aber bis das jetzt sozusagen, also viele dieser Probleme, mit denen man in der Praxis was anfangen könnte, sind jetzt theoretisch im Griff und man muss es halt nicht nur praktisch umsetzen.

Jochen

Das wird aber wahrscheinlich noch irgendwie lange dauern.

Jochen

Wahrscheinlich wird es die nächsten zehn Jahre dauern, bis man das in Produkten im Alltag sieht, die das wirklich benutzen, auch richtig benutzen.

Jochen

Weil am Anfang, jetzt müssen die Leute erstmal lernen, wie das geht, die werden erstmal Fehler machen, das wird erstmal, wird man viele Dinge komplett falsch machen und dann dauert das halt irgendwie ein paar Jahre, bis die Leute anfangen, das richtig hinzubekommen.

Jochen

Und dann dauert es nochmal ein paar Jahre, bis die Daten ordentlich sind und ja, so wie das halt so ist.

Jochen

Sehr langsam, ja, ist leider so.

Jochen

Aber wahrscheinlich wird man da in vielen Bereichen tolle Verbesserungen sehen.

Jochen

Und mir wird das ja schon reichen, wenn ich im Supermarkt nicht immer irgendwie fluchend vor dem Pfandautomaten stehen muss.

Jochen

Wobei ich wahrscheinlich braucht man ja nicht mal Deep Learning, das ist einfach nur kaputt.

Jochen

Ach, vielleicht geht's doch nicht.

Jochen

Das ist das einfach, Problem schon nicht geht.

Jochen

Naja.

Jochen

Ich gebe die Hoffnung nicht auf.

Dominik

Ja, ja, genau, das wollte ich gerade sagen.

Dominik

Also eben mal so.

Dominik

Die Kontinent, die ADI kriegen wir alle nicht hin und die ganzen Roboter und so, aber ja, vielleicht ist es doch cool.

Dominik

Also nützlich.

Gut.

Jochen

Ja, also ein praktisches Beispiel hatten wir hatten eine Zelt vom.

Jochen

Genau, was wir uns vielleicht noch ein bisschen angucken können, ist das Visualisierungs-Notebook.

Dominik

Ja.

Ja.

Jochen

Weil.

Ja.

Jochen

Da bekommt jemand nicht, was er möchte.

Ja, eigentlich.

Nicht gut.

Ja.

Jochen

Äh, genau.

Jochen

Da sind sozusagen die, wenn man die ganzen Notebooks halt ausgeführt hat, dann werden die Modelle halt auch gespeichert und hier werden sie halt nochmal reingeladen.

Jochen

Da werden auch die quasi endgültigen Scores auf den Testdaten ermittelt, sozusagen und man kann halt so ein bisschen sich angucken, ja, welche Features werden eigentlich so aktiviert, wenn man jetzt so ein Bild von der Katze zum Beispiel da reinwirft.

Jochen

Und ja, da gibt es auch ein Ding, was sich so ein bisschen was so ein bisschen zeigt, ach, jetzt das Visualisierungs-Notebook, stimmt.

Jochen

Da ist auch das tatsächlich eher so, das zeigt, ja, da sind ein paar kaputte Sachen dabei.

Jochen

Und das zeigt tatsächlich eher so, wo wie funktioniert das mit den Convolutionalern und so.

Jochen

Das wollte ich aber gar nicht zeigen.

Jochen

Das ist ein anderes Notebook, was ich zeigen wollte.

Dominik

Ich habe gesagt, dass du das zeigen wolltest.

Jochen

Ja, hat mich vertan.

Jochen

Evaluation-Notebook, das war das.

Jochen

Genau, das ist das, wo die Modelle geladen werden, die jetzt irgendwie gespeichert wurden auf der Platte.

Was habt ihr gespeichert?

Als Pickel?

Jochen

Nee, ähm HDF5.

HDF5.

Dominik

Was ist das?

Jochen

Ist der Vorläufer von Netz-CDF, oder ich weiß es nicht so genau.

Jochen

Ist auch so ein wissenschaftlichen Bereich übliches Format, irgendwie Daten zu speichern.

Jochen

Ja, im Grunde stehen da halt die Parameter vom Netz drin.

Jochen

Und ja, man könnte die auch irgendwie anders speichern.

Jochen

Man könnte es wahrscheinlich auch pickeln, aber ja.

Jochen

Genau.

Jochen

Ja, und da kann man halt mal vergleichen, ob die Scores, die man auf den Testdaten bekommt, halt auch das sind, was man jetzt erwarten würde, nachdem man das Modell auf den Validationsdaten irgendwie getestet hat.

Jochen

Und das sieht eigentlich alles so aus, als ob das halbwegs stimmt.

Jochen

Und dann kann man da so Dinge tun wie, man nimmt einfach mal Beispielbilder, die man da reinwirft.

Jochen

Ich weiß gar nicht, ob ich die mit eingecheckt habe.

Jochen

Wenn ja, dann kann man einfach die, die da auskommentiert sind, probieren.

Jochen

Man kann aber auch eigene Bilder nehmen, wo sie halt da an den.

Dominik

Fotografiert eure Katze, fotografiert euren Hund.

Jochen

Ja, genau, man fotografiert irgendwas, aber man kann.

Dominik

Ob das wirklich eine Katze und ein Hund ist, also zumindest nach der Meinung von dem Algorithmus.

Jochen

Ja, wird man das natürlich auch irgendwie wahrscheinlich sowas schon irgendwie so haben.

Dominik

Ihr könnt auch was ganz anderes fotografieren und fragen, ob es eine Katze und ein Hund ist und gucken, was rauskommt.

Ja.

Jochen

Ja, egal.

Jochen

Genau, und dann wird das halt runter skaliert.

Jochen

Das ist auch ein bisschen, sieht dann ein bisschen deprimierend aus, weil man sieht nicht mehr so viel auf dem Bild.

Jochen

Das sind also immer so 150 mal 150 Pixel-Bilder, die da reingehen.

Jochen

Und dann kann man halt mal die Modelle, die man da hat, hernehmen und die einfach klassifizieren lassen, was sie dann darauf sehen.

Jochen

Und dann sieht man schon, dass das vom Scratch-Model halt nicht so richtig toll funktioniert vielleicht.

Jochen

Das sagt man im Hund dann irgendwie mit einer 80%igen Wahrscheinlichkeit, oh, das ist eine Katze.

Jochen

Oh.

Jochen

Ja, da gab es dann das mit Data Ocumentation so ein bisschen um Overfitting zu reduzieren, ist halt schon so ein bisschen besser.

Jochen

Aber das Feature-Extraction-Modell, das sagt dann schon, oh, das sieht aber eher wie ein Hund aus.

Jochen

Und dann, ja, das Feintuning ist halt nochmal deutlich besser.

Jochen

Und das kann man dann auch nochmal auf mehreren Bildern machen und das ist vielleicht auch mal ganz interessant zu sehen, welche Bilder halt in dem Beispieldata-Set da so drin sind.

Jochen

Und man kann sich das Ganze nochmal so als Tabelle ausgeüben.

Jochen

Ich habe übrigens, das war bei der letzten letzten Treffen der Python User Group, habe ich das auch irgendwie mal so ein bisschen vorgestellt.

Jochen

Und da war das irgendwie, sah das nicht gut aus, weil dann stand da irgendwie Cat 0% oder sowas, aber das habe ich jetzt hier mal gefixt.

Jochen

Das war einfach nur so, dass das der Klassenname war immer Cat und 0% bedeutete einfach, es ist ein Hund.

Jochen

Oh.

Jochen

Also es war schon richtig.

Jochen

Es war nur blöd dargestellt, das habe ich jetzt nochmal geändert, dass dann, wenn es irgendwie kleiner 50% ist, dass dann ein Hund als Klasse dasteht.

Dominik

Ja, es war auf jeden Fall super schön zum Anteilen und ich glaube auch so zum Visualisieren von so den ersten Test.

Dominik

Solltet ihr es auf jeden Fall auch mal ausprobieren.

Jochen

Ja.

Jochen

Genau, und dann.

Dominik

Und ich glaube, so von dem ganzen theoretischen Überbau haben wir es schon so ziemlich viel geschafft heute, würde ich sagen.

Jochen

Ich gucke nochmal gerade, ob es noch irgendwas gibt, was.

Dominik

Hast du noch einen letzten kleinen Punkt?

Nö.

Jochen

Ne, das ist, äh, ich glaube, wir sind tatsächlich irgendwie so halbwegs durch.

Dominik

Dann würde jetzt ja die nächste Chapter mal kommen und wir würden vielleicht noch einfach kurz die Picks nehmen, die wir immer so gerne noch wieder eingeführt hatten.

Dominik

Ich glaube, die gefielen euch auch ganz gut.

Dominik

Welches Modul pickst du diese Woche?

Jochen

Ja, habe ich auch in einem Podcast von gehört.

Jochen

Ich weiß jetzt gar nicht mehr, ob es Python Bytes war.

Jochen

Doch, ich meine.

Jochen

Aber und zwar gibt es da ein sehr schönes Modul namens MattMat.

Jochen

Was das tut, ist, also es gibt ja, also Testen ist ganz wichtig und so.

Jochen

Und es gibt halt auch so Ansätze, irgendwie Tests vielleicht zu automatisieren.

Jochen

Ein interessanter ist Hypothesis, das ist vielleicht dann auch irgendwie auch ein Pick.

Jochen

Das Ding generiert halt mögliche Eingaben für Funktionen und so und probiert die halt alle durch und sagt dann Bescheid, wenn es irgendwo Probleme gab.

Jochen

Das ist aber nur ein Ansatz und hat man verfolgt einen anderen und den finde ich eigentlich ziemlich cool.

Jochen

Man kann sich natürlich sowas ausgeben lassen wie Coverage, also sozusagen, wie viel Prozent von den Zeilen, die man jetzt irgendwie hat, ist eigentlich quasi mal durchlaufen worden, wenn man jetzt die Test-Suite durchläuft.

Jochen

Das gibt einem so einen ganz guten Anhaltspunkt dafür, wie vollständig die Tests sind, aber naja, das heißt ja jetzt nicht, dass es wirklich funktioniert, dass wirklich, wenn etwas kaputt geht, man das halt auch tatsächlich bemerken würde in vielgeschlagen Test.

Jochen

Es könnte sein, aber es kann halt auch Fälle geben, wo das dann nicht passiert.

Jochen

Und Matt Matt setzt da irgendwie so ein bisschen an und macht etwas sehr Interessantes und zwar ändert es halt zufällig irgendwie Dinge im Code.

Dominik

Irgendwelche Datentypen

Jochen

oder sowas.

Jochen

Ja, so es macht zum Beispiel größer in kleiner Zeichen oder sowas, ändert Bedingungen, fügt irgendwie was hinzu oder so und guckt, ob Testsfeed schlagen.

Jochen

Und das ist natürlich irgendwie echt nett.

Jochen

Also sozusagen, es macht halt irgendwie zufällige Änderungen an deinem Code und guckt dann halt irgendwie.

Dominik

Bist du dann dein Test gut genug, um das zu entdecken?

Jochen

Ist seine Testfeed gut genug zu finden, gut genug, um ist seine Testabdeckung gut genug, um rauszufinden, dass jetzt irgendwie hier was zufällig geändert wurde.

Jochen

Und das ist natürlich schon echt ein sehr interessanter Ansatz.

Dominik

Sehr, sehr gut.

Dominik

Also gerade wenn man sowas mich richtig mal bauen möchte, oder?

Ja, genau.

Jochen

Das ist ja halt so mein Pick für diese Episode.

Dominik

Ja, also ich würde tatsächlich auch nochmal C-Bone kurz auswählen.

Dominik

Das hatten wir zwar schon in der Pandas-Episode, glaube ich, kurz vorgestellt, aber dass einfach, wenn man Matplot-Lib so kennt, einfach die total tolle grafische Erweiterung, dass alles ein bisschen schicker aussieht und mit der es einfach auf Matplot-Lib draufpackt und dann C-Bone reinbaut.

Dominik

Und ich würde noch gerne irgendwie so drei Kleinigkeiten aus der Standardbibliothek, aber die ich jetzt so ein bisschen mehr drin bewahre, weil ich was dazu geschrieben hatte, nur kurz vorstellen.

Dominik

Ist natürlich jetzt wieder der Noob-Pick, aber das ist da trotzdem vielleicht für einige interessant.

Dominik

Und zwar kennt ihr hoffentlich ArcPass, also mit dem man vernünftig so die Parameter zu Skripten übergeben kann.

Jochen

Hast du da gibt es irgendwie von, wie heißt das von Google?

Jochen

Gibt es eine Bibliothek?

Dominik

Es gibt noch Klick.

Jochen

Klick, genau, ja.

Dominik

Und genau, und ja, natürlich dann die Standardvariante.

Dominik

Aber ich finde ArcPass ziemlich cool.

Dominik

Also ich finde es auch besser als Klick.

Dominik

Also Klick benutzt halt irgendwie so Dekoratoren, um das irgendwie zu machen.

Dominik

Und ja, weiß nicht, fand ich nicht so toll, aber obwohl die Sundheit auch ganz nett ist, aber ArcPass fand ich auch irgendwie ganz nice, um das machen.

Dominik

Und dann, ja, GetPass natürlich, um da irgendwie so Passwörter reinzubekommen, irgendwie als Zerschlüssel-Text, dass man nicht direkt sieht, was eingegeben wird.

Dominik

Auch immer gut, wenn man sich irgendwo einloggt, braucht man

das vielleicht.

Jochen

Ja, das ist tatsächlich super.

Jochen

Das ist vor allen Dingen auch schön in Notebooks, weil ansonsten schreibt man das ja auch irgendwie mit in die Notebooks rein und checkt genau, dass irgendwo ein oder so ist ja irgendwie.

Dominik

Und ja, ich habe ab und zu noch das Text-Rap-Modul benutzt.

Dominik

Einfach nur zum Didenten meistens von irgendwelchen mehrzeiligen Dog-Strings, die sonst irgendwie verrutscht wären, irgendwie einfach in meinem Struktur, in meinem File.

Dominik

Konnte man so ganz gut darstellen.

Dominik

Also falls ihr das Problem habt, Textwrap.

Dominik

Ja, das war es eigentlich schon so mit den Modulen und ich hoffe, euch hat die Folge jetzt wieder gefallen, Machine Learning.

Dominik

Egal wo ihr die gehört habt gerade.

Dominik

Also wir haben jetzt gerade ausnahmsweise immer nachmittags, sonst nehmen wir immer abends auf.

Dominik

Gerade relativ gutes Wetter.

Dominik

Ich habe schon fast überlegt, ob man rausgehen soll.

Ja.

Jochen

Stimmt könnte man eigentlich auch.

Jochen

Es ist für dich, ja, Wetter ist momentan super.

Jochen

Frühling, voll gut.

Dominik

Ja, aber ansonsten, genau.

Dominik

Hört, wo immer ihr möchtet.

Dominik

Bleibt uns gewogen und schreibt uns euer Feedback an hallo.peisen podcast.de.

Ja, wir hören uns.

Jochen

Oh ja, bis zum nächsten Mal.

Bis zum nächsten Mal.

Tschüss.

Jochen

Tschüss.