Um maschi­nel­les Ler­nen zu ler­nen, muss man eine Menge beängs­ti­gen­der Mathe­ma­tik und Code ver­ste­hen. Das kann sehr schwer sein! Zumin­dest war es das für mich, bis ich diese 5 Geheim­nisse lernte, die eigent­lich gar keine Geheim­nisse sind, die einem aber nie­mand wirk­lich bei­bringt, obwohl sie jeder ken­nen sollte.

Das Geheim­nis der Mathe­ma­tik #1

Sie haben ein fal­sches Ver­ständ­nis von Mathe­ma­tik, was Sie schon am Anfang zum Schei­tern ver­ur­teilt, aber das ist nicht Ihre Schuld!

Als ich anfing, ML zu ler­nen, war­fen einige mei­ner Pro­fes­so­ren ein­fach eine For­mel auf den Bild­schirm und sag­ten uns: „Das ist die Ver­lust­funk­tion für einen Ent­schei­dungs­baum“, und das war’s.

Die meis­ten mei­ner Kom­mi­li­to­nen und ich waren ver­wirrt. Wir starr­ten ein­fach auf die For­mel und war­te­ten auf den magi­schen Aha-Moment, wenn die For­mel Sinn ergab.

Ich habe mich immer gefragt, wie diese klu­gen Wis­sen­schaft­ler die Mathe­ma­tik so gut ver­ste­hen konn­ten, dass sie neue Algo­rith­men ent­wi­ckeln und ein­fach in der „Spra­che der Mathe­ma­tik“ den­ken konn­ten. Bis ich merkte, dass ich falsch herum dachte.

Ich kon­zen­trierte mich zu sehr auf die eigent­li­chen mathe­ma­ti­schen For­meln im Bereich der Mathe­ma­tik, anstatt einen Schritt zurück­zu­tre­ten und wie ein Wis­sen­schaft­ler zu denken.

Ich meine, ich habe buch­stäb­lich auf eine For­mel geschaut und ver­sucht, die For­mel als Gan­zes zu ver­ste­hen, was für mich jetzt, nach­dem ich die­ses Geheim­nis gelernt habe, ein­fach kei­nen Sinn mehr macht!

Den­ken Sie nicht an Mathe­ma­tik als etwas Abs­trak­tes und ver­su­chen Sie dann, sie für den Men­schen inter­pre­tier­bar zu machen. Sie müs­sen erken­nen, dass Sie anders­herum den­ken müs­sen. Den­ken Sie an die Idee, die ein Mensch hatte. Ver­stehe sie. Und dann über­lege, wie du sie in die Spra­che der Mathe­ma­tik über­set­zen kannst.

Das klingt viel­leicht sehr ver­wir­rend, aber die Mathe­ma­tik ist keine eigen­stän­dige Spra­che, in der die Men­schen den­ken. Wis­sen­schaft­ler den­ken genau wie Sie und ich in einer natür­li­chen Spra­che. Sie wis­sen nur, wie sie ihre Ideen in die For­ma­lis­men der Mathe­ma­tik über­set­zen kön­nen, die es dann ermög­li­chen, sie umzu­set­zen und dann mit Hilfe der Regeln der Mathe­ma­tik weiterzuentwickeln.

Wie bereits erwähnt, habe ich eine For­mel immer als Gan­zes betrach­tet. Aber jeder Bestand­teil einer For­mel ist nur ein Teil die­ser mensch­li­chen Idee. So ist z. B. eine Summe oder ein Pro­dukt buch­stäb­lich nur eine for-Schleife, die einige Bedin­gun­gen haben kann, die buch­stäb­lich einer if else-Anwei­sung im Code entsprechen.

Das ist natür­lich leich­ter gesagt als getan, und um ein mathe­ma­ti­sches Kon­zept mit Hilfe mensch­li­cher Vor­stel­lun­gen zu ver­ste­hen, muss Ihnen jemand diese mensch­li­chen Vor­stel­lun­gen rich­tig bei­brin­gen und Ihnen zei­gen, wie man sie Schritt für Schritt über­setzt. Mei­ner Erfah­rung nach gibt es jedoch zwei Szenarien.

  1. Der Leh­rer macht das schon, aber du ver­stehst nicht, dass er das macht, weil dir nie aus­drück­lich bei­gebracht wurde, so zu denken
  2. Der Leh­rer sieht sich wirk­lich nur die For­meln und Ablei­tun­gen an. In die­sem Fall musst du ver­su­chen, die ursprüng­li­che mensch­li­che Idee selbst her­aus­zu­fin­den, indem du sie z. B. im Inter­net nach­schlägst. Aber das Gute daran ist, dass du jetzt weißt, dass es nicht deine Schuld ist und dass es ein intui­ti­ves Ver­ständ­nis der Mathe­ma­tik gibt, das du fin­den kannst!

Die Mathe­ma­tik ist nur die For­ma­li­sie­rung einer mensch­li­chen Idee.

Nur sehr wenige Men­schen den­ken tat­säch­lich in der Spra­che der Mathe­ma­tik. Sie ist nur ein Werk­zeug. Aber bei jedem Zwi­schen­schritt der Ablei­tung denkt man oft tat­säch­lich in der Spra­che der Mathe­ma­tik, was sehr schwie­rig ist. Es sei denn, man kennt das nächste Geheimnis.

Das Geheim­nis der Mathe­ma­tik #2

Die­ses Geheim­nis hat buch­stäb­lich die Art und Weise ver­än­dert, wie ich unheim­li­che mathe­ma­ti­sche Ablei­tun­gen wie diese betrachte.

Um noch ein­mal in die Zeit zurück­zu­sprin­gen, als ich eine Vor­le­sung an der Uni­ver­si­tät besuchte, erklärte mein Pro­fes­sor die intui­tive Idee eines ML-Algo­rith­mus, zeigte die Über­set­zung in die Spra­che der Mathe­ma­tik und zeigte uns dann, wo die For­mel enden sollte, um sie effi­zi­en­ter zu machen, oder ein­fach, um als Algo­rith­mus zu funk­tio­nie­ren, der imple­men­tiert wer­den kann. Aber irgend­wann fing er an, eine Ablei­tung nach der ande­ren auf­zu­schrei­ben, und erwar­tete, dass wir ver­ste­hen, warum er das tat, was er tat.

Alle waren ver­wirrt und natür­lich auch ver­ängs­tigt und verärgert.

Aber diese Ablei­tun­gen sind ein­fa­cher, als Sie viel­leicht den­ken. Nicht leicht, aber viel ein­fa­cher aus­zu­füh­ren, nach­dem ich die­ses eine Geheim­nis gelernt habe.

Ich erkannte, dass jeder Schritt ein­fach die Anwen­dung einer bestimm­ten Regel oder Defi­ni­tion bedeu­tete. Mir wurde klar, dass man für diese mathe­ma­ti­schen Ablei­tun­gen oder Umfor­mun­gen bis zu einem gewis­sen Grad nur eine Liste von Regeln und Tricks braucht, die man sam­meln muss und dann ein­fach anwen­den kann.

In den Vor­le­sun­gen habe ich bei jedem Schritt, den ich gese­hen habe, aus­drück­lich nach der ver­wen­de­ten Regel oder Defi­ni­tion gesucht und sie auf mei­ner Liste notiert.

Wenn ich selbst mathe­ma­ti­sche Ablei­tun­gen löse oder lese (für Haus­auf­ga­ben oder wäh­rend einer Prü­fung), würde ich in den meis­ten Fäl­len ein­fach eine Art Mus­ter­ver­gleich durch­füh­ren. Ich schaue mir an, wo ich mich gerade befinde, gehe meine Liste mit Regeln und Defi­ni­tio­nen durch und wende das an, was zu dem Mus­ter passt.

Natür­lich sind man­che Mus­ter, Regeln und Defi­ni­tio­nen schwie­ri­ger zu erken­nen als andere, aber wenn man das lange genug macht, beginnt man, sich bestimmte Mus­ter zu mer­ken. Aber im All­ge­mei­nen wirkt diese geheime Tech­nik bei den meis­ten ML-Mathe­ma­ti­ken wahre Wunder.

Sie müs­sen Ihren mathe­ma­ti­schen Werk­zeug­kas­ten zusam­men­stel­len und ler­nen zu erken­nen, wann Sie wel­che Regel anwen­den können.

Das bedeu­tet: üben, üben, üben.

Aber Mathe­ma­tik ist natür­lich bei wei­tem nicht alles, was ML aus­macht. Auch das Pro­gram­mie­ren ist eine sehr anspruchs­volle Aufgabe.

Das Geheim­nis des Programmierens

Das Erler­nen der Grund­la­gen von Python und dann einer ML-Biblio­thek wie PyTorch ist wirk­lich cool und macht Spaß. Man folgt ein­fach einem Online-Tuto­rial und hat eine wirk­lich steile Lern­kurve. Man befolgt ein Rezept von Schrit­ten und imple­men­tiert eine Menge Code!

Man sieht und spürt wirk­lich die Fort­schritte, die man macht!

Aber wenn man dann wei­ter­ge­hen und ler­nen will, wie man selbst echte Algo­rith­men oder ML-Pipe­lines imple­men­tiert, stößt man an eine Wand. Plötz­lich sitzt man meh­rere Stun­den lang an einem läs­ti­gen Pro­blem, hat viel­leicht 5 Zei­len Code geschrie­ben und denkt, dass man keine Fort­schritte macht.

Das ist sehr, sehr frus­trie­rend und der Punkt, an dem viele Leute fest­stel­len, dass Pro­gram­mie­ren wirk­lich schwer ist und dass sie nie in der Lage sein wer­den, wirk­lich pro­gram­mie­ren zu lernen.

„5 Zei­len Code in 3 Stun­den schrei­ben. Wie erbärmlich.“

Ich dachte immer, ich sei so dumm, weil ich Code schrieb, der nie funk­tio­nierte, bis ich ihn stun­den­lang debug­gen konnte. Das kann so schlimm wer­den, dass man gar nicht erst anfan­gen will zu pro­gram­mie­ren, weil man weiß, dass man schei­tern wird.

Aber das ist ein­fach nicht wahr. Wenn man tat­säch­lich 1 Stunde lang Code schreibt, bedeu­tet das höchst­wahr­schein­lich, dass man 3 Stun­den lang debug­gen muss.

Als ich erfuhr, dass dies die eigent­li­che Bedeu­tung des Pro­gram­mie­rens ist, fühlte ich mich auf ein­mal sehr erleich­tert und nicht mehr so dumm. Das Pro­gram­mie­ren von ML-Model­len kam mir nicht mehr unmög­lich und schwer vor, weil ich genau das tat, was nor­mal war und erwar­tet wurde! Und heut­zu­tage gibt es erstaun­li­che Tools, ohne die ich nicht mehr leben kann, wie z. B. Git­hub Copi­lot, das Code für einen gene­rie­ren und erklä­ren kann.

Es gibt so viel, was man ein­fach durch eigene Erfah­rung oder die Erfah­rung ande­rer lernt. Des­halb habe ich einen völ­lig kos­ten­lo­sen wöchent­li­chen News­let­ter, in dem ich meine Erfah­run­gen als For­scher für maschi­nel­les Ler­nen mit Ihnen teile, ein­schließ­lich umsetz­ba­rer Tipps, KI-News und mehr.

Wie auch immer. Sie müs­sen sich dar­über im Kla­ren sein, dass das Schrei­ben von Code noch kein Pro­gram­mie­ren ist. Feh­ler­su­che ist Programmieren.

Diese Erkennt­nis hilft Ihnen wirk­lich dabei, Dinge selbst zu imple­men­tie­ren. Schritt für Schritt.

Aber wenn Sie mit einer bestehen­den Code­ba­sis arbei­ten müs­sen, bei der Sie alles auf ein­mal haben, wer­den Sie wahr­schein­lich trotz­dem über­for­dert sein. Schauen wir uns also den nächs­ten „Geheim­tipp“ an.

Das Geheim­nis, Code zu verstehen

Es gibt zwei Fälle, in denen Sie kom­ple­xen Code ver­ste­hen müssen.

Der erste Fall ist, wenn man auf einem bestehen­den Repo­si­tory aufbaut.

Ich erin­nere mich an mein ers­tes grö­ße­res Pro­jekt, bei dem ich auf einer bestehen­den Code­ba­sis auf­baute. Es war so viel Code. Ich hatte buch­stäb­lich keine Ahnung, wo ich anfan­gen sollte.

Genau wie bei dem vor­he­ri­gen Geheim­nis hatte ich wie­der das Gefühl, dass das Lesen von Code genauso unmög­lich war wie das Schrei­ben von Code. All die Tuto­ri­als und klei­ne­ren per­sön­li­chen Pro­jekte hat­ten mich nicht auf so viel Code vorbereitet.

Ich ver­suchte, jede Quell­da­tei zu lesen und begann, so schnell wie mög­lich Code an Stel­len zu schrei­ben, die ich für sinn­voll hielt. Aber das führte natür­lich zu einer Menge Kopf­schmer­zen und ver­schwen­de­ter Zeit beim Schrei­ben von Code, der zum Schei­tern ver­ur­teilt war. Ich musste auf die harte Tour ler­nen, dass es eine sehr ein­fa­che Stra­te­gie gibt, um große Code­ba­sen zu verstehen.

Ich wünschte, jemand hätte mir ein­fach ein­mal gesagt, wie man eine sol­che Her­aus­for­de­rung angeht.

In den meis­ten gro­ßen ML-Repo­si­to­ries gibt es eine train.py und eine eval.py Datei. Diese soll­ten immer der Aus­gangs­punkt sein. Ich suche diese Dateien, setze einen Hal­te­punkt am Anfang und beginne, den Code mit dem Debug­ger durchzugehen.

Ich kann gar nicht genug beto­nen, wie ein­fach und doch wahn­sin­nig effek­tiv diese Tech­nik ist. Es ist buch­stäb­lich wie Schummeln.

Sie kön­nen die Daten­vor­ver­ar­bei­tung, die Trai­nings­schleife, das eigent­li­che Modell, die Aus­wer­tungs­me­tri­ken und jedes andere Detail Schritt für Schritt durchgehen.

Abhän­gig von der Code­ba­sis und Ihrer Erfah­rung dau­ert dies nur ein paar Stun­den, und Sie haben einen erstaun­li­chen Über­blick über die Code­ba­sis und ein viel bes­se­res Gefühl dafür, wo Sie den neuen Code für Ihre eigene Idee hin­zu­fü­gen sollten.

Aller­dings möch­ten Sie viel­leicht nicht immer auf einer bestehen­den, hoch opti­mier­ten Code­ba­sis auf­bauen, son­dern ein­fach einen Algo­rith­mus bes­ser ver­ste­hen. Wenn Sie z. B. PPO, einen berühm­ten RL-Algo­rith­mus, ver­ste­hen wol­len, würde ich nicht emp­feh­len, sich die opti­mierte Imple­men­tie­rung anzusehen.

Das ist viel zu auf­wen­dig und komplex.

Glück­li­cher­weise gibt es für viele wich­tige Modelle mini­male, lehr­rei­che Imple­men­tie­run­gen, die nur die Haupt­idee umset­zen, damit die Leute die Modelle ver­ste­hen können.

Und auch hier ist es am bes­ten, einen Hal­te­punkt am Anfang der Haupt­funk­tion zu set­zen und mit der Feh­ler­su­che zu beginnen.

Schließ­lich gibt es noch ein grund­le­gen­des Geheim­nis für die Beherr­schung des maschi­nel­len Ler­nens, das Sie ken­nen sollten.

Das Geheim­nis, ML zu beherrschen

Die­ses letzte Geheim­nis ver­bin­det alles, was wir gerade bespro­chen haben, und ist der eine Grund, der über Ihren Erfolg oder Miss­erfolg bei der Beherr­schung von ML ent­schei­den wird.

Laut einer IBM-Stu­die aus dem Jahr 2022 sind 34 % der Unter­neh­men der Ansicht, dass man­gelnde KI-Fähig­kei­ten, ‑Kennt­nisse oder ‑Wis­sen der Haupt­grund sind, der einer erfolg­rei­chen KI-Ein­füh­rung im Wege steht.

Was glau­ben Sie, warum schei­tern Men­schen beim Erler­nen von ML und fal­len in die Kate­go­rie der Men­schen mit gerin­gen KI-Kenntnissen?

Liegt es daran, dass es schwie­rig ist? Ja, aber es war auch für jeden schwer, der es jetzt beherrscht. Die Men­schen schei­tern daran, ML zu beherr­schen, weil sie zu früh auf­hö­ren, ML zu ler­nen und aufgeben.

Und warum geben die Leute auf?

Weil sie fal­sche Erwar­tun­gen haben und den Pro­zess des Ler­nens nicht genie­ßen. Sie den­ken, ML zu beherr­schen sei schwer, weil sie ML nicht in ein paar Wochen gelernt haben. Oder weil sie ein Video, in dem ein ML-Kon­zept erklärt wird, beim ers­ten Mal nicht ver­stan­den haben, wer­den sie es nie verstehen.

Vor etwa 3,5 Jah­ren belegte ich mei­nen ers­ten KI-Ein­füh­rungs­kurs am Col­lege. Nach die­sem Semes­ter belegte ich mei­nen ers­ten rich­ti­gen ML-Kurs und arbei­tete an mei­nen ers­ten ML-Pro­jek­ten. Nach die­sem Semes­ter setzte ich meine ers­ten DL-Kurse fort und arbei­tete wei­ter an Pro­jek­ten und las eine Menge Papiere.

Beim ers­ten Mal habe ich defi­ni­tiv nicht alles ver­stan­den. Aber ich wusste, das war nor­mal. Mit der Zeit lernte ich die oben erwähn­ten Geheim­nisse und dass es Zeit braucht, ML eini­ger­ma­ßen zu beherrschen.

Meine ers­ten ML-Inter­views für Prak­tika bei Ama­zon, Nuro und Google Deep­Mind habe ich nicht bestan­den. Aber jetzt arbeite ich mit einem Ex-Meta-Pro­fes­sor zusam­men und arbeite mit einem Google Deep­Mind-For­scher zusammen.

Es. Braucht. Zeit. Punkt.

Das ist keine Fähig­keit, die man an einem Wochen­ende lernt.

Auch hier gilt die 10.000-Stunden-Regel. Wenn Sie 10.000 Stun­den auf eine bestimmte Fähig­keit ver­wen­den, wer­den Sie sie beherrschen.

Ich will Sie auf kei­nen Fall ent­mu­ti­gen, son­dern ganz im Gegen­teil, ich will nicht irgend­ein komi­scher „Influen­cer“ sein, der Ihnen den Traum vom ML-Mas­te­ring in ein paar Wochen ver­kau­fen will.

Ich möchte Sie ermu­ti­gen, ML wirk­lich zu ler­nen, die Theo­rie zu erler­nen und wirk­lich prak­ti­sche Erfah­run­gen zu sammeln.

Und die „Beherr­schung“ von ML kommt, nach­dem man die Grund­la­gen gelernt hat, indem man wirk­lich an Pro­jek­ten arbei­tet, mit rea­len Pro­ble­men kon­fron­tiert wird und echte State-of-the-Art-Papiere oder ent­spre­chende Blog­bei­träge liest.

Wenn man davon aus­geht, dass es Zeit braucht, ent­spannt man sich viel mehr und der Lern­pro­zess wird viel ein­fa­cher, ange­neh­mer und letzt­end­lich erfolgreicher.

All diese Geheim­nisse sind all­ge­mein­gül­tig, ganz gleich, wie Sie sich ent­schei­den, ML zu ler­nen. Ich sage das, weil es haupt­säch­lich drei Wege gibt, dies zu tun, und wenn Sie her­aus­fin­den wol­len, wel­cher für Sie der beste ist, soll­ten Sie die­sen Blog­bei­trag als nächs­tes lesen. Ich spre­che dort über Daten­wis­sen­schaft, aber alles gilt genauso für maschi­nel­les Ler­nen im Allgemeinen.

Quelle: medium.com