Deep Learning für Nicht-Image-Nicht-NLP-Aufgaben?

12

Bisher gibt es viele interessante Anwendungen für tiefes Lernen in der Bildverarbeitung oder der Verarbeitung natürlicher Sprache.

Wie ist es in anderen traditionelleren Bereichen? Zum Beispiel habe ich traditionelle soziodemografische Variablen sowie möglicherweise viele Labormessungen und möchte eine bestimmte Krankheit vorhersagen. Wäre dies eine Deep-Learning-Anwendung, wenn ich viele Beobachtungen habe? Wie würde ich hier ein Netzwerk aufbauen, ich denke, alle ausgefallenen Schichten (Faltung usw.) sind nicht wirklich notwendig?! Einfach tief machen?

In meinem spezifischen Datensatz habe ich einige gängige Algorithmen für maschinelles Lernen wie zufällige Gesamtstrukturen, GBM usw. mit gemischten Ergebnissen hinsichtlich der Genauigkeit ausprobiert. Ich habe nur begrenzte Erfahrungen mit der Bilderkennung.

spore234
quelle
1
Je nachdem, wie viel "viele Beobachtungen" sind, ist es möglicherweise besser, einen anderen Ansatz zu betrachten, z. B. XGBoost. Können Sie klären, ob es Ihr Ziel ist, gezielt Deep-Learning-Ansätze auszuprobieren oder die bestmögliche Genauigkeit zu erzielen?
Neil Slater
@NeilSlater mein Ziel wäre es, eine höhere Genauigkeit als etablierte Methoden wie xgboost zu erreichen, wenn dies in einem solchen Fall möglich ist
spore234
1
Es ist möglich, aber meiner Erfahrung nach nicht wahrscheinlich, es sei denn, Sie haben wirklich viele Daten.
Neil Slater
Matlab bietet Dokumentation zu "Deep Learning Tipps und Tricks". Ich hatte die gleiche Frage und die Seite bot eine sehr nützliche Anleitung mit guten Beispielen. Beispielsweise benötigen Sie möglicherweise eine Sequenz / Zeitreihen-Klassifizierung / Regression mithilfe von Deep Learning.
Sami Navesi

Antworten:

10

Ja, Sie können Deep-Learning-Techniken verwenden, um Nicht-Bilddaten zu verarbeiten. Andere Modellklassen sind jedoch immer noch sehr wettbewerbsfähig mit neuronalen Netzen außerhalb der Signalverarbeitung und verwandter Aufgaben.

Um Deep-Learning-Ansätze für Nicht-Signal- / Nicht-Sequenzdaten zu verwenden, verwenden Sie normalerweise ein einfaches Feed-Forward-Mehrschichtnetzwerk. Keine Notwendigkeit für Faltungsschichten oder Pooling-Schichten. Die beste Architektur muss mit einer Kreuzvalidierung untersucht werden und kann zeitaufwändig sein, da tiefe NNs viel Rechenaufwand für das Training erfordern.

Nach meiner Erfahrung habe ich versucht, tiefe (-ish, typischerweise ~ 5 Schichten) neuronale Netze in Kaggle-Wettbewerben zu verwenden:

  • Dropout ist immer noch sehr effektiv für die Regularisierung und Verbesserung der Genauigkeit

  • Eingangsnormalisierung - normalerweise 0, Standardabweichung 1, ist wichtig

  • Versteckte Ebenenaktivierungsfunktionen können einen Unterschied machen. Obwohl ReLU einige Probleme mit verschwindenden Verläufen reduziert, ist es meiner Erfahrung nach mit Nicht-Signaldaten weniger robust und Sie möchten eine andere Form. Wenn Sie nur wenige Schichten haben, funktionieren Sigmoid oder Tanh immer noch in Ordnung. Andernfalls untersuchen Sie undichte ReLU-, PReLU-, ELU- und andere ReLU-Varianten, die versuchen, ihre Probleme mit "toten" Neuronen zu beheben.

  • Verwenden Sie Optimierer für tiefes Lernen wie Adam, Adagrad oder RMSProp

  • Verwenden Sie einen Ansatz zur Gewichtsinitialisierung, der mit Deep Learning funktioniert, z. B. Glorot.

  • Erwägen Sie die Verwendung von Stapelnormalisierungsebenen. Ich habe nicht viel Erfahrung damit, aber ich habe gesehen, dass andere Leute mit diesem Ansatz gut umgehen.

Trotz alledem kann XGBoost routinemäßig und einfach tiefe NNs mit minimalem Abstimmungs- und Trainingsaufwand im Vergleich schlagen (abhängig natürlich vom Problem und den Daten, die Sie haben). Wenn Genauigkeit für Sie jedoch alles ist, ist es möglich - obwohl nicht garantiert -, dass ein Ensemble aus tiefen NNs und anderen Modellen wie XGBoost eine bessere Leistung erzielt als beide einzeln.

Neil Slater
quelle
1

Ein Netzwerk kann für Klassifizierungszwecke geeignet sein. Dazu müssen Sie in der Lage sein, einen Trainingssatz und einen Testsatz Ihrer Daten zu definieren, die die Daten darstellen, die das Netzwerk in der Produktion klassifizieren soll. Dies bestimmt, ob Sie ein schlechtes, ein vernünftiges oder ein gut funktionierendes Netzwerk erhalten können.

Ich betrachte Begriffe als "tiefes Lernen" als irreführend: Ein Netzwerk lernt nicht, man kann es nur trainieren.

Angenommen, Sie können ein Trainings- und Test-Set erstellen, können Sie auf hoher Ebene a verwenden

  • Mehrschichtig: Wenn Ihre Daten keine Reihenfolge haben und Strukturen eine feste Position haben.

  • Rekursive Netzwerke: Wenn die Reihenfolge der Daten für die Klassifizierung von Bedeutung ist

  • Faltung: Wenn Ihre Daten Strukturen wie in Bildern haben, aber keine feste Position vorhanden ist.

Ein gutes Setup, wie die Anzahl der Ebenen, erfordert Versuch und Irrtum. Es ist eine Art schwarze Magie.

Johan van Breda
quelle