Dieser Kurs richtet sich an fortgeschrittene User, die bereits Erfahrung in der Implementierung von Algorithmen für künstliche Intelligenz mithilfe von Deep Learning haben. Deep Learning Frameworks für Python wie PyTorch oder fastai sollten dir auch bereits bekannt sein.
Das fastai Framework bietet uns eine tolle Unterstützung zur schnellen Umsetzung von Prototypen mit nur wenigen Zeilen Python Code. Wenn wir allerdings tiefer in die Materie von künstlicher Intelligenz und Deep Learning eintauchen, so wollen - und brauchen - wir mehr Kontrolle über den Aufbau und den Trainingsprozess unserer KI-Modelle.
Fastai baut als Framework auf den bekannten (und inzwischen in der Wissenschaft am häufigsten eingesetzen) Framework PyTorch auf. Das heißt, jeder, der bereits Erfahrungen mit dem deep learning Framework PyTorch gesammelt hat, für den erscheint auch das fastai Framework geläufig.
Dieser Spezialkurs ist in drei Abschnitte geteilt. Abschnitt 1 fokussiert auf besondere Modellarchitekturen und deren Umsetzung im fastai Framework. In Abschnitt 2 behandeln wir den Trainingsprozess eines deep learning Modells für künstliche Intelligenz und Abschnitt 3 beschließt den Kurs mit der Präsentation der Mid-Level API vom fastai Framework.
CNN-Learner
: Fastai bietet mit der Klasse CNN-Learner
bereits eine massive Unterstützung für die Implementierung von Convolutional Neural Networks an. Der CNN-Learner
kapselt eine Menge an Funktionalität. Wir analysieren die Klasse und programmieren selbst einen Learner, speziell für Convolutional Neural Networks.UNET-Learner
: Ein UNET ist eine spezielle - U-förmige - Modellarchitektur für die Verarbeitung von Bilddaten mithilfe von deep learning und neuronalen Netzen. Auch für UNETs bietet fastai eine standardisierte Unterstützung mithilfe der Klasse UnetLearner
. Genauso wie beim CNN-Learner für Convolutions, analysieren wir die Funktionalität des UNET-Learners, indem wir diese selbst mit Python Code nachprogrammieren.Momentum
hinzufügen.In diesem Teil des Kurses analysieren wir die Funktionsweise der Learner
-Klasse aus dem fastai Deep Learning Framework. Wir implementieren alle Elemente, die wir zum Aufbau unseres Learners
benötigen und vergleichen unsere Implementierung mit jener aus dem fastai-Framework.
Parameter
für unser Modell.Learner
-Objekt.Callbacks
, die den Trainingsprozess beeinflussen werden.lr_find
(Learning-Rate-Finder) und one-cycle-training mit learning-rate-annealing implementiert? Wir integrieren die automatische Anpassung der Learningrate während des Trainingsprozesses unseres neuronalen Netzes in das implementierte Modell.Dieser Kurs richtet sich an bereits fortgeschrittene Entwickler, die schon erste deep learning Projekte mithilfe von Frameworks wie PyTorch oder fastai umgesetzt haben und nun weiter in die Tiefe der Frameworks hinunter steigen wollen.
Für diese Kurs solltest du neben Programmierkenntnissen mit der Programmiersprache Python auch Kenntnisse über künstliche Intelligenz und die Umsetzung von KI-Algorithmen mithilfe von deep learning Frameworks wie PyTorch oder fastai mitbringen.
Eine gute Grundausbildung zum Thema künstliche Intelligenz und Programmierung von ersten Anwendungen für KI-Algorithmen bietet unsere Kursreihe “welcome2ki”:
Dieser Kurs wird über die Online-Lernplattform Udemy angeboten. Gleich Kurs buchen
Der Kurs ist für dich lebenslang zugänglich. Du kannst den Kurs in individuellen Tempo absolvieren und auch nach erfolgreichem Abschluß jederzeit wieder auf die Unterlagen und Videos zugreifen.
Warum betrachten wir die Inhalte in diesem Kurs für dich als relevant? Wir geben hier einige Infos zu dem Themenschwerpunkten des aktuellen Kurses.
Die UNET Modellarchitektur stellt einen Spezialfall eines CNN (Convolutional Neural Networks) dar und wurde erstmals im Jahr 2015 von Olaf Ronneberger, Phillip Fischer und Thomas Brox vorgeschlagen, um effizienter medizischen Bilddaten segmentieren zu können (Image Segmentation).
Unter Image Segmentation verstehen wir den Prozess, ein Bild in unterschiedliche Bereiche einzuteilen und diese bestimmten Klassen zuzuordnen. Im Bereich der medizinischen Anwendung wird Image Segmentation hauptsächlich zur Tumorerkennung auf radiologischen Bilddaten eingesetzt.
Die Reduktion der Dimensionen (Höhe und Breite) der Bilder, welche während des Durchlaufens einer Convolution angewendet (durch die entsprechenden pooling layer) wird, wird in der zweiten Hälfte des Modells wieder rückgängig gemacht.
Der pooling layer verringert die Höhe und Breite des Bildes, indem er die Anzahl der Kanäle der Input Matrix konstant hält. Mit dieser Berechnung wird die Komplexität reduziert. Der pooling layer bezieht sich auf einen Pixel des Bildes, der für eine ganze Gruppe von Pixel steht. Auf diese Weise reduziert der pooling layer die Größe der Bilddaten in einem Convolutional Neural Net.
Zur Ausgabe werden die Ausgabewerte wieder mit hochauflösenden Features auf der Horizontalachse des Modells kombiniert. Ein sequentieller convolution layer generiert auf diese Weise einen präziseren Output auf der jeweiligen Ausgabeebene des Modells.
Quelle: https://heartbeat.fritz.ai/deep-learning-for-image-segmentation-u-net-architecture-ff17f6e4c1cf
Die Bezeichnung UNET kommt von der Architektur des deep learning Modells, die in der Visualisierung dem Buchstaben U gleicht.
Insbesondere durch das stetige Anwachsen der Anzahl an Ebenen in den eingesetzten (tiefen) neuronalen Netzen kommt dem Trainingsprozess - und damit dem Optimizer eine immer höhere Bedeutung hinsicht der Präzision des implementierten deep learning Modells zu. Daher betrachten wir in diesem online Kurs zu künstlicher Intelligenz in Teil 2 verschiedene Typen von Optimizern für das Training neuronaler Netze.
Die wohl bekannteste Optimizer Algorithmus im Umfeld künstlicher Intelligenz ist SGD (Stochastic Gradient Descent). SGD stellt sozusagen die Basis für das Training neuronaler Netze dar. Als Gradient wird allgemein die Steigung einer Funktion bezeichnet. Descent steht für “Absteigen”. Stochastic Gradient Descent bedeutet also, stetig entlang des stärksten Gefälle heruntersteigen. Bei der linearen Regression etwa, wollen wir die Summe der Quadrate der “Residuals” minimieren. Wir wissen, dass eine Funktion dort ein Minimum aufweist, wo die erste Ableitung (=Steigung) gleich 0 ist. Auf diese Weise kann das Problem der linearen Regression gelöst werden und der Vektor mit den Gewichten berechnet werden.
(Stochastic) Gradient Descent ist also ein iterativer Algorithmus, der an einem zufälligen Punkt der Funktion beginnt und weiter talwärts entlang der höchsten negativen Steigung optimiert. Solange, bis er an einem Minimum angelangt ist.
Der Adam Optimizer zeichnet sich vor allem durch vor allem durch hohe Recheneffizienz aus und ist so in der Lage, schneller gegen einen Grenzwert zu konvergieren und ist zusätzlich auch speichereffizienter als der klassische Gradient Descent Algorithmus, da er die Zwischenwerte der Gewichte nicht über den gesamten Prozess hinweg aufsummiert.
Mithilfe von Adaptive Moment Estimation wird die Bestimmung der passenden Learningrate für jeden einzelnen Parameter durch die Verwendung von Momentum der Gradienten erleichtert.
Durch die erhöhte Speichereffizienz zeichnet sich der ADAM Optimizer vor allem bei großen Trainingsdatensets aus. Die Aktualisierung der Parameter (Gewichtematrix) ist absolut invariant hinsichtliche der Skalierung der Gradienten. Der ADAM Optimizer Algorithmus konvergiert sogar wenn sich die Zielfunktion über die Zeit ändert. Die einzige Schwachstelle am ADAM Optimizer ist das Fakt, dass dieses Prozedere die Berechnung der Ableitung zweiten Grades benötigt.
Die Idee zu RMSProp lieferte Geoffry Hinton in seinem online Kurs “Neural Networks für Machine Learning”. RMSProp setzt auf das Konzept einer adaptiven Learning Rate für die unterschiedlichen Trainingszyklen von neuronalen Netzen. Obwohl RMSProp nicht wirklich öffentlich publiziert wurde, erfreut sich der Optimierungsalgorithmus für neuronale Netze hoher Bekanntheit und Beliebtheit in der künstlichen Intelligenz Community. Das Zentrale Anliegen der Optimierung mittels RMSProp Algorithmus liegt in der Auflösung des Problems einer hohen Varianz und Standardabweichung der Werte der Gewichte.
Um die Details der verschiedenen Optimizer Algorithmen für (tiefe) neuronale Netze - deep neural networks - genauer kennenzulernen, implementieren wir in diesem Kurs die wesentlichen Passagen mit reinem Python Code nach und erleben auf diese Weise die vielfältigen Optimierungen für Algorithmen und Training künstlicher Intelligenz im fastai Framework.