Trois lots de domaine de connaissances normalisé (articles Code) | apprentissage machine que vous rencontrerez la « fosse »

BN utilisation de Keras

Un grand nombre dans le cadre de la normalisation des lots (ci-après dénommé BN) opérations dans une pratique particulière est très simple, ne fait pas exception à keras, il suffit d'ajouter la couche BN dans le modèle, cela signifie que face à couche en normalisation :

de BatchNormalization d'importation de keras.layers comme BN

BN (epsilon = 0,001, centre = True, échelle = True, beta_initializer = 'zéros', gamma_initializer = 'les')

Ici principalement sur les paramètres liés au processus de formation. Nous utilisons les réglages des paramètres par défaut officiels, où epsilon (

) Est l'écart type estimé au nécessaire d'ajouter un nombre très faible de la variance, ne peut pas être définie pour éviter gradient:

centre (

) Et l'échelle (

) Est de deux paramètres d'apprentissage peuvent être mesurés de nouveau, nous avons mis à vrai, cela signifie que nous pouvons apprendre à utiliser ces deux paramètres.

En particulier l'utilisation de nous, peut être retenir sélectivement ou de rejeter certains. Enfin, la méthode peut apprendre l'initialisation des paramètres, nous pouvons utiliser keras l'initialisation se fait.

Les programmes de recherche et méthodes

Nous avons principalement discuté de plusieurs questions mentionnées dans un article paru dans la théorie:

  • En général, BN peut vraiment accélérer la formation elle?
  • Ne tenez compte que l'échelle de fonction, sans tenir compte de changement de covariable interne, avec l'augmentation de la couche BN, la formation ne sera pas mieux en mieux?
  • Si le poids a changé les paramètres du problème des couches coordonnent la mise à jour, puis en l'algorithme d'apprentissage adaptatif de vitesse et de BN vont obtenir de meilleurs résultats, il?
  • Nous utilisons un lot différent dans la formation, BN aura un look d'impact comme?

Nous faisons toujours utiliser ensemble de données de formation MNIST, d'utiliser l'ancienne structure (ou de mieux voir l'effet, de sorte que nous pouvons réseau plus profond propre), enregistrer les résultats de la formation, des résultats optimaux ont été observés. Dans certains cas, dans la phase de test, il prend la sortie de chaque couche, les résultats de l'observation.

formation accélérée BN

Nous avons d'abord les données d'importation, faites-le avec le codage d'un chaud, normalisé:

importer numpy comme np

de keras.datasets mnist d'importation

de keras.utils to_categorical d'importation

# Importer des données

(X_train, y_train), (X_test, y_test) = mnist.load_data ()

train_labels = to_categorical (y_train)

test_labels = to_categorical (y_test)

X_train_normal = X_train.reshape (60000,28 * 28)

X_train_normal = X_train_normal.astype ( 'float32') / 255

X_test_normal = X_test.reshape (10000, 28 * 28)

X_test_normal = X_test_normal.astype ( 'float32') / 255

Et en utilisant une fonction sigmoïde comme une unité cachée au commun de construction anticipatrice réseau de neurones:

importer numpy comme np

de keras.datasets mnist d'importation

de keras.models importer séquentielle

de keras.layers Dense d'importation

de optimiseurs d'importation KERAS

de BatchNormalization d'importation de keras.layers comme BN

def  normal_model (a):

modèle séquentiel = ()

model.add (Dense (512, activation = a, input_shape = (28 * 28,)))

model.add (Dense (256, activation = a))

model.add (Dense (128, activation = a))

model.add (Dense (64, activation = a))

model.add (Dense (10, activation = 'softmax'))

model.compile (optimiseur = optimizers.SGD (dynamique = 0,9, nesterov = True), \

perte = 'categorical_crossentropy', \

métriques = )

retour (Modèle)

Ajout d'une couche de BN sur la base du modèle ci-dessus, comme un nouveau modèle:

def  BN_model (a):

modèle séquentiel = ()

model.add (Dense (512, activation = a, input_shape = (28 * 28,)))

model.add (BN ())

model.add (Dense (256, activation = a))

model.add (Dense (128, activation = a))

model.add (Dense (64, activation = a))

model.add (Dense (10, activation = 'softmax'))

model.compile (optimiseur = optimizers.SGD (dynamique = 0,9, nesterov = True), \

perte = 'categorical_crossentropy', \

métriques = )

retour (Modèle)

Deux modèles de formation à 10 époques, pour observer ses performances:

Modèle_1 = normal_model ( 'sigmoïde')

his_1 = model_1.fit (X_train_normal, train_labels, batch_size = 128, validation_data = (X_test_normal, test_labels), verbeux = 1, époques = 10)

w1 = his_1.history

model_2 = BN_model ( 'sigmoïde')

his_2 = model_2.fit (X_train_normal, train_labels, batch_size = 128, validation_data = (X_test_normal, test_labels), verbeux = 1, époques = 10)

w2 = his_2.history

matplotlib.pyplot importation comme plt

Seaborn d'importation comme sns

sns.set (style = 'whitegrid')

plt.plot (plage (10), w1 , '-.', label = 'Sans BN)

plt.plot (plage (10), w2 , '-.', label = 'Avec BN_1')

plt.title ( 'sigmoïde')

plt.xlabel ( 'époques')

plt.ylabel ( 'perte')

plt.legend ()

Comme le montre, vous pouvez voir juste ajouter une couche de BN, le taux de convergence devient plus élevé que le modèle sans ajouter beaucoup plus rapide.

Nous avions « communs unités cachées » à l'aide Relu au lieu de sigmoïde, le taux de convergence devient plus rapide, alors nous serons si la couche BN Relu a démontré si bien les unités cachées pour accélérer encore? Nous allons utiliser Relu, pour observer ses effets:

Comme on le voit, comme Relu être soulagées par l'intermédiaire d'un gradient approximativement linéaire de disparaissant sigmoïde, mais BN est dépendant des actes en affaiblissant entre les couches, le BN peut en outre accélérer la convergence sur la base Relu.

BN augmenter le nombre de couches

Sur la base de notre compréhension du BN si elle est vraiment d'accélérer la convergence en affaiblissant la dépendance entre les couches (ou affaiblir le shfit covariable interne dans le processus de représentation) pour nos modèles 4 couches, puis ajoutez seulement une couche de BN, est indépendante du sous-jacent avec les trois autres au large, trois couches d'optimisation est une influence encore les uns des autres. Par conséquent, il est prévu que, si l'on ajoute la couche BN, la vitesse de convergence devient plus rapide.

La pratique spécifique, nous nous tournons pour construire quatre modèles, chacun avec différentes couches de BN et ont été formés pour donner perte Avec le changement de la carte époques:

Comme représenté, le modèle en utilisant la fonction d'activation sigmoïde, et l'effet de la vitesse de convergence augmente à mesure que le nombre de couches augmente, l'utilisation du modèle ne semble pas numéro RELU sensible de couches de BN, en utilisant une couche d'un empilement sans différence significative, cela est très probablement parce que le réseau est assez profond, Relu ajouter une couche de BN semble avoir atteint les limites de cette optimisation du modèle.

algorithme de taux d'apprentissage adaptatif par rapport à BN

Notre prochain code ne traitera pas Relu, parce que la fonction d'activation du modèle semble avoir un plus grand espace d'accord, nous sommes également facile de voir son effet. Pour ce faire relativement simple, nous changeons l'algorithme algorithme SGD Adam, d'une part, nous pouvons ajouter le modèle d'algorithme d'optimisation des taux d'apprentissage adaptatif n'utilise pas la couche BN, d'autre part, nous pouvons ajouter le modèle à utiliser la couche BN adapter l'algorithme d'optimisation de taux d'apprentissage pour voir si accélérer la convergence.

Selon la connaissance, BN et le taux d'apprentissage adaptatif est de changer l'amplitude de la mise à jour des paramètres des deux moyens, dans la mesure du possible de conserver les paramètres sont mis à jour l'ampleur dans un ordre de grandeur, et il n'y a pas hiérarchique.

La pratique spécifique, nous définissons deux nouveaux modèles basés sur le modèle ci-dessus, celui-ci n'utilise pas BN, mais avec Adam, et l'autre en utilisant BN, également utiliser l'algorithme Adam, et par rapport au début des deux modèles, doivent faire attention nous gardons Adam et le taux d'apprentissage SGD devraient être les mêmes, sont de 0,01, les paramètres par défaut dans les deux keras pas le même, régler manuellement:

Comme le montre, nous avons trouvé ajouter le modèle d'algorithme Adam basé sur l'utilisation du BN, de sorte que d'accélérer encore le modèle de convergence, sans utiliser le modèle BN, ajoutez algorithme Adam, et BN a également fait le même effet.

impact Lot

On peut voir en théorie, la normalisation est effectuée sur la base du lot, le lot est un sous-ensemble de l'ensemble de la formation, sa taille influera directement sur le calcul de la moyenne et la variance de BN, il est probable que chaque lot a une autre moyenne et la variance.

On suppose que pour la détermination du lot, les paramètres normalisés sont fixés. variance réduite (variance non BN) entre les lots taille de lot augmente, ce qui rend le réseau ont une volatilité plus grande. Notez, cependant, même sans l'utilisation de BN, la taille des lots affectera encore le lot gradient estimé d'itérations plus rapides, mais facile à tomber dans minimum local, plus petit caractère aléatoire de lots, mais un besoin de déplacement des époques plus de temps. Donc, après avoir changé la taille du lot, ne peut pas déterminer efficacement l'effet de la convergence à la fin parce que la couche BN ou parce que l'estimation du gradient.

Mais nous pouvons utiliser ce problème dans un autre problème, à savoir, le modèle et le modèle ajouté BN BN n'a pas été ajouté, et comparer leurs performances sur les différents lots, si sur un petit lot, ajouter le modèle par rapport à la non-BN Ajouter modèle BN n'a pas donné de bons résultats, il montre, dans un petit lot, la couche BN ne fonctionne pas.

Selon cette idée, nous utilisons 4,64,256,1024 quatre types de taille de lot, respectivement modèle BN BN et le modèle n'ajoute pas la formation, vous pouvez obtenir:

Comme le montre, nous pouvons trouver beaucoup d'informations, pour ajouter le modèle de la couche BN (ligne en pointillés), lorsque la taille du lot de 64 et 4, l'effet de la convergence et de la vitesse sont les meilleurs pour le modèle BN (ligne solide) n'est pas ajouté, le lot 4 lorsque l'effet est aussi le meilleur. Mais dans un petit lot, BN d'utilisation devrait être peu d'impact sur les performances, petit lot, mais la couche BN fait des performances médiocres.

Auteur: moine sans tête et épaules Pour réimprimer, s'il vous plaît laisser un message dans les coulisses, se conformer aux normes de réimpression
Mises à jour automatiques inquiète aussi de Win10? Essayez cette version ne sont pas automatiquement mis à jour
Précédent
Pouvez-vous donner aux adversaires pointent rester en vie? 100.000 quatre ans d'entretien à regarder le dragon asiatique
Prochain
budget modeste mais qui veulent un grand souvenir? 128G mémoire 1599 peut être gagnée
Qualité mise à jour complète interprétation Chase G20 de gamme d'affaires domestique des enfants!
Si vous pensez que haut de gamme Samsung S et série Remarque, alors vous avez tort, ce prix de dizaines de milliers
Aujourd'hui, le son de base | vous sensibles à la dépression de la ville moderne exactement à quelle distance? Pour mesurer ce
ouverture Coupe du monde des nouvelles bientôt Netease ensemble, « l'Allemagne et la France, les deux attaquants » pour créer des contenus exclusifs
entrant « petit afflux d'hommes »! Deux nouvelles Buick SUV vous permettent de le comprendre
10000mAh suivant ne peut pas être appelée grande autonomie de batterie, en plus de Doug BL12000
Nous entendons souvent parler de téléphone IP68 étanche à l'eau et à la poussière, à la fin la quantité d'eau et à la poussière?
Les données publiées au niveau d'entrée M.2 SSD: Realtek maître rare
Trois lots de domaine de connaissances standardisées (papiers théoriques) | machine que vous rencontrerez l'apprentissage de la « fosse »
Vraiment purs et durs! la police téléphonique nord-est et les trafiquants de drogue « sur cadre », après le succès de la réunion et l'ont arrêté
La grande touche de couleur de cheveux bracelet gloire Huawei 4, mil bracelet 3 grelottant