Die weight_decay
Meta-Parameter regeln den Regularisierungsterm des neuronalen Netzes.
Während des Trainings wird dem Netzwerkverlust eine Regularisierungsbedingung hinzugefügt, um den Backprop-Gradienten zu berechnen. Der Wert weight_decay
bestimmt, wie dominant dieser Regularisierungsausdruck in der Gradientenberechnung sein wird.
Als Faustregel gilt: Je mehr Trainingsbeispiele Sie haben, desto schwächer sollte dieser Begriff sein. Je mehr Parameter Sie haben (d. H. Tieferes Netz, größere Filter, größere InnerProduct-Schichten usw.), desto höher sollte dieser Ausdruck sein.
Caffe können Sie auch zwischen L2
Regularisierung (Standard) und L1
Regularisierung wählen, durch
regularization_type: "L1"
jedoch festlegen, da in den meisten Fällen Gewichte sind kleine Zahlen (dh -1<w<1
), die L2
Norm des Gewichte ist deutlich kleiner als ihre L1
Norm. Wenn Sie also regularization_type: "L1"
verwenden, müssen Sie möglicherweise weight_decay
auf einen deutlich kleineren Wert einstellen.
Während sich die Lernrate während des Trainings ändert (und sich normalerweise ändert), ist das Regularisierungsgewicht durchgehend festgelegt.
Vielleicht könnten Sie die Gründe für Ihre Faustregel erklären? Hast du eine Quelle dafür? – Janosch
@Janosch Normalerweise muss man die Regularisierung verwenden, wenn ein numerisches Problem mehr Parameter als Einschränkungen hat. Beim Lernen stellen Trainingsbeispiele "Einschränkungen" dar. Wenn Sie also (viel) mehr Trainingsbeispiele als freie Parameter haben, müssen Sie sich weniger um die Überanpassung kümmern, und Sie können den Regularisierungszeitraum reduzieren. Wenn Sie jedoch nur sehr wenige Trainingsbeispiele haben (verglichen mit der Anzahl der Parameter), ist Ihr Modell anfällig für Überanpassungen und Sie brauchen einen starken Regularisierungs-Term, um dies zu verhindern – Shai
Müssen Sie 'param {lr_mult: 1 decea_mult: 1 setzen } 'in der' Faltung' Schicht oder ist der Regularisierungstyp global? @Shai – thigi