[PYTHON] [AI] Deep Metric Learning

Einführung

Es ist lange her, dass Deep Learning seine Position im Bereich des Opportunity-Lernens fest etabliert hat. Dieses Mal möchte ich eine kurze Zusammenfassung und einige Demos von Deep Metric Learning vorstellen, das aufgrund seiner hohen Leistung und Vielseitigkeit in verschiedenen Bereichen angewendet wird. Da die handschriftliche Zeichenerkennung und die handschriftliche Zeichenerkennung allein nicht interessant sind, erkennen wir auch Anomalien.

Deep Metric Learning

Metrisches Lernen ist eine Methode namens "Fernunterricht", bei der die Konvertierung (Zuordnung) vom Merkmalsraum der Eingabedaten in den Merkmalsraum gelernt wird, der die Ähnlichkeit der Daten widerspiegelt.

In einer Nussschale

--Daten derselben Klasse sind nahe beieinander

Erfahren Sie, wie Sie in Feature-Space konvertieren.

Bei der Klassenklassifizierung ist es auch in Fällen, in denen die Entfernung zu eng und schwierig zu klassifizieren ist, möglich, die Unterscheidungsgenauigkeit zu verbessern, indem der Merkmalsraum so gelernt wird, dass dieselbe Klasse nah und die verschiedenen Klassen weit entfernt sind. Ich kann es schaffen

Metrisches Lernen selbst ist eine alte Methode, aber Deep Metric Learning ist eine Methode, um diese Transformation nichtlinear durch das Deep Neural Network zu entwerfen. Deep Metric Learning ist äußerst vielseitig, da es eine Methode zum Erlernen der "Entfernung" zwischen Daten darstellt und aufgrund seiner hohen Leistung eine Vielzahl von Anwendungsbereichen wie folgt bietet.

Dies ist eine Methode, die häufig im Wettbewerb "Kaggle" vorkommt, bei dem Datenwissenschaftler aus aller Welt um ihre Leistung konkurrieren. Dieses Mal werden wir eine Bildklassifizierung und Erkennung von Anomalien durchführen.

Demo 1. Handschriftliche Zeichenerkennung

Deep Metric Learning wird verwendet, um die bekannten handgeschriebenen MNIST-Zeichen zu erkennen. 20150117221123.png Daten: 0-9 handgeschriebenes Textbild von 28 x 28 Pixel Lerndaten: 50.000 Blatt Testdaten: 10.000 Blatt

Es wurden verschiedene Methoden als Deep Metric Learning-Methoden vorgeschlagen. Dieses Mal werden wir aufgrund der Lerngeschwindigkeit, der hohen Leistung und der Einfachheit des Modells selbst den Softmax-Verlust mit L2-Einschränkungen verwenden.

L2-constrained Softmax Loss L2-beschränkter Softmax-Verlust ist eine Technik, die die L2-Norm der Ausgabe der letzten Schicht des Deep Neural Network auf eine Konstante $ \ alpha $ beschränkt, die eine Hypersphäre mit einem Radius von $ \ alpha $ für die Eingabedaten ist. Es ist gleichbedeutend mit der obigen Einbettung.

Die Formel für L2-beschränkten Softmax-Verlust lautet:

\text{minimize } -\frac{1}{M} \sum_{i=1}^{M} \log \frac{e^{W_{y_{i}}^{T} f\left(\mathbf{x}_{i}\right)+b_{y_{i}}}}{\sum_{j=1}^{C} e^{W_{j}^{T} f\left(\mathbf{x}_{i}\right)+b_{j}}}\\
\text { subject to } \quad\left\|f\left(\mathbf{x}_{i}\right)\right\|_{2}=\alpha, \forall i=1,2, \dots M\\

Durch Auferlegen einer Einschränkung zum Einbetten von Daten in eine hypersphärische Form ist es möglich zu lernen, dass die Kosinusähnlichkeit zwischen Daten derselben Klasse groß und die Kosinusähnlichkeit mit verschiedenen Klassen klein ist.

Bei normalem Softmax-Verlust ist beispielsweise bei einem Gesichtsfoto die L2-Norm groß für ein leicht verständliches Bild, das geradeaus zeigt, und die L2-Norm ist groß für ein Bild, bei dem es schwierig ist, Merkmale wie seitliches oder liegendes Bild aufzunehmen. Es hat die Eigenschaft, kleiner zu werden. Infolgedessen wird das Lernen von leicht verständlichen Bildern angezogen, die geradeaus schauen, und Bilder mit einer kleinen L2-Norm, die kurz gesagt schwierig ist, werden tendenziell ignoriert. l2ノルム.jpeg

Der Lm-beschränkte Softmax-Verlust überwindet dieses Problem, indem die L2-Norm unabhängig von den Daten konstant gehalten wird, wodurch die Auswirkung aller Daten auf den Verlust einheitlich wird.

Die Implementierung des L2-beschränkten Softmax-Verlusts selbst ist sehr einfach und kann erreicht werden, indem die L2-Normnormalisierungsschicht und die konstante $ \ alpha $ -Skalierungsschicht zur Ausgabe der letzten Schicht des Deep Neural Network hinzugefügt und der Softmax-Verlust berechnet werden. Ich werde.

https___qiita-image-store.s3.amazonaws.com_0_263391_4b3647ac-e98b-eb00-f2d4-cf4c75508c0e.png

Modell-

Die Implementierung erfolgt mit Keras in Google Colaboratory. Wie unten gezeigt, stapeln Sie 3 Faltungsschichten und fügen Sie eine L2-beschränkte (Lambda-Schicht) zwischen der FC-Schicht (vollständig verbundene Schicht) und Softmax ein. Diese L2-Beschränkung ist der einzige Unterschied zum normalen Convolutional Neural Network (CNN).

** Modellübersicht **

** Modellausgabe in Keras ** キャプチャ.PNG

** Verschiedene Lernparameter **

Visualisierung mit t-SNE

Um den Effekt von Deep Metric Learning zu bestätigen, visualisieren wir den Eingabe-Feature-Space und den konvertierten Feature-Space, indem wir sie mit t-SNE auf zwei Dimensionen reduzieren. t-SNE ist ein Algorithmus, der die Dimensionskomprimierung so durchführt, dass die "Nähe" von Daten im hochdimensionalen Raum auch im niedrigdimensionalen Raum erhalten bleibt. Da ein Lehreretikett nicht für die Komprimierung verwendet wird, befinden sich Daten ausschließlich im hochdimensionalen Raum. Sie können sehen, wie getrennt sie sind.

** 1. Visualisierung des Eingaberaums (784 Dimensionen → 2 Dimensionen) ** 入力空間.png Jeder Punkt entspricht einem Bild, und dieselbe Farbe repräsentiert Daten, die zu derselben Zahlenklasse gehören. Selbst im Eingaberaum gibt es viele Überlappungen und Variationen, obwohl er im Allgemeinen für jede Klasse getrennt ist.

** 2. Visualisierung der letzten Schicht mit normalem CNN (64. Dimension → 2. Dimension) ** CNN.png

Da das CNN selbst eine hohe Leistung aufweist, können Sie sehen, dass selbst ein normales CNN in der letzten Schicht ziemlich gut getrennt ist (Cluster werden für jede Klasse gebildet). Obwohl es gut getrennt ist, können Sie bei genauem Hinsehen häufig einen kleinen Sprungwert erkennen.

** 3. Visualisierung der letzten Ebene mit L2-beschränktem Softmax-Verlust (64. Dimension → 2. Dimension) ** l2_圧縮.png

In L2-beschränktem Softmax-Verlust können Sie sehen, dass die Cluster klarer voneinander getrennt sind als in einem normalen CNN. Dank der Normalisierung der L2-Norm tragen alle Daten zum Lernen bei und es gibt fast keine Sprungwerte. Sie können sehen, warum Deep Metric Learning als "Fernunterricht" bezeichnet wird.

Identifikationsergebnis

Die Identifikationsergebnisse für 10.000 Testbilder sind wie folgt. Wie Sie den hohen Grad an Trennung in der Visualisierung der endgültigen Schicht sehen können, ist ersichtlich, dass die Genauigkeit einfach dadurch verbessert wird, dass die Einschränkungen der L2-Normalisierungsschicht und der Skalierungsschicht in dasselbe CNN-Modell eingefügt werden. Sowohl Genauigkeit als auch Verlust zeigen einen sanften Übergang und beide sind schließlich besser als CNN (kein L2-Verlust).

Methode CNN (kein L2-Verlust) L2-beschränkter Softmax-Verlust
Identifikationsrate 99,01 99,31
Lernen (Genauigkeit)
Lernen (Verlust)

Übrigens sind die Bilder (69 Bilder), die durch L2-beschränkten Softmax-Verlust nicht identifiziert werden konnten, wie folgt. ・ Pred: Vorhersagewert des L2-beschränkten Softmax-Verlusts ・ Richtig: Richtige Antwortbezeichnung

失敗画像.png

Ich verstehe dieses Gefühl! Es gibt einige Dinge, die ich sagen möchte. Es scheint selbst für Menschen schwierig zu sein, 100 Punkte zu bekommen. .. Es scheint, dass die Genauigkeit zunimmt, wenn die Trainingsdaten von Schwachstellen erhöht werden.

Demo auf Flasche (Identifikation)

Ich habe eine Demo erstellt, die mit dem von mir erlernten Modell in Echtzeit mit Flask verarbeitet werden kann. Sie können sehen, dass sie es fest identifiziert haben. Erstens liegt die Identifikationsrate bei 99,3%, daher scheint es in Ordnung zu sein, wenn es sich nicht um eine sehr seltsame Zahl handelt.

Demo 2. Erkennung von Anomalien

Obwohl die Identifikation solide ist, werden im gegenwärtigen Zustand Dinge, die eindeutig keine Zahlen sind, wie folgt zwangsweise einem von ihnen zugewiesen.

Wenn etwas eingegeben wird, das keine Zahl ist, möchten Sie sagen, dass es keine Zahl ist, anstatt etwas in der Nähe auszugeben. Verwenden wir die Erkennung von Anomalien, um nicht numerische Zahlen abzuwehren und gleichzeitig die herkömmliche Unterscheidungsfähigkeit beizubehalten.

Wie ich zu Beginn schrieb, kann Deep Metric Learning auch auf die Erkennung von Anomalien angewendet werden. Es ist höher als die Erkennung von Anomalien im Eingaberaum, indem eine Anomalieerkennung im Merkmalsmengenraum durchgeführt wird, die in einer Form gelernt wurde, die die Ähnlichkeit der Daten widerspiegelt. Sie werden in der Lage sein, Genauigkeit zu erhalten. Deep Metric Learning selbst ist Fernunterricht und keine Methode zur Erkennung von Anomalien. Daher ist eine andere Methode zur Erkennung von Anomalien erforderlich. Dieses Mal verwenden wir den Local Outlier Factor (LOF) zur Erkennung von Anomalien.

Local Outlier Factor(LOF) LOF ist eine Methode zur Erkennung von Anomalien, die sich auf die Datendichte im Raum konzentriert. Es ist wie eine erweiterte Version von k-next neighbour (kNN), bei der kNN die Datenvariabilität von Cluster zu Cluster nicht berücksichtigen kann, während LOF ** Lokale Dichte mit k Daten in der Nachbarschaft ist. Durch Beachtung von) ** wird es möglich, Anomalien unter Berücksichtigung der Datenverteilung zu erkennen.

Lokale Dichte = 1 / durchschnittliche Entfernung zu k nahe gelegenen Punkten

Die Formeln und Details werden weggelassen, aber in dem in der folgenden Abbildung gezeigten Fall sind Daten A beispielsweise weit von den benachbarten Clustern entfernt, sodass wir sie als abnormal beurteilen möchten und Daten B in derselben Verteilung wie die benachbarten Cluster vorliegen. Weil es in ist, möchten Sie es als normal beurteilen. Da B jedoch in Bezug auf den Abstand von der Umgebung von k weiter entfernt ist, kann kNN nicht damit umgehen. Andererseits bestimmt LOF den Schwellenwert für Anomalien basierend auf der Dichte der umgebenden Daten, sodass solche Fälle behandelt werden können.

Modell-

LOF wird auf die Ausgabe der L2-beschränkten Schicht des Modells angewendet, die durch MNIST-Identifizierung gelernt wurde, um Anomalien zu erkennen (keine Notwendigkeit, Deep Neural Net neu zu trainieren). Wenn der LOF feststellt, dass er abnormal ist, wird er als Fehler ausgegeben, und wenn festgestellt wird, dass er normal ist, wird das Identifikationsergebnis von Sofmax wie zuvor ausgegeben.

LOF verwendet Scikit-Learn und lernt mit den folgenden Parametern. ・ N-Nachbarn: 20 ・ Kontamination: 0,001 ・ Neuheit: wahr

Daten

Die folgenden zwei Arten von Datensätzen werden als Ziele für die Erkennung von Anomalien verwendet.

Datensatz Fashion-MNIST Cifar-10
Übersicht Modebilddatensatz für Hemden, Taschen, Schuhe usw. (10 Klassen) Natürlicher Bilddatensatz für Flugzeuge, Autos, Hunde usw. (10 Klassen)
Bildbeispiel

In beiden Fällen gibt es keine numerischen Daten. Fashion-MNIST ist ein 28 x 28 Pixel großes Graustufenbild. Verwenden Sie es also so wie es ist, und Cifar-10 ist ein 32 x 32 Pixel großes Farbbild. Verwenden Sie es also nach der Graustufen- und Größenänderung. Ich werde. Da Deep Nerual Net nur mit handgeschriebenen Zeichen MNIST gelernt wird, sind beide unbekannte Bilder **, wenn sie von Deep Neural Net aus betrachtet werden. Ich möchte testen, ob diese beiden Datensätze als Anomalien im LOF des Feature-Space der letzten Ebene korrekt abgestoßen werden.

Identifikationsergebnis

Als Benchmark verwenden wir die Anomalieerkennung, wenn LOF im Eingabe-Feature-Space angewendet wird.

** LOF im Eingabefeature-Bereich: Benchmark **

Daten Normale Beurteilung Abnormale Beurteilung
MNIST0.990.01
Fashion-MNIST0.700.30
Cifar-100.160.84

Obwohl MNIST 99% als normal erkennen kann, ist der Normalbereich zu groß, 70% von Fashion-MNIST sind normal und 16% von Cifar-10 sind normal.

** Auf der letzten Ebene des Deep Metric Learning (L2-beschränkter Softmax-Verlust) LOF: Diesmal Methode **

Daten Normale Beurteilung Abnormale Beurteilung
MNIST0.990.01
Fashion-MNIST0.120.88
Cifar-100.050.95

Während 99% des normalen Urteils von MNIST beibehalten werden, können 88% von Fashion-MNIST und 95% von Cifar-10 als abnormal beurteilt werden.

Wenn Sie etwas mehr Anomalien abwehren möchten, können Sie die Kontamination erhöhen (Verhältnis der Ausreißer in den Trainingsdaten). Wenn die Kontamination 0,01 beträgt, ist das Ergebnis wie folgt.

Daten Normale Beurteilung Abnormale Beurteilung
MNIST0.960.04
Fashion-MNIST0.020.98
Cifar-100.001.00

4% der MNIST-Daten sind abnormal. Mit Fashion-MNIST (98%) und Cifar-10 können alle Bilder als abnormal beurteilt werden. Wie Sie auf dem Bild sehen können, das nicht identifiziert werden konnte, enthält MNIST Daten, die zunächst nur schwer zu identifizieren sind. Angesichts der Genauigkeit der Erkennung von Anomalien scheint dies für den praktischen Gebrauch besser zu sein.

Demo on Flask (Identifizierung + Erkennung von Anomalien)

Ich habe auch eine Demo erstellt, die mit Flask in Echtzeit verarbeitet werden kann. Wenn ein anderes Zeichen als eine Nummer kommt, wird es als abnormal abgelehnt (keine Ziffer), und es kann bestätigt werden, dass die Nummer noch identifiziert ist.

Zusammenfassung

In einer einfachen Demo ist zu sehen, dass Fernunterricht mit Deep Metric Learning die Anwendung auf die Erkennung von Anomalien erleichtert und die Erkennungsgenauigkeit verbessert. Es ist als Konzept leicht zu verstehen, und insbesondere Softmax Loss mit L2-Einschränkungen hat den Vorteil, dass es sehr einfach zu implementieren ist, da es nur die L2-Norm einschränkt.

In Zukunft möchte ich verschiedene Methoden vorstellen und auf diese Weise so viel wie möglich demonstrieren.

Qiita Artikel ・ [Eine Falle, mit der jeder problemlos einen RPA erstellen kann](https://qiita.com/jw-automation/items/78d823a6cb278f7015b5) ・ [Eine Falle, die jeder, der eine VBA erstellen kann, problemlos erstellen kann](https://qiita.com/jw-automation/items/38c28016bf5162e76c59) ・ [Ich habe ein UiPath-Codierungsprüfwerkzeug [RPA] erstellt](https://qiita.com/jw-automation/items/003dd0ef116cf968c3a8) ・ [Der Grund, warum RPA so gut ist, dass Sie Ihr Verständnis von RPA vertiefen können](https://qiita.com/jw-automation/items/836391dfde3fb1ac83d6) ・ [Von RPA empfohlene Bücher](https://qiita.com/jw-automation/items/3c141c50c7a163943fd9) ・ [Personen, die für die RPA-Entwicklung geeignet sind, Personen, die dies nicht tun](https://qiita.com/jw-automation/items/828933731611b9ec601f) ・ [Ich habe versucht, die Herstellung von Sushi zu automatisieren](https://qiita.com/jw-automation/items/a906f7a79e72add7b577)

Demo

Recommended Posts

[AI] Deep Metric Learning
Tiefes Lernen
[AI] Deep Learning für das Entrauschen von Bildern
Deep Learning Memorandum
Python Deep Learning
Deep Learning × Python
Erstes tiefes Lernen ~ Kampf ~
Python: Deep Learning-Praxis
Deep Learning / Aktivierungsfunktionen
Deep Learning von Grund auf neu
Deep Learning 1 Übung des Deep Learning
Deep Learning / Cross Entropy
Erstes tiefes Lernen ~ Vorbereitung ~
Erstes tiefes Lernen ~ Lösung ~
Ich habe versucht, tief zu lernen
Python: Deep Learning Tuning
Deep Learning Großtechnologie
Deep Learning / Softmax-Funktion
Warum Deep Metric Learning basierend auf der Softmax-Funktion funktioniert
Deep Learning von Grund auf 1-3 Kapitel
Versuchen Sie es mit TensorFlow
Deep Learning Gaiden ~ GPU-Programmierung ~
Python-Lernplan für KI-Lernen
Deep Learning Bilderkennung 1 Theorie
Deep Running 2 Tuning von Deep Learning
Deep Learning / LSTM Scratch Code
<Kurs> Tiefes Lernen: Tag 1 NN
Deep Kernel Learning mit Pyro
Deep Learning für die Bildung von Verbindungen?
Einführung in Udacity Deep Learning Nanodegree
Themen> Deep Learning: Tag 3 RNN
Einführung in Deep Learning ~ Lernregeln ~
Tiefe Stärkung des Lernens 1 Einführung in die Stärkung des Lernens
Tiefes Lernen der Verstärkung 2 Implementierung des Lernens der Verstärkung
Generiere Pokemon mit Deep Learning
Einführung in Deep Learning ~ Backpropagation ~
Erstellen Sie eine KI, die Zuckerbergs Gesicht mit tiefem Lernen identifiziert learning (Datenlernen)
Deep Learning mit Shogi AI auf Mac und Google Colab
Deep Learning Model Lightening Library Distiller
Deep Learning / Deep Learning von Grund auf neu 2 Kapitel 4 Memo
Probieren Sie Deep Learning mit FPGA-Select-Gurken aus
Identifikation der Katzenrasse mit Deep Learning
Deep Learning mit Shogi AI auf Mac und Google Colab Kapitel 11
Deep Learning / Deep Learning von Grund auf neu Kapitel 3 Memo
Machen Sie ASCII-Kunst mit tiefem Lernen
Deep Learning mit Shogi AI auf Mac und Google Colab Kapitel 1-6
Deep Learning / Deep Learning von Null 2 Kapitel 5 Memo
Implementieren Sie Deep Learning / VAE (Variational Autoencoder)
Deep Learning mit Shogi AI auf Mac und Google Colab Kapitel 8
Einführung in das tiefe Lernen ~ Funktionsnäherung ~
Deep Learning mit Shogi AI auf Mac und Google Colab Kapitel 12 3
Tiefes Lernen von Grund auf neu (Kostenberechnung)
Deep Learning mit Shogi AI auf Mac und Google Colab Kapitel 7
Deep Learning mit Shogi AI auf Mac und Google Colab Kapitel 10 6-9
Über das Projektmanagement von Deep Learning (DNN)
Deep Learning mit Shogi AI auf Mac und Google Colab Kapitel 10
Deep Learning mit Shogi AI auf Mac und Google Colab Kapitel 7 5-7
Deep Learning mit Shogi AI auf Mac und Google Colab Kapitel 9
Tiefes Lernen, um ohne GPU zu beginnen