L'utilisation de dérivés dans les réseaux de neurones est destinée au processus d'apprentissage appelé rétropropagation . Cette technique utilise la descente de gradient afin de trouver un ensemble optimal de paramètres de modèle afin de minimiser une fonction de perte. Dans votre exemple, vous devez utiliser le dérivé d'un sigmoïde car c'est l'activation que vos neurones individuels utilisent.
La fonction de perte
L'essence de l'apprentissage automatique est d'optimiser une fonction de coût de sorte que nous puissions minimiser ou maximiser une fonction cible. C'est ce qu'on appelle généralement la fonction de perte ou de coût. Nous voulons généralement minimiser cette fonction. La fonction de coût, , associe une certaine pénalité en fonction des erreurs résultantes lors du passage de données dans votre modèle en fonction des paramètres du modèle.C
Regardons l'exemple où nous essayons d'étiqueter si une image contient un chat ou un chien. Si nous avons un modèle parfait, nous pouvons lui donner une photo et il nous dira s'il s'agit d'un chat ou d'un chien. Cependant, aucun modèle n'est parfait et il fera des erreurs.
Lorsque nous formons notre modèle pour pouvoir déduire le sens des données d'entrée, nous voulons minimiser la quantité d'erreurs qu'il fait. Nous utilisons donc un ensemble de formation, ces données contiennent beaucoup de photos de chiens et de chats et nous avons l'étiquette de vérité au sol associée à cette image. Chaque fois que nous exécutons une itération de formation du modèle, nous calculons le coût (le nombre d'erreurs) du modèle. Nous voulons minimiser ce coût.
Il existe de nombreuses fonctions de coût, chacune servant son propre objectif. Une fonction de coût commune utilisée est le coût quadratique qui est défini comme
.C=1N∑Ni=0(y^−y)2
Ceci est le carré de la différence entre l'étiquette prédite et l'étiquette de vérité terrain pour le images sur lesquelles nous nous sommes entraînés. Nous voulons minimiser cela d'une manière ou d'une autre.N
Minimiser une fonction de perte
En effet, la plupart du machine learning est simplement une famille de frameworks qui sont capables de déterminer une distribution en minimisant une fonction de coût. La question que nous pouvons poser est "comment pouvons-nous minimiser une fonction"?
Minimisons la fonction suivante
y=x2−4x+6 .
Si nous traçons cela, nous pouvons voir qu'il y a un minimum à . Pour ce faire analytiquement, nous pouvons prendre la dérivée de cette fonction commex=2
dydx=2x−4=0
.x=2
Cependant, il n'est souvent pas possible de trouver un minimum global analytiquement. Nous utilisons donc à la place des techniques d'optimisation. Ici aussi de nombreuses façons différentes existent comme: Newton-Raphson, recherche réseau, etc. Parmi ceux - ci est une descente de gradient . C'est la technique utilisée par les réseaux de neurones.
Descente graduelle
Utilisons une analogie connue pour comprendre cela. Imaginez un problème de minimisation 2D. Cela équivaut à une randonnée montagneuse dans le désert. Vous voulez redescendre vers le village dont vous savez qu'il est au point le plus bas. Même si vous ne connaissez pas les directions cardinales du village. Tout ce que vous avez à faire est de descendre en continu le plus raide et vous finirez par arriver au village. Nous allons donc descendre la surface en fonction de la pente de la pente.
Prenons notre fonction
y=x2−4x+6
nous déterminerons le pour lequel y est minimisé. L'algorithme de descente de gradient indique d'abord que nous choisirons une valeur aléatoire pour x . Initialisons à x = 8 . Ensuite, l'algorithme procédera de manière itérative jusqu'à ce que nous atteignions la convergence.xyxx=8
xnew=xold−νdydx
où est le taux d'apprentissage, nous pouvons le régler sur la valeur que nous voulons. Cependant, il existe un moyen intelligent de choisir cela. Trop gros et nous n'atteindrons jamais notre valeur minimale, et trop gros nous perdrons tellement de temps avant d'y arriver. C'est analogue à la taille des marches que vous souhaitez descendre sur la pente raide. De petits pas et tu mourras sur la montagne, tu ne descendras jamais. Trop grand d'une étape et vous risquez de tirer sur le village et de finir de l'autre côté de la montagne. La dérivée est le moyen par lequel nous descendons cette pente vers notre minimum.ν
dydx=2x−4
ν=0.1
Itération 1:
x n e w = 6,8 - 0,1 ( 2 ∗ 6,8 - 4 ) = 5,84 x n e w = 5,84 - 0,1 ( 2 ∗ 5,84 - 4 ) = 5,07 x n e w = 5,07 -xnew=8−0.1(2∗8−4)=6.8
xnew=6.8−0.1(2∗6.8−4)=5.84
xnew=5.84−0.1(2∗5.84−4)=5.07
)x n e w = 4,45 - 0,1 ( 2 ∗ 4,45 - 4 ) = 3,96 x n e w = 3,96 - 0,1 ( 2 ∗ 3,96 - 4 ) = 3,57 x n e w = 3,57 - 0,1 ( 2 ∗ 3,57 - 4 = 3,25xnew=5.07−0.1(2∗5.07−4)=4.45
xnew=4.45−0.1(2∗4.45−4)=3.96
xnew=3.96−0.1(2∗3.96−4)=3.57
xnew=3.57−0.1(2∗3.57−4)=3.25
x n e w = 3,00 - 0,1 ( 2 ∗ 3,00 - 4 ) = 2,80 x n e w = 2,80 - 0,1 ( 2 ∗ 2,80 - 4 ) = 2,64 x n e w =xnew=3.25−0.1(2∗3.25−4)=3.00
xnew=3.00−0.1(2∗3.00−4)=2.80
xnew=2.80−0.1(2∗2.80−4)=2.64
x n e w = 2,51 - 0,1 ( 2 ∗ 2,51 - 4 ) = 2,41 x n e w = 2,41 - 0,1 ( 2 ∗ 2,41 - 4 ) = 2,32 x n e w = 2,32 - 0,1 ( 2 ∗ 2,32xnew=2.64−0.1(2∗2.64−4)=2.51
xnew=2.51−0.1(2∗2.51−4)=2.41
xnew=2.41−0.1(2∗2.41−4)=2.32
x n e w = 2,26 - 0,1 ( 2 ∗ 2,26 - 4 ) = 2,21 x n e w = 2,21 - 0,1 ( 2 ∗ 2,21 - 4 ) = 2,16 x n e w = 2,16 - 0,1 ( 2 ∗ 2,16 - 4 ) = 2,13 x nxnew=2.32−0.1(2∗2.32−4)=2.26
xnew=2.26−0.1(2∗2.26−4)=2.21
xnew=2.21−0.1(2∗2.21−4)=2.16
xnew=2.16−0.1(2∗2.16−4)=2.13
x n e w = 2,10 - 0,1 ( 2 ∗ 2,10 - 4 ) = 2,08 x n e w = 2,08 - 0,1 ( 2 ∗ 2,08 - 4 ) = 2,06 x n e w = 2,06 - 0,1 (xnew=2.13−0.1(2∗2.13−4)=2.10
xnew=2.10−0.1(2∗2.10−4)=2.08
xnew=2.08−0.1(2∗2.08−4)=2.06
x n e w = 2,05 - 0,1 ( 2 ∗ 2,05 - 4 ) = 2,04 x n e w = 2,04 - 0,1 ( 2 ∗ 2,04 - 4 ) = 2,03 x n e w = 2,03 - 0,1 ( 2 ∗ 2,03 - 4 ) =xnew=2.06−0.1(2∗2.06−4)=2.05
xnew=2.05−0.1(2∗2.05−4)=2.04
xnew=2.04−0.1(2∗2.04−4)=2.03
x n e w = 2,02xnew=2.03−0.1(2∗2.03−4)=2.02
x n e w = 2,02 - 0,1 ( 2 ∗ 2,02 - 4 ) = 2,01 x n e w = 2,01 - 0,1 ( 2 ∗ 2,01 - 4 ) = 2,01 x n e w =xnew=2.02−0.1(2∗2.02−4)=2.02
xnew=2.02−0.1(2∗2.02−4)=2.01
xnew=2.01−0.1(2∗2.01−4)=2.01
-x n e w = 2,01 - 0,1 ( 2 ∗ 2,01 - 4 ) = 2,00 x n e w = 2,00 - 0,1 ( 2 ∗ 2,00 - 4 ) = 2,00 x n e w = 2,00 - 0,1 ( 2 ∗ 2,00xnew=2.01−0.1(2∗2.01−4)=2.01
xnew=2.01−0.1(2∗2.01−4)=2.00
xnew=2.00−0.1(2∗2.00−4)=2.00
x n e w = 2,00 - 0,1 ( 2 ∗ 2,00 - 4 ) = 2,00 x n e w = 2,00 - 0,1 ( 2 ∗ 2,00 - 4 ) = 2,00xnew=2.00−0.1(2∗2.00−4)=2.00
xnew=2.00−0.1(2∗2.00−4)=2.00
xnew=2.00−0.1(2∗2.00−4)=2.00
Et nous voyons que l'algorithme converge à ! Nous avons trouvé le minimum.x=2
Appliqué aux réseaux de neurones
Les premiers réseaux de neurones avaient seulement un seul neurone qui a eu dans certains entrées et fournir un signal de sortie y . Une fonction couramment utilisée est la fonction sigmoïdexy^
σ(z)=11+exp(z)
y^(wTx)=11+exp(wTx+b)
où est le poids associé pour chaque entrée x et nous avons un biais b . Nous voulons ensuite minimiser notre fonction de coûtwxb
.C=12N∑Ni=0(y^−y)2
Comment former le réseau neuronal?
Nous utiliserons une descente de gradient pour former les poids en fonction de la sortie de la fonction sigmoïde et nous utiliserons une fonction de coût et former sur des lots de données de taille N .CN
C=12N∑Ni(y^−y)2
est la classe prédite obtenuepartirla fonction sigmoïde etyest le label de réalité de terrain. Nous utiliserons la descente de gradient pour minimiser la fonction de coût par rapport aux poidsw. Pour vous faciliter la vie, nous diviserons le dérivé comme suity^yw
∂C∂w=∂C∂y^∂y^∂w
∂C∂y^=y^−y
y^=σ(wTx)∂σ(z)∂z=σ(z)(1−σ(z))
∂y^∂w=11+exp(wTx+b)(1−11+exp(wTx+b))
Nous pouvons donc mettre à jour les poids par descente de gradient comme
wnew=wold−η∂C∂w
where η is the learning rate.