Gegen Ende 2018 habe ich angefangen meinen Lernprozess zum Thema Künstliche Intelligenz und Machine Learning mit euch zu teilen. Nachdem mich das Thema schon sehr lange begeistert hat, habe ich beschlossen mir einen Plan zu erstellen mit den besten Online Möglichkeiten, um in dem Thema ein kleiner Experte zu werden.
Den gesamten Plan könnt ihr auch nochmal hier nachlesen: Learning Machine Learning — Teil 1
Ungefähr 10 Wochen habe ich für den Kurs Machine Learning von Andrew Ng gebraucht und konnte diesen bereits Ende November fertigstellen.
Jetzt möchte ich kurz zusammenfassen, was ich gelernt habe & meine nächsten Schritte genauer erklären.
Coursera — Machine Learning
Vorgeschmack
Die Entscheidung für diesen Kurs ist sehr naheliegend, immerhin beinhaltet er viele Grundlagen, ist von einem bekannten Professor & zudem auch mit echten Studenten von der Stanford University erprobt. Er gilt in diversen Foren und Artikeln als der Gold-Standard.
Der Kurs existiert schon seit mehreren Jahren. Die enthaltenen Grundlagen für das Thema sind aber immer noch genauso wichtig. Inzwischen ist der Kurs aber kostenlos verfügbar.
Die einzelnen Lektionen enthalten neben der dazugehörigen Theorie auch häufig einen Praxisteil mit Übungsaufgaben.
Durch das Bottom-Top Prinzip des Kurses möchte ich versuchen wirklich die Basics zu begreifen, um so später nicht nur die Standardfunktionen aufzurufen, sondern wirklich ein Verständnis für die Magie hinter dem Vorhang zu bekommen.
Im Anschluss möchte ich das erste Mal an einer Kaggle Competition teilnehmen und ausprobieren, ob der Kurs mich darauf vorbereitet hat. Und wenn ja, wie viel er dabei geholfen hat.
Inhalte des Kurses
Der Kurs erinnert mich direkt an mein Studium. Während der Einführung in der ersten Woche hat man noch das Gefühl, dass das Tempo eher träge und langsam ist, jedoch ändert sich das Ganze dann sehr schnell nach den ersten Videos. Nachdem die ersten Grundlagen geklärt sind und ich Machine Learning in zwei grobe Kategorien aufteilen kann (Supervised / Unsupervised Learning) geht es direkt mit dem Thema Lineare Regression los. Schon in der ersten Woche haben mir Andrew’s Ratschläge gut gefallen, so gibt er beispielsweise einen Hinweis wer sich den Mathe-Auffrisch Kurs zum Thema Lineare Algebra ansehen muss und auch wie viel man davon wirklich verstanden haben muss (das ist nicht immer: einfach alles). Auch wenn mein Studium noch keine Jahrzehnte her ist, so habe ich mir den optionalen Teil trotzdem überwiegend angesehen. Schaden kann es auch nicht. Einige kleinere Neuigkeiten zur Notation konnte ich auch hier lernen.
Jede Woche ist normalerweise in ein bis zwei Themen unterteilt und mit einem Quiz zum Abschluss versehen. Manchmal wird das Quiz auch noch mit einer Programmieraufgabe kombiniert. Ein Quiz besteht immer aus fünf Fragen und kann innerhalb von 24h dreimal wiederholt werden (danach muss man einen Tag warten und kriegt wieder 3 Versuche).
Die Quiz Aufgaben können im Abstand von 24h beliebig oft wiederholt werden.
In der zweiten Woche geht es dann immer noch um Lineare Regression, jetzt aber mit mehreren Variablen. Die erklärten Inhalte fand ich wirklich sehr gut, kein Wort zu wenig oder zu viel — alles ist immer schön auf den Punkt gebracht und man merkt deutlich die Erfahrung von Andrew im Unterrichten — so hätte das kein Professor an meiner ehemaligen Hochschule an den Studenten bringen können.
In der gleichen Woche wird auch schon Octave, bzw. Matlab erklärt. Das sind die beiden Umgebungen, die laut Andrews Meinung bestens geeignet sind für einen Einstieg und mit diesen lassen sich viele Algorithmen kurz und knackig beschreiben. Eine ausführliche Erklärung warum der Kurs beispielsweise nicht mit C oder Python statt findet, gibt er auch noch dazu.
Tipp: Unter OS X unbedingt eine ältere Octave Version verwenden, bei mir hat v4.0.6 am besten funktioniert (statt 4.4)
In den Wochen danach kommen schnell weitere Themen dazu: Classification, Regularization, Neural Networks. Alle dabei vorgestellten Materialien werden auch immer als PDF zum Abschluss eines Kapitels zur Verfügung gestellt.
Nach Woche 6 erwähnt der Professor außerdem, dass man teilweise schon mehr Wissen in den Grundlagen hätte als so manche AI-Entwickler in größeren Firmen. Ob das ganze auch heute noch gültig ist, kann ich leider nicht einschätzen, jedoch vermute ich, dass viele wirklich das Prinzip: Learning by doing verfolgen und so manche Punkte aus dem Kurs nicht mehr vor Augen haben.
Abgerundet wird der ganze Kurs dann noch mit Themen wie Error Analysis, Dimensionality Reduction, Recommender Systems und einigen Aspekten, die zu berücksichtigen sind für das sogenannte Large Scale Machine Learning.
Mein Fazit
1. Kurs
Der Kurs und die Inhalte sind wirklich sehr gut. Die Laufzeit der Videos ist immer recht kurz und ist insgesamt weniger als 8 Stunden pro Woche. Insgesamt habe ich ungefähr 40–50 Stunden für den kompletten Kurs gebraucht.
Die Unterlagen, die dabei erarbeitet werden, stehen im Anschluss auch als PDF zum Download bereit. Ich habe mir zusätzlich noch einige Extra Notizen zu den Videos gemacht und diese mehrfach durchgelesen, bevor ich das Abschluss Quiz gestartet habe.
Aber die Video- und Audioqualität ist ja schon echt bescheiden…
2. Quiz
Die Quiz Aufgaben sind deutlich anspruchsvoller als man es von anderen Lernplattformen, wie zum Beispiel udemy.com kennt. Das gefällt mir sehr gut, bei udemy ist es meiner Meinung nach eher so, dass man die Videos auf stumm schalten kann, den Monitor umdrehen kann & trotzdem das Quiz mit fast voller Punktzahl schafft. Bei dem Coursera Kurs hingegen hat das nicht funktioniert. Viele Quiz Runden musste ich wiederholen, aber da ein Versuch nicht gerade länger als 10 Minuten Zeit in Anspruch nimmt, ist das eigentlich auch kein Problem.
Wenn man ein Quiz mehrfach wiederholt, kennt man natürlich schon einige Antworten, jedoch sind die meisten Fragen in zwei bis drei Varianten eingebaut, so dass man jedes Mal genau lesen sollte, worum es geht..
3. Programmieraufgaben
Ich habe mich für Octave entschieden. Ich hatte zwar etwas Vorerfahrung mit Matlab, aber ich wollte eine komplett kostenlose Alternative austesten.
Die Aufgaben waren sehr unterschiedlich. Bei manchen Aufgabenteilen ist die Lösung quasi direkt im PDF vorher und man muss sie nur noch einfügen (dann hat man das Problem, dass man denkt: “Da fehlt doch etwas, da kann doch nicht schon alles stehen.”). Es gibt aber auch Aufgaben, die dann so knapp erklärt werden, dass man sich den kompletten Algorithmus fast alleine erarbeiten muss — dafür sind dann meistens die restlichen Aufgaben kleiner. Bei vielen Problemen sind die Lösungen dann wiederum deutlich kürzer als man glaubt.
Insgesamt ist das eigentlich keine Kritik, sondern es ist durchaus realistisch. Jedoch wäre ein etwas linearer Anstieg an Herausforderung wünschenswert gewesen.
4. Hat sich die Zeit gelohnt ?
Ja, definitiv. Punkt.
Wie gut bin ich nun für Kaggle vorbereitet?
Puh, schwierig. Ich habe mir in der Zwischenzeit Kaggle mal genauer angesehen, weil wir eine kleine Gruppe gefunden haben und mit dieser bald an einer Einsteiger Challenge teilnehmen wollten. Fangen wir mal grob an, bei Kaggle kann man prinzipiell jede Programmiersprache oder Umgebung nutzen, die man möchte — nur die Datei mit dem Ergebnis ist entscheidend. Also bis hier hin alles gut. Die meisten arbeiten aber wohl mit Python oder R, da wird es dann schon schwierig Tutorials oder Tipps für Octave & Kaggle zu bekommen..
Naja und dann kommt das nächste Problem: Auch wenn ich grundsätzlich weiß, wie eine Klassifizierung funktioniert und den Algorithmus erklären kann, so kann ich ihn deshalb noch lange nicht auf ein Datenset anwenden, welches ich nicht richtig kenne.
Also, zusammengefasst: Die ganzen Begriffe zu kennen bringt schon einen Vorteil, man hat ein gutes Gesamtbild, was man so allgemein machen kann. Viele Prinzipien sind natürlich gleich, also Daten vorbereiten und die Trainingsdaten aufteilen — ein Validierungsset bestimmen und viele Vokabeln stimmen auch schon überein. Einen Weg für die Lösung hat man mit diesem Kurs aber natürlich nicht direkt an der Hand.
Fortsetzung folgt…
Zum Abschluss hier nochmal meine nächsten geplanten Schritte:
-
Teilnahme an einer Kaggle Competition (Getting Started)
-
Start des Kurses Fast.AI Deep Learning 1
- Wer von euch hat den gleichen Kurs bereits abgeschlossen ?
- Wie waren eure Erfahrungen ?