Ich benutze seit einiger Zeit neuronale Netze. Eine Sache, mit der ich ständig zu kämpfen habe, ist die Auswahl eines Optimierers zum Trainieren des Netzwerks (mit Backprop). Normalerweise beginne ich einfach mit einem (zB Standard-SGD) und versuche es dann ziemlich zufällig mit anderen. Ich habe mich gefragt, ob es einen besseren (und weniger zufälligen) Ansatz gibt, um einen guten Optimierer zu finden, z. B. aus dieser Liste:
- SGD (mit oder ohne Impuls)
- AdaDelta
- AdaGrad
- RMSProp
- Adam
Insbesondere bin ich daran interessiert, ob es eine theoretische Rechtfertigung gibt, eine andere auszuwählen, wenn die Trainingsdaten eine Eigenschaft haben, z. B. dass sie spärlich sind. Ich würde mir auch vorstellen, dass einige Optimierer in bestimmten Bereichen besser funktionieren als andere, z. B. beim Trainieren von Faltungsnetzwerken im Vergleich zu Feed-Forward-Netzwerken oder Klassifizierung im Vergleich zu Regression.
Wenn einer von Ihnen eine Strategie und / oder ein Gespür dafür entwickelt hat, wie Sie Optimierer auswählen, wäre ich sehr daran interessiert, sie zu hören. Darüber hinaus wäre es sogar noch besser, wenn einige Arbeiten theoretische Rechtfertigungen für das Überlagern liefern.
quelle