Vor einem Monat habe ich den Online-Kurs "Newral Network for Machine Learning" gemacht und ein Zertifikat bekommen. In diesem Eintrag würde ich darüber schreiben.
Was für einen Kurs ist er?
Der Kurs ist eine Einfühlung zum neuronalen Netz. Ein neuronales Netz ist eine der wichtigsten Themen in maschinellem Lernen, da man damit eine hohe Genauigkeit erreichen kann. Aber sowohl die Theorie als auch die Praxis sind schwere und kompliziert.
Im Kurs führt Prof. Hinton, eine der bekannten Forscher von maschinellem Lernen, neuronale Netze und relevante Konzepte ein. Der Kurs ist nur ein Ãœberblick, deshalb kann man ausführlich die Algorithmen nicht lernen. Aber man kann verstehen, was für eine Idee und Anwendungen es gibt.
Es gibt vier Programmierung-Aufgaben. Dafür muss man Matlab/Octave Skripten schreiben. Mehrere Bibliotheken in Python oder R sind verfügbar, um ein neuronales Netz zu erstellen. Deshalb beklagen sich einige Leute für die Programmiersprache. Aber meiner Meinung nach ist Matlab/Octave die beste Wahl, weil es am einfachsten ist, Matlab/Octave Skripten zu schreiben. Ich habe nie erneut die Programmiersprache gelernt, aber ich kann die Aufgaben schaffen, indem ich nur Cheatsheet dafür lese.
Theoretisch muss man nur lineare Algebra, Wahrscheinlichkeitstheorie und die Grundlage für maschinelles Lernen verstehen, um den Kurs zu machen. Aber die Vorlesung ist trotzdem sehr schwere zu verstehen. Mehrere Gründe dafür gibt es:
- Die Vorlesung fehlt Details. Also der Professor erklärt manchmal nicht den Hintergrund oder die Motivation. Zum Beispiel erklärt er keine Anwendungen von (Restricted) Bolzman mashine außerhalb eines neuronales Netzes.
- Die Vorlesung ist sehr typisch für eine Vorlesung für einen MSc-Kurs. Das heißt, die Vorlesung ist für denjenigen, der ein Experte für maschinelles Lernen werden wollte.
- Er erklärt nicht klar. Das ist typisch für einen führenden Forscher.
Deswegen sollte man eine Vorlesung wie die Vorlesung von Prof. Andrew Ng nicht erwarten.
Meiner Meinung nach war die Vorlesung sehr hilfreich, weil ich schnell viele relevante Ideen für neuronale Netze lernen konnte. Details von einem neuronalen Netz muss man verstehen, indem man selbst Skripten schreiben (ohne oder mit Bibliotheken für neuronales Netz).
Die Themen des Kurses
Der Kurs besteht aus 16-Wochen-Vorlesungen. Die erste 6 Wochen sind einfach, weil sie die Wiederholung der Grundlage von maschinellem Lernen, auch wenn der Dozent den Begriff für neuronales Netz benutzt.
Ein Multi-Layer neuronales Netz erscheint in der Woche 3. (Das folgende Bild ist eine Folie aus der Woche 3.) Er erklärt nicht ausführlich "back propagation", ein Algorithmus für die Optimierung. (Die Details kann man im Kurs von Prof. Andrew Ng finden.)
Ab der Woche 7 wird die Vorlesung schwerer. Die Themen sind folgende:
- Die Wochen 7 und 8: RNN (Recurrent neural network)
- Die Wochen 9 und 10: Tipps für die Optimierung (Training)
- Die Wochen 11–14: Hopfield nets und Boltzmann machines
- Die Wochen 15–16: Anwendungen neuronaler Netze
Für mich sind RNN und autoencoder interessant.
Die Aufgaben
Es gibt 19 Aufgaben: 15 Quiz und 4 Programmierung-Aufgaben. In einem Quiz muss man ein einfaches Skript zum Berechnung schreiben. (e.g. derivative of a loss function) Dafür habe ich R benutzt.
Das Quiz ist nicht nur richtig schwer, sondern auch fehlt wichtige Information. Deshalb muss man manchmal das Forum lesen, um die fehlende Information zu finden.
Die erste zwei Programmierung-Aufgaben sind einfach, weil sie Multiplechoise sind. Also in gegebenen Skripten gibt es schon die Möglichkeiten für das richtige Code. Wenn man ein falsches Code auswählt, funktioniert das Skript kaum, weil die Große von Matrizen nicht passen.
Aber man braucht trotzdem viel Zeit, um die Aufgaben zu erledigen, da man mehrere neuronale Netzen erstellen muss. Also die Erstellung dauert lang. Deshalb brauchte ich ganzen Tag für eine Programmierung-Aufgabe.
Fazit
- Ich empfehle den Kurs demjenigen, der Masterarbeit oder Doktorarbeit (erfolgreich) abgeschlossen hat. Das liegt daran, dass die Vorlesung typisch für eine Vorlesung in einem Master- oder Doktor-Studiengang ist. Es ist nämlich nicht leicht, dem Kurs zu folgen, obwohl der Kurs ein relativ wenige Kenntnisse verlangt.
- Man muss mehr lernen, um eine gute neuronales Netz zu erstellen, obwohl man den Kurs gemacht hat. Das liegt daran, dass der Kurs nur ein Ãœberblick der Theorie ist. Aber man kann viele Ideen und Anwendungen für ein neuronales Netz lernen.
- Beim Lernen muss man regelmäßig das Forum besuchen, um die relevanten Informationen zu bekommen.