Utilisation du gradient dans la mise à jour du poids et du biais dans le réseau neuronal


Prizrak

Pourquoi utilisons-nous le gradient de la fonction de perte pour mettre à jour le poids et le biais d'un réseau de neurones?

par exemple:

new_weight = old_weight - learning_rate * gradient

En d'autres termes, comment le gradient nous aide-t-il à mettre à jour correctement le poids et le biais.

Yennefer

C'est une simplification grossière: le gradient est un dérivé multidimensionnel compacté en une "structure unique". Le dérivé vous indique où est un changement local. Le dégradé vous indique où il y a des changements locaux dans toutes les dimensions que vous envisagez.

Prenons le cas tridimensionnel: notre monde. Image que vous escaladez une colline. Supposons que votre vue soit limitée à 3 mètres pour votre position. Votre objectif est d'atteindre le sommet.

Vous partez d'un point et vous regardez autour de vous. Comme vous voyez à 3 mètres de votre position dans votre direction, vous choisissez d'aller là où vous voyez que la pente est plus raide. L'action de regarder autour de vous consiste à calculer le gradient et à corriger votre vitesse.

Dans votre équation, rappelez-vous que c'est un exemple grossier, vous dites "Euh, la première fois que j'ai vérifié ma direction était de 124 degrés, maintenant, en regardant le gradient, ma direction devrait être de 10 degrés. Quelle direction dois-je prendre maintenant".

L' learning rateéquation ou votre équation est un coefficient que vous pouvez interpréter comme «frottement» ou «confiance»: vous ne voulez pas changer votre direction de 114 degrés d'un seul coup, vous voulez plutôt changer par rapport à l'ampleur du nouveau mesure. Vous détectez que la nouvelle direction doit être inférieure de 114 degrés (124-10) à la direction actuelle. Ainsi, si votre taux d'apprentissage est faible, votre nouvelle direction aura moins d'impact que dans le cas où le taux d'apprentissage est plus élevé.

Cet exemple est généralisé sur plusieurs dimensions.

Articles connexes


Comment éviter la mise à jour du poids dans le café

RichieZhu Certaines couches de mon filet chargent un modèle pré-entraîné. Je veux corriger leurs paramètres et entraîner d'autres couches. J'ai suivi cette page et mis lr_multi decay_multià 0 propagate_down: false, et même base_lr: 0 weight_decay: 0dans le sol

Poids du réseau neuronal dans OpenCV 3

épistémophile Comment appliquer des pondérations dans OpenCV 3 avec la bibliothèque C ++ ml.hpp? Je sais que précédemment avec les objets CvANN_MLP, les poids pourraient être appliqués comme suit: mlp.train(trainData, trainClasses, weights); Cependant, comme

changer le poids du bord dans le réseau igraph

cs0815 J'aurais pensé que l'algorithme graphique récupère automatiquement le poids de la colonne dans le cadre de données de bord, mais ce n'est pas le cas comme indiqué dans le code suivant: nodes <- data.frame(name = c("1", "2", "3"), type = c("a", "b", "b")

Fonctionnement simple du biais du réseau neuronal

Conor J'ai créé un réseau de neurones dans Matlab et maintenant je prévois de prendre les poids et d'implémenter le réseau en C ++. Le réseau fonctionne mais maintenant que j'essaie de l'implémenter en C ++, je sens que je ne le comprends pas vraiment. Pour pr