Transcript: PP08 - Machine Learning am Beispiel Bildklassifikation

· Back to episode

Full episode transcript. Timestamps refer to the audio playback.

Dominik

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

Dominik

Wir sind direkt wieder da. 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 unseren hallo-at-python-podcast.de.

Dominik

Könnt ihr uns eigentlich relativ fix erreichen.

Dominik

Links und zusätzliche Infos findet ihr wie immer

Dominik

unten in den Shownotes.

Dominik

Ja, was machen wir denn heute? Wir gehen noch mal ein bisschen auf die Grundlage von Machine Learning

Dominik

ein und wollen

Dominik

euch aber erstmal kurz ein bisschen vorstellen, wo wir

Dominik

in letzter Zeit noch waren. Und zwar waren wir

Dominik

auf der Subscribe, wo wir gestern schon drüber geredet hatten,

Dominik

noch auf dem

Dominik

PyCamp Cologne,

Dominik

einem Python-Treffen für die

Dominik

Python-Community. Ja, Moment, ich mach hier

Jochen

gerade mal eine Kapitelmarke, weil das können wir nämlich jetzt seit

Jochen

neuestem auch. Und sag mal, wir

Jochen

nennen jetzt mal

Jochen

wo waren

Jochen

hier so

Jochen

in letzter Zeit.

Dominik

Ja, also wir können jetzt tatsächlich Kapitelmarken

Dominik

in unserer eigenen Software DangoCast.

Dominik

Das heißt, auch wenn ihr die benutzen wollt für euren eigenen Podcast,

Dominik

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,

Dominik

was euch nicht interessiert und wisst direkt, worum es geht.

Dominik

Ja, das war, also genau,

Jochen

wir waren eben auf so einer Podcaster-Konferenz

Jochen

in Köln. Wir dachten uns, wenn die schon mal

Jochen

hier in der Gegend ist, dann kann man da ja mal hingehen,

Jochen

wenn man jetzt auch schon

Jochen

mit den Podcasten mal angefangen hat.

Jochen

Und das war eine tolle Konferenz.

Jochen

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

Dominik

Eigentlich alle wollten sagen, habt ihr keine Kapitelmarken? Also wir benutzen das eigentlich immer.

Jochen

Hat mich ehrlich gesagt so ein bisschen überrascht, weil ich benutze das nie. Ich höre jetzt schon ganz lange Podcasts oder so, aber ich habe noch nie Kapitelmarken benutzt.

Jochen

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

Jochen

und ich kann da nicht viel tun, ich kann da nicht auf irgendwelche Kapitel,

Jochen

weil selbst wenn ich, also ich möchte mich ja eigentlich gar nicht darum kümmern,

Jochen

sondern das soll halt laufen, 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 und 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,

Jochen

Doch, es gibt sogar welche mit Werbung, aber

Jochen

ja, das kippe ich dann

Jochen

eher so von Hand. Stimmt.

Jochen

Ja, aber Kapitelmarken wären dafür natürlich

Dominik

auch recht praktisch. Ja, ich benutze die eigentlich auch tatsächlich

Dominik

nicht. Also entweder höre ich halt oder nicht.

Dominik

Plus, Minus, Stopp. Aber gut,

Dominik

für euch jetzt, da ist dann natürlich trotzdem da.

Jochen

Ja, aber nachdem das irgendwie alle

Jochen

irgendwie angemerkt haben, dass sie das doch gut

Jochen

fänden, wenn das da drin ist. Und

Jochen

natürlich ist es schon irgendwie auch natürlich sinnvoll,

Jochen

da eine gewisse Struktur

Jochen

drin zu haben, haben wir dann halt mal geguckt, ob sich

Jochen

das irgendwie einbauen lässt. Und das

Jochen

war nicht so schwer.

Jochen

Und jetzt sind sie

Jochen

drin, also gut in einer etwas vereinfachten

Jochen

Form. Also

Jochen

was halt momentan noch nicht geht,

Jochen

sind halt

Jochen

sowas wie

Jochen

das Links und Bilder, die ja

Jochen

auch in Kapitelmarken enthalten sein können,

Jochen

automatisch mit drin sind, wenn man

Jochen

da jetzt den Text, der bei

Jochen

Ultraschall beispielsweise, wenn man sagt, exportiere

Jochen

Kapitelmarken, dann fällt da raus

Jochen

halt so eine Textdatei,

Jochen

wo die erste Spalte ist halt irgendwie so ein

Jochen

Zeitstempel oder ein Startzeitpunkt

Jochen

und die zweite Spalte ist halt irgendwie ein Titel.

Dominik

Ich glaube, jetzt haben schon einige Leute, die

Dominik

diese Kapitelmark übersprungen.

Dominik

Ja, dafür sind sie da.

Dominik

Genau, man

Jochen

kann jetzt aber zum Beispiel

Jochen

auch noch da Links reinschreiben, wenn man die in spitze Klammern

Jochen

setzt und man könnte auch noch Bilder

Jochen

hinzufügen. Jedenfalls kann man das, wenn man

Jochen

die jetzt, was man natürlich tun sollte, bei Auphonic

Jochen

auch noch mit reintut, damit die halt

Jochen

in der Audiodatei auch

Jochen

mit drin sind, damit man die auch im Player hat.

Dominik

Wir haben noch gar nicht so perspektiv gesagt, also wie man das

Dominik

macht, also den Podcast aufnehmen mit Ultraschall

Dominik

und das dann auf Hornig reinpumpen

Dominik

und dann halt unserem Cast hosen.

Dominik

Ja, wir wollten eigentlich über das Python Camp, glaube ich, noch mal

Dominik

reden. Also wir haben jetzt schon viel über die

Dominik

Kapitel mal gesagt. Ihr habt die jetzt bei uns mit

Dominik

im Django-Cast.

Dominik

Findet ihr auf PyPy und auf

Dominik

Jochen's Repo. Genau.

Jochen

Ja. Ja, genau.

Jochen

Eine weitere Veranstaltung, auf der wir waren,

Jochen

ist jetzt letzte Woche, letzte Wochenende

Jochen

das Python Camp. Das war richtig cool. Also richtig

Dominik

tolles Community-Treffen und gab leckeres

Dominik

Grillen am Abend und so und ganz

Dominik

viele tolle Talks und

Dominik

ja, also kleine Riding-Talks und verschiedene

Dominik

kleine Projekte vorzustellen

Dominik

und richtig gute Sessions.

Dominik

Jochen hat selber eins gemacht über Machine Learning

Dominik

und dann hatten wir den Cast auch da.

Jochen

Ja, war ziemlich gut. Und genau,

Jochen

das war echt toll.

Jochen

Ja,

Jochen

ich weiß nicht genau, ob wir irgendwas darüber

Jochen

erzählen wollen, was wir uns da so

Jochen

angeguckt haben, aber ich glaube gleich.

Dominik

Man kann ja irgendwie bei Python

Dominik

BarkCamp.eu auf die Seite mal gehen,

Dominik

Kannst du dir das mal alles angucken.

Dominik

Da gibt es auch relativ gute Dokumentationen

Dominik

in den einzelnen Sessions jeweils,

Dominik

was da so gemacht worden ist.

Dominik

Zumindest haben ziemlich viele ein Protokoll gebaut.

Dominik

Ja, ich habe ein bisschen was zu Foxhut gemacht.

Dominik

Das ist so eine Musikbibliothek für Python.

Dominik

Ich habe noch ganz, ganz tolles von Oliver gesehen.

Dominik

Er hat irgendwie die Landtagsreden irgendwie alle gepasst.

Dominik

Das ist sehr spannend.

Jochen

Das ist eine super interessante Geschichte.

Jochen

Genau, die haben halt alle ihre Reden und Protokolle,

Jochen

Sitzungsprotokolle als PDF veröffentlicht.

Jochen

das wäre natürlich schon sehr praktisch, wenn man da irgendwie

Jochen

Statistiken drüber machen könnte oder so.

Jochen

Und genau, Oliver hat da versucht,

Jochen

das irgendwie alles mal so irgendwie

Jochen

zu parsen und

Jochen

in so einheitliches Format zu bringen.

Jochen

Ja, das ist auf jeden Fall sehr spannend.

Dominik

Ich bin total gespannt, wenn das weiter ist.

Dominik

Ein bisschen, was man damit alles so bauen kann.

Dominik

Ja, und dann ist es

Dominik

natürlich

Dominik

noch einige andere spannende Sachen.

Dominik

DevOps war noch ein ziemlich cooler Talk dabei,

Dominik

der mir gefallen hat und so wie man

Dominik

Kommentare in Python am besten schreibt.

Dominik

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

Jochen

Ja, das war sowieso ein überraschender Trend.

Jochen

Also ich meine, dass irgendwie Machine Learning und so ein Thema ist, das war eigentlich in den letzten Jahren auch schon immer so.

Jochen

Aber es gab wirklich mehrere Sessions und damit halt auffällig viele für diesen ganzen Bereich Internet of Things.

Dominik

Ja gut, aber so Bastel gab es auch schon immer so dabei, bei den Sprints auch und so, da war doch immer mindestens ein, zwei Gruppen, die irgendwas gebastelt haben.

Jochen

Ja, 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 eigener Regie, das war eigentlich, das hatte ich, also fand ich jedenfalls auffällig.

Dominik

Also werden wir euch auch gerne nochmal was zu erzählen, aber das wird vielleicht noch ein bisschen auf sich warten lassen, unsere Liste ist das noch nicht so ganz nach oben gerutscht.

Dominik

Ja, ich habe hier nette Menschen

Dominik

kennengelernt, also vielleicht bringen wir da auch noch die eine oder andere

Dominik

Folge mit zusammen und mal gucken, was da so rauskommt.

Dominik

Genau, wir haben auch kurz vergestellt, dass wir

Jochen

da so einen Podcast machen und

Jochen

da werden

Jochen

bestimmt noch einige interessante Gespräche

Jochen

daraus entstehen. Das klang

Dominik

alles sehr gut. Jetzt ist Zeit für eine Tepta-Marke.

Dominik

Was soll ich mal, hebe ich immer die Hand und winke?

Jochen

Genau, winke einfach mal. Was soll ich

Dominik

denn da reinschreiben? Veranstaltungshinweise.

Dominik

Ah, Veranstaltungshinweise, alles klar, okay.

Dominik

Veranstaltungshinweise.

Dominik

Ja, wir haben nämlich tatsächlich dann natürlich auch

Dominik

mit Leuten geredet, die ganz viele neue

Dominik

Veranstaltungen vorgestellt haben, wo man überall so hinfahren

Dominik

kann. Jetzt als nächstes, das ist ja

Dominik

schon nächste Woche, ist ja die PyConX in Florenz.

Dominik

Das ist ein internationales

Dominik

Event. Also warum man da hinfahren soll, das ist natürlich tolles Wetter

Dominik

jetzt gerade so in Tyskana.

Dominik

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

Dominik

Und dann so ein bisschen Paison machen, das ist bestimmt cool.

Dominik

Vom 2. bis 5. Mai

Dominik

Florenz.

Dominik

Ja, dann geht's weiter. Ich weiß nicht, das ist jetzt gerade

Dominik

gar nicht so geordnet. Ich muss jetzt mal gucken.

Dominik

Juni.

Dominik

Geht es weiter mit der GeoPython in Basel?

Dominik

Ja.

Dominik

In Basel, der Martin hat da so ein paar Sachen erzählt,

Dominik

der macht da ziemlich viel

Dominik

und der hat im Juli direkt das Nächste

Dominik

und zwar ist dann nämlich die...

Dominik

Ja, EuroPython.

Dominik

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 gesagt.

Dominik

Ja, genau.

Dominik

Schönes neues Gebäude, ja.

Jochen

Teilweise jedenfalls für diese Veranstaltung.

Jochen

Ja, EuroPython ist eigentlich immer toll

Jochen

und ehrlich gesagt, ich war aber noch nie da.

Jochen

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

Dominik

Und gehst du nach Basel in die Schweiz?

Jochen

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

Jochen

Ja, ist ein bisschen knapp.

Jochen

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

Jochen

Also ist es entweder Frühjahr...

Jochen

Meinst du Juli, Juni, Oktober, Frühjahr?

Jochen

Naja, Conference Season.

Jochen

Ja, okay.

Dominik

Ja, also danach, im September geht es nach Bilbao.

Dominik

Am 2. bis 6. ist in Bilbao die EuroSciPy.

Dominik

Das ist in wissenschaftlichen Sachen auch sehr interessant.

Dominik

Und wir haben die PiData in Berlin vom 9. bis 13. Oktober.

Jochen

PyCon.de beziehungsweise PyData

Jochen

kombiniert in Berlin

Jochen

und also zumindest ich werde auf jeden Fall

Jochen

da auch sein.

Dominik

Da bin ich nicht da, da bin ich

Dominik

in Prag.

Dominik

Chicago Blackhawks.

Dominik

Ja, ja, und

Dominik

genau, damit haben wir

Jochen

ja schon fast alle, müssen wir dieses mit

Jochen

diese Veranstaltungshinweise auch nie wieder machen, dieses Jahr,

Jochen

weil damit haben wir alles Richtige durch, oder?

Dominik

Ja, vielleicht kommt noch den MP Sprint erwähnen, den es gibt,

Dominik

den haben wir glaube ich schon vergessen. Oh, achso, richtig, stimmt.

Jochen

genau, Pi-DDF-Sprint, wann war

Jochen

denn der nochmal? Im 4., 5.,

Jochen

Mai? Ja.

Jochen

Ich glaube schon. Ja.

Jochen

4., 5. Mai.

Dominik

Tatsächlich bei Trivago, wieder hier im Medienhafen

Dominik

in Düsseldorf. Ja. Genau.

Jochen

Das ist auch immer eine tolle Veranstaltung. Gut, macht natürlich

Jochen

nur wirklich Sinn, wenn man

Jochen

so ein bisschen aus der Gegend kommt, aber

Jochen

da ist das wirklich dann auch

Jochen

immer sehr, sehr nett. Genau, da bilden sich

Dominik

ein paar Grüppchen und programmieren an irgendwelchen Projekten rum

Dominik

und da ist es immer sehr lustig, hat Spaß zusammen,

Dominik

lernt sich ein bisschen kennen.

Dominik

Sollte ich euch für anmelden beim Meetup?

Dominik

Und ja.

Dominik

Genau.

Dominik

Ja, ich glaube, das war's

Dominik

für das nächste Mal hier so in der Gegend.

Dominik

Ja,

Jochen

okay, dann haben wir damit die Veranstaltungshinweise

Jochen

auch irgendwie durch.

Jochen

Dann wäre es wieder Zeit für den Chapter-Markt.

Jochen

Ach, ich winke übrigens hinter dir jetzt ein bisschen.

Jochen

Ach so.

Jochen

Wenn du gerade dein Bild im Kopf

Jochen

manchmal und ja.

Jochen

Gut, okay, dann

Jochen

ja, und danach gehen wir einfach so

Jochen

quasi. Ja, ich würde sagen, dass du

Dominik

wieder, genau. Alles klar. Wir fangen jetzt mit der

Dominik

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?

Dominik

Puh.

Dominik

Ja, also wir haben da auf jeden Fall verschiedene Unterthemen

Dominik

und sonst setzen wir die Chapter Marks

Dominik

also da später ein. Kannst du da irgendwie so einen anonymen

Dominik

Chapter Mark setzen, dass man einfach

Dominik

dann später den benennt, dann

Dominik

müssen wir nicht so viel unterbrechen und einfach so klicken.

Jochen

Das geht natürlich auch. Ich brauche da eigentlich

Dominik

nur... Also ich brauche so einen Buzzer in der Hand

Dominik

zu drücken. Selbstauslöser von

Dominik

so einer Kamera. Das wäre tatsächlich nochmal

Jochen

toll, wenn man irgendwie so einen Bluetooth-Buzzer

Jochen

oder sowas hätte, der das

Jochen

irgendwie dann eine Capital-Marke setzt.

Jochen

Naja, da müssen wir halt

Jochen

hardware-technisch noch so ein bisschen aufrüsten, aber

Jochen

ja. Du hast doch irgendwo ein Raspberry stehen,

Dominik

den können wir über das Netzwerk anschächen und dann schenken wir

Dominik

den per Bluetooth ans Raspberry und dann drückt der einfach

Dominik

Signal und dann sagt der Chapter-Markt Boben.

Dominik

Ja, genau. Das brauchen wir in Python.

Dominik

Okay. Ja.

Dominik

Nächstes Mal. Ja, also

Dominik

Machine Learning. Ja, was hatten wir gestern

Dominik

ja gerade die Folge gemacht, wo wir so ein bisschen die

Dominik

Einführung besprochen hatten.

Dominik

Was ist das und so?

Jochen

Menge zu erzählt und

Jochen

die Teile

Jochen

versuchen wir jetzt auch mal nicht zu wiederholen.

Jochen

Mal schauen, ob das klappt.

Jochen

Aber es ist natürlich irgendwie ein weites Feld

Jochen

und man kann da irgendwie ganz

Jochen

viel zu erzählen und

Jochen

wenn ich mich

Jochen

richtig erinnere, also Dinge, die wir gestern

Jochen

dann noch nicht so wirklich erzählt hatten,

Jochen

aber die auch irgendwie wichtig sind, ist halt,

Jochen

ich würde mal sagen, so eine grundsätzliche

Jochen

Einteilung, was hat man da

Jochen

irgendwie an groben

Jochen

Geschichten, die wichtig

Jochen

sind, ja,

Jochen

supervised learning, unsupervised

Jochen

learning, reinforcement learning. Wir hatten

Jochen

gestern das Beispiel supervised

Jochen

learning, also sozusagen Textklassifikation,

Jochen

das ist ein klassisches Beispiel,

Jochen

das allereinfachste, das binäre. Genau, wir hatten

Dominik

Reuters Text, da ist ein Satz und der wurde dann gemeinsam

Dominik

analysiert mit dem Jupiter Notebook, was

Dominik

der Jochen auch veröffentlicht hat,

Dominik

Da kann man das alles so ein bisschen nachvollziehen

Dominik

und daran auch so ein bisschen die Praxis vielleicht lernen.

Dominik

Ja, vielleicht aus dem theoretischen Background

Dominik

dann jetzt nochmal Details.

Dominik

Was ist denn der Unterschied von Supervised Learning?

Jochen

Naja, dass man halt sozusagen zu jedem Beispiel weiß,

Jochen

was rauskommen soll.

Jochen

Dass man halt nur das, in Anführungsstrichen,

Jochen

nur das Problem hat,

Jochen

dass man irgendwelchen Eingaben, halt Ausgaben zuordnen muss

Jochen

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, die dann im Detail auch nochmal so auf Deep-Learning-Geschichten eingeht.

Jochen

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 darauf einzugehen.

Jochen

Und es ist halt so, dass viele Tasks, die vorher schwer waren, also eben im Bereich Bilderkennung oder Speech-to-Text, alles was irgendwie, worum es geht, so ein Signal, wo die Features nicht so richtig offensichtlich sind.

Jochen

Also man hat die Daten nicht strukturiert, sondern man hat halt irgendwie ein Bild, also Pixel oder man hat halt irgendwie ein Audiosignal oder so und man möchte damit halt überwachte, also supervised Machine Learning machen.

Jochen

war das pro Domain

Jochen

früher immer sehr aufwendig, weil man dann halt

Jochen

Domain-spezifische Features erstmal extrahiert

Jochen

hat. Also das

Jochen

heißt irgendwie bei Bildern

Jochen

sowas, diese Scale-Invariant

Jochen

Feature-Geschichten

Jochen

und bei Audio dann wiederum

Jochen

andere und so, sodass es halt eine große Rolle spielt,

Jochen

in welcher Domain man da unterwegs war

Jochen

und das ist natürlich eine sehr

Jochen

unschöne Geschichte, weil man kann

Jochen

halt sozusagen die Erfahrungen, die man im einen Gebiet

Jochen

gesammelt hat, nicht so richtig gut in ein anderes

Jochen

Gebiet mitnehmen.

Jochen

Und das hat auch nicht wirklich gut funktioniert.

Jochen

wenn man jetzt nicht Texte

Jochen

klassifizieren möchte, das hat halt auch mit

Jochen

diesem Backup-Words-Ansatz, den wir gestern

Jochen

auch schon hatten und TF-EDF, funktioniert das

Jochen

schon halbwegs gut.

Jochen

Das ist schon ziemlich klasse.

Jochen

Aber

Jochen

wenn man

Jochen

jetzt Bilder zum Beispiel klassifizieren möchte

Jochen

in sowas wie Hundekatzen oder

Jochen

Elefanten, Eichhörnchen,

Jochen

das hat nie wirklich gut

Jochen

funktioniert. Es gibt da so ein klassisches Dataset

Jochen

namens ImageNet.

Jochen

Da sind eineinhalb Millionen Bilder drin,

Jochen

ungefähr tausend Klassen.

Jochen

Und ja, das ist manchmal

Jochen

so ein bisschen eigen,

Jochen

dieses Dataset.

Jochen

Jemand hat mal,

Jochen

ich glaube, das war André Carpathy

Jochen

oder so, der jetzt irgendwie

Jochen

Data Science Chef von Tesla ist.

Jochen

Der hat

Jochen

irgendwann mal, weil er

Jochen

wissen wollte, wie ist eigentlich der Fehler von

Jochen

Menschen auf diesem Set,

Jochen

selber sich so ein Annotationstool in JavaScript

Jochen

gebastelt und

Jochen

ja,

Jochen

dabei halt irgendwie eine

Jochen

der Sachen, die er gelernt hat, die für ihn überraschend waren, ist

Jochen

das halt ein Drittel der

Jochen

Bilder

Jochen

sind halt irgendwie irgendwelche Hunde oder Hunderassen

Jochen

und das ist natürlich total auch für Menschen super

Jochen

ätzend schwierig, irgendwie

Jochen

genau rauszukriegen, wenn man jetzt ein Bild

Jochen

und die sind dann, werden alle relativ klein gerechnet,

Jochen

Bilder. Also man hat da irgendwie so

Jochen

150x150 Pixel Ding, wo man

Jochen

nicht viel drauf erkennt, wenn das ein großes Bild

Jochen

war und man hat das so runterskaliert. Und man sieht da

Jochen

irgendwas Wuscheliges und dann muss man sagen, ist das

Jochen

jetzt irgendwie, keine Ahnung,

Jochen

ein Dackel oder

Jochen

ein, weiß ich nicht,

Jochen

Spezialdackel.

Jochen

Ich kenn mich jetzt

Jochen

auch damit nicht aus und er auch nicht.

Jochen

Und dann hat er ganz schön geflucht

Jochen

und hat dann irgendwie daneben

Jochen

sich Bilder von den einzelnen

Jochen

Hunderassen hingelegt und dann

Jochen

irgendwie das und ja,

Jochen

hatte doch erstaunlich viele Fehler dabei

Jochen

und das war

Jochen

auch mit den klassischen Ansätzen

Jochen

war dieses Problem furchtbar schwierig

Jochen

für Computer, bis dann halt

Jochen

irgendwann 2011, glaube ich, war das mit

Jochen

AlexNet.

Dominik

Ja, also nochmal ganz kurz, ImageNet ist irgendwie von

Dominik

Princeton und Stanford so eine Gemeinschaftsproduktion,

Dominik

die auch jeder frei benutzen kann, wo halt tatsächlich

Dominik

diese Datenbanken mit den Labels

Dominik

verfügbar sind für alle Bilder.

Dominik

Und AlexNet

Dominik

ist jetzt das nächste.

Dominik

Genau.

Dominik

Ich gucke gerade noch mal nach,

Jochen

wann das genau sozusagen

Jochen

diese, es gibt da eine Challenge zu

Jochen

diesem Dataset

Jochen

und da gibt es dann so etwas wie

Jochen

Top 5 Fehler, also wie viele von den

Jochen

Top 5 Klassen, die man halt für ein

Jochen

Bild ausgespuckt hat, waren halt

Jochen

falsch oder so.

Jochen

Und ich gucke gerade noch mal

Jochen

nach, wann das genau war.

Jochen

Ah ja, das ist genau, es gibt halt diese Image

Jochen

Net Large Scale Visual

Jochen

Recognition Challenge und

Jochen

genau 2012, also nicht 2011,

Jochen

hat das Ding halt

Jochen

gewonnen

Jochen

und hat halt den Fehler

Jochen

um

Jochen

mehr als

Jochen

10% irgendwie reduziert und das

Jochen

war halt irgendwie gewaltiger

Jochen

Schritt. Also es war halt so

Jochen

das hat mal

Jochen

in einem Interview mit

Jochen

Jeffrey Hinton, glaube ich,

Jochen

nee, das war

Jochen

Jan de Kuhn hat das irgendwie mal

Jochen

in einem Interview erzählt, der meinte halt

Jochen

vorher war es so. Es gab

Jochen

diese Convolutional Neural Nets,

Jochen

die da verwendet wurden, ja auch schon lange

Jochen

vorher, aber das hat niemand

Jochen

so wirklich ernst genommen. Die waren so ein bisschen

Jochen

esoterisch

Jochen

und es war bis zu dem

Jochen

Zeitpunkt, die waren auch lange Zeit nicht so wirklich

Jochen

en vogue und es war sehr schwierig

Jochen

irgendwie ein Paper durchzukriegen,

Jochen

also in der Zeitschrift veröffentlicht zu bekommen,

Jochen

wenn man

Jochen

da irgendwie Convolutional

Jochen

sich mit Convolutional Neural Nets beschäftigt hat.

Jochen

Und

Jochen

nach dieser,

Jochen

nach diesem Erfolg von AlexNet

Jochen

irgendwie so 2014 war es praktisch

Jochen

unmöglich, ein Paper, was sich irgendwie mit Bildern

Jochen

oder Vision oder so beschäftigt hat,

Jochen

irgendwo unterzubekommen, dass sich nicht

Jochen

mit Convolutional Neural Nets

Jochen

beschäftigt hat. Das heißt, in zwei Jahren hat sich das

Jochen

irgendwie, es gab so einen kompletten Paradigmenwechsel

Jochen

in diesem Bereich und das ist natürlich schon sehr

Jochen

erstaunlich. Also, und

Jochen

ja, es sind also dramatische Verbesserungen

Jochen

irgendwie eingetreten.

Jochen

Und das ist halt auch nicht nur in dem

Jochen

einen Bereich passiert, sondern bei Spracherkennung

Jochen

halt auch.

Dominik

Du musst ja vielleicht da ja nochmal die Basis erklären,

Dominik

die hatten wir nämlich gestern alle nicht. Also was ist jetzt überhaupt

Dominik

ein Convolution Neural Network? Vielleicht auch nochmal kurz,

Dominik

was ist überhaupt ein Neural Network?

Dominik

Das haben wir nämlich gestern einfach alles so vorausgesetzt,

Dominik

aber für jetzt Menschen, die jetzt noch nicht so tief in dem Thema

Dominik

drin sind, sollte man kurz erklären.

Jochen

Sollte man, ist aber auch schwierig

Jochen

wirklich zu erklären, was es ist.

Jochen

Was man immer so, wenn man jetzt

Jochen

das aus Medien

Jochen

mitbekommt,

Jochen

worum es da geht, da wird dann meistens

Jochen

das so dargestellt, wie, naja, das ist

Jochen

ein Vorbild des Gehirns modelliert oder so.

Jochen

Weiß ich nicht. Ich finde, das ist alles immer sehr irreführend,

Jochen

weil wie das Gehirn funktioniert, weiß nicht mal so richtig.

Jochen

Und

Jochen

im Grunde, ja,

Jochen

man könnte sagen, es ist irgendwie inspiriert von Neuronen,

Jochen

aber es ist auch mehr auch nicht.

Jochen

Und mittlerweile hat das, was man da macht, nicht mehr viel zu tun

Jochen

mit dem, was man mal angefangen hat.

Dominik

Einfach irgendwie so ein paar leuchtende Punkte auf so einer

Dominik

Karte, die dann irgendwie aufleuchten, mit irgendeiner

Dominik

kryptische Verbindungen haben, weil da irgendwie Strom

Dominik

von A nach B fließt oder so

Dominik

und dann halt irgendwie eine Beziehung dargestellt werden kann.

Dominik

Vielleicht meinten Neuron irgendwie sowas?

Jochen

Naja, also eine passendere

Jochen

Bezeichnung fände ich jetzt

Jochen

irgendwie, das sind so

Jochen

gestapelte Funktionsapproximatoren.

Jochen

Also im Grunde geht es darum, halt Funktionen

Jochen

zu approximieren und man hat

Jochen

halt irgendwie rausgefunden, dass das super geht,

Jochen

wenn man das in Schichten

Jochen

organisiert und wenn man

Jochen

sozusagen da bestimmte Aktivierungsfunktionen

Jochen

verwendet, da hat sich auch viel getan.

Jochen

Und, ähm, ja, äh, man kann sich das ungefähr so vorstellen, dass, also man hat halt, äh, ja, sozusagen Schichten von, äh,

Jochen

von so

Jochen

Parameter, parametrisierten

Jochen

Dingen, die halt irgendwie etwas machen

Jochen

mit einer Eingabe. Es kommt halt eine Eingabe rein

Jochen

und dann

Jochen

wird das von sehr, sehr

Jochen

basalen oder

Jochen

sehr, sehr konkreten Dingen,

Jochen

die da detektiert werden, immer zu immer abstrakteren

Jochen

Geschichten, je tiefer das durch das Netz durchgeht.

Dominik

Vielleicht machen wir das einmal so kurz als Beispiel

Dominik

anhand von so einem runden Bild.

Dominik

Also ich habe jetzt vielleicht als erste Information

Dominik

die Bildpixel irgendwie

Dominik

in verschiedene Sektoren unterteilt. Dann vielleicht

Dominik

sowas wie eine Abstraktionsschiebende als die Helligkeit

Dominik

des Bildes oder so. Oder

Dominik

andere Dinge. Vielleicht dann noch grobe

Dominik

Strukturen unterteilt. Kanten.

Dominik

Mit Hültern oder so. Kanten. Genau.

Dominik

Wo ist hier eine Kante? Wo ist eine Ecke?

Dominik

Was sind helle Flecken in dem Bild?

Dominik

Und jetzt hast du eine Neuronenschicht.

Dominik

Ja, oder mehrere Schichten.

Dominik

Also, genau.

Jochen

Und das, was da

Jochen

passiert im Grunde, ist halt das, was die

Jochen

Convolutional-Geschichte, ich will es gar nicht

Jochen

mehr so ausführlich beschreiben, was da für eine

Jochen

mathematische Operation ist, das ist eigentlich relativ simpel

Jochen

passiert, aber was das

Jochen

macht, ist, dass es dafür sorgt,

Jochen

dass Dinge, die nah beieinander sind, halt

Jochen

irgendwie auch

Jochen

zusammenbleiben, sozusagen, weil man hat

Jochen

sonst immer das Problem, oder das hatte man bei den

Jochen

anderen Verfahren, mit denen man da

Jochen

angefangen hat, halt auch,

Jochen

dass sobald sich irgendwas so ein bisschen

Jochen

geändert hat, also wenn der Hund

Jochen

im Trainingsbeispiel, im ersten

Jochen

Trainingsbeispiel nicht an der gleichen Stelle ist wie im zweiten

Jochen

Trainingsbeispiel, dann wurde

Jochen

das schon nicht mehr erkannt, weil, naja,

Jochen

sozusagen, wenn man einfach ein Bild

Jochen

einfach so als Vektor auffasst, dann

Jochen

wenn sich da drin

Jochen

sozusagen räumlich irgendetwas bewegt, dann ist das halt

Jochen

an einer ganz anderen Stelle. Da werden halt ganz andere

Jochen

Features sozusagen aktiviert. Man könnte ja

Jochen

sagen, naiv, ein Bild ist einfach nur

Jochen

irgendwie, hat so viele Dimensionen wie

Jochen

Pixel oder so viele Dimensionen

Jochen

wie Pixel mal drei, wenn man halt für jeden Kanal

Jochen

halt noch ein... RGB, ja,

Jochen

noch eine Dimension.

Jochen

Aber dann hat man eben

Jochen

dieses Problem, was passiert, wenn sich Dinge in dem Bild

Jochen

bewegen und dann wird es halt ätzend

Jochen

und funktioniert einfach auch nicht mehr.

Jochen

Und dafür, dass

Jochen

da helfen diese Convolutional

Jochen

Geschichten halt

Jochen

stark, weil die dafür sorgen, dass

Jochen

Dinge halt sozusagen unabhängig davon, wo sie

Jochen

passieren, irgendwie

Jochen

detektiert werden können.

Jochen

Und ja, man fängt halt mit sowas an,

Jochen

wie eben Kantenhelligkeiten

Jochen

in ganz einfachen Formen

Jochen

und die werden dann sozusagen

Jochen

in den Schichten halt immer weiter abstrahiert,

Jochen

sodass halt man

Jochen

auf, wenn das jetzt

Jochen

durch mehrere Ebenen gegangen ist, hat man halt

Jochen

abstraktere Features, die halt

Jochen

weiter unten im Netz sozusagen

Jochen

detektiert werden. Also es gibt

Jochen

dann halt irgendwo

Jochen

sozusagen Teile,

Jochen

Layer,

Jochen

die detektieren dann

Jochen

Ohren oder Augen oder Haare

Jochen

oder sowas.

Jochen

Oder vielleicht irgendwie

Jochen

ist da überhaupt ein Tier oder ist das nicht eher

Jochen

Himmel oder ist das irgendwie

Jochen

eine Wiese oder so? Ja, also auch

Dominik

Masterklassen und sowas. Also ein Tier, wenn es

Dominik

guckt, ist ein Hund, guckt dann erstmal jemand drüber, ist das überhaupt ein Tier

Dominik

oder sowas? Könnte natürlich passen.

Dominik

Oder ist das ein Lebewesen oder sowas?

Dominik

Oder ist das überhaupt ein Bild?

Jochen

Und ja, das passt halt

Jochen

super,

Jochen

weil irgendwie diese räumliche Dinge

Jochen

haben halt eine räumliche Ordnung und sind halt irgendwie hierarchisch

Jochen

strukturiert. So ist halt unsere Welt

Jochen

irgendwie strukturiert, die wir wahrnehmen und

Jochen

wenn man das, ja, diese

Jochen

Modelle sind halt,

Jochen

bilden das halt sehr gut ab

Jochen

und repräsentieren darum halt das, was man

Jochen

da bekommt halt, sind halt in der Lage

Jochen

das sehr, sehr gut zu repräsentieren. Ja, ist das ein Ölgemälde,

Jochen

ein Foto oder eine Skizze?

Jochen

Ja, und genau, so

Jochen

all solche Sachen, was ist die Textur von Dingen?

Jochen

Ja,

Jochen

und das hat halt super funktioniert

Jochen

und was halt auch

Jochen

total toll ist, ist, dass man

Jochen

im Grunde keine,

Jochen

kein echtes Feature-Engineering

Jochen

mehr machen muss, so wie früher.

Jochen

Sondern dass das halt

Jochen

zum großen Teil automatisch passiert.

Jochen

Und gut, die Architektur des Modells

Jochen

ist natürlich noch so eine Sache, aber

Jochen

das ist

Jochen

halt nicht mehr das Gleiche,

Jochen

als wenn man da jetzt von Hand

Jochen

irgendwelche

Jochen

Features rauszieht

Jochen

aus einem Bild, sondern

Jochen

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 durch iterieren kann.

Jochen

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

Jochen

Und das ist halt ein riesen Fortschritt.

Jochen

Schwarmintelligenz, schon wieder.

Jochen

Schwarm, naja.

Jochen

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. Und das ist natürlich auch total toll, weil dann sozusagen Erfolge in einem Feld halt irgendwie in eine andere Domäne transportieren kann.

Jochen

Ja, und das geht so weit, dass halt inzwischen man, ja, es gibt immer so den Satz, Perception is solved. Ja, so irgendwie alles, was damit zu tun hat, Dinge zu erkennen, irgendwie Handschrift, Ziffern, Autokennzeichen, irgendwie Hausnummern, Straßenschilder oder eben auch Katzen, Hunde, irgendwelche Alltagsgegenstände.

Jochen

das machen diese Dinger mittlerweile

Jochen

besser als Menschen. Also die haben da

Jochen

auch eigentlich überall super

Jochen

Human Performance erreicht. Also wenn man

Jochen

dann selber das von Hand

Jochen

labelt und dann guckt, wer macht mehr Fehler, dann

Jochen

machen Menschen üblicherweise mehr Fehler.

Jochen

Und das ist schon

Jochen

ganz erstaunlich. Das wäre

Jochen

zu dem Zeitpunkt, wo man das halt noch nicht wusste,

Jochen

dass das geht, hätten viele gesagt, das ist völlig

Jochen

unabsehbar, wann das jemals, oder ob es überhaupt

Jochen

jemals möglich sein wird, dass sowas passiert.

Jochen

Und dann ging es innerhalb von wenigen Jahren. Also

Jochen

das ist tatsächlich ein riesen

Jochen

Fortschritt passiert. Auf der anderen Seite

Jochen

muss man natürlich sagen, das heißt jetzt nicht,

Jochen

dass alles gelöst ist oder dann wird immer

Jochen

davon künstliche Intelligenz geredet und das ist schon

Jochen

irgendwie Quatsch, weil, also ich meine,

Jochen

Machine Learning ist halt so ein Teilbereich der künstlichen Intelligenz

Jochen

und wahrscheinlich auch so der interessanteste

Jochen

zur Zeit, aber

Jochen

die wirklich

Jochen

knackigen Probleme,

Jochen

wenn es darum geht,

Jochen

irgendwie wirklich intelligentes Verhalten

Jochen

oder...

Dominik

Wie definiert man das? Ja, also wenn man jetzt tatsächlich

Dominik

als ein individuelles, autonomes

Dominik

Individuum hätte, das ich dann

Dominik

als intelligent definieren kann, da ist natürlich was anderes

Dominik

als wenn ich jetzt eine Maschine habe, die

Dominik

immerhin binäre Entscheidungen treffen kann oder

Dominik

sowas, die einigermaßen richtig sind.

Jochen

Das ist auch überraschend,

Jochen

wie viel sich auf solche Entscheidungen reduzieren lässt.

Jochen

Also das ist tatsächlich, macht das schon viel aus, aber

Jochen

diese,

Jochen

die Welt

Jochen

sozusagen

Jochen

gesehen aus der Sicht von so einem Netz ist halt

Jochen

eine sehr, sehr oberflächliche Sicht der Welt.

Jochen

diese Modelle lassen sich sehr leicht täuschen,

Jochen

weil sie eben fast nichts über die Welt wissen.

Jochen

Also du verhältst das alles nicht für

Dominik

intelligent. Also ich finde das natürlich schon

Dominik

riesen,

Dominik

also um bei einem Griff zu bleiben, Intelligence,

Dominik

die da irgendwo hinter steckt. Also

Dominik

man ist natürlich jetzt nicht ungefragt

Dominik

hinnehmbar und die sticht natürlich in der

Dominik

Stelle noch kein Menschen aus oder kann irgendwie Konkurrenz

Dominik

werden oder sowas, wie vielleicht dann die Gefahren,

Dominik

die mit so einem AI-Ding da irgendwie verknüpft

Dominik

werden, auch noch hinzukämen. Aber

Dominik

ich finde das schon sehr beeindruckend. Also ich würde fast auch schon

Dominik

von Kunstintelligenz sprechen wollen, so aus dem

Dominik

Laienverständnis heraus, als wenn es jetzt so eine richtige

Dominik

Intelligenz jetzt vielleicht noch nicht ist.

Dominik

Aber in gewisser Weise kann halt die Maschine

Dominik

tatsächlich, also das ist glaube ich der Fortschritt,

Dominik

mit neuen Dingen umgehen. Und das ist

Dominik

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

Dominik

das, was das Spannende daran ist.

Dominik

Und das ist vielleicht schon irgendwo Intelligenz.

Dominik

Ich denke, der große

Jochen

Unterschied zu früher ist halt, dass

Jochen

in, muss man auch sagen, begrenzten

Jochen

Bereichen

Jochen

muss man halt nicht mehr

Jochen

wirklich explizit Sachen programmieren,

Jochen

sondern man zeigt jetzt einer Maschine nur noch Beispiele dafür,

Jochen

wie es richtig sein soll.

Jochen

Und dann kann sie das halt auch mehr oder weniger genauso gut machen.

Jochen

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

Jochen

Und das ist natürlich ein Riesenvorteil,

Jochen

weil das war bisher immer so ein Bottleneck für viele Anwendungen.

Jochen

Ja, genau.

Dominik

Also wenn man halt immer noch Menschen drauf gucken lassen muss,

Dominik

stimmt das jetzt alles oder nicht?

Dominik

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

Dominik

die müssen das auch verstehen.

Dominik

Ja, klar.

Jochen

Also insofern ist das natürlich schon ein Riesenfortschritt.

Jochen

es ist halt nicht auf

Jochen

alle Probleme anwendbar. Es gibt

Jochen

viele Probleme, wenn das grundsätzlich nicht so gut

Jochen

funktioniert und

Jochen

ja,

Jochen

da kommen wir auch dann zu den Geschichten mit

Jochen

dem Unterschied zwischen Supervised an Supervised

Jochen

und Reinforcement

Jochen

Learning. Also

Jochen

Supervised geht, also da

Jochen

ist es mittlerweile ziemlich gut,

Jochen

aber auch

Jochen

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

Jochen

also die Modelle wissen

Jochen

nicht, was sie da tun, sie haben kein

Jochen

Verständnis dafür, was da passiert.

Jochen

Deswegen lassen sie sich auch eben sehr leicht

Jochen

täuschen, weil es muss halt nur irgendwie

Jochen

halbwegs oberflächlich so aussehen, das reicht ja

Jochen

vollkommen.

Jochen

Wenn da irgendwas sozusagen

Jochen

physisch unmöglich wäre oder so, wo ein Mensch

Jochen

sofort erkennt, das kann ja gar nicht sein,

Jochen

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

Dominik

Plakate hochhält mit gesuchten Persönlichkeiten

Dominik

oder bedrohlichen Dingen

Dominik

und dann Leute trollt oder so.

Jochen

Aber gut, das sind ja noch so Machine Learning Security,

Jochen

Hier ist nochmal ein ganz eigenes Ding.

Jochen

Was aber jetzt zum Beispiel Menschen, Tiere super können.

Jochen

Also einmal ist es halt total interessant,

Jochen

dass Menschen nicht so viele Trainingsbeispiele brauchen.

Jochen

Also wenn man sich zum Beispiel anguckt,

Jochen

wie viele gelabelte Daten sieht so irgendwie ein Kind von null bis,

Jochen

es kann irgendwie sprechen und verstehen,

Jochen

dann ist das sehr, sehr wenig.

Jochen

Und man versteht überhaupt nicht, wie das sein kann,

Jochen

dass man mit so wenig Trainingsbeispielen irgendwie auskommt,

Jochen

weil diese ganzen Deep Learning-Geschichten brauchen

Jochen

viel, viel mehr. Was jetzt nicht so ein Problem

Jochen

ist, weil man inzwischen Internet und so,

Jochen

man hat die Daten und

Jochen

wenn da alle Leute sprechen, dann irgendwie in ihre Telefone

Jochen

und dann sammelt man davon

Jochen

halt irgendwie tausend Stunden, Millionen,

Jochen

Milliarden, keine Ahnung und dann

Jochen

hat man genug, um halt

Jochen

große Modelle mit vielen, vielen Parametern zu fitten

Jochen

und dann funktioniert das auch, aber

Jochen

es wäre natürlich schon interessant rauszukriegen, wie

Jochen

kommt das, dass Menschen das auch super

Jochen

hinkriegen, aber das alles nicht,

Jochen

diese Daten nicht brauchen.

Dominik

Wahrscheinlich liegt das an der Auflösung mit der Information, die die Menschen bekommen. Die 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 neueres Network. Und Menschen lernen das dann anhand dieser Masse von Informationen so schnell doch.

Jochen

Man kann jetzt sagen, Menschen sehen auch Sachen, hören nicht nur Dinge. Aber ich glaube, das ist gar nicht so sehr der Punkt. Oder das, was halt so die übliche Ansicht ist, dass Menschen und Tiere an Supervised Learning wirklich gut können.

Jochen

wirklich gut in der Lage sind, einfach nur

Jochen

durch Beobachten

Jochen

super Repräsentationen der Welt irgendwie

Jochen

aufzubauen.

Jochen

Und das kann man halt

Jochen

mit

Jochen

ja, können halt die Modelle,

Jochen

die wir da verwenden,

Jochen

im Computer momentan nicht.

Jochen

Und da kriegt man

Jochen

halt eben schon sowas nicht hin wie,

Jochen

was ist da überhaupt eine geeignete Verlustfunktion?

Jochen

Also wenn man zum Beispiel sich so ein Problem anguckt, wie

Jochen

man möchte vorhersagen, was als nächstes

Jochen

passiert in einem Film, den man sieht.

Jochen

Ja, also da, äh, man sieht irgendwie, keine Ahnung, eine Savanne in, äh, äh, in, in Afrika, oder laufen irgendwie Tiere durch die Kamera, ja, irgendwie dieses Problem, äh, was ist da für ein Tier, das ist, sozusagen, das geht, aber, ja, was passiert jetzt in fünf Minuten in diesem Film, oder was passiert, was passiert im nächsten Frame, ja, 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 Experiment, äh, in irgendeinem Experiment, äh, äh, Teilenaufbau übersetzen, aber wenn man sich jetzt anguckt, können, wie, wie gut können Menschen das vorhersagen,

Jochen

was da passiert, super.

Jochen

Die verstehen auch, dass wenn die Sonne untergeht,

Jochen

dann wird es dunkel oder so. Für solche

Jochen

Machine Learning Modelle sehr, sehr schwierig.

Jochen

Die kriegen halt vielleicht ein Frame, vielleicht ein paar

Jochen

irgendwie auch ganz gut vorhergesagt,

Jochen

aber je länger das wird,

Jochen

desto absurder wird das, was halt

Jochen

vorhergesagt wird. Und man weiß nicht mal,

Jochen

wie man jetzt da gut irgendwie eine Distanz

Jochen

ausrechnet zu dem, was sie hätten

Jochen

vorhersagen müssen. Das heißt, man kennt nicht mal

Jochen

eine Verlustfunktion, die man da, das heißt, man kann das

Jochen

Optimierungsproblem nicht gut lösen, weil man gar nicht weiß,

Jochen

was man optimieren soll.

Dominik

Das liegt aber auch an dem Problem, dass die Maschinen

Dominik

an der Stelle nicht diese Sinneswahrnehmung

Dominik

von einer echten Welt, in der

Dominik

Gänze der Erfahrungsmöglichkeiten,

Dominik

was jetzt fraktale, dimensionale

Dominik

Strukturen angeht, erfassen konnten.

Dominik

Und das dann nicht vorliegt in dem

Dominik

Datensatz. Möglicherweise

Dominik

wäre das eine Option, da irgendwie dran zu gehen.

Dominik

Jetzt haben wir noch ein paar Fraktaltheorien,

Dominik

wie Mendelbrot.

Dominik

Naja, das ist ja wieder Hirngespinze, aber

Dominik

vielleicht kann man dadurch irgendwann

Dominik

sowas dann doch basteln und dann die KI

Jochen

Ja, kann man bestimmt, aber

Jochen

momentan wissen wir halt nicht wie.

Jochen

Ist halt

Jochen

schwer. Und

Jochen

das ist sozusagen, wenn man es schaffen würde,

Jochen

den Erfolg, den man jetzt beim Supervised Learning

Jochen

hatte, irgendwie zu übertragen auf

Jochen

unsupervised, das wäre natürlich ganz, ganz toll,

Jochen

aber ist halt noch nicht so. Aber da arbeiten ganz viele Leute

Jochen

dran. Und Reinforcement Learning ist

Jochen

halt so ein Zwischending.

Jochen

Wenn man halt nicht zu allem, was man tut, jetzt

Jochen

ein Label hat oder eben

Jochen

ein Feedback bekommt,

Jochen

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 ein praktisches Beispiel irgendwie am besten.

Jochen

Also wenn man spielen funktioniert das halt super.

Jochen

Wenn man jetzt irgendwie Schach spielt oder Go oder sowas, dann spielt man halt eine ganze Zeit lang, macht viele Züge.

Jochen

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.

Jochen

weil das weiß halt eh keiner so genau

Jochen

und irgendwie die definitive Aussage ist ja,

Jochen

es kann ja auch sein, dass ein Zug, der irgendwie

Jochen

schlecht aussieht, eigentlich sehr gut war.

Jochen

Ja, es sei denn, du verlierst den nächsten Zug oder sowas.

Jochen

Ja, aber

Jochen

tatsächlich ist es halt so, wirklich definitiv weiß man es

Jochen

erst, wenn man gewonnen oder verloren hat

Jochen

und dann hat man das Problem, okay, jetzt muss ich irgendwie

Jochen

sozusagen diese Feedback

Jochen

irgendwie zurück assignen an alles, was ich

Jochen

irgendwie gemacht habe und das ist genau

Jochen

Reinforcement Learning und das ist halt

Jochen

sozusagen

Jochen

so ein Zwischending zwischen überwacht und unüberwacht,

Jochen

weil halt da auch viel unüberwacht passiert, aber

Jochen

ab und zu hat man ja doch so ein bisschen Feedback

Jochen

und das hat halt viele Anwendungen.

Jochen

Selbst fahrende Autos sind halt auch so ein,

Jochen

oder überhaupt laufende Roboter und so, das ist alles

Jochen

Reinforcement Learning.

Dominik

Das ist schön. Du hast was gesehen von

Dominik

Boston Dynamics, das neue Ding, da haben irgendwie

Dominik

15 diese,

Dominik

ich weiß nicht, Pferdeförderungen, Hunderoboter

Dominik

so einen LKW gezogen oder so, irgendwo

Jochen

irgendeine Straße. Ich finde diese

Jochen

Videos immer sehr beunruhigend. Ja, die sind etwas

Jochen

spooky tatsächlich.

Dominik

Die kürzen mich wie Militärtechnik.

Dominik

Wenn man sich da überlegt, da ist so eine Waffe drauf

Dominik

oder sowas, dann hüpfen die durch den Wald.

Jochen

Und dann schützen sie sich dabei, die Türen aufzumachen

Jochen

und um die Ecke zu gucken.

Jochen

Das ist schon ein bisschen spooky tatsächlich.

Dominik

Ja, ist ja auch vom DARPA finanziert.

Dominik

Ja, ja, ja.

Jochen

Ich glaube, die Firma selber ist gekauft worden von Google.

Jochen

Ich glaube, die haben sie wieder verkauft.

Jochen

Haben sie wieder verkauft, aber kann auch sein.

Dominik

Aber ja, die war mitfinanziert vom DARPA vor allen Dingen.

Dominik

Ja.

Dominik

Mal gucken, was da Schönes für die Zivilgesellschaft

Dominik

noch bei raus springt.

Jochen

Ja, auf jeden Fall irgendwie, das ist halt auch so ein hartes Problem, auch da gibt es tolle Erfolge, jetzt wenn man sich anguckt, was AlphaGo Zero angeht und so, das ist gar keine Frage, 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 war irgendwann 1998, als Kasparov gegen Diplu dann verloren hatte.

Dominik

Ich habe schon als Kind immer gegen meinen Schachcomputer verloren.

Jochen

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

Jochen

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.

Jochen

Das ist völlig aussichtslos.

Jochen

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

Dominik

Wer gewinnt denn eigentlich, wenn ich

Dominik

das Spiel von einem anderen

Dominik

Rechner mitspielen lasse? Das wäre doch mal interessant.

Dominik

Also ich spiele auf dem einen Rechner manuell

Dominik

Schach gegen den Bot

Dominik

und lasse mir meinen Zug aber

Dominik

von einem anderen Bot predikten.

Dominik

Gewinnt dann der schnellere Bot oder was, wenn der beide Bot

Dominik

gegeneinander spielen? Ist das dann zufällig?

Jochen

Üblicherweise kommt es halt darauf an, was das

Jochen

für Dinger sind. Wenn die gleich sind, dann ist es vielleicht

Jochen

Zufall oder dann soll es 50% 50-50

Jochen

sein. Aber vielleicht kommt eine Regel raus, vielleicht geht es immer

Jochen

weiß. Ja, ist schon so, dass

Jochen

70% glaube ich, zwei Drittel

Jochen

ungefähr weiß gewinnt.

Jochen

Also wenn es gewinnt, also die meisten

Jochen

Spiele sind sowieso Remi, aber wenn es

Jochen

eine Entscheidung gibt, dann gewinnt meistens weiß.

Jochen

Weil weiß ja schon einen leichten Vorteil hat durch

Jochen

den Anzug.

Jochen

Aber ja,

Jochen

trotzdem hättest

Jochen

du halt, sagen wir mal so, auch ein schlechtes

Jochen

Schachprogramm hätte halt keine Chance gegen

Jochen

einen wirklich guten, also eins von 98 oder so

Jochen

hätte halt keine Chance gegen eins der modernen

Jochen

auf einer modernen Hardware ist halt

Jochen

das ist so viel besser geworden.

Jochen

Aber eben auch in dem Ding, was halt 98

Jochen

KSV aufgeschlagen hat, steckte halt ganz

Jochen

viel domainspezifisches Wissen drin, da steckte

Jochen

halt viel Schachttheorie drin, da war eine Endspieldatenbank

Jochen

dran, da war

Jochen

viel

Jochen

ähm

Dominik

Blatter, Overhead, brauchen wir heute alles nicht mehr

Dominik

wegschmeißen, lernen von einer Einheit fertig

Jochen

Also da steckte ganz, ganz viel menschliche Arbeit drin

Jochen

sozusagen

Jochen

und das, also wenn man

Jochen

jetzt zum Beispiel sagt, okay, wir möchten

Jochen

jetzt nicht einen Schachcomputer bauen, der

Jochen

den Schachweltmeister schlägt, sondern wir möchten jetzt

Jochen

Baggerfahrprogramm

Jochen

irgendwie bauen, das mit den besten Baggerfahrern

Jochen

mithalten kann oder so,

Jochen

dann müsste man dafür genauso

Jochen

viel Zeit investieren wie

Jochen

oder vielleicht noch mehr oder keine Ahnung,

Jochen

auf jeden Fall sehr, sehr viel Zeit, um

Jochen

diese Domäne genauso gut zu modellieren, wie man

Jochen

das damals mit Schach gemacht hat. Und das ist halt

Jochen

völlig aussichtslos, würde sich niemals rechnen.

Jochen

Es gibt so viele Dinge, die man irgendwie gut können will,

Jochen

aber wo es absolut

Jochen

aussichtslos wäre. Mir fällt ja immer so das

Dominik

erste eine, was ich für einen Roboter mir selber

Dominik

anschaffen würde, für jede Menge Geld, wäre

Dominik

so der Haushaltsroboter, der putzen kann

Dominik

und das ganze Haus in Ordnung hält. Vielleicht dann irgendwann

Dominik

auch ein bisschen kochen. Also dann habe ich natürlich meine eigenen

Dominik

Rezepte oder so. Aber das wäre natürlich

Dominik

toll, weil dann müsste man das nicht

Dominik

mehr machen. Ja, aber

Jochen

es ist schwierig. Also all diese Dinge, wo man

Jochen

mit der realen Welt interagiert, da komme ich

Jochen

auch gleich nochmal drauf. Das sind alles, die sind

Jochen

alle leider nicht so leicht. Man hat das sofort

Jochen

immer irgendwie so Sicherheitsproblem.

Jochen

Also

Jochen

aber nochmal zu dem,

Jochen

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 keine praktische Lösung.

Jochen

Es ist nicht wirklich effizient.

Jochen

Und na ja, für Schach.

Jochen

Aber jetzt irgendwie durch AlphaGo Zero und so,

Jochen

das sind Dinger, wo kein Domänenwissen mehr drinsteckt.

Jochen

Die sind, also AlphaGo Zero ist von null Schachtheorie

Jochen

zu irgendwie superjungen Performance innerhalb von ein paar Stunden

Jochen

durch gegen sich selbst spielen.

Jochen

gut geworden.

Jochen

Ja, also der Bot, der dann

Dominik

auch gegen Go gespielt hat, hat ja irgendwelche

Dominik

völlig unkonventionellen Züge gespielt, wo keiner warte, was macht

Dominik

er denn da? Das würde ja ganz anders spielen und dann hat er

Dominik

trotzdem gewonnen. Das war schon ein bisschen

Jochen

spannend. Ja, ja, also das ist jetzt außerhalb

Jochen

von dem, was irgendwie, also wir haben

Jochen

ein paar hundert Jahre Schachttheorie, wir haben irgendwie

Jochen

ein paar tausend Jahre vielleicht Go-Theorie

Jochen

und da

Jochen

jetzt sind wir halt viel weiter gekommen

Jochen

in sehr, sehr kurzer Zeit und verstehen

Jochen

nicht mal mehr, was da passiert, weil

Jochen

das ist halt außerhalb von unseren

Jochen

ja, wir kriegen das nicht mehr.

Jochen

Wir sind halt leider ein bisschen zu dumm dafür, offenbar.

Jochen

Oder nicht gut genug, jedenfalls.

Jochen

ein Go oder Schach, um das noch nachvollziehen

Jochen

zu können, was die Dinger da machen.

Jochen

Aber es funktioniert, denn sie gewinnen immer.

Jochen

Und

Jochen

das ist halt deswegen

Jochen

so ein riesen Fortschritt,

Jochen

weil man jetzt

Jochen

da diese, also solche, auch

Jochen

diese Reinforcement-Learning-Geschichten sind jetzt

Jochen

nicht prinzipiell auf irgendein

Jochen

Problem geeicht.

Jochen

Deswegen heißt das Ding ja auch AlphaGo Zero

Jochen

Ding. Das ist quasi das gleiche

Jochen

Ding, was halt Schach,

Jochen

Shoku, das ist dieses japanische Schach

Jochen

und Go irgendwie gelernt

Jochen

hat. Das heißt, es funktioniert

Jochen

über unterschiedliche Spiele hinweg.

Jochen

Das muss nicht unbedingt jetzt, also

Jochen

das ist halt, so jetzt kann man sich vorstellen,

Jochen

wenn man jetzt Probleme hat, die ähnlich sind, dann kann

Jochen

das möglicherweise auch relativ schnell

Jochen

so gut lernen, dass es halt besser ist als jeder Mensch.

Jochen

Und

Jochen

dann lohnt sich das plötzlich, das für diverse

Jochen

Bereiche einzusetzen, weil man gar kein Domain-Wissen

Jochen

mehr braucht, dass sie sich das alles selber

Jochen

beibringen.

Jochen

Das klingt jetzt auch relativ

Jochen

erschreckend wahrscheinlich, aber so schlimm ist es auch

Jochen

wieder nicht, weil

Jochen

wir haben,

Jochen

das funktioniert nur dann super, wenn man eben

Jochen

durch gegen sich selbst spielen oder

Jochen

super viele Spiele ausprobieren

Jochen

irgendwie lernen kann, was halt super geht

Jochen

in so Situationen, wo man

Jochen

die komplette Welt simulieren kann.

Dominik

Welcher Gottes und wer hat denn mit Maschinen und Gebauen?

Dominik

Relativ unwahrscheinlich, dass sowas funktioniert, ja.

Jochen

Ja, es gibt da schöne Theorien zu

Jochen

ja, das

Jochen

ja, aber das

Jochen

Das war für den kleinen Exkurs.

Jochen

Ich wollte mit dir eine Zähne am Arsch setzen.

Jochen

Ja, ich wollte das nur noch

Jochen

kurz zu Ende führen. Also wenn man das simulieren kann,

Jochen

ist super. Spiele sind halt,

Jochen

da hat man die Simulation halt schon.

Jochen

Genau, es gab da große Erfolge bei den

Jochen

Atari Games. Voll toll,

Jochen

aber der Witz ist eigentlich,

Jochen

dass die Dinger sind halt super simulierbar,

Jochen

deswegen hat das da so gut funktioniert.

Jochen

So, die physische Realität ist

Jochen

nicht wirklich gut simulierbar.

Dominik

Ja, wir haben ja auch keine vernünftige Abbildung von

Dominik

einem Modell der physischen Realität

Dominik

in den ganzen Variablen. Die kennen wir ja alle nicht.

Dominik

Das sind alles viel zu viele Unbekannten.

Jochen

Das kennt man schon, aber das ist alles nicht so einfach

Jochen

umzusetzen.

Jochen

Und das Problem ist halt auch,

Jochen

du müsstest ja nicht nur

Jochen

sozusagen so eine Physik-Engine,

Jochen

die relativ gut ist, haben. Das geht

Jochen

vielleicht noch. Aber es passieren halt die ganze

Jochen

Zeit so Dinge,

Jochen

wo man nicht weiß, wie man das

Jochen

irgendwie simulieren soll, ja, so

Jochen

keine Ahnung, wenn man draußen rumläuft, da passiert

Jochen

so viel komischer Kram

Jochen

und

Dominik

Vielleicht müssen wir unsere Sensorspektren endlich erweitern und die Maschinen

Dominik

damit füttern

Jochen

Nee, ist das eher, das ist nicht, also

Jochen

von der Sensorseite, das funktioniert eigentlich alles, aber

Jochen

was halt nicht funktioniert, ist

Jochen

alles mögliche ausprobieren,

Jochen

um rauszukriegen, wie diese Realität

Jochen

dann funktioniert, weil das Problem ist, wenn man das jetzt

Jochen

mit einem selbstfahrenden Auto macht, dann macht man ganz schön viel

Jochen

kaputt und auch ganz schön

Jochen

viele selbstfahrende Autos kaputt und die sind ja teuer

Jochen

und es ist ja, selbst wenn ich das

Jochen

alles simuliert mache, brauche ich sehr viel Rechenleistung

Jochen

und muss das ganz, ganz, ganz viel probieren.

Jochen

Wenn ich das

Jochen

mit physischen Objekten da draußen machen muss,

Jochen

das funktioniert nicht.

Jochen

Und daher wird das

Jochen

alles, was irgendwie mit physischen

Jochen

also mit der Manipulation von irgendwelchen physischen Dingen

Jochen

zu tun hat, das ist alles noch nicht so richtig

Jochen

noch nicht so richtig

Jochen

im Griff und bleibt schwierig

Jochen

jedenfalls, solange man das nicht ordentlich

Jochen

simulieren kann. Und das ist momentan

Jochen

auch noch nicht gelöst. Aber

Jochen

ja, ist natürlich schon interessant, was da alles

Jochen

an Fortschritten gibt.

Jochen

Ja.

Jochen

Genau.

Jochen

Ja, vielleicht machen wir

Jochen

jetzt doch noch ein Chapter.

Jochen

Ja, also

Dominik

ein Chapter war auf jeden Fall Supervised Learning,

Dominik

Unsupervised Learning und Reinforced Learning.

Dominik

Und das ist jetzt über convolutional neural networks.

Dominik

Was ist das nächste Kapitel?

Dominik

Ist das

Dominik

nochmal Fehler?

Dominik

Und wir wollten auch was über FITs machen.

Dominik

Achso, genau.

Jochen

Wir wollten irgendwie was, genau, das, das, ja, ja.

Jochen

Das hatten wir gestern auch noch nicht so richtig drin.

Jochen

Wenn man jetzt so Modelle trainiert,

Jochen

was ist eigentlich, was passiert da eigentlich,

Jochen

was kann da eigentlich schiefgehen?

Jochen

Es gibt da Metriken und so,

Jochen

da hatten wir gestern auch schon so ein bisschen was erzählt,

Jochen

aber, oder beim letzten Mal was erzählt,

Jochen

aber es gibt da so prinzipielle Geschichten

Jochen

und die hatten wir irgendwie nicht mit drin.

Jochen

Und zwar,

Jochen

wenn man jetzt,

Jochen

oder das ist vielleicht sogar

Jochen

am einfachsten, wenn man das am

Jochen

Am Schluss, am Ende willst du kurz einführen,

Jochen

wo bist du gerade?

Jochen

Ja, ich überlege gerade, wie das mit dem

Jochen

praktischen Beispiel aussieht, weil wir wollten ja auch noch so

Jochen

Hunde versus Katzen machen.

Jochen

Und

Jochen

da könnte man

Jochen

das auch noch rein, aber egal, nein.

Dominik

Ich fand das ganz gut, wie ihr es gemacht habt bei dem

Dominik

PiDD11-Vortrag.

Dominik

Da kann man dann hinterher tatsächlich ganz gut dahin,

Dominik

dass man sowas wie Oberfitting relativ gut da reinkommen könnte.

Dominik

Und da müsste das mit den Pi Express Variants auch reinpassen.

Dominik

Ja, stimmt, stimmt, stimmt.

Dominik

Also deswegen fangen wir vielleicht dann doch nochmal mit dem Beispiel an.

Jochen

Genau, dann machen wir doch nochmal ein Beispiel hier.

Jochen

Und genau, ich mach noch Kapitelmarke.

Jochen

Also wir erklären das jetzt kurz nochmal, wie man das macht,

Jochen

wenn man jetzt so Hunden- und Katzenbilder hat.

Dominik

Und ja,

Dominik

wie man die dann versuchen will, von einander zu unterscheiden

Dominik

und wie man dann die Maschine dazu bringt,

Dominik

dass sie das versteht, was da passiert.

Dominik

weil, wie man sich vielleicht vorstellen kann,

Dominik

Hunde und Katzen sind unterschiedliche Tiere zwar,

Dominik

aber die sehen vielleicht doch schon ganz schön ähnlich aus

Dominik

und vor allem, wenn die irgendwie halb verdeckt sind

Dominik

oder so von einem Schrank oder in irgendeine Kiste reinhüpfen.

Jochen

Also wir nehmen das einfachste Problem sozusagen,

Jochen

was wir haben, nämlich binäre Klassifikationen,

Jochen

nur jetzt die Klassen sind Hunde und Katzen.

Jochen

Es gibt so ein Dataset,

Jochen

das mal in der Kegel-Competition verwendet worden ist,

Jochen

ich glaube 20.000 Hunde,

Jochen

20.000 Katzen oder 10.000 Hunde, 10.000 Katzen,

Jochen

ich weiß nicht mehr genau, aber wir nehmen nur

Jochen

1.000 Hunde,

Jochen

1.000 Katzen und nochmal 1.000, also

Jochen

500 Hunde, 500 Katzen, also

Jochen

ein Training-Set, ein Test-Set und ein Validations-Set

Jochen

daraus

Jochen

und das ist im gleichen

Jochen

Projekt.

Dominik

Warum nehmen wir nicht alle 10.000, Jochen?

Dominik

Ja, weil das so lange dauern würde, das wäre

Dominik

irgendwie nicht gut.

Dominik

Das ist sowieso schon auch, selbst mit

Jochen

1.000 Beispielen ist es schon so,

Jochen

dass man da ohne GPU nicht so richtig

Jochen

viel Spaß hat. Das ist so ein bisschen blöd,

Jochen

man braucht so ein bisschen Spezial-Hardware. Also mit der

Dominik

1080 kann ich aber schon ein bisschen was rechnen.

Jochen

Ja, ja, also das wäre schon sehr gut.

Jochen

Aber viele Leute haben ja vielleicht auch jetzt

Jochen

keine GPU irgendwie

Jochen

zu Hause direkt.

Jochen

Glück, wenn man Computerspiele mag.

Jochen

Ja, aber dann muss man auch mal diesen ganzen

Jochen

Kram installieren und so und das ist auch alles nicht so richtig

Jochen

einfach. Und

Jochen

ja, also in dem Data Science Projekt

Jochen

gibt es halt in dem Notebook-Verzeichnis

Jochen

auch so ein Ding,

Jochen

Hunde versus Katzen.

Dominik

Mit welchem Modul kann man die Grafikkarte benutzen?

Dominik

Ja, das ist, ja,

Jochen

man muss erst mal das Betriebssystem dazu kriegen,

Jochen

dass das ordentlich funktioniert. Dann braucht man halt

Jochen

irgendwie

Jochen

die NVIDIA-Bibliotheken da unten drunter,

Jochen

also QDNN und

Jochen

CUDA und so.

Jochen

Und dann gibt es halt

Jochen

diverse

Jochen

Machine Learning-Bibliotheken, die das benutzen,

Jochen

um damit irgendwie

Jochen

Deep Learning-Netze zu bauen. Das ist dann halt

Jochen

sowas wie TensorFlow oder halt eben

Jochen

PyTorch

Jochen

oder

Jochen

ja,

Jochen

was gibt es denn da noch alles?

Jochen

Also, diverse

Jochen

Geschichten.

Jochen

Und

Jochen

das, was wir hier verwenden im Beispiel, ist Keras.

Jochen

Das ist sozusagen die Python

Jochen

Binding für TensorFlow.

Jochen

Die sind auch im TensorFlow-Projekt, ist das Ding

Jochen

mit drin enthalten, hat die gleiche API wie

Jochen

bei den anderen Scikit-Learn-Modellen.

Jochen

Also wenn ihr auf Windows

Dominik

das mussten wollt, dann könnt ihr es zum Beispiel einfach mit Choco

Dominik

im Paketmanager-Coder installieren

Dominik

und das dann ausprobieren.

Dominik

Aber das

Jochen

kann ich vorwarnen, es wird böse

Jochen

Überraschungen geben, das ist nicht so einfach.

Jochen

Das ist alles ziemlich schwierig. Oder du kannst es ja mal

Jochen

bei dir ausprobieren. Ja, ich wollte sagen, das werde ich auf jeden Fall

Dominik

tun und werde

Dominik

berichten. Genau.

Dominik

Man kann das auch inzwischen,

Jochen

Ich habe das auf meinem, ich habe so ein

Jochen

Faible für Apple, ich bin so ein Apple-Jünger

Jochen

und

Jochen

leider werden ja keine

Jochen

Nvidia-GPUs mehr verbaut, daher funktioniert das alles

Jochen

nicht mehr so richtig. Es gibt aber

Jochen

da auch so ein Projekt, das sollte man auch noch nie,

Jochen

muss ich auch noch nie Shownotes packen, PlateML.

Jochen

Damit kann man

Jochen

die AMD-GPUs,

Jochen

die ja darin sind, benutzen.

Jochen

Es gibt ja die Abstraktion

Jochen

von Apple selber, Metal

Jochen

heißt die irgendwie, wenn man die benutzt,

Jochen

dann ist das auch schon recht schnell.

Jochen

Also sozusagen die AMD-GPU, die jetzt in meinem MacBook,

Jochen

das ist ein relativ altes Ding von 2016, drin steckt,

Jochen

die ist auf jeden Fall irgendwie doppelt so schnell,

Jochen

wenn nur die GPU läuft, wie die vier i7-Kerne,

Jochen

die da sonst so drin sind.

Jochen

Wusch.

Jochen

Und das ist dann halt schon, also man kann so sagen,

Jochen

ungefähr GPU-zu-CPU-Performance-Unterschied ist so 1 zu 10 mindestens.

Jochen

Kommt halt drauf an, was man für CPUs und GPUs hat,

Jochen

aber so eine Größenordnung mindestens mal.

Jochen

Und genau, wenn man jetzt keine

Jochen

GPU hat, dann, weil, also auf einer

Jochen

GPU dauert das jetzt mit

Jochen

den Katzen und Hunden, mit den Tausendballspielen, wenn man es

Jochen

from scratch einfach so trainiert, auch schon fünf Minuten.

Jochen

Und das wäre dann jetzt,

Jochen

wenn man eine CPU verwenden würde, so

Jochen

mindestens mal ungefähr eine Stunde.

Jochen

Da macht das dann schon keinen Spaß mehr.

Jochen

Fünf Minuten kann man mal machen, aber

Jochen

irgendwie eine Stunde irgendwie darauf warten, dass da

Jochen

irgendwas, dass man so eine Stunde lang so ein

Jochen

Progress Bar angucken ist.

Jochen

Das ist vielleicht irgendwie nicht jedermanns Sache.

Jochen

Und, genau, also, ja, ich kann ja einfach mal, genau, 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 und das ist natürlich ganz praktisch. Man muss nur unter Edit Notebook Settings GPU anwählen und man sollte das auch machen mit dem, also man muss zuerst dieses Prepared Training Data Notebook ausführen, wo dann halt dieses Hundekatzenbeispiel irgendwie gezogen wird.

Jochen

Und das liegt bei mir irgendwie auf dem S3-Ding.

Jochen

Und ja, dann werden halt auch diese Samples da rausgezogen.

Jochen

Und wenn man das getan hat, da muss man auch schon die GPU aktivieren,

Jochen

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, ja, convolutional Deep-Learning-Netz irgendwie trainieren.

Jochen

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

Jochen

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

Jochen

Ja, das sind sehr schöne Beispiele, die da drin sind.

Jochen

Das Buch ist sowieso sehr empfehlenswert, wenn man sich für Deep-Learning und wie man das mit Python und Keras macht.

Jochen

interessiert, dann ist das auch auf jeden Fall

Jochen

eine Leseempfehlung.

Jochen

Ja, dann

Dominik

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

Dominik

Genau, also zuerst

Jochen

baut man das Modell halt irgendwie zusammen.

Jochen

Darauf möchte ich jetzt, das machen wir

Jochen

dann bei irgendeiner Deep Learning Folge, was

Jochen

macht ein Convolution Operation eigentlich, was ist Max Pooling

Jochen

und so, aber

Jochen

das wird einfach

Jochen

jetzt ein bisschen zu weit führen.

Jochen

Aber man kann halt dieses Modell

Jochen

bauen. Man kann sich ausgeben lassen, welche Layer sind da drin,

Jochen

wie viele Parameter oder so man da so

Jochen

durchgeht, sieht man das. Das ist jetzt

Jochen

nicht so groß, es hat nur so dreieinhalb Millionen Parameter,

Jochen

aber ist halt schon

Jochen

so ein Bereich, wo das halt mit CPU

Jochen

irgendwie zu trainieren schon relativ knackig wird.

Jochen

Dann nimmt man halt

Jochen

eben für,

Jochen

man legt noch die

Jochen

Verlustfunktion fest, das wäre an der Stelle

Jochen

Binary Cross Entropy, das ist einfach nur

Jochen

Log Loss.

Jochen

Kann man auch einfach nachgoogeln, dann weiß man,

Jochen

was das für eine Verlustfunktion ist.

Jochen

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

Jochen

Und, ähm, legt halt noch den, äh, äh, sozusagen Optimierungsalgorithmus fest.

Jochen

Ja, und, äh, dann, da man bei Bildern oft das Problem hat, dass man die, ähm, Datenmenge also nicht so richtig in den Hauptspeicher packen kann, ich weiß auch nicht, wie groß ImageNet ist, aber irgendwie so 140 GB oder ich weiß, das ist aber jedenfalls schon recht groß.

Jochen

Das kriegt man nicht mal so...

Dominik

Ist ein Lautspeicher nicht über 140 GB groß?

Jochen

Doch, gibt es wahrscheinlich Maschinen,

Jochen

da habe ich das

Jochen

falsch...

Jochen

Kann sein, dass ich total ein Blödsinn

Jochen

gerade erzählt habe, wie groß ist der Imageschnitt?

Jochen

Das müssen wir schnell kontrollieren.

Jochen

Das müssen wir gut nachkontrollieren.

Jochen

Größe, Imageschnitt-Size.

Jochen

Ja, habe ich gerade nach Google,

Jochen

habe einen Wikipedia-Artikel gefunden.

Jochen

Steht nicht drin.

Jochen

Naja, egal. Also ist wahrscheinlich

Jochen

auf jeden Fall sehr, sehr groß.

Jochen

Und

Jochen

ja,

Jochen

man arbeitet halt dann bei Bildern

Jochen

meistens mit so Generatoren.

Jochen

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

Jochen

154 GB. Also okay.

Jochen

Also so schlimm ist es nicht, aber

Jochen

ja, hat man wahrscheinlich auch nicht

Jochen

unbedingt zu Hause. Und

Jochen

diese

Jochen

Image-Data-Generator-Klasse abstrahiert

Jochen

das sozusagen weg und man iteriert sozusagen

Jochen

über die Bilder, ohne dass man den ganzen Kram

Jochen

in meinem Hauptspeicher halten muss

Jochen

und sage dann halt, okay, hier sind Trainingsdaten,

Jochen

da sind die Validationsdaten.

Jochen

Validationsdaten wäre das benutzt,

Jochen

auch während der Trainingszeit

Jochen

schon anzuzeigen, wie gut das

Jochen

Modell momentan performt, sozusagen,

Jochen

auf Daten, die man halt noch nicht gesehen hat.

Jochen

Und am Schluss rechnet man halt

Jochen

den Score aus auf dem Testset.

Jochen

Das ist auch so eine ganz wichtige Geschichte, das hatten wir gestern nicht.

Jochen

Da haben wir einfach Training und Test genommen.

Jochen

Aber eigentlich

Jochen

muss man noch eine dritte Kategorie haben.

Jochen

Man muss halt irgendwie ein Trainingsset haben,

Jochen

muss ein Set haben,

Jochen

auf dem man validiert, also

Jochen

vielleicht schon während man

Jochen

ein Modell trainiert, sieht, geht das jetzt

Jochen

in die richtige Richtung oder nicht.

Jochen

Und auf dem man halt auch Überparameteroptimierung

Jochen

macht, aber das sollte man eben nicht

Jochen

auf dem Testset machen, sonst overfittet man das

Jochen

Testset. Und man kann halt

Jochen

sehen, dass man overfittet, wenn man

Jochen

auf dem Validationsset immer bessere Resultate

Jochen

erreicht und dann aber das nicht

Jochen

sozusagen auf dem Testset

Jochen

reproduziert werden kann.

Dominik

Das kann man wieder tatsächlich am besten, wenn man das wieder visualisiert.

Jochen

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

Jochen

Progressbar ist wieder mit TQDM.

Jochen

Genau. Ne, das ist nicht T-Code.

Jochen

Nein, die ist mir nicht.

Jochen

Aber man sieht halt sozusagen, wie sich da

Jochen

die Accuracy, die hier als

Jochen

Maß für den Fehler genommen wird,

Jochen

weil an der Stelle ist es tatsächlich mal so, dass es

Jochen

halbwegs aussagekräftig ist,

Jochen

weil wenn man halt zwei Klassen hat, gleich viele

Jochen

Elemente, dann weiß man halt, 50%

Jochen

ist halt Zufall und wenn man

Jochen

irgendwie da von Richtung 1 geht,

Jochen

dann ist das gut und je näher an 1, desto besser.

Jochen

Und man sieht auch,

Jochen

dass das auf den Trainingsdaten halt passiert und

Jochen

auf den Validationsdaten

Jochen

Daten auch, die man halt eben nicht

Jochen

in den Trainingstätten hat, aber halt nicht so stark.

Jochen

Und irgendwann geht der,

Jochen

geht die Accuracy auf dem

Jochen

Validation-Set nicht mehr weiter hoch,

Jochen

auf dem Training-Set aber schon.

Jochen

Und das kann man sich auch

Jochen

irgendwie dann mal rausplotten

Jochen

und sieht dann halt

Jochen

irgendwie sozusagen

Jochen

ja, das als

Dominik

eine lineare Kurve und eine, die fällt dann so

Dominik

irgendwann so ein bisschen ab. Also auf der x-Achse sieht man halt

Dominik

die Infos. Entfernen sich so ein bisschen voneinander.

Jochen

Genau, wie oft man über das Training-Set

Jochen

drüber gelaufen, ist dann auf der

Jochen

Y-Achse die Accuracy und

Jochen

man sieht halt Training-Accuracy geht halt so schön

Jochen

immer weiter hoch und

Jochen

Validation-Accuracy

Jochen

bleibt halt irgendwo so bei knapp über

Jochen

70% und steigt dann nicht weiter an.

Jochen

Und beim Fehler sieht man das

Jochen

eigentlich noch schöner, dass halt das so

Jochen

quasi auseinanderläuft und das ist

Jochen

also geht halt so eine Schere auf

Jochen

zwischen dem

Jochen

Fehler auf den Trainingsdaten und Fehler

Jochen

auf den

Jochen

Validationsdaten und der Grund dafür

Dominik

Also mit Fehler meinst du jetzt, die er falsch einsortiert hat,

Dominik

oder meinst du damit diejenigen, die er richtig einsortiert hat,

Dominik

die aber falsch sind?

Jochen

Das ist an der Stelle egal. Also ja, beides.

Jochen

Sozusagen Accuracy ist sozusagen

Jochen

ein kombiniertes Maß für beides an der Stelle,

Jochen

weil es die Accuracy

Jochen

sozusagen gleich verändert, ob ich die eine

Jochen

Fehler habe oder die andere an der Stelle.

Jochen

Ja, ich könnte natürlich

Jochen

auch jetzt, wenn ich ein anderes Problem hätte, könnte ich beide,

Jochen

weil wenn ich jetzt Precision und Recall hätte, könnte ich

Jochen

das halt beides plotten oder eben das kombinierte

Jochen

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 overfittet gerade das Training-Set und das bedeutet halt, dass man eigentlich nicht mehr wirklich lernt, also etwas 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 auswendig lernt.

Jochen

Genau. Es gibt diverse Gründe dafür, warum das passiert. Es kann sein, dass man einfach zu wenig Technikdaten hat für die Komplexität des Modells oder für die Anzahl der Parameter, die das Modell hat.

Jochen

Es kann sein, dass man da nicht hinreichend Regularisierungsmaßnahmen gegen Overfitting getroffen hat. Also bei neuronalen Netzen wäre das Dropout. Man kann aber auch irgendwie für die Parameter halt irgendwie sagen, dass da sozusagen schmeißt man einige der Verbindungen halt weg.

Jochen

Also ein Anteil zwischen 10 und 50 Prozent oder sowas. Und zwingt damit sozusagen das Netz nicht nur, also da schon generellere Geschichten gelernt zu haben, weil es muss halt auch funktionieren, wenn halt ein Teil davon nicht mehr funktioniert.

Jochen

So, es ist nicht so einfach zu erklären, warum das funktioniert. Das ist auch nicht so, das war schon, das war auch irgendwie, ja, bekannt, dass das irgendwie klappt oder so, aber niemand wusste genau, warum. Also, das 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. 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 zum Beispiel die Länge des normalen Vektors, also die Länge des Modells, der Betrag, die Länge des Vektors, dass der zu groß wird, in der L2-Norm zum Beispiel.

Jochen

und sagt halt, das ist nicht gut.

Jochen

Das sollten immer möglichst kleine

Jochen

Werte sein und das

Jochen

regularisiert auch. Es gibt halt die

Jochen

unterschiedlichsten Arten, wie man das hinkriegt.

Jochen

Aber ja,

Jochen

also an der Stelle

Jochen

ist es halt einfach tausend

Jochen

Beispiele sind einfach zu wenig, um

Jochen

wirklich zu lernen, was Katzen von Hunden

Jochen

untersteidet.

Jochen

Und ja,

Jochen

Overfitting ist halt so der große

Jochen

fiese Fehler, also einer der beiden

Jochen

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, aber es könnte halt auch sein,

Jochen

dass der Training-Error und Validation-Error beide noch relativ stark beieinander liegen, aber halt hoch sind.

Jochen

Und dann kann es halt sein, dass man underfittet.

Jochen

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

Jochen

Also wenn zum Beispiel die Daten irgendwie verteilt sind in der Parabel, aber man legt halt eine Gerade durch oder so, dann hat man einen zu großen Bias im Modell, dadurch, dass es halt vielleicht zu einfach ist. Man geht halt davon aus, dass es sich irgendwie durch eine Gerade darstellen lässt, ist aber nicht so, dann underfittet man halt.

Jochen

Oder in dem Fall wäre das halt, wenn man jetzt sozusagen einfach zu wenig Trainingsepochen nehmen würde, man würde jetzt einfach nur einmal 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

Jochen

und hätte sozusagen das Problem underfitted.

Jochen

Und zwischen Underfitting und Overfitting

Jochen

gibt es halt irgendwo einen Bereich, der optimal ist.

Jochen

Und man muss halt irgendwie versuchen, den zu treffen.

Jochen

Perfekt Match.

Jochen

Ja, und dann gibt es da auch immer noch so einen Unterschied

Jochen

zwischen Trainings- und Validation-Error,

Jochen

den man nicht wegkriegt.

Jochen

Das ist so ein irreduzierbarer Fehler,

Jochen

der halt vielleicht daherkommt, dass es da Rauschen gibt.

Jochen

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

Jochen

denkt, man ist fertig und hat aber

Jochen

einen der Fehler, die man eigentlich noch

Jochen

wegoptimieren kann, dann

Jochen

kommt man halt auch nicht zum

Jochen

besten möglichen Ergebnis.

Jochen

Ja.

Jochen

Genau.

Jochen

Damit haben wir das eigentlich im Grunde schon

Jochen

so halbwegs

Dominik

erklärt. Ja, also ich glaube, das wird dann wieder

Dominik

Zeit für den Captain Mark, weil die Frage ist, was

Dominik

fällt dir denn noch so ein? Außer dem Deep Learning,

Dominik

was wir auf jeden Fall nochmal machen wollen, aber was wir wahrscheinlich in der eigenen

Dominik

Folge irgendwie besprechen?

Dominik

Ja, also

Jochen

was ich noch

Jochen

genau

Jochen

ja genau, was ich auf jeden Fall noch erzählen

Jochen

würde nach dem Beispiel

Jochen

ist, warum

Jochen

Deep

Jochen

Learning

Jochen

auch auf

Jochen

kleineren Datensätzen funktioniert.

Jochen

Okay,

Dominik

ja. Was sind

Dominik

dann da kleinere Datensätze?

Jochen

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

Dominik

Also 1000, 10.000

Dominik

bis 1000 Datensätze. Ja, genau.

Dominik

Also groß ist halt sowas, also da

Jochen

funktioniert es ja gut, das weiß man ja.

Jochen

Imagenet, aber das sind anderthalb Millionen Bilder. Jetzt könnte man auf die Idee kommen

Jochen

und sagen, okay,

Jochen

so viele Bilder

Jochen

habe ich leider nicht für mein Problem. Ich möchte jetzt irgendwie

Jochen

keine Ahnung, irgendwie das praktisch

Jochen

anwenden und

Jochen

ich möchte jetzt aber nicht Hunde von Katzen

Jochen

unterscheiden oder

Jochen

irgendwie Tische

Jochen

in Bildern finden, sondern

Jochen

ich habe das Problem, ich

Jochen

mache jetzt, weiß ich nicht,

Jochen

bin in einer

Jochen

Müllverbrennungsanlage oder so, bin an einem Platz,

Jochen

wo ganz viel Müll angeliefert wird und ich möchte jetzt irgendwie

Jochen

den Müll auseinandersortieren.

Jochen

Und das sind halt alles Klassen. Also ich möchte jetzt zum Beispiel

Jochen

feststellen, ist das eine Plastikflasche oder ist das

Jochen

halt irgendwie was anderes als Glas?

Jochen

Eine Plastikflasche mit einem Hundeetikett.

Jochen

Ja, also meine Klassen sind halt anders.

Jochen

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

Jochen

Und da kann ich denken,

Jochen

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 könnte ich halt denken, okay, Deep Learning ist nichts für mich.

Jochen

Das funktioniert alles nicht.

Jochen

Ich lasse weiter das irgendwie ein Euro-Jobber

Jochen

und die sortieren das dann 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

Die wurden dann halt auf ImageNet trainiert

Jochen

und geht halt dann davon aus,

Jochen

dass sozusagen ein Großteil von dem,

Jochen

was unsere visuelle Realität ausmacht,

Jochen

dann da schon irgendwie ordentlich trainiert worden ist.

Jochen

Also Feature-Extraktion aus Bildern

Jochen

funktioniert damit halt schon ziemlich gut

Jochen

und diese Annahme wird wahrscheinlich halten.

Jochen

Und dann trainiert man halt ein eigenes Modell,

Jochen

was aber nur die von einem Deep-Learning-Modell,

Jochen

das aus ImageNet trainiert wurde, generiert wurden.

Jochen

Also man nimmt sozusagen, also bei den Deep-Learning-Modellen,

Jochen

die auf ImageNet trainiert wurden, ist halt so der letzte Layer,

Jochen

zum Beispiel der Klassifikationslayer, der das halt in die tausend,

Jochen

das ist halt nochmal ein dichter Layer und danach sind nochmal tausend Ausgabeneuronen,

Jochen

die halt dann die tausend Klassen von ImageNet darstellen.

Jochen

Und dann bei jedem Ding kommt halt eine Wahrscheinlichkeit raus,

Jochen

dafür, dass es in der Klasse liegt.

Jochen

Und diese beiden Dinger nimmt man einfach

Jochen

weg, also den Klassifikationslayer

Jochen

und nimmt

Jochen

nur das, was dabei rauskommt, wenn man jetzt

Jochen

wirft man halt ein Bild von einer Plastikflasche

Jochen

oben rein und dann kommt halt das raus, was jetzt

Jochen

normalerweise dann als Elefant oder Hund

Jochen

klassifiziert würde.

Jochen

Ein Feature Vector, das ist an der Stelle noch nicht

Jochen

ein Vector, das ist halt ein Tensor, der irgendwie so ein bisschen anders aussieht.

Jochen

Den klopft man dann halt flach, irgendwie so

Jochen

in einen Vector. Einmal mit der

Jochen

großen Küchenrolle drüber. Genau, und dann

Jochen

hat man halt so einen

Jochen

Feature Vector extrahiert und das macht man halt mit allen

Jochen

Bildern, die man hat. Vielleicht hat man halt nur so tausend, aber tausend

Jochen

kann man durchaus sammeln, dass das geht.

Jochen

Und halt

Jochen

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

Jochen

Und

Jochen

dann trainiert man einen eigenen

Jochen

Klassifikationslayer, sozusagen ein eigenes

Jochen

Modell auf diesen Features.

Jochen

Und dann

Jochen

kommt man damit auf

Jochen

auch gar nicht so schlechte Ergebnisse

Jochen

und hat sozusagen

Jochen

das Deep Learning Modell

Jochen

nur zur Feature-Extraktion benutzt.

Jochen

Das ist ein super billiges Verfahren.

Jochen

Damit kommt man schon in Bereiche,

Jochen

in die man früher nie gekommen wäre,

Jochen

mit wenig Trainingsdaten.

Jochen

Einfach deswegen, weil man sich halt viel

Jochen

von der Generalisierungs-Power

Jochen

oder Feature-Extraktions-Geschichte,

Jochen

die halt auf einem Image-net-trainierten

Jochen

Modell, was halt drinsteckt, irgendwie sozusagen

Jochen

transferieren kann auf das Problem, was man hat.

Dominik

Ja, also ich denke mal, diese Daten kommt ja relativ einfach sammeln.

Dominik

Ihr stellt euch einfach mit eurer Kamera da zu dem Unternehmen, wo ihr es einführen

Dominik

wollt, müsst halt pro Kategorie 1000 Fotos

Dominik

aus verschiedenen Perspektiven schießen und schon

Dominik

ein bisschen was da passiert.

Dominik

Genau, genau. Also

Dominik

es ist immer noch nicht einfach.

Jochen

Man muss das dann auch nebeln und so, aber das wird dann

Jochen

alles, kommt in den machbaren Bereich.

Jochen

Ein Verfahren, was noch besser funktioniert, ist

Jochen

das nennt sich Feintuning.

Jochen

Da nimmt man halt so ein Modell,

Jochen

so ein Deep Learning Modell und sagt halt, okay,

Jochen

ich nehme

Jochen

jetzt den obersten Klassifikationslayer

Jochen

oder vielleicht noch ein paar von den Layern mit

Jochen

den abstraktesten Features. Vielleicht ist, wenn ich Plastikflaschen

Jochen

erkennen will, gar nicht so

Jochen

relevant, ob da jetzt Fell drauf ist oder nicht,

Jochen

weil die haben halt kein Fell.

Jochen

Aber ich möchte jetzt zwei Arten von Plastikflaschen unterscheiden,

Jochen

da ist halt vielleicht was anderes wichtig. Das heißt,

Jochen

man nimmt einige der abstraktesten

Jochen

Layer, oder Layer,

Jochen

die halt die abstraktesten Features detektieren,

Jochen

die

Jochen

macht man trainierbar, den Rest von dem

Jochen

Modell, also die ganzen Layer,

Jochen

die halt so eher einfache Sachen

Jochen

detektieren,

Jochen

die friert man ein.

Jochen

Dann kann man in Keras einfach sagen, so, diese Layer sind alle

Jochen

eingefroren, die ändern sich beim Training nicht.

Jochen

Und nur die obersten paar Layer

Jochen

dürfen sich halt ändern.

Jochen

Und dann trainiert man neu.

Jochen

Das ist halt wieder ein bisschen aufwendiger, weil man halt

Jochen

viel mehr Parameter halt fitten muss.

Jochen

Aber das funktioniert dann noch viel besser.

Jochen

Und damit kommt man dann schon so in die Region von dem,

Jochen

was ImageNet halt auch, äh, was diese

Jochen

Modelle halt auch auf ImageNet für eine

Jochen

Genauigkeit haben.

Jochen

Und also da kommt man, ja, vielleicht nicht ganz

Jochen

Richtung menschliche Performance, also aber schon

Jochen

sehr, sehr, also es ist dann schon sehr, sehr gut.

Jochen

Also Feintuning heißt die Methode,

Jochen

funktioniert ziemlich

Jochen

klasse. Und damit kriegt man

Jochen

sozusagen Probleme,

Jochen

wo man früher gedacht hätte, das geht gar nicht,

Jochen

kriegt man nicht in den Griff. Und wenn man jetzt so ein bisschen was

Jochen

von Deep Learning gehört hat, dann denkt man sich vielleicht so, oh, so viele

Jochen

Trainingsbeispiele habe ich gar nicht. Wäre schön, ich

Jochen

kriege es vielleicht theoretisch in den Griff, aber praktisch kann ich es auch

Jochen

nicht machen. Man kriegt die Dinge auch

Jochen

tatsächlich praktisch in den Griff. Also das ist

Jochen

schon, das sollte man vielleicht wissen,

Jochen

dass das möglich ist und wie man das machen kann.

Jochen

Du musst dir mal alles ausprobieren.

Dominik

Ich bin da total neugierig drauf. Ich muss mal ein, zwei Leute finden,

Dominik

die Lust haben, dass man bei denen mal so ein Projekt baut.

Dominik

Ja, und

Jochen

ja, damit kann man dann auf jeden Fall

Jochen

schon so richtige... Also wenn ihr Lust habt, dass wir so

Dominik

ein Maschinen-Learning-Projekt bei euch machen, dann sagt auch mal

Dominik

Bescheid, ne? Das ist natürlich...

Dominik

Ja.

Dominik

Aber schon einen recht

Jochen

starken Wow-Effekt mit erzeugen.

Jochen

Ja,

Jochen

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

Jochen

nächsten Jahren, das dauert natürlich jetzt sehr lange, also

Jochen

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

Jochen

ImageNet ist natürlich so ein

Jochen

Dataset, das kann man jetzt

Jochen

für viele Sachen in der Praxis geht

Jochen

das, aber für manche Sachen geht das noch nicht. Für viele

Jochen

andere Sachen gibt es noch keine tollen Datasets.

Jochen

Aber bis das

Jochen

jetzt sozusagen, also viele dieser

Jochen

Probleme, mit denen man in der Praxis was anfangen könnte,

Jochen

sind jetzt theoretisch im Griff und man muss es halt nicht nur

Jochen

praktisch umsetzen. Das wird aber

Jochen

wahrscheinlich noch irgendwie lange dauern. Wahrscheinlich wird es die nächsten

Jochen

zehn Jahre dauern, bis man das in Produkten im Alltag

Jochen

sieht, dass die das wirklich benutzen

Jochen

und auch richtig benutzen. Weil am Anfang

Jochen

jetzt müssen die Leute erstmal lernen, wie das geht.

Jochen

Die werden erstmal Fehler machen. Das wird erstmal

Jochen

wird man viele Dinge komplett falsch machen

Jochen

und dann dauert das halt irgendwie ein paar Jahre, bis die Leute

Jochen

anfangen, das richtig hinzubekommen

Jochen

und dann dauert es noch mal ein paar Jahre,

Jochen

bis die Daten ordentlich sind

Jochen

und ja, so wie das halt so ist.

Jochen

Also, alles sehr langsam.

Jochen

Ja, ist leider so.

Jochen

Aber

Jochen

wahrscheinlich wird man da

Jochen

in vielen Bereichen

Jochen

tolle Verbesserungen sehen und mir wird das ja schon

Jochen

reichen, wenn ich im Supermarkt nicht immer irgendwie

Jochen

fluchend vor dem Pfandautomaten stehen muss.

Jochen

wahrscheinlich braucht man ja nicht mal Deep Learning,

Jochen

das ist einfach nur kaputt. Ach,

Jochen

vielleicht geht's doch nicht. Das ist einfach ein Problem, schon nicht geht.

Jochen

Naja,

Jochen

ich geb die Hoffnung nicht auf. Ja, ja, genau, das wollte ich

Jochen

gerade sagen. Also eben mal so.

Dominik

Die Kundenintelligenz, die AGI kriegen wir alle nicht

Dominik

hin und die ganzen Roboter und so, aber

Dominik

ja, vielleicht ist es auch cool, also

Dominik

nützlich.

Jochen

Gut, ja, also

Jochen

ein praktisches Beispiel hatten wir, wir hatten eine Zeltform,

Jochen

genau, was wir vielleicht noch ein bisschen uns angucken

Jochen

können, ist das Visualisierungs-Notebook.

Jochen

Ja, weil

Jochen

ja,

Jochen

da bekommt jemand nicht, was er möchte.

Jochen

Nicht gut.

Jochen

Ja.

Jochen

Genau.

Jochen

Da sind sozusagen die, wenn man die ganzen Notebooks

Jochen

halt ausgeführt hat, dann werden die Modelle

Jochen

halt auch gespeichert

Jochen

und hier werden sie halt nochmal reingeladen.

Jochen

Da werden auch die

Jochen

quasi endgültigen Scores auf

Jochen

den Testdaten ermittelt

Jochen

sozusagen und man kann halt so ein bisschen

Jochen

sich angucken,

Jochen

welche Features

Jochen

werden eigentlich so aktiviert, wenn man jetzt so ein Bild von einer Katze

Jochen

zum Beispiel da reinwirft.

Jochen

Und

Jochen

da gibt es auch ein Ding, was hier so ein bisschen

Jochen

zeigt.

Jochen

Ach, jetzt das Visualisierungs-Notebook

Jochen

stimmt, da ist auch das tatsächlich

Jochen

eher so, das zeigt

Jochen

ja, da sind ein paar kaputte Sachen dabei und das

Jochen

zeigt tatsächlich eher so, wo

Jochen

wie funktioniert das mit den Controllers

Jochen

und so, das wollte ich aber gar nicht zeigen.

Jochen

Das ist ein anderes Notebook, was ich zeigen wollte.

Jochen

Da hast du gesagt, dass du das zeigen wolltest. Ja,

Jochen

hab ich vertan.

Jochen

Evaluation Notebook, das war das.

Jochen

Genau, das ist das, wo

Jochen

die Modelle geladen werden, die jetzt irgendwie

Jochen

gespeichert wurden auf der Platte.

Jochen

Was hast du gespeichert, das Pickel?

Jochen

Nee, HDF5.

Jochen

HDF5?

Jochen

Ja.

Jochen

Was ist das?

Jochen

Ist das Vorläufer von NetCDF?

Jochen

Ich weiß es nicht so genau.

Jochen

Ist auch so ein wissenschaftlicher Bereich,

Jochen

übliches Format, irgendwie Daten zu speichern.

Jochen

Ja, im Grunde stehen 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. 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. 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.

Dominik

Fotografiert ihr eure Katze, fotografiert ihr euren Hund?

Dominik

Ja, genau.

Dominik

Ob das wirklich eine Katze oder ein Hund ist,

Dominik

zumindest nach der Meinung von dem Algorithmus.

Dominik

Wird man das natürlich auch irgendwie,

Jochen

wahrscheinlich sowas schon irgendwie so haben.

Dominik

Ihr könnt auch fast ganz andere fotografieren und fragen,

Dominik

ob es eine Katze oder ein Hund ist und gucken, was rauskommt.

Dominik

Ja.

Jochen

Ja, egal.

Jochen

Genau, und dann wird das halt runterskaliert.

Jochen

Das sieht dann auch ein bisschen deprimierend aus,

Jochen

weil man sieht nicht mehr so viel auf dem Bild.

Jochen

Das sind halt immer so 150x150 Pixel

Jochen

Bilder, die da

Jochen

reingehen.

Jochen

Und dann kann man halt mal die Modelle, die man da hat,

Jochen

hernehmen und

Jochen

die einfach klassifizieren lassen, was sie dann darauf

Jochen

sehen. Und dann sieht man schon, dass

Jochen

das vom Sketch-Model halt nicht so richtig toll

Jochen

funktioniert vielleicht. Das sagt bei einem Hund dann

Jochen

irgendwie mit einer 80%igen Wahrscheinlichkeit,

Jochen

oh, das ist eine Katze und

Jochen

ja, da gab es auch

Jochen

dann das mit Data Augmentation

Jochen

ist so ein bisschen, um

Jochen

Overfitting zu reduzieren, ist halt schon so ein bisschen besser,

Jochen

aber das Feature Extraction

Jochen

Modell, das hat dann schon, oh, das sieht aber

Jochen

eher wie ein Hund aus und dann

Jochen

ja, das

Jochen

Fine Tuning ist halt nochmal deutlich

Jochen

besser und

Jochen

das kann man dann auch nochmal auf mehreren

Jochen

Bildern machen und das ist vielleicht auch mal ganz interessant

Jochen

zu sehen, welche Bilder halt in dem

Jochen

Beispiel-Dataset da so drin sind

Jochen

und man kann sich das Ganze nochmal

Jochen

so als Tabelle ausgucken. Ich habe übrigens,

Jochen

das war bei der letzten,

Jochen

beim letzten Treffen

Jochen

der Python-User-Group habe ich das auch irgendwie mal so ein bisschen

Jochen

vorgestellt und da war das irgendwie, sah das

Jochen

nicht gut aus, weil dann stand da irgendwie

Jochen

Cat 0% oder sowas, aber das

Jochen

habe ich jetzt hier mal gefixt. Das war einfach nur so,

Jochen

dass das, der Klassenname war immer Cat

Jochen

und 0% bedeutete einfach, es ist ein Hund.

Jochen

Oh. Also es war schon richtig.

Jochen

Es war nur blöd dargestellt, das habe ich jetzt nochmal geändert,

Jochen

dass wenn es irgendwie kleiner als 50% ist,

Jochen

dass dann

Jochen

Hund als Klasse dasteht.

Dominik

Ja, ist auf jeden Fall super schön zum Antauen

Dominik

und ich glaube auch zum Visualisieren von den ersten Tests.

Dominik

Solltet ihr es auf jeden Fall auch mal ausprobieren?

Dominik

Ja, genau.

Dominik

Und ich glaube, von dem ganzen theoretischen Überbau

Dominik

haben wir es schon ziemlich viel geschafft heute, würde ich sagen.

Jochen

Ich guck noch mal grad, ob es noch irgendwas gibt, was

Jochen

äh. Hast du noch

Jochen

einen letzten kleinen Punkt?

Jochen

Nö. Nö, das ist, äh,

Jochen

ich glaube, wir sind tatsächlich irgendwie so halbwegs

Dominik

durch. Dann würde jetzt ja die nächste Chapter mal

Dominik

kommen und wir würden vielleicht noch einfach kurz die Picks

Dominik

nehmen, die wir immer so gerne noch wieder eingeführt hatten.

Dominik

Ich glaube, die gefielen euch auch ganz gut.

Dominik

Welches, äh, Modul

Dominik

pickst du diese Woche, Jochen?

Jochen

Äh, ja, hab ich auch in einem Podcast von gehört.

Jochen

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

Jochen

Doch, ich meine. Aber, ähm,

Jochen

und zwar, äh, gibt's da

Jochen

ein sehr schönes Modul namens

Jochen

MatMat.

Jochen

Was das tut ist,

Jochen

also es gibt ja, also testen ist ganz wichtig

Jochen

und so. Und

Jochen

es gibt halt auch so Ansätze, irgendwie

Jochen

Tests vielleicht zu automatisieren.

Jochen

Ein interessanter ist Hypothesis.

Jochen

Das ist vielleicht dann auch irgendwie

Jochen

auch ein Pick.

Jochen

Das Ding generiert halt

Jochen

mögliche Eingaben für Funktionen und so

Jochen

und probiert die halt alle durch und sagt einem Bescheid,

Jochen

wenn es irgendwo Probleme gab.

Jochen

Das ist aber nur ein Ansatz und Mathematik verfolgt einen anderen und den finde ich eigentlich ziemlich cool. 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 Tests wie 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 das wirklich funktioniert, dass wirklich, wenn etwas kaputt geht, man das halt auch tatsächlich bemerken würde.

Jochen

Es könnte sein, aber es kann halt auch Fälle

Jochen

geben, wo das dann nicht passiert. Und MatMat

Jochen

setzt da irgendwie so ein bisschen an und

Jochen

macht etwas sehr Interessantes. Und zwar ändert es

Jochen

halt zufällig irgendwie Dinge

Jochen

im Code. Irgendwelche Datentypen

Jochen

oder sowas. Ja, also es macht zum Beispiel

Jochen

größer in kleiner Zeichen oder

Jochen

sowas. Ändert Bedingungen,

Jochen

fügt irgendwie was hinzu oder so. Und guckt,

Jochen

ob Tests fehlschlagen.

Jochen

Und das ist natürlich

Jochen

irgendwie echt nett. Also sozusagen, es macht

Jochen

halt irgendwie zufällige Änderungen an deinem Code und

Jochen

guckt dann halt irgendwie... Ist dann sein Test gut genug,

Jochen

um das zu entdecken? Ist seine Test-Feed gut genug

Jochen

zu finden, gut genug, ist seine

Jochen

Testabdeckung gut genug, um rauszufinden,

Jochen

dass jetzt irgendwie hier was zufällig geändert wurde.

Jochen

Und das ist natürlich schon echt

Jochen

ein sehr interessanter Ansatz. Sehr, sehr gut, also

Dominik

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

Jochen

Ja, genau, das wäre halt so mein Pick

Jochen

für, ja,

Jochen

diese Episode. Ja, also ich würde

Dominik

tatsächlich auch nochmal Seaborn

Dominik

kurz auswählen, das hatten wir zwar schon in der

Dominik

Pandas-Episode, glaube ich, kurz vorgestellt, aber das ist einfach,

Dominik

wenn man Matplotlib so kennt,

Dominik

einfach die totale tolle grafische Erweiterung,

Dominik

dass alles ein bisschen schicker aussieht,

Dominik

mit der man es einfach auf Matplotlib draufpackt

Dominik

und an C-Bohren reinbaut.

Dominik

Und ich würde auch gerne irgendwie so drei Kleinigkeiten

Dominik

aus der Standardbibliothek,

Dominik

aber die ich jetzt so ein bisschen mehr drin bewahre,

Dominik

weil ich was dazu geschrieben hatte,

Dominik

nur kurz vorstellen.

Dominik

Das ist natürlich jetzt wieder der Nupic,

Dominik

aber das ist da trotzdem vielleicht für einige interessant.

Dominik

Und zwar kennt ihr hoffentlich ArcPath,

Dominik

also mit dem man vernünftig so die Parameter

Dominik

zu Skripten übergeben kann.

Dominik

da gibt es irgendwie von,

Dominik

wie heißt das von Google,

Jochen

gibt es eine Bibliothek? Es gibt noch

Jochen

Click. Genau.

Dominik

Und natürlich dann die Standard

Dominik

Variante.

Dominik

Aber ich finde ArcPass ja ziemlich cool.

Dominik

Also ich finde es auch besser als Click. Also Click benutzt halt irgendwie so

Dominik

Dekoratoren, um das irgendwie zu machen.

Dominik

Und ja, weiß nicht, fand ich

Dominik

nicht so toll, aber obwohl die Gesundheit auch ganz nett ist,

Dominik

aber ArcPass fand ich auch irgendwie ganz nice.

Dominik

Und dann ja,

Dominik

GetPass natürlich, um da irgendwie so Passwörter reinzubekommen.

Dominik

Irgendwie als verschlüsselten Text, dass man nicht direkt sieht, was eingegeben

Dominik

geben wird. Auch immer gut, wenn man sich irgendwo

Dominik

einloggt, braucht man das vielleicht. Ja, das ist tatsächlich

Jochen

super. Das ist vor allen Dingen auch schön in

Jochen

Notebooks, weil ansonsten

Jochen

schreibt man das ja auch

Jochen

irgendwie mit in die Notebooks

Jochen

rein und checkt das vielleicht irgendwo ein oder so.

Dominik

Genau. Und

Dominik

ja, ich habe ab und zu noch den Textwrap, das

Dominik

Textwrap-Modul benutzt, einfach nur zum

Dominik

Didenten, meistens von irgendwelchen

Dominik

mehrteiligen Dockstrings, die sonst irgendwie

Dominik

verrutscht wären, irgendwie einfach in meinen

Dominik

ja, in meiner Struktur, in meinen

Dominik

Files.

Dominik

Konnte man so ganz gut darstellen. Also, falls ihr das Problem

Dominik

habt, TechTrap.

Dominik

Ja, das war es eigentlich schon so mit den Modulen

Dominik

und ich hoffe, euch hat die Folge jetzt wieder gefallen,

Dominik

Machine Learning.

Dominik

Egal, wo ihr

Dominik

die gehört habt gerade. Also, wir haben jetzt gerade

Dominik

ausnahmsweise mal Nachmittag, sonst nehmen wir ja immer abends auf,

Dominik

gerade relativ gutes Wetter. Ich habe schon

Dominik

fast überlegt, ob wir rausgehen sollen.

Dominik

Ja, bestimmt könnte man eigentlich auch.

Dominik

Wetter ist momentan super.

Dominik

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

Dominik

an hallo-at-pison-podcast.de

Dominik

Ja, wir hören uns.

Dominik

Bis zum nächsten Mal.