Insbesondere im Zusammenhang mit Kaggle-Wettbewerben habe ich festgestellt, dass es bei der Leistung des Modells ausschließlich um die Auswahl / Entwicklung von Funktionen geht. Ich kann zwar vollständig verstehen, warum dies bei den konventionelleren / altmodischen ML-Algorithmen der Fall ist, sehe aber nicht, warum dies bei Verwendung tiefer neuronaler Netze der Fall wäre.
Zitieren des Deep Learning-Buches:
Deep Learning löst dieses zentrale Problem beim Lernen von Repräsentationen, indem Repräsentationen eingeführt werden, die in anderen, einfacheren Repräsentationen ausgedrückt werden. Deep Learning ermöglicht es dem Computer, komplexe Konzepte aus einfacheren Konzepten zu erstellen.
Daher dachte ich immer, wenn "Informationen in den Daten enthalten sind", würde ein ausreichend tiefes, gut parametrisiertes neuronales Netzwerk bei ausreichender Trainingszeit die richtigen Merkmale aufnehmen.
Antworten:
Was ist, wenn das "ausreichend tiefe" Netzwerk unlösbar groß ist, was entweder das Modelltraining zu teuer macht (AWS-Gebühren summieren sich!) Oder weil Sie das Netzwerk in einer ressourcenbeschränkten Umgebung bereitstellen müssen?
Wie können Sie a priori wissen, dass das Netzwerk gut parametrisiert ist? Es kann viel Experimentieren erfordern, um ein Netzwerk zu finden, das gut funktioniert.
Was ist, wenn die Daten, mit denen Sie arbeiten, nicht für Standardanalysemethoden "geeignet" sind, z. B. eine Binärzeichenfolge mit Tausenden oder Millionen von Bits, bei der jede Sequenz eine andere Länge hat?
Was ist, wenn Sie an Daten auf Benutzerebene interessiert sind, aber gezwungen sind, mit einer Datenbank zu arbeiten, die nur Daten auf Transaktionsebene sammelt?
Wir möchten in einer Welt leben, in der die Datenanalyse "schlüsselfertig" ist, aber solche Lösungen gibt es normalerweise nur in besonderen Fällen. Es wurde viel Arbeit in die Entwicklung tiefer CNNs für die Bildklassifizierung gesteckt - frühere Arbeiten hatten einen Schritt, bei dem jedes Bild in einen Vektor fester Länge umgewandelt wurde.
Mit Feature Engineering kann der Anwender das Wissen über das Problem direkt in einen Vektor fester Länge umwandeln, der für Feed-Forward-Netzwerke geeignet ist. Die Merkmalsauswahl kann das Problem lösen, so viele irrelevante Merkmale einzubeziehen, dass ein Signal verloren geht, und die Anzahl der Parameter für das Modell drastisch reduzieren.
quelle
Die Schlüsselwörter hier sind Prioritäten und Skalierung . Stellen Sie sich als einfaches Beispiel vor, Sie versuchen, das Alter einer Person anhand eines Fotos vorherzusagen. Mit einem Datensatz aus Bildern und Alter können Sie ein Deep-Learning-Modell trainieren, um Vorhersagen zu treffen. Dies ist objektiv wirklich ineffizient, da 90% des Bildes nutzlos sind und nur die Region mit der Person tatsächlich nützlich ist. Insbesondere das Gesicht der Person, ihr Körper und vielleicht ihre Kleidung.
Auf der anderen Seite können Sie stattdessen ein vorab geschultes Objekterkennungsnetzwerk verwenden, um zuerst Begrenzungsrahmen für die Person zu extrahieren, das Bild zuzuschneiden und es dann durch das Netzwerk zu leiten. Dieser Prozess verbessert die Genauigkeit Ihres Modells aus mehreren Gründen erheblich:
1) Alle Netzwerkressourcen (dh Gewichte) können sich auf die eigentliche Aufgabe der Altersvorhersage konzentrieren, anstatt zuerst die Person finden zu müssen. Dies ist besonders wichtig, da das Gesicht der Person nützliche Funktionen enthält. Andernfalls können die feineren Funktionen, die Sie benötigen, in den ersten Ebenen verloren gehen. Theoretisch könnte ein ausreichend großes Netzwerk dies lösen, aber es wäre absolut ineffizient. Das zugeschnittene Bild ist auch wesentlich regelmäßiger als das Originalbild. Während das Originalbild eine Menge Rauschen aufweist, sind die Diskrepanzen im zugeschnittenen Bild möglicherweise viel stärker mit dem Objektiv korreliert.
2) Das zugeschnittene Bild kann normalisiert werden, um den gleichen Maßstab zu haben . Dies hilft dem zweiten Netzwerk bei der Lösung von Skalierungsproblemen, da im Originalbild Personen in der Nähe oder in der Ferne auftreten können. Durch vorheriges Normalisieren der Skalierung wird sichergestellt, dass das zugeschnittene Bild garantiert eine Person enthält, die das vollständig zugeschnittene Bild ausfüllt (obwohl es pixelig ist, wenn es weit entfernt ist). Um zu sehen, wie dies zur Skalierung beitragen kann, muss ein zugeschnittener Körper, der halb so breit und hoch wie das Originalbild ist, 4x weniger Pixel verarbeiten, und daher würde dasselbe Netzwerk, das auf dieses Bild angewendet wird, 4x das Empfangsfeld des Originalnetzwerks auf jeder Ebene haben.
Zum Beispiel war im Kaggle-Lungenwettbewerb ein häufiges Thema in den Top-Lösungen eine Art Vorverarbeitung von Lungenbildern , die sie so weit wie möglich beschnitten und die Komponenten jeder Lunge isolierten. Dies ist besonders wichtig bei 3D-Bildern, da der Effekt kubisch ist: Wenn Sie 20% jeder Dimension entfernen, werden fast die Hälfte der Pixel entfernt!
quelle
Meine Intuition über dieses Phänomen hängt mit der Komplexität des zu lernenden Modells zusammen. Ein tiefes neuronales Netzwerk kann zwar theoretisch jede Funktion approximieren , aber die Dimension des Parameterraums kann sehr groß sein, wie in Millionenhöhe. Es ist also sehr schwierig , ein gutes neuronales Netzwerk zu finden. Ich denke gerne, dass Feature-Engineering dem Algorithmus einen Vorsprung verschafft und ihm einige zusätzliche Informationen zur Datendarstellung liefert, die in gewissem Sinne gut genug sind. Natürlich ist dies keine formale Erklärung, diese Frage könnte mit wissenschaftlicher Genauigkeit schwer zu beantworten sein.
quelle