Réseaux de neurones
IFT 725
Réseaux de neurones multicouches
Par Pierre-Marc Jodoin
Séparation linéaire
2 grands advantages. Une fois l’entraînement terminé, 1. Plus besoin de données d’entraînement
2. Classification est très rapide (produit scalaireentre 2 vecteurs)
x1
x2
(2D et 2 classes)
poids biais
x 1 yw
x 1 yw
w
x w x
y
w
T
' '
02 2 1 1 0
x w
x w w
x w x w w x y
T T w
Neurone
Produit scalaire + fonction d’activation sg
x1
x2
1
w1
w2
w0
x1
x2
Perceptron
(2D et 2 classes)
Fonction de coût perceptron (loss) et gradient
x
wT yw x sign
wTx1,1
x 1 yw
x 1 yw
w
M x
n n D
M x
T n D
n n
x t w
E
x w t w
E
où Mest l'ensembledesdonnéesmalclassées
Neurone
Produit scalaire + fonction d’activation sg
x1
x2
1
w1
w2
w0
x1
x2 wTx
Hinge Loss
(2D et 2 classes)
Fonction de coût SVM (hinge loss) et gradient
Fonction de coût SVM (hinge loss) et gradient
x sign
wTx1,1yw
x 1 yw
x 1 yw
w
M x
n n D
N
n
T n D
n
x t w
E
x w t w
E
1
1 , 0 max
Régression logistique
(2D, 2 classes)
Nouvelle fonction d’activation : sigmoïde logistique
Neurone
1
w1
w2
w0
x1
x2
x1
x2 yw(x)0.5
t
t e
1
1
1
ln 1 ln 1
N
D n W n n W n
n
E W t y x t y x
1 N
D W n n n
n
E W y x t x
Fonction de coût (loss) et gradient x
wT yw x
wTx [0,1]
x 1 yw
x 1yw
w
Perceptron Multiclasse
( )
Ty x
W W x
(2D et 3 classes)
2 1 2 , 2 1 , 2 0 , 2
2 , 1 1 , 1 0 , 1
2 , 0 1 , 0 0 ,
0
1
) (
x x w w
w
w w
w
w w
w x
y
W
x2
1 1 ,
w0
2 ,
w0
0 ,
w0 1 ,
w1
2 ,
w1
0 ,
w1 1 ,
w2
2 ,
w2
0 ,
w2
x yWi i
max ,
arg x1
0
W x T
max est )
0(
, x
yW
max est )
2(
, x
yW
max est )
1(
, x
yW
1
W x T
2
W x T
max est )
0(
, x
yW
max est )
2(
, x
yW
max est )
1(
, x
yW
Perceptron Multiclasse
Exemple
2 1 . 1
1 9 . 4 4
6
1 . 4 4 . 2 4
5 . 0 6 . 3 2 )
( x
y
W
Classe 0Classe 1
(1.1, -2.0)
2 . 8
6 . 9
9 . 6
Classe 2
Perceptron Multiclasse
Fonction de coût (Perceptron loss – One-VS-One)
n
n
T T
D j n t n
x M
E W W x W x
Somme sur l’ensemble des données mal classées
Score de la classe faussement prédite par le modèle
Score de la bonne classe
n t
n j
W x x E
W E
n
1 4 . 0
1 9 . 4 4
6
1 . 4 4 . 2 4
5 . 0 6 . 3 2 )
( x
y
W
Classe 0Classe 1 Classe 2
Perceptron Multiclasse
Exemple d’entraînement (h=1)
FAUX!
0 . 4 , 1 , 0
nn
t
x
5 . 0
1 . 7
6 . 1
9
0 . 4 , 1 . 0 , 0
nn
t
x
x
nw w
0
0
5 . 0
0 . 4
0 . 1 1
4 . 0
1 5
. 0
6 . 3
0 . 2
9 . 3
6 . 3
0 . 7 1
4 . 0
1 9
. 4
0 . 4
0 . 6 x
nw w
2
2
Perceptron Multiclasse
Exemple d’entraînement (h=1)
10
Descente de gradient stochastique (version naïve, batch_size = 1) Initialiser W
k=0, i=0 DO k=k+1
FOR n = 1 to N
IF THEN /* donnée mal classée*/
UNTIL toutes les données sont bien classées.
n t t
n j j
x w w
x w w
n n
h h
W max arg Txn
j
ti
j
Perceptron Multiclasse
(One-VS-One)
Perceptron Multiclasse
Fonction de coût (Perceptron loss – One-VS-All)
Somme sur l’ensemble des données mal classées
Score d’une classe
Score de la bonne classe
M
x j t
n T t n T j D
n n
nx W x W W
E
, 0 max
Somme sur l’ensemble des classes autre que la cible
Perceptron Multiclasse
Fonction de coût (Perceptron loss – One-VS-All)
M
x j t
n T t n T j D
n n
nx W x W W
E
, 0 max
ZÉROpour chaque classe dont le score est inférieur au score de la bonne classe
Perceptron Multiclasse
Fonction de coût (Perceptron loss – One-VS-All)
M
x j t
n T t n T j D
n n
nx W x W W
E
, 0 max
n
T n tn T n i n
T n tn T n j
t i
x n W x W t
x n W x W j
W x E W x
E
0 1
0 1
1 1
sinon 0
0
si 1
11 0
n T t n T j x
W x W
x W x
W n
n T tn n T j
Où 1 est une fonction binaire:
Descente de gradient stochastique (version naïve, batch_size = 1) Initialiser W
k=0, i=0 DO k=k+1
FOR n = 1 to N
FOR j=1 to NB_CLASSES THEN IF AND THEN
UNTIL toutes les données sont bien classées.
n t t
n j j
x w w
x w w
n n
h h
tn
j
Perceptron Multiclasse
(One-VS-All)
T 1
T n j n
t x W x
Wn
Au TP1, implanter la version naïve + la version vectorisée sans boucles for
Hinge Multiclasse
Fonction de coût (Hinge loss - One-VS-one)
Score de la classe faussement prédite par le modèle
Score de la bonne classe Somme sur l’ensemble des
données
n
n T t n T y
D W W x W x
E n
1 , 0 max
n t
n j
W x x E
W E
n
TP1
Hinge Multiclasse
Fonction de coût (Hinge loss - One-VS-All)
n j t
n T t n T j D
n
nx W x W W
E
1 , 0 max
Somme sur l’ensemble des
données Score de la bonne classe
Somme sur l’ensemble des classes autre que la cible
Score d’une classe
Hinge Multiclasse
sinon 0
et 1 si
sinon 0
1 si
T T
T T
n n
j n t n x W
n j n t n x W
t j x W x W E x
x W x W E x
n n
j
n n n
t
Fonction de coût (Hinge lossouSVM loss)
n j t
n T t n T j D
n
nx W x W W
E
1 , 0 max
Descente de gradient stochastique (version naïve, batch_size = 1) Initialiser W
k=0, i=0 DO k=k+1
FOR n = 1 to N
IF THEN /* donnée mal classée*/
UNTIL toutes les données sont bien classées.
n t t
n j j
x w w
x w w
n n
h h
W max arg Txn
j
ti
j
Hinge Multiclasse
(One-VS-One)
Au TP1, implanter la version naïve + la version vectorisée sans boucles for
Softmax exp
norm
exp exp
0T
0 2 T
0
( )
j W x
W W x
j
y x e
e
0
W x T
1
W x T
2
W x T
Régression logistique multiclasse
1T
1 2 T
0
( )
j W x
W W x
j
y x e
e
2T
2 2 T
0
( )
j W x
W W x
j
y x e
e
x2
1 1 ,
w0
2 ,
w0
0 ,
w0 1 ,
w1
2 ,
w1
0 ,
w1 1 ,
w2
2 ,
w2
0 ,
w2
x1
Softmax exp
norm
exp exp
c W x
P
,
0|
c W x
P
,
1|
c W x
P
,
2|
x2
1 1 ,
w0
2 ,
w0
0 ,
w0 1 ,
w1
2 ,
w1
0 ,
w1 1 ,
w2
2 ,
w2
0 ,
w2
x1
0
W x T
1
W x T
2
W x T
Régression logistique multiclasse
0T
0 2 T
0
( )
j W x
W W x
j
y x e
e
1T
1 2 T
0
( )
j W x
W W x
j
y x e
e
2T
2 2 T
0
( )
j W x
W W x
j
y x e
e
0000000001
t truck' '
0000000010 t
ship' '
0000000100 t
horse' '
0000001000 t
frog' '
0000010000 t
dog' '
0000100000 t
deer' '
0001000000 t
cat' '
0010000000 t
bird' '
0100000000 t
' automobile '
1000000000 t
airplane' '
Étiquettes de classe : one-hot vector
Régression logistique multiclasse
Régression logistique multiclasse
1
W 1
ND n W n kn
n
E x y x t
N
1 1
W ln
k
N K
D kn W n
n k
E t y x
Fonction de coût est uneentropie croisée(cross entropy loss)
Tous les détails du gradient de l’entropie croisée :
info.usherbrooke.ca/pmjodoin/cours/ift603/softmax_grad.html Au tp1: implanter une version naïve avec des boucles for
et une version vectorisée SANS bouble for.
15 22 , 2
44 56
x t
2.15
exp norm
1.24
(Softmax)
Hinge loss One-VS-All
Entropie croisée Score
Score
W
x
56 44 22
15 1
03 . 0 2 . 0 45 . 0 0 . 0 3 . 0
16 . 0 05 . 0 2 . 0 7 . 0 2 . 0
05 . 0 1 . 0 05 . 0 01 . 0 7 . 2
28 . 0
86 . 0
15 . 0
28 . 0
86 . 0
15 . 0
0,0.57 max0,1.58
max
1 28 . 0 86 . 0 , 0 max
1 28 . 0 15 . 0 , 0 max
32 . 1
36 . 2
86 . 0
29 . 0
52 . 0
19 .
0
29 . 0 ln
15 22 , 2
44 56
x t
1.58
exp norm
1.24
(Softmax)
Hinge loss One-VS-One
Entropie croisée Score
Score
W
x
56 44 22
15 1
03 . 0 2 . 0 45 . 0 0 . 0 3 . 0
16 . 0 05 . 0 2 . 0 7 . 0 2 . 0
05 . 0 1 . 0 05 . 0 01 . 0 7 . 2
28 . 0
86 . 0
15 . 0
28 . 0
86 . 0
15 . 0
0,1.58
max
1 28 . 0 86 . 0 , 0 max
32 . 1
36 . 2
86 . 0
29 . 0
52 . 0
19 .
0
29 . 0 ln
min
arg E
DW
W
Fonction de perte
Régularisation
Constante
W W ou W
1 2R
En général L1 ou L2
R W
Maximum a posteriori
Régularisation
Optimisation
k E
k
k1] [ ] [ ]
[ w
w
h
Gradient de la function de coût Taux d’apprentissage ou “learning rate”.
Descente de gradient
Optimisation par Batch Initialiser w
k=0 FAIRE k=k+1
JUSQU’À ce que toutes les données sont bien classées ou k==MAX_ITER
i i k] Ex h[
w w Descente de gradient stochastique
Initialiser w k=0 FAIRE k=k+1
FOR n = 1 to N
JUSQU’À ce que toutes les données soient bien classées ou k==MAX_ITER
n kEx
w h[] w
k
k] cst/
[
h
Parfois
Maintenant, rendons le réseau profond
2D, 2Classes, Régression logistique linéaire
30
x1 1
w2
w1
w0
x2
Couche d’entrée (3 « neurones »)
Couche de sortie (1 neurone avec sigmoïde) x
wT yw x
wTxR
2D, 2Classes, Réseau à 1 couche cachée
Maintenant, ajoutons arbitrairement 3 neurones
x2
1 1 ,
w0
2 ,
w0
0 ,
w0 1 ,
w1
2 ,
w1
0 ,
w1 1 ,
w2
2 ,
w2
0 ,
w2
x1
Couche d’entrée (3 « neurones »)
1èrecouche (3 neurones)
w0TxR
wTxR 1
w2TxR x
wT
0
x wT
2
x wT
1
2D, 2Classes, Réseau à 1 couche cachée
Puisque les poids sont entre la couche d’entrée et la première couche on va les identifier à l’aide de l’indice [0]
x2
1
x1
] 0 [
2 ,
w0
] 0 [
2 ,
w2 ] 0 [
2 ,
w1 ] 0 [
0 ,
w0
] 0 [
0 ,
w2 ] 0 [
0 ,
w1 ] 0 [
1 ,
w0
] 0 [
1 ,
w2 ] 0 [
1 ,
w1
Couche d’entrée (3 « neurones »)
1èrecouche (3 neurones)
x w[0]T
0
x w[0]T
2
x w[0]T
1
w[00]Tx
R
w[20]Tx
R
w1[0]Tx
R
x2
1
x1
] 0 [
2 ,
w0
] 0 [
2 ,
w2 ] 0 [
2 ,
w1 ] 0 [
0 ,
w0
] 0 [
0 ,
w2 ] 0 [
0 ,
w1 ] 0 [
1 ,
w0
] 0 [
1 ,
w2 ] 0 [
1 ,
w1
NOTE: à la sortie de la première couche, on a 3 réelscalculés ainsi
[0] [0] [0]
0,0 0,1 0,2 0
[0] [0] [0]
1,0 1,1 1,2 1
[0] [0] [0]
2,0 2,1 2,2
1
w w w x
w w w x
w w w
2D, 2Classes, Réseau à 1 couche cachée
w[00]Tx
R
w[20]Tx
R
w1[0]Tx
R
x w[0]T
0
x w[0]T
2
x w[0]T
1
x2
1
x1
] 0 [
2 ,
w0
] 0 [
2 ,
w2 ] 0 [
2 ,
w1 ] 0 [
0 ,
w0
] 0 [
0 ,
w2 ] 0 [
0 ,
w1 ] 0 [
1 ,
w0
] 0 [
1 ,
w2 ] 0 [
1 ,
w1
NOTE: représentation plus simple de la sortie de la 1èrecouche (3 réels)
W x [0]
2D, 2Classes, Réseau à 1 couche cachée
w[00]Tx
R
w[20]Tx
R
w1[0]Tx
R
x w[0]T
0
x w[0]T
2
x w[0]T
1
x2
1
x1
] 0 [
2 ,
w0
] 0 [
2 ,
w2 ] 0 [
2 ,
w1 ] 0 [
0 ,
w0
] 0 [
0 ,
w2 ] 0 [
0 ,
w1 ] 0 [
1 ,
w0
] 0 [
1 ,
w2 ] 0 [
1 ,
w1
Si on veut effectuer une classification 2 classes via une régression logistique(donc une fonction coût par « entropie croisée ») on doit ajouterun neurone de sortie.
] 1 [
w0 ] 1 [
w1 ] 1 [
w2
[1]T [0]
W W x
Couche d’entrée (3 « neurones »)
1èrecouche cachée (3 neurones)
Couche de sortie (1 neurone)
2D, 2Classes, Réseau à 1 couche cachée
x w[0]T
0
x w[0]T
2
x w[0]T
1 yW x
w[1]T
W[0]x
Rx2
1
x1
] 0 [
2 ,
w0
] 0 [
2 ,
w2 ] 0 [
2 ,
w1 ] 0 [
0 ,
w0
] 0 [
0 ,
w2 ] 0 [
0 ,
w1 ] 0 [
1 ,
w0
] 0 [
1 ,
w2 ] 0 [
1 ,
w1
] 1 [
w0 ] 1 [
w1 ] 1 [
w2
[1]T [0]
W W x
x1 1
x0
Allègement visuel
2D, 2Classes, Réseau à 1 couche cachée
W[0]
x w[0]T
0
x w[0]T
2
x w[0]T
1 yW x
w[1]T
W[0]x
R x
w
W x
RyW [1]T [0]
] 1
w[