Ultima actualizare pe 25 august 2020

Constrângerile de greutate oferă o abordare pentru a reduce supraadaptarea unui model de rețea neuronală de învățare profundă pe datele de antrenament și pentru a îmbunătăți performanța modelului pe date noi, cum ar fi setul de testare a rezistenței.

Există mai multe tipuri de constrângeri de greutate, cum ar fi normele vectoriale maxime și unitare, iar unele necesită un hiperparametru care trebuie configurat.

În acest tutorial, veți descoperi API-ul Keras pentru adăugarea de constrângeri de greutate la modelele de rețea neuronală de învățare profundă pentru a reduce supraadaptarea.

După finalizarea acestui tutorial, veți ști:

  • Cum se creează constrângeri de normă vectorială folosind API-ul Keras.
  • Cum se adaugă constrângeri de greutate la straturile MLP, CNN și RNN folosind API-ul Keras.
  • Cum se reduce supraadaptarea prin adăugarea unei constrângeri de greutate unui model existent.

Lansați proiectul cu noua mea carte Better Deep Learning, inclusiv tutoriale pas cu pas și fișierele de cod sursă Python pentru toate exemplele.

Să începem.

  • Actualizat martie/2019: s-a remediat greșeala folosind egalitatea în loc de atribuire în unele exemple de utilizare.
  • Actualizat oct/2019: Actualizat pentru Keras 2.3 și TensorFlow 2.0.

constrângerile

Cum se reduce supraadaptarea în rețelele neuronale profunde cu constrângeri de greutate în Keras
Fotografie de Ian Sane, unele drepturi rezervate.

Prezentare generală a tutorialului

Acest tutorial este împărțit în trei părți; sunt:

  1. Constrângeri de greutate în Keras
  2. Constrângeri de greutate pe straturi
  3. Studiu de caz de constrângere a greutății

Constrângeri de greutate în Keras

API-ul Keras acceptă constrângeri de greutate.

Constrângerile sunt specificate pe strat, dar sunt aplicate și aplicate pe nod în cadrul stratului.

Folosirea unei constrângeri implică, în general, setarea argumentului kernel_constraint pe strat pentru greutățile de intrare și bias_constraint pentru greutățile de prejudecată.

În general, constrângerile de greutate nu sunt utilizate pe greutățile de părtinire.

O suită de diferite norme vectoriale poate fi utilizată ca constrângeri, oferite ca clase în modulul keras.constraints. Sunt:

  • Normă maximă (max_norm), pentru a forța greutățile să aibă o magnitudine la sau sub o anumită limită.
  • Norme non-negative (non_neg), pentru a forța greutățile să aibă o magnitudine pozitivă.
  • Norma unitară (unit_norm), pentru a forța greutățile să aibă o magnitudine de 1,0.
  • Norma Min-Max (min_max_norm), pentru a forța greutățile să aibă o magnitudine între un interval.

De exemplu, o constrângere poate fi importată și instanțiată: