Training von Deep Nets auf einem normalen Laptop

7

Wäre es für einen Amateur möglich, der praktische Erfahrungen beim Entwerfen und Trainieren tiefer neuronaler Netze sammeln möchte, einen gewöhnlichen Laptop für diesen Zweck zu verwenden (keine GPU), oder ist es hoffnungslos, gute Ergebnisse zu erzielen? angemessene Zeit ohne einen leistungsstarken Computer / Cluster / GPU?

Genauer gesagt handelt es sich bei der CPU des Laptops um einen Intel Core i7 5500U der fünften Generation mit 8 GB RAM.

Da ich nicht angegeben habe, an welchen Problemen ich arbeiten möchte, werde ich meine Fragen anders formulieren: Welche tiefen Architekturen würden Sie empfehlen, die ich mit meiner Hardware implementieren möchte, damit das folgende Ziel erreicht wird : Erwerb von Intuition und Wissen darüber, wie und wann Techniken anzuwenden sind, die in den letzten 10 Jahren eingeführt wurden und für den Aufstand tiefer Netze von wesentlicher Bedeutung waren (z. B. Verständnis für Initialisierungen, Ausfall, rmsprop, um nur einige zu nennen).

Ich habe über diese Techniken gelesen, aber ohne sie selbst auszuprobieren, würde ich natürlich nicht genau wissen, wie und wann ich sie effektiv implementieren soll. Andererseits befürchte ich, dass wenn ich versuche, einen PC zu verwenden, der nicht stark genug ist, meine eigene Lernrate so langsam ist, dass es sinnlos wäre zu sagen, dass ich ein besseres Verständnis erlangt habe. Und wenn ich versuche, diese Techniken auf flachen Netzen anzuwenden, würde ich vielleicht nicht die richtige Intuition aufbauen.

Ich stelle mir den Prozess meines Lernens wie folgt vor: Ich implementiere ein neuronales Netz, lasse es bis zu mehreren Stunden üben, sehe, was ich habe, und wiederhole den Prozess. Wenn ich dies ein- oder zweimal am Tag mache, würde ich mich freuen, wenn ich nach beispielsweise 6 Monaten praktische Kenntnisse erworben hätte, die mit denen eines Fachmanns vergleichbar sind.

Lior
quelle
2
Welches Werkzeug? Welcher Laptop? welches Problem? Welche Datengröße? Was ist vernünftig? Dies ist viel zu wenig spezifiziert
Sean Owen
Ich denke, die Bearbeitung hat die Frage verbessert. Eine Sache: Es gibt keinen Standard "Fachmann auf dem Gebiet", der Deep-Learning-Techniken verwendet. Was ein Fachmann wissen sollte, ist daher nicht genau definiert.
Neil Slater
1
Ich weiß, dass die Frage nicht in dem Sinne gut definiert ist, dass sie eine bestimmte richtige Antwort hat, aber ich denke, sie ist gut genug formuliert, damit erfahrene Leute ihre Einsichten liefern und die Grenzen dessen "skizzieren" können, was ich erwarten kann der oben erwähnte Laptop
Lior
Ich denke, Sie könnten dieses Tutorial (oder etwas anderes) ausprobieren und sehen, wie lange es auf Ihrem Computer dauert: tensorflow.org/versions/r0.8/tutorials/mnist/pros/index.html . Auf jeden Fall sollte es möglich sein, tiefe Netze mit interessanten Datensätzen auf normalen Computern zu trainieren. NN sind nicht nur für große verteilte Cluster geeignet.
Robin

Antworten:

9

Ja, ein Laptop eignet sich gut, um sich mit einigen Deep-Learning-Projekten vertraut zu machen:

Mit einem Laptop können Sie ein kleines Problem mit tiefem Lernen auswählen und sich einen Überblick verschaffen. Probieren Sie es aus.

Das Theano- Projekt enthält eine Reihe von Tutorials zur Ziffernerkennung, mit denen ich auf einem Laptop gespielt und diese modifiziert habe.

Tensorflow bietet auch eine Reihe von Tutorials .

Ich ließ einige der längeren Läufe über Nacht laufen, aber nichts war unlösbar.

Sie können auch AWS oder einen der anderen Cloud-Services in Anspruch nehmen . Für 20 bis 30 Dollar können Sie einige der größeren Berechnungen in der Cloud auf einer Art elastischem Rechenknoten durchführen . Der sekundäre Vorteil ist, dass Sie auch AWS oder andere Cloud-Dienste als Fähigkeiten in Ihrem Lebenslauf auflisten können :-)

Hoffe das hilft!

AN6U5
quelle
1
Ich möchte nur hinzufügen, dass ich dasselbe getan habe, dh Theano auf einem Laptop verwendet habe, um zu überprüfen, ob eine bestimmte Architektur den Protokollverlust konsistent verringern kann. Ich würde dann Zeit bei einem GPU-Anbieter in der Cloud mieten (z. B. AWS) und sie zehn Stunden lang laufen lassen, bis der Ellbogen des Validierungssatzes auftaucht.
Shark8me
3

[...] ist es hoffnungslos, ohne einen leistungsstarken Computer / Cluster / GPU in angemessener Zeit gute Ergebnisse zu erzielen?

Es ist nicht hoffnungslos und Sie können ohne Zweifel viele relevante Erfahrungen mit Deep Learning mit der von Ihnen erwähnten Computerspezifikation sammeln. Dies hängt von Ihrer neuronalen Netzwerkarchitektur (Anzahl der Schichten und Neuronen), der Größe des Datensatzes (Anzahl der Eingaben), der Art der Daten (inhärente Muster) und der Implementierung ab. Und obwohl Sie sich möglicherweise auf diese Aspekte beschränken müssen, hindert dies Sie nicht daran, Intuition und Wissen zu erwerben, auf das Sie sich beziehen. Sie werden leicht Probleme mit Überanpassung, Einfluss der Regularisierung, Auswirkungen des Vortrainings, Auswirkungen verschiedener Neuronentypen und Architekturen haben, um nur einige zu nennen.

Ich werde Ihnen ein konkreteres Beispiel geben. Ich habe in Julia einige Deep-Learning-Algorithmen (alle CPU-basiert) implementiert und sie auf einem MacBook Air ausgeführt (ähnlich Ihrer Spezifikation). Der Code wurde nicht besonders optimiert, da Neuronen und Schichten eher durch tatsächliche Datenstrukturen als durch eine einzelne Riesenmatrix dargestellt wurden. So waren weitere Leistungsverbesserungen möglich.

Für ein vollständig verbundenes Netzwerk mit 56 x 300 x 300 x 300 x 1 (56 Eingänge und ca. 200.000 Verbindungen) und 250 Trainingsbeispielen konnte ich innerhalb eines Tages 5.000 Back-Propagation-Pässe erhalten. Oft war das genug, um die Daten zu überpassen oder perfekt zum Trainingssatz zu passen (dies hängt jedoch von Ihrem Datensatz und anderen oben genannten Faktoren ab). Wenn die Daten starke Muster und weniger als 10.000 Beispiele aufweisen, benötigen Sie häufig nicht so viele Iterationen. Es ist nicht ungewöhnlich, dass einige Hundert Iterationen vor dem Training und zur Verfeinerung zu guten Ergebnissen führen. Ja, Ihr Laptop ist gut genug und Sie können aussagekräftige Experimente durchführen, die mehrere Stunden dauern.

[...] Welche tiefen Architekturen würden Sie mir empfehlen, mit meiner Hardware zu implementieren, sodass das folgende Ziel erreicht wird: Erwerb von Intuition und Wissen darüber, wie und wann Techniken anzuwenden sind, die in den letzten 10 Jahren eingeführt wurden und von wesentlicher Bedeutung waren zum Aufstand der tiefen Netze.

Ich würde vorschlagen, kleinere Datensätze mit starken Mustern auszuwählen. Und ich würde empfehlen, sich mit Pre-Training-Techniken wie Auto-Encodern zu befassen, da diese häufig weniger Iterationen erfordern, um bessere Ergebnisse zu erzielen. Beginnen Sie mit der Rückausbreitung und bauen Sie von dort aus, probieren Sie verschiedene Architekturen, Neuronentypen aus, verwenden Sie Regularisierung, Auto-Encoder, Dropout, ...

Stellen Sie außerdem sicher, dass Sie eine performante Sprache oder Bibliothek für Ihre Experimente auswählen.

Krychu
quelle