
This course includes our updated coding exercises so you can practice your skills as you learn.
See a demo
Google's Colab Tool ist ein frei nutzbares Online Tool mit einer (adaptierten) Variante von Jupyter Notebooks. Mithilfe von Colab können User kostenlos eine GPU Laufzeitumgebung nutzen.
In Jupyter Notebooks unterscheiden wir zwischen der Befehlssicht und der Eingabesicht. In dieser Lektion klären wir die Unterschiede!
Notebooks sind ein sehr mächtiges Tool. Neben Text und Code erlauben Sie es auch, grafische Ausgaben direkt im Notebook anzuzeigen. Wir zeigen, wie wir rasch und einfach Funktionen direkt in Notebooks plotten können.
Mithilfe der IPythonWidgets Bibliothek können wir in Notebooks direkt Benutzerschnittstellen integrieren und das Notebook auf diese Weise interaktiv machen. Wir zeigen die Verwendung eines File-Upload Dialogs.
Um die vollen Leistung einer GPU Beschleunigung nutzen zu können, müssen wir die Laufzeitumgebung des Notebooks entsprechend konfigurieren. Weiters behandeln wir in diesem Video die Verknüpfung von Google Colab mit anderen Speichermöglichkeiten wie Google Drive oder Github Repositories.
Mithilfe eines vorangestellten `!` können wir Terminalbefehle direkt in einer Notebook Zelle ausführen.
Worauf baut Deep Learning auf? Warum wurden neuronale Netze nicht schon früher für die Entwicklung von künstlicher Intelligenz eingesetzt?
Wir diskutieren verschiedene Programmierframeworks, die uns bei der Enwicklung von Deep Learning unterstützen.
Entwickle einen Deep Learning Bild Klassifizierer, der Hunde von Katzen unterscheidet.
Analyse von unserem OxFord PETS Bildatenset. Wie sind unsere Trainingsdaten aufgebaut?
Testen unseres Klassifizierers mit Bildern, die er während des Trainingsprozesses nicht gesehen hat.
Welche Deep Learning Theorie steckt hinter unserem Klassifizierer? Teil 1
Welche Deep Learning Theorie steckt hinter unserem Klassifizierer? Teil 2
Was ist Overfitting und warum wollen wir das bei unserem Deep Learning Modell vermeiden?
Um die Funktion eines Deep Learning Modells zu testen, verwenden wir ein Validierungsdatenset. Wie soll so ein Datenset idealerweise aufgebaut sein?
Worin besteht der Unterschied zwischen einer Metrik (wie zB der Genauigkeit) und einer Loss-Funktion?
Was genau lernt unser Modell eigentlich? Was passiert während des Trainingsprozesses aus technischer Sicht?
Übersicht über die nächsten Schritte
Wie können wir ein eigenes Trainingsdatenset mit Bildern aus dem Internet zusammenstellen?
Automatisierter Download von Bildern für unser Trainingsdatenset
Wie können wir unsere Bilder permanent speichern, auch wenn wir in colab arbeiten?
Wir erstellen die Dataloaders für unser neues Deep Learning Modell.
Zur Klassifizierung unserer Bilder verwenden wir ein Convolutional Neural Net.
Wir verwenden unseren Klassifzierer nun mit Testdaten.
Wie kann ich rasch und einfach mithilfe von IPyWidgets ein User Interface direkt in Jupyter Notebooks bauen?
Deployment unseres Deep Learning Modells im Web mithilfe von Voila und Binder.
Techniken zur Datenaufbereitung / Data Augmentation.
Wir evaluieren unser Deep Learning Modell mithilfe der Confusion Matrix
Auf Basis der Erkenntnisse aus der Confusion Matrix überarbeiten wir unsere Trainingsdaten.
Wir bauen einen Klassifizierer für handschriftliche Ziffern auf Basis des MNIST Datensets.
Ein Ansatz zur Klassfizierung: Die Distanz jedes Bilds zum Durchschnitt aller Bilder der gleichen Klasse.
Wir berechnen die Distanz jedes Bilds zum Mittelwert.
Regulierung mittels L1 Norm bzw. Mean Squared Error.
Welchen Vorteil bieten PyTorch Tensoren gegenüber dem Standardframework Numpy?
Wie nutzen wir die Möglichkeiten von PyTorch Tensoren effizient?
Ein wichtiges Konzept in Python: Broadcasting. Wie können wir mithilfe von Broadcasting die Verwendung von Schleifen in unserem Code verhindern?
Was steckt hinter dem Optimierungsalgorithmus (Stochastic) Gradient Descent?
Automatische Berechnung der Ableitungen in unserem neuronalen Netz mithilfe von Pytorch - Berechnung der Gradienten.
Die Learningrate ist ein wesentlicher Hyperparameter in jedem Deep Learning Modell. Worauf sollen wir achten, wenn wir einen Wert für die Learningrate auswählen?
Setzen wir nun alles vorher Gehörte um und entwickeln ein vollständiges Optimierungsbeispiel mithilfe unseres Optimierungsalgorithmus Gradient Descent.
Zusammenfassung zum Thema Gradient Descent.
Was unterscheidet Stochastic Gradient Descent (SGD) von Gradient Descent?
Wir implementieren unsere eigene Optimizer-Klasse, die genauso arbeitet wie Stochastic Gradient Descent.
Wie hilft uns Nicht-Linearität bei der Optimierung - das Approximations Theorem.
Zusammenfassung, Abschluß, Outtro.
Der dritte Teil aus der Reihe "Welcome 2 KI" bringt uns zur Entwicklung von künstlicher Intelligenz mittels Deep Learning Techniken. Zum Einsatz kommen PyTorch und das darauf aufbauende fastai Framework.
Lerne, wie du mit fastai und PyTorch mit nur 8 Zeilen Code einen state-of-the-art Bildklassifizierer bauen kannst!
Wir lernen die kostenfreie Entwicklungsumgebung für Deep Learning von google: colab Notebooks kennen. Auf diese Weise können wir sehr einfach mit einer kostenfreien GPU arbeiten.
Im Anschluß entwickeln wir eine eigene Deep Learning Applikation und arbeiten den gesamten Prozess end-to-end bis zur Erstellung eines User-Interfaces für unsere Deep Learning Anwendung durch.
Neben den Techniken und der geschichtlichen Entwicklung von neuronalen Netzen, besprechen wir das Thema Data Augmentation.
Wie können wir aus einem beschränkten Datenset ein größeres machen und warum macht der Einsatz von verschiedenen Data Augmentation Techniken Sinn? Wie unterstützt uns fastai und PyTorch bei der Data Augmentation?
Wir stellen unser eigenes Trainingsdatenset automatisiert zusammen,
bauen ein Deep Learning Modell mithilfe neuronaler Netze,
testen unser Modell mit einem Validierungsdatenset und
Deployment unser Modell als Webapplikation kostenfrei im Internet
Danach gehen wir technisch in die Tiefe und implementieren sämtliche Schritte, die für das Trainieren eines Deep Learning Modells erforderlich sind mit reinem Python Code nach. Auf diese Weise verstehen wir die Zusammenhänge, was hinter den Kulissen einer künstlichen Intelligenz auf Basis von Deep Learning abläuft.
Was passiert genau während des "Lernens" unseres Modells?
Worin liegt der Unterschied zwischen der Metrik (zB Genauigkeit) unseres Modells und der Loss-Funktion (ZB Mean-Squared-Error). Warum benötigen wir beides?
Wie hilft uns ein Dataloader beim Umgang mit unseres Trainingsdaten?
Wie initialisieren wir die Gewichte (Parameter) in unserem neuronal Netz?
Was passiert während des Trainings mit den Gewichten des neuronalen Netzes?
Wie können wir PyTorch nutzen, um die Gradienten unserer Gewichte im neuronalen Netz zu berechnen?
Wir implementieren den Gradient-Descent Algorithmus "from-the-scratch" und
integrieren Mini-Batches, um zu Stochastic-Gradient-Descent zu gelangen.
Wir implementieren unseren eigenen Optimizer für die Verwendung mit PyTorch.
Warum benötigen wir "Nicht-Linearität", um ein komplexes neuronales Netz aufbauen zu können?
Was genau ist eine "Aktivierungsfunktion" wie zB. ReLU (Rectified Linear Unit)?
Wie kann ich mithilfe der Confusion Matrix das Ergebnis meines Modells bewerten?
Wie funktioniert ein Multi-Label Klassifizierer?
Sämtlicher Code, der im Kurs besprochen wird, ist via github verfügbar und kann direkt in google colab geöffnet und ausgeführt werden. Der Link zum Kurs-Repository befindet sich direkt in den Kursressourcen.
Dies ist nicht der Machine Learning Kurs von jannis seemann - es werden aber vergleichbare Inhalte vermittelt. Allerdings unter Verwendung von PyTorch und fastai.