Was ist der Unterschied zwischen erweiterter Faltung und Entfaltung?

11

Diese beiden Faltungsoperationen sind derzeit im Deep Learning sehr verbreitet.

Ich habe in diesem Artikel über die erweiterte Faltungsschicht gelesen: WAVENET: EIN GENERATIVES MODELL FÜR ROHES AUDIO

und Entfaltung ist in diesem Artikel: Vollständig Faltungsnetzwerke für die semantische Segmentierung

Beide scheinen das Bild zu verbessern, aber was ist der Unterschied?

Shamane Siriwardhana
quelle

Antworten:

9

In einer Art mechanistischer / bildlicher / bildbasierter Begriffe:

Dilatation: ### SIEHE KOMMENTARE, DIE AN DER KORREKTUR DIESES ABSCHNITTS ARBEITEN

Die Dilatation ist weitgehend die gleiche wie die gewöhnliche Faltung (offen gesagt auch die Entfaltung), mit der Ausnahme, dass sie Lücken in ihre Kernel einführt, dh während ein Standardkernel normalerweise über zusammenhängende Abschnitte der Eingabe gleitet, kann sein erweitertes Gegenstück Zum Beispiel "umkreisen" Sie einen größeren Teil des Bildes - während Sie immer noch nur so viele Gewichte / Eingaben haben wie die Standardform.

(Beachten Sie gut, während die Dilatation Nullen in den Kernel einfügt, um die Gesichtsabmessungen / die Auflösung der Ausgabe schneller zu verringern , injiziert die transponierte Faltung Nullen in die Eingabe , um die Auflösung der Ausgabe zu erhöhen .)

Um dies konkreter zu machen, nehmen wir ein sehr einfaches Beispiel:
Angenommen, Sie haben ein 9x9-Bild, x ohne Auffüllung. Wenn Sie einen Standard-3x3-Kernel mit Schritt 2 verwenden, ist die erste betroffene Teilmenge der Eingabe x [0: 2, 0: 2], und alle neun Punkte innerhalb dieser Grenzen werden vom Kernel berücksichtigt. Sie würden dann über x [0: 2, 2: 4] und so weiter streichen .

Es ist klar, dass die Ausgabe kleinere Gesichtsabmessungen hat, insbesondere 4x4. Somit haben die Neuronen der nächsten Schicht Empfangsfelder in der exakten Größe dieser Kernel-Durchgänge. Wenn Sie jedoch Neuronen mit globalerem räumlichem Wissen benötigen oder wünschen (z. B. wenn ein wichtiges Merkmal nur in größeren Regionen definierbar ist), müssen Sie diese Schicht ein zweites Mal falten, um eine dritte Schicht zu erstellen, in der sich das effektive Empfangsfeld befindet einige Vereinigung der vorherigen Schichten rf.

Wenn Sie jedoch keine weiteren Ebenen hinzufügen möchten und / oder der Meinung sind, dass die weitergegebenen Informationen zu redundant sind (dh Ihre 3x3-Empfangsfelder in der zweiten Ebene enthalten nur eine "2x2" Menge an unterschiedlichen Informationen), können Sie diese verwenden ein erweiterter Filter. Lassen Sie uns der Klarheit halber extrem sein und sagen, wir werden einen 9x9 3-Dialed-Filter verwenden. Jetzt "umkreist" unser Filter den gesamten Eingang, sodass wir ihn überhaupt nicht verschieben müssen. Wir werden jedoch immer noch nur 3x3 = 9 Datenpunkte von der Eingabe x nehmen , typischerweise:

x [0,0] U x [0,4] U x [0,8] U x [4,0] U x [4,4] U x [4,8] U x [8,0] U x [8,4] U x [8,8]

Jetzt hat das Neuron in unserer nächsten Schicht (wir haben nur eine) Daten, die einen viel größeren Teil unseres Bildes "darstellen", und wenn die Daten des Bildes für benachbarte Daten hochredundant sind, haben wir möglicherweise die Daten erhalten gleiche Informationen und lernte eine äquivalente Transformation, aber mit weniger Schichten und weniger Parametern. Ich denke, innerhalb der Grenzen dieser Beschreibung ist es klar, dass wir, obwohl es als Resampling definiert werden kann, hier für jeden Kernel ein Downsampling durchführen .


Bruchteil oder transponiert oder "Entfaltung":

Diese Art ist im Herzen immer noch eine Faltung. Der Unterschied besteht wiederum darin, dass wir von einem kleineren Eingangsvolumen zu einem größeren Ausgangsvolumen wechseln werden. OP stellte keine Fragen zu Upsampling, daher spare ich diesmal ein wenig an Breite und gehe direkt zum entsprechenden Beispiel.

Nehmen wir in unserem früheren 9x9-Fall an, wir möchten jetzt ein Upsampling auf 11x11 durchführen. In diesem Fall haben wir zwei gängige Optionen: Wir können einen 3x3-Kernel und mit Schritt 1 nehmen und ihn mit 2-Padding über unseren 3x3-Eingang streichen, sodass unser erster Durchgang über der Region erfolgt [linkes Pad-2: 1, über Pad-2: 1] dann [linkes Pad-1: 2, über Pad-2: 1] und so weiter und so fort.

Alternativ können wir zusätzlich eine Auffüllung zwischen die Eingabedaten einfügen und den Kernel ohne so viel Auffüllung darüber streichen. Natürlich werden wir uns manchmal mehr als einmal mit genau denselben Eingabepunkten für einen einzelnen Kernel befassen. Hier scheint der Begriff "fraktioniert" vernünftiger zu sein. Ich denke, die folgende Animation (von hier entlehnt und (glaube ich) basierend auf dieser Arbeit) wird dazu beitragen, die Dinge zu klären, obwohl sie unterschiedliche Dimensionen haben. Die Eingabe ist blau, die weißen injizierten Nullen und Auffüllungen und die Ausgabe grün:

transponierte Konv., Eingang ist blau, Ausgang grün

Natürlich beschäftigen wir uns mit allen Eingabedaten im Gegensatz zur Dilatation, bei der einige Regionen möglicherweise vollständig ignoriert werden oder nicht. Und da wir eindeutig mehr Daten haben als wir begonnen haben, "Upsampling".

Ich ermutige Sie, das ausgezeichnete Dokument, mit dem ich verlinkt habe, zu lesen, um eine fundiertere, abstraktere Definition und Erklärung der Transponierungsfaltung zu erhalten und um zu erfahren, warum die geteilten Beispiele illustrative, aber weitgehend unangemessene Formen für die tatsächliche Berechnung der dargestellten Transformation sind.

Doug Brummell
quelle
1
Bitte denken Sie daran, ich bin kein Experte - nur jemand, der diese Konzepte kürzlich selbst unterscheiden musste. Bitte lassen Sie mich wissen, wenn es direkte Fehler oder übermäßige Vereinfachungen gibt, die die allgemeine Richtigkeit der Antworten untergraben könnten. Vielen Dank!
Doug Brummell
Doug Brummel Wow schön erklären. Ich hatte die gleiche Idee. Ich würde gerne Ihre Meinung zur Anwendung der erweiterten Faltung erfahren. Wie sollen wir damit beginnen, diese in CNN anzuwenden? Sollten wir zuerst eine normale Faltung durchführen und dann eine erweiterte Faltung anwenden? Eine andere Sache, bei der die erweiterte Faltung Informationen übersehen kann, wenn wir kein Pad auf Null setzen. Ich denke also, wir sollten nach wenigen normalen Convnets-Schichten eine erweiterte Faltung anwenden?
Shamane Siriwardhana
Ich glaube, die Standardidee besteht darin, die Dilatation in Zukunft zu erhöhen, beginnend mit undilierten, regulären Filtern für l = 1, hin zu 2- und dann 3-dilatierten Filtern und so weiter, während Sie durch die Tiefe Ihres Netzwerks gehen. Auf diese Weise können Sie sicherstellen, dass alle Daten in einer Schicht in die nächste (einschließlich, was wichtig ist, in das Netzwerk selbst) übertragen werden, während Sie mit jeder Schicht ein exponentiell schnelleres Downsampling durchführen, jedoch ohne Erhöhungsparameter. Das Ziel sind breite Empfangsfelder ohne Einbußen bei der Dateneinbeziehung. Und ja, die Aufmerksamkeit auf die Polsterung sollte schon früh wichtig sein.
Doug Brummell
Siehe [dieses Papier] ( arxiv.org/pdf/1511.07122.pdf ), es wurde oben erwähnt und bietet ein gutes Stück über das, was ich zu diesem Thema gelesen habe.
Doug Brummell
Eine andere Sache, dieses Papier besagt, dass es in einem so zunehmenden Dilatationsschema keinen Auflösungsverlust gibt ... Ich denke, ich bin nur vorsichtig mit anderen Verlusten, die ich unter "Auflösung" abdecken könnte. Wenn Sie eine Reihe von Conv-Schichten durch weniger erweiterte ersetzen und die Genauigkeit beibehalten können, sollten Sie dies natürlich unbedingt tun. Aber für mich (und ich muss zu den Büchern darüber zurückkehren) denke ich über die möglichen Verluste in dem Fall nach, in dem Sie von Anfang an mit Dilatation arbeiten ...
Doug Brummell
5

Obwohl beide das Gleiche zu tun scheinen, nämlich eine Ebene hochzusampeln, gibt es einen klaren Spielraum zwischen ihnen.

Zuerst sprechen wir über die erweiterte Faltung

Ich habe diesen schönen Blog zum obigen Thema gefunden. So wie ich es verstanden habe, ist dies eher eine umfassende Untersuchung der Eingabedatenpunkte . Oder das Empfangsfeld der Faltungsoperation erhöhen.

Hier ist ein erweitertes Faltungsdiagramm aus dem Papier .

Bild 3

Dies ist eher eine normale Faltung, hilft jedoch dabei, immer mehr globalen Kontext aus Eingabepixeln zu erfassen, ohne die Größe der Parameter zu erhöhen. Dies kann auch dazu beitragen, die räumliche Größe der Ausgabe zu erhöhen. Die Hauptsache hier ist jedoch, dass dies die Größe des Empfangsfeldes exponentiell mit der Anzahl der Schichten erhöht. Dies ist im Bereich der Signalverarbeitung sehr häufig.

Dieser Blog erklärt wirklich, was in der erweiterten Faltung neu ist und wie dies mit der normalen Faltung verglichen wird.

Blog: Dilated Convolutions und Kronecker Factored Convolutions

Jetzt werde ich erklären, was Entfaltung ist

Dies nennt man transponierte Faltung. Dies entspricht der Funktion, die wir für die Faltung bei der Rückausbreitung verwendet haben.

In Backprop verteilen wir einfach Gradienten von einem Neuron in der Ausgabe-Feature-Map auf alle Elemente in den Empfangsfeldern. Dann addieren wir auch Gradienten, bei denen sie mit denselben Empfangselementen zusammenfallen

Hier ist eine gute Ressource mit Bildern .

Die Grundidee ist also, dass die Entfaltung im Ausgaberaum funktioniert. Keine Eingabepixel. Es wird versucht, breitere räumliche Dimensionen in der Ausgabekarte zu erstellen. Dies wird in vollständig gefalteten neuronalen Netzen für die semantische Segmentierung verwendet .

Mehr von Deconvolution ist also eine lernbare Up-Sampling-Schicht.

Es wird versucht zu lernen, wie man ein Sample erstellt, während es mit dem endgültigen Verlust kombiniert wird

Dies ist die beste Erklärung, die ich für die Entfaltung gefunden habe. Vorlesung 13 in cs231 ab 21.21 Uhr .

Shamane Siriwardhana
quelle
Würde es Ihnen etwas ausmachen, näher darauf einzugehen, wie die erweiterte Faltung dazu beiträgt, die räumliche Größe der Ausgabe zu erhöhen? Es scheint noch mehr Polsterung als herkömmliche Windungen zu erfordern, was hinsichtlich der Ausgabegröße schlechter ist.
Wlnirvana