Wie lernt man maschinelles Lernen am besten, ohne einen Online-Kurs zu belegen?
Was ist der beste Weg, um maschinelles Lernen und Deep Learning zu lernen, ohne Online-Kurse zu belegen? erschien ursprünglich auf Quora: der Ort, um Wissen zu erlangen und zu teilen, der Menschen befähigt, von anderen zu lernen und die Welt besser zu verstehen.
Antwort von Eric Jang, Forschungsingenieur bei Google Brain, auf Quora:
Zunächst möchte ich sagen, dass es nicht den einen „besten Weg“ gibt, um maschinelles Lernen zu lernen, und dass man ein System finden sollte, das für einen selbst gut funktioniert. Manche Leute bevorzugen die Struktur von Kursen, andere lesen gerne Bücher in ihrem eigenen Tempo, und manche wollen direkt in den Code eintauchen.
Ich habe 2012 mit Andrew Ngs Coursera-Kurs zu maschinellem Lernen begonnen, wobei ich so gut wie nichts über lineare Algebra und nichts über Statistik oder maschinelles Lernen wusste. Beachten Sie, dass der Kurs zwar neuronale Netze behandelte, aber kein Kurs über Deep Learning war. Mir hat es sehr gut gefallen, wie der Kurs „maschinelles Lernen“ als nichts anderes als numerische Optimierung formulierte.
Wenn Online-Kurse für Sie zu langsam sind, ist die beste konsolidierte Ressource wahrscheinlich das Buch Deep Learning von Goodfellow, Bengio und Courville. Es hat ein paar Kapitel, die den Grundlagen gewidmet sind (ähnlich wie das, was in Ngs Kurs behandelt wird) und geht dann auf praktische DNNs ein.
Ein statistischer/mathematisch strenger Hintergrund ist nicht erforderlich, um nützliche Deep-Learning-Arbeit zu leisten, aber es hilft wirklich, Hypothesen darüber zu formulieren, warum Modelle funktionieren/ nicht funktionieren und was helfen könnte. Murphy’s Probabilistic Machine Learning Lehrbuch ist eine großartige Grundlage für mathematisch rigoroses ML (und hat auch großartige Diagramme!)
Nachdem Sie das DL-Buch beendet haben, können Sie sich auf eines der Teilgebiete/Untergebiete des Deep Learning „spezialisieren“, indem Sie einige der Arbeiten selbst implementieren. Einige Beispielthemen:
- Bayesian Deep Learning (Kombination neuronaler Netze mit grafischen Modellen)
- Deep Reinforcement Learning (AlphaGo, Atari-spielende KI, Robotik)
- Generative Modelle (GANs, PixelCNN, VAEs)
- Adversarial Methods (GANs, Actor-Critic)
- Theorie des Deep Learning
- Computer Vision
- NLP/Speech (Übersetzung, Captioning, seq2seq-Modelle)
- Symbolic reasoning (z.g. Proof-Solving)
- Rekurrente neuronale Netze (z. B. LSTMs, externes Gedächtnis, Aufmerksamkeit)
- Anwendungen (Lösung domänenspezifischer Probleme wie die Klassifizierung von Krebs, Proteinfaltung, Lippenlesen aus Videos)
- Meta-Learning / Learning-to-Learn (Synthetic Gradients, Pathnet)
Das Feld des Deep Learning hat sich in den letzten Jahren dramatisch ausgeweitet, so dass es nicht realistisch ist, alle Teilbereiche des Deep Learning in kurzer Zeit zu erlernen. Ich empfehle, tief in ein bestimmtes Teilgebiet einzutauchen. Sobald man ein Gebiet beherrscht, ist es einfacher, die anderen Teilgebiete zu erlernen. Diese Bereiche haben nicht mehr viel gemeinsam, abgesehen von der Tatsache, dass sie alle die Ausdruckskraft von Deep Learning nutzen, um Aufgaben durchgängig zu lernen, und im Allgemeinen experimentell sind (und nicht theoretisch in der Informatik).
Heutzutage werden die interessantesten Deep Learning-Papiere mit einer öffentlich zugänglichen Implementierung in TensorFlow, Pytorch, Torch, Keras oder Theano veröffentlicht, so dass man schnell ein Gefühl dafür bekommen kann, ob man ein bestehendes Modell verbessern kann (z.B. ein besseres ResNet).
Sie sollten wahrscheinlich nicht Ihr eigenes neuronales Netzpaket in Python von Grund auf implementieren. Es ist eine Menge Arbeit, die kleinen Details richtig hinzubekommen (siehe z.B. diesen Kommentar darüber, wie die Softmax-Operation in TensorFlow implementiert ist).
Deep Learning Frameworks sind komplex und brauchen etwas Zeit, um sie zu erlernen, und der schnellste Weg, ein DL-Framework zu beherrschen, ist, eine anspruchsvolle neuronale Netzarchitektur zu implementieren, die obskure Funktionen des Frameworks oder Ideen, die sich über mehrere Teilbereiche der DL erstrecken, ausübt. Einige Empfehlungen zu kniffligen Architekturen/Trainingspipelines:
- Progressive Netze
- DenseNet
- Synthetische Gradienten
- Neuronale Turing-Maschinen
- Embed-to-Control
- Neuronale Maschinenübersetzung
Schließlich, Viele Forscher, die sich mit maschinellem Lernen beschäftigen, sind auf Twitter aktiv, und die Reddit-Community für maschinelles Lernen ist eine gute Möglichkeit, sich über die neuesten Nachrichten zu neuronalen Netzen zu informieren. Das Feld ist sehr wettbewerbsintensiv und entwickelt sich sehr schnell, so dass es hilfreich ist, auf dem Laufenden zu bleiben.
Diese Frage erschien ursprünglich auf Quora. dem Ort, an dem man Wissen erlangen und teilen kann, und der Menschen befähigt, von anderen zu lernen und die Welt besser zu verstehen. Du kannst Quora auf Twitter, Facebook und Google+ folgen. Weitere Fragen:
- Maschinelles Lernen: Wie schwierig ist es für einen motivierten Wissenschaftler, ein automatisiertes Handelssystem von zu Hause aus zu entwickeln?
- Computerprogrammierung: Woran erkennt man einen Programmieranfänger?
- Lernen: Wie kann ich schneller und besser denken?
Quora: der Ort, an dem man Wissen erlangen und teilen kann, der Menschen befähigt, von anderen zu lernen und die Welt besser zu verstehen.