Die Entwicklung neuronaler Netze zur Bilderkennung bei Google: GoogLeNet

    Ich habe VM hier schon lange synchronisiert, daher bleibt Zeit, über das zu sprechen, was ich kürzlich gelesen habe.
    Zum Beispiel über GoogLeNet.
    GoogLeNet ist die erste Inkarnation der sogenannten Inception-Architektur, deren Bezug für alle klar ist:


    Bild
    (Übrigens, der Link dazu ist der erste in der Liste der Artikelreferenzen, Jungs brennen)


    Sie gewann die ImageNet-Erkennungsherausforderung 2014 mit einer Punktzahl von 6,67% der Top-5-Fehler. Ich möchte Sie daran erinnern, dass der Top-5-Fehler eine Metrik ist, bei der der Algorithmus 5 Varianten der Bildklasse erzeugen kann und der Fehler gezählt wird, wenn unter all diesen Optionen keine richtige vorhanden ist. Der Testdatensatz enthält 150.000 Bilder und 1000 Kategorien, dh die Aufgabe ist äußerst trivial.


    Um zu verstehen, warum, wie und warum GoogLeNet wie üblich in einem kleinen Kontext angeordnet ist.


    Haftungsausschluss: Der Beitrag basiert auf den bearbeiteten Chat-Protokollen von closedcircles.com , daher der Präsentationsstil und klärende Fragen.


    2012 findet ein Meilenstein statt - die ImageNet-Herausforderung gewinnt ein tiefes Faltungsnetzwerk


    Und gewinnt nicht nur, sondern zeigt einen Fehler fast die Hälfte des zweiten Platzes (15% gegenüber 26% Top5-Fehler)
    (um die Entwicklung der Region zu zeigen, beträgt das aktuelle Top-Ergebnis 3%). Das
    Raster heißt AlexNet mit dem Namen Hintons Schüler Alex Krizhevsky. Es hat nur 8 Ebenen (5 Faltungsstufen und 3 vollständig verbundene), aber im Allgemeinen ist es dick und fett - bis zu 60 Millionen Parameter. Ihr Training passt nicht in eine GPU mit 3 GB Speicher und Alex muss sich bereits einen Trick einfallen lassen, wie man dies auf zwei GPUs trainiert.


    Die Leute bei Google arbeiten also daran, es praktischer zu machen.


    Zum Beispiel, damit Sie es auf kleineren Geräten und allgemein verwenden können.
    Wir lieben GoogLeNet nicht so sehr, auch nicht wegen der Genauigkeit, sondern wegen der Effizienz der Modellgröße und der erforderlichen Anzahl von Berechnungen.
    Papier selbst - http://arxiv.org/abs/1409.4842 .


    Die Hauptideen, die sie haben, sind:


    • Anfänglich hat AlexNet große Windungen durchgeführt, die viele Parameter erfordern. Versuchen wir, kleinere Windungen mit vielen Schienen durchzuführen.
    • Und dann werden wir die Anzahl der Messungen aggressiv reduzieren, um die dickeren Schichten auszugleichen. Clevererweise können Sie dies mit 1x1-Windungen tun - tatsächlich wird ein linearer Filter im gesamten Bild angewendet, um die aktuelle Anzahl von Messungen zu erfassen und sie linear in eine kleinere zu mischen. Da er auch studiert, fällt es sehr effektiv aus.
    • Auf jeder Ebene werden mehrere Faltungskerne unterschiedlicher Größe ausgeführt, um Features unterschiedlicher Größe herauszuholen. Wenn die Skala für die aktuelle Stufe zu groß ist, wird sie beim nächsten Mal erkannt.
    • Tun Sie das nicht versteckte FC Schichten überhaupt, denn sie haben sehr viele Möglichkeiten. Stattdessen erstellen wir auf der letzten Ebene den globalen Durchschnittspool und verknüpfen ihn direkt mit der Ausgabeschicht.

    So sieht ein "Inception" -Modul aus:
    Bild


    Dieselben Kernel unterschiedlicher Größe sind sichtbar, 1x1-Windungen sind sichtbar, um die Dimension zu verringern.


    Und jetzt besteht das Netzwerk aus 9 solchen Blöcken. Dieses Design hat etwa zehnmal weniger Parameter als AlexNet und ist auch schneller zu berechnen, da die Reduzierung der Dimensionalität gut funktioniert.


    Und dann stellte sich heraus, dass sie Bilder auch tatsächlich besser klassifiziert - wie oben geschrieben, 6,67% Top5-Fehler.


    Bild
    Hier ist ein Bild des gesamten Netzwerks. Es sieht beängstigend aus, aber wenn Sie feststellen, dass sich diese Blöcke wiederholen, ist es einfacher.


    Welche anderen Details zu erzählen ...


    Sie hat drei Trainingsköpfe (gelbe Quadrate) - dies wurde gemacht, um das Trainieren eines so tiefen Netzwerks zu erleichtern. Jeder zusätzliche Trainingskopf hat einige FC-Schichten, die dieselbe Klasse auf der Grundlage niedriger Pegel vorhersagen, so dass das Signal schneller die niedrigeren Pegel erreicht (obwohl sich in den folgenden Arbeiten herausstellte, dass sie mehr helfen, weil sie eine zusätzliche Regularisierung darstellen).
    In der Veröffentlichung wird alles, was zur Unterstützung von Trainingsköpfen führt, weggeworfen. Diese Technik wird an anderer Stelle in der Literatur verwendet, aber seitdem haben wir gelernt, wie man Deepnets besser trainiert, so oft ist es bereits notwendig.


    Eine solche Architektur heißt neben GoogLeNet selbst Inception-v1.


    Inception-BN ist dasselbe Raster, das nur mit Batch-Normalisierung trainiert wurde (hier eine gute Erklärung an den Fingern).
    Und Inception-v2 und darüber hinaus sind bereits komplexere Architekturen, über die ich beim nächsten Mal sprechen werde, da sie sonst möglicherweise bald mit dem Einspeisen beginnen.


    "Le" in GoogLeNet ist eine Referenz zu LeNet 5, dem ersten von LeCune veröffentlichten Raster, bevor Deep Learning eine Sache war.


    Ich habe kürzlich auch etwas über Netzwerkkomprimierung gelesen. Sie nehmen das Netzwerk dorthin, schneiden Übergewicht ab, das Netzwerk nimmt alle hundert ab, die Genauigkeit wird fast nicht beeinträchtigt. Das heißt, Sie können es von Gigabyte bis Megabyte in den Speicher eines Mobiltelefons verschieben. Ich fühle mich noch zehn Jahre und jede Kamera wird anfangen, wirklich zu sehen.
    Übrigens zur Pager-Komprimierung, falls interessiert - http://arxiv.org/abs/1510.00149 .
    Ja. Dies sind Spiele eines etwas anderen Levels.
    Es kann auf der Ebene der Architektur und des Trainings optimiert werden, aber es kann auf einer niedrigen Ebene optimiert werden - bereits mit erlernten Gewichten arbeiten.
    In der Praxis werden höchstwahrscheinlich beide benötigt.

    Die Frage ist übrigens im Raum.
    Und kann daraus eine globale Schlussfolgerung gezogen werden?
    Warum funktioniert das alles? Oder zumindest - wie kann man ein Netzwerk basierend auf dieser Erfahrung am besten entwerfen?
    Tolle Fragen, dazu wird es im nächsten Teil der Geschichte viel Fleisch geben. Bleib dran!

    Jetzt auch beliebt: