Neural network (NN) : Réseau de Neurones (RN).
Analyse
Lorsque le nombre de critères est trop grand (IR par ex), l'approche polynomiale devient trop coûteuse
en calcul (autant de features que de pixels) et il devient plus intéressant d'utiliser une
alternative comme un réseau de neurones.
À l'image des neurones biologiques, un
neurone artificiel possède :
- des entrées :
- x0=1, l'unité de biais
- x1,x2,...,xn
- une sortie calculée par la fonction de prédiction hΘ(x) où Θ est une série de paramètres (ou
"poids")
Réseau
Un réseau est constitué de L couches (souvent représentées de gauche à droite) :
- couche de s1 entrées (où l'on insèrera les valeurs de x1,x2,...,xn)
- L−2 couches "cachées" : contient sn unités d'activation (nœuds) ai0,ai1,...,ain. À noter que 1 seule couche cachée peut suffire à beaucoup de besoins, pour peu qu'elle
contienne assez de neurones (généralement plus que dans les couches d'entrée et de sortie). Si plus d'une couche
cachée est nécessaire, il est généralement recommandé qu'elles aient le même nombre de neurones. Enfin, plus le
réseau sera complexe, plus il demandera du temps de calcul (amoindrissant la rapidité de réponse donc) et plus
il sera susceptible de faire du surapprentissage.
- couche de sL sorties (typiquement constituée de n neurones de sorties si la prédiction
recherchée à n possibilités de réponses, par exemple 26 s'il s'agit de reconnaître une lettre de l'alphabet)
Par exemple pour 1 seule couche "cachée" (2) :
⎡⎢
⎢
⎢
⎢⎣x0x1x2x3⎤⎥
⎥
⎥
⎥⎦→⎡⎢
⎢
⎢⎣a(2)1a(2)2a(2)3⎤⎥
⎥
⎥⎦→hθ(x)
Lorsqu'un réseau contient plusieurs couches cachées (impliquant autant de niveaux d'abstraction), on parle d'apprentissage profond (deep learning).
Conception
On définit pour chacun des n nœuds d'une couche j un résultat dépendant de la couche précédente j−1 et de sa
matrice de poids Θj :
z(j)i=Θ(j−1)i,0x0+Θ(j−1)i,1x1+Θ(j−1)i,2x2+Θ(j−1)i,3x3
et l'on définit alors la fonction d'activation comme une fonction logistique g :
a(j)i=g(z(j)i)
et l'on considère la sortie hΘ(x) comme a31 par exemple (s'il y a 3 couches), recevant la couche 2 comme
X (i.e. xi=ai) :
hΘ(x)=g(Θ(2)1,0a0+Θ(2)1,1a1+Θ(2)1,2a2+Θ(2)1,3a3)
Toutefois les résultats peuvent être plus complexes. Dans des problèmes de classification multiple (plus de 2
classes) par exemple, les résultats connus (et donc les hypothèses) auront plutôt la forme d'une matrice (où chaque
ligne indique si la classe i est reconnue ou non par exemple) :
hΘ(x)=⎡⎢
⎢
⎢
⎢
⎢⎣hΘ(x)1hΘ(x)2hΘ(x)3hΘ(x)4⎤⎥
⎥
⎥
⎥
⎥⎦
On parlera donc plus généralement de hΘ(x)k comme étant le kième résultat dans la couche de sortie
.
Comme pour d'autres algorithmes de ML, avant de prédire, le réseau
doit être "entraîné" (trained) en 2 phases à répéter jusqu'à convergence :
- pour chaque ligne de données (i de 1 à m)
- Propagation avant pour calcul du coût (erreur de prédiction)
- Rétro-propagation si besoin, pour mise à jour des paramètres en
conséquence.
Exemples
Des exemples de RN sont :
- les FNN : RN à propagation avant
uniquement (perceptrons). Ils peuvent être :
- mono-couche (perceptron simple) pour classifier linéairement (2 classes de sorties possibles
uniquement).
- multi-couches ou "profonds" (DNN).
- les RNN
Notes
- Inspiré des neurones biologiques.
- L'apprentissage d'un RN peut être long. Une méthode plus rapide peut être la SVM.