Dieses Notebook in Databricks ausprobieren
Am 25. Oktober veranstalteten wir ein Live-Webinar –Applying your Convolutional neuronales Netz– mit Denny Lee, Technical Produkt Marketing Manager bei Databricks. Dies ist das dritte Webinar einer kostenlosen Grundlagenreihe zum Deep Learning von Databricks.
In diesem Webinar sind wir tiefer in Convolutional Neural Networks (CNNs) eingetaucht, eine spezielle Art von neuronalen Netze, die davon ausgehen, dass die Eingaben Bilder sind, und die sich bei der Bildklassifizierung und Objekterkennung als sehr effektiv erwiesen haben.
Insbesondere haben wir Folgendes besprochen:
Wir haben einige dieser Konzepte mit Keras (TensorFlow-Backend) auf Databricks demonstriert. Hier ist ein Link zu unserem Notebook, mit dem Sie noch heute loslegen können:
Sie können sich Teil 1 und Teil 2 unten ansehen:
Wenn Sie kostenlosen Zugriff auf die Databricks einheitliche Analyseplattform erhalten und unsere Notebooks darauf ausprobieren möchten, können Sie hier eine Kostenlose Testversion starten.
Gegen Ende veranstalteten wir eine Fragerunde (Q&A), und nachfolgend finden Sie die Fragen und ihre Antworten, nach Themen gruppiert.
F: Muss ich die Mathematik hinter neuronalen Netzen wirklich verstehen, um sie anwenden zu können?
Obwohl es nicht unbedingt notwendig ist, die Mathematik hinter neuronalen Netzen zu verstehen, um sie zu verwenden, ist es wichtig, diese Grundlagen zu verstehen, um die richtigen Algorithmen auszuwählen und zu verstehen, wie Sie Ihre Deep-Learning- (und Machine-Learning-)Modelle optimieren, verbessern und gestalten. Ein guter Artikel zu diesem Thema ist Wale Akinfaderins „The Mathematics of Machine Learning“.
F: Warum CNNs anstelle von regulären neuronalen Netzen verwenden? Und wie setzen Sie CNNs in der Praxis ein, können Sie dazu Anwendungsbeispiele nennen?
Quelle: https://cs231n.github.io/convolutional-networks/
Wie in Training neuronaler Netze ausführlicher erläutert, ähneln konvolutionelle neuronale Netze (CNNs) herkömmlichen künstlichen neuronalen Netzen, aber erstere gehen explizit davon aus, dass es sich bei der Eingabe um Bilder handelt. Das Problem ist, dass vollständig verbundene künstliche neuronale Netze (wie in der linken Grafik dargestellt) nicht gut mit Bildern skalieren. Zum Beispiel, 200 Pixel x 200 Pixel x 3 Farbkanäle (z. B. RGB) würde zu 120.000 Gewichten führen. Je größer oder komplexer (Channel-weise) das Bild ist, desto mehr Gewichte würden benötigt. Bei CNNs sind die Knoten nur mit einem kleinen Bereich der vorhergehenden Schicht verbunden, die in 3D (Breite, Höhe, Tiefe) organisiert ist. Da die Knoten nicht vollständig verbunden sind, reduziert dies die Anzahl der Gewichte (d. h. Kardinalität) und ermöglicht so dem Netzwerk, seine Durchläufe schneller abzuschließen.
F: Ein CNN ist ein Netzwerk aus Schichten, Größe und Typ. Wie wähle ich sie aus? Auf welcher Grundlage? Mit anderen Worten, wie entwerfe ich meine Architektur?
Wie im On-Demand-Webinar und FAQ Introduction to neuronales Netz On-Demand Webinar and FAQ Now Available erwähnt, gibt es zwar allgemeine Faustregeln für den Ausgangspunkt (z. B. mit einer Hidden Layer starten und entsprechend erweitern, Anzahl der Eingabeknoten ist gleich der Dimension der Features usw.), aber das Wichtige ist, dass Sie testen müssen. Das heißt, trainieren Sie Ihr Modell und führen Sie dann die Test- und/oder Validierungsausführungen für dieses Modell durch, um die Genauigkeit (je höher, desto besser) und den Verlust (je niedriger, desto besser) zu verstehen. Beim Entwerfen Ihrer Architektur ist es am besten, mit den besser verstandenen und erforschten Architekturen zu starten (z. B. AlexNet, LeNet-5, Inception, VGG, ResNet usw.). Von hier aus können Sie die Anzahl, Größe und Art der Layer anpassen, während Sie Ihre Experimente durchführen.
F: Warum wird Softmax für die Fully-Connected-Schicht verwendet?
Wenn wir mit logistischer Regression arbeiten, setzt dies eine Bernoulli-Verteilung für unsere binäre Klassifizierung voraus. Wenn Sie eine Klassifizierung für mehr als zwei Klassen durchführen müssen (wie bei unserem MNIST-Klassifizierungsproblem), benötigen wir die Verallgemeinerung der Bernoulli-Verteilung, bei der es sich um eine Multinomialverteilung handelt. Die Art der Regression, die auf eine Multinomialverteilung (Multiklassifikator) angewendet wird, wird als Softmax-Regression bezeichnet. Bei MNIST klassifizieren wir handgeschriebene Ziffern für einen Wert zwischen 0, ..., 9 an der Fully-Connected-Schicht, daher die Verwendung von Softmax.
F: Ist die Filtergröße immer eine ungerade Zahl?
Ein gängiger Ansatz für die Filtergröße ist f x f, wobei f eine ungerade Zahl ist. Obwohl auf Folie 39 von das Anwenden von Neuronale Netze nicht explizit darauf hingewiesen wird, ist f eine ungerade Zahl, da das Ziel darin besteht, das Quellpixel und die umliegenden Pixel zu falten. Das absolute Minimum wäre eine Filtergröße von 3 x 3, da dies der Quellpixel + 1 Pixel nach außen im 2D-Raum wäre.
Eine gerade f -Größe würde dazu führen, dass weniger als die Hälfte der Pixel um das Quellpixel herum gefaltet werden. Um tiefer in das Thema einzutauchen, findet sich eine gute SO-Antwort auf diese Frage unter https://datascience.stackexchange.com/questions/23183/why-convolutions-always-use-odd-numbers-as-filter-size/23186.
F: Wie kann ich ein CNN mit variabler Eingabelänge implementieren? Gibt es also Vorschläge für Trainingsdaten, die Bilder mit variabler Größe haben?
Im Allgemeinen müssen Sie die Größe Ihrer Bilder ändern oder sie mit Nullen auffüllen, sodass alle Eingangsbilder für Ihr CNN die gleiche Größe haben. Es gibt einige Ansätze, die LSTMs, RNNs oder rekurrente neuronale Netze (insbesondere für Textdaten) umfassen und die Eingaben variabler Größe verarbeiten können. Beachten Sie jedoch, dass dies oft keine triviale Task ist.
F: Ich bin ein zahlender Databricks-Nutzer. Ich weiß, wie man Keras auf dem eigenen PC ausführt, aber noch nicht in Databricks.
Wenn Sie Databricks verwenden, starten Sie einen Databricks Runtime for Machine Learning -Cluster, der unter anderem Keras, TensorFlow, XGBoost, Horovod und scikit-learn enthält. Weitere Informationen finden Sie unter Announcing Databricks Runtime for Machine Learning.
F: Hatten wir eine ähnliche Session für ML?
Es gibt eine Reihe großartiger Databricks-Webinare; dazu gehören unter anderem solche, die sich auf Machine Learning konzentrieren:
(Dieser Blogbeitrag wurde mit KI-gestützten Tools übersetzt.) Originalbeitrag
Data Science e ML
October 31, 2023/9 min de leitura