Der Engpass bei der Anwendung von Deep Learning in der Praxis

9

Nach dem Lesen vieler Deep-Learning-Artikel besteht eine Art raues Gefühl darin, dass es viele Tricks gibt, das Netzwerk zu trainieren, um eine überdurchschnittliche Leistung zu erzielen. Aus Sicht der Branchenanwendungen ist es sehr schwierig, diese Art von Tricks zu entwickeln, mit Ausnahme der Elite-Forschungsgruppen in großen Technologieunternehmen, z. B. Google oder Facebook. Was ist dann der beste Weg, um Deep-Learning-Algorithmen in der Praxis anzuwenden? Alle Gedanken und Vorschläge werden sehr geschätzt.

user3269
quelle

Antworten:

9

Einige Details, die zur Verbesserung der Leistung verwendet werden, gelten als Tricks, und Sie wissen nicht immer, ob diese Tricks für Ihre Daten und Ihr Netzwerk die gleiche Verbesserung bewirken.

Einige Dinge, die Sie auf jeden Fall brauchen werden:

  • Daten , viel davon
  • Mit GPUs können Sie Experimente schneller durchführen und in kürzerer Zeit mehr Dinge ausprobieren.
  • Lernkurvenanalyse. Am Ende kommt es auf die Leistung des Testsatzes an. Wenn Sie jedoch sowohl die Zug- als auch die Testmetrik betrachten, können Sie Gründe für eine schlechte Leistung identifizieren. Starke Voreingenommenheit? Überanpassung von zu vielen versteckten Knoten?
  • Die Aktivierungsfunktion . Ich denke nicht, dass es ein Trick ist zu wissen, welche Art von Aktivierungsfunktion Sie benötigen. ReLU hat eine kritische Charakteristik, da sie nicht wie Sigmoide und Tanh gesättigt sind. Ein Neuron mit ReLU hat länger eine wahrscheinlichkeitsähnliche Ausgabe, aber Sie benötigen diese ohnehin nicht für Neuronen in Schichten mittlerer Ebene. Der Vorteil, den Sie erhalten, besteht darin, das Verschwinden oder Explodieren von Farbverläufen zu verringern und die Konvergenz zu beschleunigen.
  • Regularisierung . Könnte als Trick gelten, aber wenn Sie eine der gängigen Deep-Learning-Bibliotheken verwenden, können Sie Standardimplementierungen zur Regularisierung über Dropout erhalten.
  • Datenerweiterung. Grundsätzlich erweitern Sie Ihren Datensatz synthetisch, ohne die zusätzlichen Kosten für manuelle Anmerkungen. Der Schlüssel besteht darin, die Daten mit Transformationen zu erweitern, die tatsächlich Sinn machen. Damit das Netzwerk Varianten der Daten sehen kann, auf die es in der Testphase oder bei der Bereitstellung im Produkt stoßen kann. Für visuelle Daten ist das horizontale Umdrehen trivial und bringt viel Gewinn. Jitter hängt wahrscheinlich von der Art der Daten und deren Rauschen ab.
  • Das Eintauchen in die Erforschung von Hyperparametern kann frustrierend sein. Beginnen Sie mit kleinen Netzwerken und einfachen Schulungsverfahren. Kleinere Netzwerke sind schneller zu trainieren. Fügen Sie weitere Ebenen hinzu, wenn Sie Anzeichen einer Überanpassung sehen.
  • Gute Initialisierung . Die zufällige Initialisierung ist geeignet, um die Konvergenzfähigkeit des Netzwerks zu messen, führt jedoch nicht unbedingt zu einer optimalen Leistung. Gleichzeitig kann eine weitere Iteration dazu führen, dass das Netzwerk zu stark an die Trainingsdaten angepasst wird. Verwenden Sie nach Möglichkeit ein vorab geschultes Netzwerk, das bereits eine Darstellung gelernt hat, und passen Sie es an Ihren Datensatz an. Unbeaufsichtigtes Pre-Training ist ein weiterer Weg und kann es dem überwachten Trainingsverfahren ermöglichen, von einer weitaus vielversprechenderen Position im Gewichtsraum aus zu starten.
  • PrüfenTricks. Verstehe, was der Trick wirklich macht. Ein Artikel, der ein kleines Detail beschreibt, das zur Verbesserung der Leistung eines Netzwerks verwendet wurde, wird sich auf diesen neuen Aspekt konzentrieren. Das Papier könnte Teil einer Reihe von Projekten sein, an denen die Autoren gearbeitet haben. Der Kontext des Tricks ist möglicherweise nicht immer sofort klar, aber für die Autoren ist es kein Trick, sondern eine Technik, die ein Problem löst, das sie hatten. Manchmal kommt eine Technik heraus und wird als Trick behandelt, und später analysiert jemand ihre Auswirkungen und beschreibt ihre Funktion. Zum Beispiel, dass dieser Trick einer L2-Regularisierung entspricht, mit der mehr Menschen vertraut sind. Wir können entscheiden, ob wir diese neue Technik ausprobieren oder uns an die L2-Regularisierung halten, die wir bereits kennen. Viele dieser Tricks versuchen, Probleme beim Deep Learning zu lösen, wie das Risiko einer Überanpassung. kostspielige Berechnungen, Überparametrisierung und hochredundante Gewichte. Es lohnt sich, sich die Zeit zu nehmen, um zu verstehen, was diese Tricks wirklich bewirken. Wenn wir das Problem verstehen, das sie zu lösen versuchen, können wir die Anwendbarkeit verschiedener Tricks beurteilen und den auswählen, der mit den Einschränkungen, die wir möglicherweise haben, gut funktioniert (z. B. wenig Rechenleistung, kleiner Datensatz).
ypx
quelle
2

Hier ist ein interessantes Buch Neural Networks: Tricks of the Trade , eine aktualisierte Version des Buches von 2012. Viele Artikel von einigen Pionieren neuronaler Netze.

ypx hat viele praktische Probleme beim Training auf wunderbare Weise angesprochen, um auf die anderen von Ihnen angesprochenen Probleme einzugehen: Viele der Elite-Industrielabors veröffentlichen immer noch ihre Ergebnisse. Das Team von Microsoft Research hat beispielsweise gerade ImageNet 2015 gewonnen und einen technischen Bericht veröffentlicht, in dem das neue Deep-Net-Modul beschrieben wird: Deep Residual Learning für die Bilderkennung . Das Google-Team hat auch die Inception-Architektur Going Deeper with Convolutions veröffentlicht . Bis zu einem nicht trivialen Grad gibt es im maschinellen Lernen (vorerst) immer noch eine Kultur des Teilens der großen Innovationen. Möglicherweise, weil der Schlüssel der Zugriff auf die Daten ist. Google und Facebook haben einfach Zugriff auf Daten, die wir nicht haben. Schwer zu sagen, wie viel Kredit für rohe algorithmische Innovationen und wie viel für riesige Datenmengen verwendet wird.

Was wird in Zukunft passieren? Schwer zu sagen. Es ist ein Thema, das viele Leute angesprochen haben, wenn man bedenkt, wie wertvoll diese datengetriebenen Unternehmen geworden sind und wie wettbewerbsfähig der Markt ist. Aber im Moment denke ich, dass es ein ausgewogenes Verhältnis zwischen dem gibt, was industrielle Forschungslabors teilen und was nicht. Ich verstehe, dass sie ihre genaue Code-Implementierung nicht teilen. Sie teilen jedoch einige sehr neue Innovationen.

Finden Sie Forscher, die wichtige Ergebnisse veröffentlichen und lesen, lesen, lesen. Ich glaube an Yann LeCuns AMA auf Reddit, er erwähnte, dass er ein unersättlicher Leser ist. Ich glaube, das ist das Wichtigste. Versuchen Sie, soweit dies praktikabel ist, ihre Benchmarks neu zu erstellen oder ihre Methode auf einen Datensatz anzuwenden, der innerhalb Ihres Budgets liegt.

Ich denke, unabhängig davon, wo Sie sich befinden oder wo sich Ihre Station im Leben befindet, ist dies der beste Weg, um scharf zu bleiben und Ihre Fähigkeiten weiterzuentwickeln. Sei ein unersättlicher Leser und setze Dinge um und baue Intuition auf. Ich persönlich habe nicht die Ressourcen, um an ImageNet-Wettbewerben teilzunehmen, aber das Lesen aller Artikel der leistungsstärksten ImageNet-Gruppe hat mir enorm geholfen.

Indie AI
quelle