Um maschinelles Lernen zu lernen, muss man eine Menge beängstigender Mathematik und Code verstehen. Das kann sehr schwer sein! Zumindest war es das für mich, bis ich diese 5 Geheimnisse lernte, die eigentlich gar keine Geheimnisse sind, die einem aber niemand wirklich beibringt, obwohl sie jeder kennen sollte.
Das Geheimnis der Mathematik #1
Sie haben ein falsches Verständnis von Mathematik, was Sie schon am Anfang zum Scheitern verurteilt, aber das ist nicht Ihre Schuld!
Als ich anfing, ML zu lernen, warfen einige meiner Professoren einfach eine Formel auf den Bildschirm und sagten uns: „Das ist die Verlustfunktion für einen Entscheidungsbaum“, und das war’s.
Die meisten meiner Kommilitonen und ich waren verwirrt. Wir starrten einfach auf die Formel und warteten auf den magischen Aha-Moment, wenn die Formel Sinn ergab.
Ich habe mich immer gefragt, wie diese klugen Wissenschaftler die Mathematik so gut verstehen konnten, dass sie neue Algorithmen entwickeln und einfach in der „Sprache der Mathematik“ denken konnten. Bis ich merkte, dass ich falsch herum dachte.
Ich konzentrierte mich zu sehr auf die eigentlichen mathematischen Formeln im Bereich der Mathematik, anstatt einen Schritt zurückzutreten und wie ein Wissenschaftler zu denken.
Ich meine, ich habe buchstäblich auf eine Formel geschaut und versucht, die Formel als Ganzes zu verstehen, was für mich jetzt, nachdem ich dieses Geheimnis gelernt habe, einfach keinen Sinn mehr macht!
Denken Sie nicht an Mathematik als etwas Abstraktes und versuchen Sie dann, sie für den Menschen interpretierbar zu machen. Sie müssen erkennen, dass Sie andersherum denken müssen. Denken Sie an die Idee, die ein Mensch hatte. Verstehe sie. Und dann überlege, wie du sie in die Sprache der Mathematik übersetzen kannst.
Das klingt vielleicht sehr verwirrend, aber die Mathematik ist keine eigenständige Sprache, in der die Menschen denken. Wissenschaftler denken genau wie Sie und ich in einer natürlichen Sprache. Sie wissen nur, wie sie ihre Ideen in die Formalismen der Mathematik übersetzen können, die es dann ermöglichen, sie umzusetzen und dann mit Hilfe der Regeln der Mathematik weiterzuentwickeln.
Wie bereits erwähnt, habe ich eine Formel immer als Ganzes betrachtet. Aber jeder Bestandteil einer Formel ist nur ein Teil dieser menschlichen Idee. So ist z. B. eine Summe oder ein Produkt buchstäblich nur eine for-Schleife, die einige Bedingungen haben kann, die buchstäblich einer if else-Anweisung im Code entsprechen.
Das ist natürlich leichter gesagt als getan, und um ein mathematisches Konzept mit Hilfe menschlicher Vorstellungen zu verstehen, muss Ihnen jemand diese menschlichen Vorstellungen richtig beibringen und Ihnen zeigen, wie man sie Schritt für Schritt übersetzt. Meiner Erfahrung nach gibt es jedoch zwei Szenarien.
- Der Lehrer macht das schon, aber du verstehst nicht, dass er das macht, weil dir nie ausdrücklich beigebracht wurde, so zu denken
- Der Lehrer sieht sich wirklich nur die Formeln und Ableitungen an. In diesem Fall musst du versuchen, die ursprüngliche menschliche Idee selbst herauszufinden, indem du sie z. B. im Internet nachschlägst. Aber das Gute daran ist, dass du jetzt weißt, dass es nicht deine Schuld ist und dass es ein intuitives Verständnis der Mathematik gibt, das du finden kannst!
Die Mathematik ist nur die Formalisierung einer menschlichen Idee.
Nur sehr wenige Menschen denken tatsächlich in der Sprache der Mathematik. Sie ist nur ein Werkzeug. Aber bei jedem Zwischenschritt der Ableitung denkt man oft tatsächlich in der Sprache der Mathematik, was sehr schwierig ist. Es sei denn, man kennt das nächste Geheimnis.
Das Geheimnis der Mathematik #2
Dieses Geheimnis hat buchstäblich die Art und Weise verändert, wie ich unheimliche mathematische Ableitungen wie diese betrachte.
Um noch einmal in die Zeit zurückzuspringen, als ich eine Vorlesung an der Universität besuchte, erklärte mein Professor die intuitive Idee eines ML-Algorithmus, zeigte die Übersetzung in die Sprache der Mathematik und zeigte uns dann, wo die Formel enden sollte, um sie effizienter zu machen, oder einfach, um als Algorithmus zu funktionieren, der implementiert werden kann. Aber irgendwann fing er an, eine Ableitung nach der anderen aufzuschreiben, und erwartete, dass wir verstehen, warum er das tat, was er tat.
Alle waren verwirrt und natürlich auch verängstigt und verärgert.
Aber diese Ableitungen sind einfacher, als Sie vielleicht denken. Nicht leicht, aber viel einfacher auszuführen, nachdem ich dieses eine Geheimnis gelernt habe.
Ich erkannte, dass jeder Schritt einfach die Anwendung einer bestimmten Regel oder Definition bedeutete. Mir wurde klar, dass man für diese mathematischen Ableitungen oder Umformungen bis zu einem gewissen Grad nur eine Liste von Regeln und Tricks braucht, die man sammeln muss und dann einfach anwenden kann.
In den Vorlesungen habe ich bei jedem Schritt, den ich gesehen habe, ausdrücklich nach der verwendeten Regel oder Definition gesucht und sie auf meiner Liste notiert.
Wenn ich selbst mathematische Ableitungen löse oder lese (für Hausaufgaben oder während einer Prüfung), würde ich in den meisten Fällen einfach eine Art Mustervergleich durchführen. Ich schaue mir an, wo ich mich gerade befinde, gehe meine Liste mit Regeln und Definitionen durch und wende das an, was zu dem Muster passt.
Natürlich sind manche Muster, Regeln und Definitionen schwieriger zu erkennen als andere, aber wenn man das lange genug macht, beginnt man, sich bestimmte Muster zu merken. Aber im Allgemeinen wirkt diese geheime Technik bei den meisten ML-Mathematiken wahre Wunder.
Sie müssen Ihren mathematischen Werkzeugkasten zusammenstellen und lernen zu erkennen, wann Sie welche Regel anwenden können.
Das bedeutet: üben, üben, üben.
Aber Mathematik ist natürlich bei weitem nicht alles, was ML ausmacht. Auch das Programmieren ist eine sehr anspruchsvolle Aufgabe.
Das Geheimnis des Programmierens
Das Erlernen der Grundlagen von Python und dann einer ML-Bibliothek wie PyTorch ist wirklich cool und macht Spaß. Man folgt einfach einem Online-Tutorial und hat eine wirklich steile Lernkurve. Man befolgt ein Rezept von Schritten und implementiert eine Menge Code!
Man sieht und spürt wirklich die Fortschritte, die man macht!
Aber wenn man dann weitergehen und lernen will, wie man selbst echte Algorithmen oder ML-Pipelines implementiert, stößt man an eine Wand. Plötzlich sitzt man mehrere Stunden lang an einem lästigen Problem, hat vielleicht 5 Zeilen Code geschrieben und denkt, dass man keine Fortschritte macht.
Das ist sehr, sehr frustrierend und der Punkt, an dem viele Leute feststellen, dass Programmieren wirklich schwer ist und dass sie nie in der Lage sein werden, wirklich programmieren zu lernen.
„5 Zeilen Code in 3 Stunden schreiben. Wie erbärmlich.“
Ich dachte immer, ich sei so dumm, weil ich Code schrieb, der nie funktionierte, bis ich ihn stundenlang debuggen konnte. Das kann so schlimm werden, dass man gar nicht erst anfangen will zu programmieren, weil man weiß, dass man scheitern wird.
Aber das ist einfach nicht wahr. Wenn man tatsächlich 1 Stunde lang Code schreibt, bedeutet das höchstwahrscheinlich, dass man 3 Stunden lang debuggen muss.
Als ich erfuhr, dass dies die eigentliche Bedeutung des Programmierens ist, fühlte ich mich auf einmal sehr erleichtert und nicht mehr so dumm. Das Programmieren von ML-Modellen kam mir nicht mehr unmöglich und schwer vor, weil ich genau das tat, was normal war und erwartet wurde! Und heutzutage gibt es erstaunliche Tools, ohne die ich nicht mehr leben kann, wie z. B. Github Copilot, das Code für einen generieren und erklären kann.
Es gibt so viel, was man einfach durch eigene Erfahrung oder die Erfahrung anderer lernt. Deshalb habe ich einen völlig kostenlosen wöchentlichen Newsletter, in dem ich meine Erfahrungen als Forscher für maschinelles Lernen mit Ihnen teile, einschließlich umsetzbarer Tipps, KI-News und mehr.
Wie auch immer. Sie müssen sich darüber im Klaren sein, dass das Schreiben von Code noch kein Programmieren ist. Fehlersuche ist Programmieren.
Diese Erkenntnis hilft Ihnen wirklich dabei, Dinge selbst zu implementieren. Schritt für Schritt.
Aber wenn Sie mit einer bestehenden Codebasis arbeiten müssen, bei der Sie alles auf einmal haben, werden Sie wahrscheinlich trotzdem überfordert sein. Schauen wir uns also den nächsten „Geheimtipp“ an.
Das Geheimnis, Code zu verstehen
Es gibt zwei Fälle, in denen Sie komplexen Code verstehen müssen.
Der erste Fall ist, wenn man auf einem bestehenden Repository aufbaut.
Ich erinnere mich an mein erstes größeres Projekt, bei dem ich auf einer bestehenden Codebasis aufbaute. Es war so viel Code. Ich hatte buchstäblich keine Ahnung, wo ich anfangen sollte.
Genau wie bei dem vorherigen Geheimnis hatte ich wieder das Gefühl, dass das Lesen von Code genauso unmöglich war wie das Schreiben von Code. All die Tutorials und kleineren persönlichen Projekte hatten mich nicht auf so viel Code vorbereitet.
Ich versuchte, jede Quelldatei zu lesen und begann, so schnell wie möglich Code an Stellen zu schreiben, die ich für sinnvoll hielt. Aber das führte natürlich zu einer Menge Kopfschmerzen und verschwendeter Zeit beim Schreiben von Code, der zum Scheitern verurteilt war. Ich musste auf die harte Tour lernen, dass es eine sehr einfache Strategie gibt, um große Codebasen zu verstehen.
Ich wünschte, jemand hätte mir einfach einmal gesagt, wie man eine solche Herausforderung angeht.
In den meisten großen ML-Repositories gibt es eine train.py und eine eval.py Datei. Diese sollten immer der Ausgangspunkt sein. Ich suche diese Dateien, setze einen Haltepunkt am Anfang und beginne, den Code mit dem Debugger durchzugehen.
Ich kann gar nicht genug betonen, wie einfach und doch wahnsinnig effektiv diese Technik ist. Es ist buchstäblich wie Schummeln.
Sie können die Datenvorverarbeitung, die Trainingsschleife, das eigentliche Modell, die Auswertungsmetriken und jedes andere Detail Schritt für Schritt durchgehen.
Abhängig von der Codebasis und Ihrer Erfahrung dauert dies nur ein paar Stunden, und Sie haben einen erstaunlichen Überblick über die Codebasis und ein viel besseres Gefühl dafür, wo Sie den neuen Code für Ihre eigene Idee hinzufügen sollten.
Allerdings möchten Sie vielleicht nicht immer auf einer bestehenden, hoch optimierten Codebasis aufbauen, sondern einfach einen Algorithmus besser verstehen. Wenn Sie z. B. PPO, einen berühmten RL-Algorithmus, verstehen wollen, würde ich nicht empfehlen, sich die optimierte Implementierung anzusehen.
Das ist viel zu aufwendig und komplex.
Glücklicherweise gibt es für viele wichtige Modelle minimale, lehrreiche Implementierungen, die nur die Hauptidee umsetzen, damit die Leute die Modelle verstehen können.
Und auch hier ist es am besten, einen Haltepunkt am Anfang der Hauptfunktion zu setzen und mit der Fehlersuche zu beginnen.
Schließlich gibt es noch ein grundlegendes Geheimnis für die Beherrschung des maschinellen Lernens, das Sie kennen sollten.
Das Geheimnis, ML zu beherrschen
Dieses letzte Geheimnis verbindet alles, was wir gerade besprochen haben, und ist der eine Grund, der über Ihren Erfolg oder Misserfolg bei der Beherrschung von ML entscheiden wird.
Laut einer IBM-Studie aus dem Jahr 2022 sind 34 % der Unternehmen der Ansicht, dass mangelnde KI-Fähigkeiten, ‑Kenntnisse oder ‑Wissen der Hauptgrund sind, der einer erfolgreichen KI-Einführung im Wege steht.
Was glauben Sie, warum scheitern Menschen beim Erlernen von ML und fallen in die Kategorie der Menschen mit geringen KI-Kenntnissen?
Liegt es daran, dass es schwierig ist? Ja, aber es war auch für jeden schwer, der es jetzt beherrscht. Die Menschen scheitern daran, ML zu beherrschen, weil sie zu früh aufhören, ML zu lernen und aufgeben.
Und warum geben die Leute auf?
Weil sie falsche Erwartungen haben und den Prozess des Lernens nicht genießen. Sie denken, ML zu beherrschen sei schwer, weil sie ML nicht in ein paar Wochen gelernt haben. Oder weil sie ein Video, in dem ein ML-Konzept erklärt wird, beim ersten Mal nicht verstanden haben, werden sie es nie verstehen.
Vor etwa 3,5 Jahren belegte ich meinen ersten KI-Einführungskurs am College. Nach diesem Semester belegte ich meinen ersten richtigen ML-Kurs und arbeitete an meinen ersten ML-Projekten. Nach diesem Semester setzte ich meine ersten DL-Kurse fort und arbeitete weiter an Projekten und las eine Menge Papiere.
Beim ersten Mal habe ich definitiv nicht alles verstanden. Aber ich wusste, das war normal. Mit der Zeit lernte ich die oben erwähnten Geheimnisse und dass es Zeit braucht, ML einigermaßen zu beherrschen.
Meine ersten ML-Interviews für Praktika bei Amazon, Nuro und Google DeepMind habe ich nicht bestanden. Aber jetzt arbeite ich mit einem Ex-Meta-Professor zusammen und arbeite mit einem Google DeepMind-Forscher zusammen.
Es. Braucht. Zeit. Punkt.
Das ist keine Fähigkeit, die man an einem Wochenende lernt.
Auch hier gilt die 10.000-Stunden-Regel. Wenn Sie 10.000 Stunden auf eine bestimmte Fähigkeit verwenden, werden Sie sie beherrschen.
Ich will Sie auf keinen Fall entmutigen, sondern ganz im Gegenteil, ich will nicht irgendein komischer „Influencer“ sein, der Ihnen den Traum vom ML-Mastering in ein paar Wochen verkaufen will.
Ich möchte Sie ermutigen, ML wirklich zu lernen, die Theorie zu erlernen und wirklich praktische Erfahrungen zu sammeln.
Und die „Beherrschung“ von ML kommt, nachdem man die Grundlagen gelernt hat, indem man wirklich an Projekten arbeitet, mit realen Problemen konfrontiert wird und echte State-of-the-Art-Papiere oder entsprechende Blogbeiträge liest.
Wenn man davon ausgeht, dass es Zeit braucht, entspannt man sich viel mehr und der Lernprozess wird viel einfacher, angenehmer und letztendlich erfolgreicher.
All diese Geheimnisse sind allgemeingültig, ganz gleich, wie Sie sich entscheiden, ML zu lernen. Ich sage das, weil es hauptsächlich drei Wege gibt, dies zu tun, und wenn Sie herausfinden wollen, welcher für Sie der beste ist, sollten Sie diesen Blogbeitrag als nächstes lesen. Ich spreche dort über Datenwissenschaft, aber alles gilt genauso für maschinelles Lernen im Allgemeinen.
Quelle: medium.com