[PYTHON] Geh nach Hause, bis du CNN 10 verstehst

Verstehe CNN (Convolutional Neural Network) und gehe weiter

Im Moment versuche ich, 7 Arten von Früchten zu unterscheiden, aber ich war mit dem Endgefühl (ich habe die Genauigkeit verbessert) nach der Klassifizierung mit CNN nicht zufrieden. Also werde ich CNN von dem verstehen, was es ist.

Was ist CNN?

CNN (Convolutional Neural Network) ist ein neuronales Netzwerk, das im Gegensatz zu einem allgemeinen neuronalen Netzwerk vom Forward Propagation-Typ nicht nur aus einer vollständig verbundenen Schicht, sondern auch aus einer Faltungsschicht und einer Pooling-Schicht besteht.

Hmm, ich weiß es nicht. Was ist ein allgemeines neuronales Netzwerk vom Typ Vorwärtsausbreitung? Als ich es nachgeschlagen habe, war es sehr leicht zu verstehen. [Hinweise beim Lesen von Deep Learning (1. Forward Propagation Network)] (https://qiita.com/ma-oshita/items/99b2cf313494adbb964d)

In der Faltungsschicht und der Poolschicht ist, wie in der folgenden Abbildung gezeigt, ein Teil des Eingangsneurons eingegrenzt und lokal mit der nächsten Schicht verbunden. Jede Schicht ist ein Bild mit mehreren Detektoren, die als Filter bezeichnet werden.

image.png

Im Bilderkennungsbeispiel werden Kanten in der ersten Schicht erkannt, Texturen in der nächsten Schicht und abstraktere Merkmale in der nächsten Schicht. CNN lernt automatisch die Parameter des Filters, der ein Detektor zum Extrahieren dieser Merkmale ist.

Praktisches Beispiel für CNN

・ Gesichtserkennung mit Facebook-Tags ・ Google Fotosuche und Spracherkennung

Merkmale von CNN

Es gibt drei bemerkenswerte Punkte in CNN. Faltung, Übersetzungsinvarianz und Kompositionalität.

Was ist Falten

Faltung ist eine Technik, die häufig in der Bildverarbeitung verwendet wird. Für jedes Element gitterartiger numerischer Daten, die als Kernel (oder Filter) bezeichnet werden, und numerische Daten eines Teilbilds (als Fenster bezeichnet), das dieselbe Größe wie der Kernel hat. Es ist ein Prozess, in einen numerischen Wert umzuwandeln, indem die Summe der Produkte von berechnet wird. Dieser Konvertierungsprozess wird in kleine gitterartige numerische Daten konvertiert, indem ein Schrittprozess ausgeführt wird, indem das Fenster nach und nach verschoben wird. Es wird manchmal als Schiebefenster bezeichnet, da der Filter auf diese Weise verschoben wird.

image.png Zitat: Standford wiki / Convolution schematic.gif

Die auf diese Weise berechneten Daten werden als Feature-Map bezeichnet.

Synthetik

Sobald Sie jede Komponente von CNN verstanden haben, können Sie sie wie ein Puzzle kombinieren.

Jede Schicht übergibt aussagekräftige Daten der Reihe nach an die nächste Schicht. Im Verlauf der Schicht kann das Netzwerk höhere Funktionen erlernen.

Am Beispiel der Fruchtunterscheidung erkennt die erste Schicht Farbe und Form, die nächste Schicht kombiniert sie, um Geräusche zu erkennen, und wenn sie tiefer wird, können Fruchtmerkmale und sogar Sorten erkannt werden. Es kann sein.

Bewegung unveränderlich

Wie in dem oben erwähnten Faltungsbeispiel zu sehen ist, wird die Detektion, da sie vom lokalen Bereich durch das Filter durchgeführt wird, robust gegen die Abweichung der Position des Objekts.

Das heißt, die Funktion kann an einer beliebigen Stelle in den Eingabedaten erkannt werden. Dies wird als mobile Unveränderlichkeit bezeichnet.

In Bezug auf die Invarianz gegenüber Rotation und Vergrößerung / Verkleinerung ist es notwendig, solche Daten durch Datenerweiterung und Lernen zu erhöhen.

CNN-Komponenten

CNN besteht aus einer Kombination von Schichten, Aktivierungsfunktionen und einigen Parametern.

Keine Polsterung

Das Auffüllen mit Nullen ist das Füllen von Nullen um die Eingabe-Feature-Map. Polsterung bedeutet Ränder, und dies hat die folgenden Vorteile.

・ Da die Anzahl der Windungen für Kantendaten zunimmt, werden auch Kantenmerkmale berücksichtigt.

schreiten

Schritt ist buchstäblich Schritt. Bisher wurde der Filter in Intervallen von 1 Pixel angewendet = Schritt ist 1. Wenn Sie es in Intervallen von 2 Pixeln anwenden, beträgt der Schritt 2.

Vollständig verbundene Ebene

Dies ist die letzte Schicht von CNN zur Bildunterscheidung.

Die bisher verwendeten "Faltschichten" und "Poolschichten" liegen im Wesentlichen in Form eines Arrays von Eingabebildern vor. Um das Eingabebild zu klassifizieren, muss von der Form des Bildes in die Form konvertiert werden, die eine eindimensionale Ausgabe ausgeben kann.

CNN glättet die Bilddaten nach einiger Faltung und Zusammenfassung zu einem Spaltenvektor. Wenn es flach wird, kann es von der verborgenen Ebene und der Ausgabeebene geerbt werden.

Die vollständig verbundene Ebene verwendet einen eindimensionalen Vektor als Eingabewert und gibt einen eindimensionalen Vektor aus. Auf diese Weise extrahiert CNN die vorherrschenden Merkmale des Eingabebildes, bevor es an das vorwärtsgerichtete neuronale Netzwerk weitergeleitet wird, sodass sie unter Verwendung der Softmax-Methode klassifiziert werden können.

Pooling-Schicht

Die Pooling-Schicht wird typischerweise nach der Faltungsschicht verwendet. Diese Ebene komprimiert die Eingabedaten.

Je höher die Auflösung, desto mehr Rauschen. Beim Pooling wird die Auflösung reduziert, indem die Größe reduziert und die Größe geändert wird, während die Funktionen beibehalten werden. Die Pooling-Schicht wird normalerweise nach der Convolutoin-Schicht angewendet. Die Informationen werden komprimiert und heruntergesampelt, um die Eingabedaten in eine besser verwaltbare Form umzuwandeln.

Die folgenden Vorteile werden durch Komprimierung erzielt und es werden Merkmale in der Faltungsschicht und der Poolschicht erkannt. ・ Verbesserte Robustheit (weniger anfällig für winzige Positionsänderungen) ・ Überlernen Sie das Überlernen bis zu einem gewissen Grad ・ Berechnungskosten können unterdrückt werden

Schließlich

Indem ich diese Zeit untersuchte und zusammenfasste, konnte ich das CNN verstehen, das ich beiläufig benutzte. Ich habe nur eine ungefähre Vorstellung von der Gorigori-Formel, aber ich denke, ich kann endlich nach Hause gehen.

Referenz

<a target = "_ blank" href = "https://www.amazon.co.jp/gp/product/4839970270/ref=as_li_tl?ie=UTF8&camp=247&creative=1211&creativeASIN=4839970270&linkCode=as2&tag=samuragbdim2 > Lernen Sie, während Sie sich mit TensorFlow und Keras bewegen ~ Mechanismus des tiefen Lernens ~ Gründliche Erklärung des Faltungsnetzwerks ~ (Compass Books-Reihe) <img src = "// ir-jp.amazon-adsystem.com/e/ir?t = samuragouchim-22 & l = am2 & o = 9 & a = 4839970270 "width =" 1 "height =" 1 "border =" 0 "alt =" "style =" border: none! Wichtig; Rand: 0px! Wichtig; "/> ・ Klicken Sie hier für Bilder  [Convolutional Neural Networks (CNNs / ConvNets)] (https://cs231n.github.io/convolutional-networks/) ・ Das klassische Convolutional Neural Network von Grund auf neu verstehen

Recommended Posts

Geh nach Hause, bis du CNN 10 verstehst
Bis Sie MySQL-Python installieren