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.
quelle
Antworten:
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.
quelle
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.
quelle