Kurznachricht: Was ist eigentlich Deep Learning

Wer sich schon immer gefragt hat“Was bedeutet eigentlich Deep Learning?“, „Wozu ist es gut?“ und „Wer beschäftigt sich damit?“, dem kann ich die ersten 20 Minuten des folgenden Youtube-Videos empfehlen:

Ein echter „Mind Opener“, in dem Steve Juterson, Partner von DJF Ventures, einen kurzen Überblick über die aktuelle Entwicklung gibt.

Die restlichen 60 Minuten des Videos könnt ihr euch allerdings sparen, die Panel Diskussion ist wenig aufschlussreich.

 

Deep Learning mit Nvidia

Einer der größten Hypes im Machine Learning Bereich ist im Moment sicher „Deep Learning“. Während der Begriff im Forschungsbereich schon lange ein Begriff ist hat der Erfolg von AlphaGo dazu geführt, dass sich jetzt auch die Masse (zum Beispiel ich) ansieht, was es damit auf sich hat. Als Einstieg zum Thema habe ich bei Nvidia einige sehr Interessante Informationen gefunden, die jedem Interessierten weiterhelfen sollten. Als Hersteller von GPUs hat Nvidia schon lange erkannt, das sich damit nicht nur die Spielebranche sondern zunehmend auch „seriöse“ Anwendungen im KI und Machine Learning Bereich als Markt erschließen lassen, in dem sie sich als Vorreiter positionieren wollen. Hier geht es zu einer Website mit einführenden Informationen und Beispielen:

https://developer.nvidia.com/deep-learning

Außerdem gibt es eine Reihe von Kursen für Selbstlerner, für die ich hoffentlich bald die Zeit finde:

https://developer.nvidia.com/deep-learning-courses

 

Schritt 2: Coursera Kurs – Machine Learning

Bücher sind ein guter Ansatz um sich in ein neues Thema einzuarbeiten und erste Schritte darin zu gehen. Aber sie sind auch passiv und fordern keine Ziele ein. Es fällt zu leicht, einfach ein Kapitel auszulassen oder nach der Hälfte zu denken, jetzt weiß ich alles und der Rest vom Buch ist eigentlich schon klar. Außerdem geben sie einem nicht die Möglichkeit, am Ende auch nachzuweisen, dass man sich überhaupt mit dem Thema beschäftigt hat. Deshalb habe ich nach etwas gesucht, was etwas motivierender und aussagekräftiger ist und bin dabei auf Coursera gestoßen.

Über Coursera

Coursera bietet reine Online-Kurse an, die von bekannten, meist amerikanischen Universitätsprofessoren getragen werden. Die Kurse bestehen aus Videos mit kleinen Multiple Choice Fragen, Tests und – je nach Kurs – Programmieraufgaben, die man einreichen muss und die automatisch auf Korrektheit geprüft werden. Die meisten Kurse können kostenlos belegt werden, allerdings erhält man nur gegen Bezahlung Zugang zu den Tests und bekommt am Ende ein Online-Zertifikat ausgestellt, das man z.B. für Bewerbungen nutzen kann. Das Konzept ist wirklich gut und einfach zu handhaben, das größte Problem dabei ist natürlich, dass man sehr leicht schummeln kann, wenn man das den will.

Der Machine Learning Kurs

Das habe ich natürlich nicht gemacht bei meinem ersten Kurs: Machine Learning.
Dieser Kurs wird von Andre Ng angeboten, einem sehr bekannten Namen im Data Science Bereich. Er hat bei Google gearbeitet und ist im Moment wohl bei Baidu und er ist einer der Gründer von Coursera.

Kursaufbau

Will man das Zertifikat für einen Kurs haben, kostet der Kurs 42 Dollar und ist auf 11 Wochen angelegt wobei jede Woche in etwa 4 Semesterwochenstunden an einer deutschen Universität entspricht. Jede Woche beinhaltet etwa 2 Stunden an Videomaterial, ein bis zwei Tests (Quiz) und  meistens eine Programmieraufgabe. Die Tests bestehen jeweils aus fünf Fragen, von denen man zum Bestehen 4 richtig beantworten muss. Hat man sich die Video aufmerksam angeschaut, ist das allerdings kein Problem. Man kann die Tests beliebig oft wiederholen, allerdings nur drei mal innerhalb von acht Stunden.
Die Programmieraufgaben sind für das freie Mathematiktool Octave ausgelegt, können aber auch mit Matlab erstellt werden. R wird nicht unterstützt. Jede Aufgabe ist in Blöcke aufgeteilt die maximal 100 Punkte ergeben. Auch hier reichen 80 Prozent zum bestehen. Abgegeben werden diese Aufgabe mithilfe eines Scripts, dass die erstellten Lösungen direkt zu einem Coursera-Server pusht wo sie validiert werden. Das pushen ist beliebig oft möglich und die Ergebnisse werden zeitnah auch auf der Kursseite angezeigt.

Kursmaterial

Die Videos sind qualitativ nicht immer super (z.B. Tonprobleme) aber nie so schlecht, dass es echte Probleme macht. Inhaltlich ist der Kurs auch für Neulinge leicht verständlich, es werden selbst Basisbegriffe wie Matrix und Vektor erklärt. Professor Ng gibt sich sehr viel Mühe, Algorithmen wie Regression, neuronale Netze oder SVMs anschaulich zu erklären und die Mathematik dahinter Stück für Stück aufeinander aufzubauen. Das gelingt ihm auch sehr gut, er verzichtet – zum Glück – auf komplexe Beweise für darunterliegende Annahmen, die mehr in die Gebiete Analysis oder Algebra gehören.
Die Zwischenfragen in den Videos sind teilweise nützlich haben mich aber eher gestört, weil ich die Videos vom Sofa aus geschaut habe und für die Fragen immer extra aufstehen musste. Auf meinem Tablet hatte ich außerdem technische Probleme mit den Zwischenfragen.
In den Foren gibt es einiges an Errata zu den Folien, da sich doch einige Fehler eingeschlichen haben. Ich hatte allerdings nie das Gefühl, das etwas total daneben gewesen wäre.
Ein weiteres Feature bei Videos: mit höherer Geschwindigkeit ablaufen lassen. Ich habe es noch geschafft bei 125 mitzukommen, bei 200 Prozent war es mir dann doch zu schnell.

Die Tests ware meistens einfach zu bestehen, um 100 % zu erreichen musste ich einige mehrfach machen. Aber auch das ist mit Hilfe des Videomaterials leicht zu schaffen.

Die Programmieraufgaben fand ich insgesamt zu einfach. Hier hätte ich mir gewünscht etwas mehr gefordert zu werden. Natürlich habe ich mit meinem Hintergrund als Softwareentwickler hier Vorteile, aber durch einige der Aufgaben konnte man sich doch leicht durchmogeln ohne wirklich verstanden zu haben, was der Algorithmus eigentlich macht. Zu viele Schritte wurden einem dabei abgenommen. Ich gebe allerdings auch zu, die optionalen Aufgaben, die etwas tiefer gehen, nicht gemacht zu haben.
Insgesamt habe ich mir, um 100 % zu erreichen, nur bei einer Aufgabe ein wenig die Zähne ausgebissen (Dimensionsfehler bei Matrizen 🙁 ) und immer deutlich weniger als die angegebenen 3 Stunden benötigt.

Fazit

Zusammengerechnet hat mich der Kurs 3 – 4 Arbeitstage gekostet, in denen ich am Ende alle Aufgaben zu 100 % erledigt hatte. Die 11 Wochen sind also wirklich nicht nötig um ihn abzuschließen, wenn man motiviert ist und Zeit hat. Mir hat es wirklich Spaß gemacht und ich glaube jetzt einen guten Überblick über Algorithmen im Bereich Machine Learning zu haben und die wichtigsten Probleme, auf die man achten muss, zu verstehen. Besonders toll fand ich, dass die Programmieraufgaben reale Probleme lösen (z.B. Texterkennung) und es doch erstaunlich einfach war, wirklich brauchbare Ergebnisse zu erhalten. Eines der größten Probleme, die Erfassung und Aufbereitung von Testdaten, hat der Kurs dabei natürlich ausgeklammert. Dafür gibt es andere Kurse, die sich speziell mit diesem Thema befassen.
Ich kann den Kurs nur jedem empfehlen, der sich für das Thema interessiert. Er ist sein Geld und die nötige Zeit auf jeden Fall Wert und die leichte Einbindung in das eigene LinkedIn Profil ist ein nettes Schmankerl obendrauf. Hier könnt ihr euch mein Zertifikat ansehen:

https://www.coursera.org/account/accomplishments/certificate/D8ZBSYEYDW84

Ich überlege bereits, weitere Kurse zu belegen. Die Preise – auch für die größeren Spezialisierungen – finde ich sehr fair, auch wenn die Zertifikate am Ende keinerlei akademischen Wert aufweisen. Trotzdem denke ich, dass Coursera mir eine einfache Möglichkeit gibt, mein Interesse und mein Können im Data Science Bereich öffentlich zu machen und so auch für potentielle Arbeitgeber interessanter zu werden.

Schritt 1: Buch kaufen

Data Science from Scratch: First Principles with Python

Irgendwo muss man ja anfangen und Python ist wohl die Technologie, um die sich im Data Science Bereich alles dreht. Mit R hatte ich im Studium zu tun, aber Python wirkt für reale Probleme irgendwie geeigneter.  Ich kenne schon Pakete wie Jupyter, NumPy und IPython, das sollte hilfreich sein.

Rezension folgt!

 

Los gehts

Ich habe mich also dazu entschieden, den Fachbereich zu wechseln. 15 Jahre Entwicklung im Web, im Frontend wie im Backend, als Architekt und als Entwicklungsleiter. Ich hätte da weitermachen können! Als Manager eines Teams oder gar als CTO in einem Startup. Job-Angebote gab es einige, gut bezahlt, viel Verantwortung, mit Reisen oder ohne, im In- oder Ausland.

Aber nein! Ich will lieber etwas Anderes. Etwas was meinen Kopf fordert solange er noch nicht Matsch ist. Etwas, das mich mich nicht an eine Branche, Technologie oder gar an einen Arbeitgeber bindet. Zwei Themengebiete sehe ich da (innerhalb der IT), deren Relevanz in Zukunft dafür sorgt, gute Jobmöglichkeiten und tolle Aufgaben zu haben. Security und Data Science. Ich habe mich für Zweiteres entschieden. Nicht nur weil es als „The sexiest job in the 21st century“ bezeichnet wurde. Nicht nur weil ich einen mathematischen Hintergrund habe, der es mir hoffentlich leicht macht, all das zu begreifen. Sondern vor allem, weil ich dort so unglaublich viele Möglichkeiten sehe, wirklich cooles Zeug zu machen.

Datenanalyse ist da noch das am wenigsten Interessante. Es geht auch darum, Maschinen lernen zu lassen, künstliche Intelligenzen zu kreieren und die digitale Zukunft zu gestalten. Klingt philosophisch, ist aber so.

Also los! 

GNU Octave

Octave ist eine freie Software, die sich zur numerischen Berechnung und Darstellung mathematischer Probleme eignet. Es bringt dabei ähnliche Features mit wie das kommerzielle MathLab oder die Entwicklungsumgebung R und kann als echte Alternative benutzt werden. Neben einer interaktiven Shell zur Verarbeitung von Befehlen lassen sich auch recht einfach Scripte mit Octave erstellen, die automatisch ausgeführt werden um beispielsweise regelmäßig Berechnungen auf vorhandenen Daten auszuführen oder Plots ausgeben zu lassen. Da es unter der GNU General Public License steht, für alle gängigen Betriebssysteme vorhanden ist und sich recht intuitiv bedienen lässt, ist es besonders im akademischen Bereich sehr beliebt und wird insbesondere in den Bereichen numerische Mathematik, Machine Learning und Data Science eingesetzt.

Die offizielle Seite findet ihr hier: https://www.gnu.org/software/octave/

Downloads für Windows, MacOS, Linux und BSD Systeme findet ihr hier: https://www.gnu.org/software/octave/download.html