Want to make creations as awesome as this one?

Transcript

Machine Learning

Réseaux des neurones et modéle Perceptron

Sommaire

INTRODUCTION

MODELE

REGRESSION S.

PERCEPTRON

CHAPITRE 2

TYPES ML

CHAPITRE 3

CHAPITRE 1

CONCLUSION

EXEMPLES

EXEMPLES

INTRODUCTION

01

Introduction Machine learning

Fonctionnement et Définitions :

MACHINE LEARNING

"Machine Learning is the science of getting computers to learn without being explicitly programmed.” Arthur Samuel, 1959.

Le Machine Learning est un domaine d’étude de l’IA qui vise à donner aux machines la capacité d’apprendre. Cette technologie très puissante a permit le développement des voitures autonomes, de la reconnaissance vocale, et de tous les systèmes dits « intelligents » depuis les 10 dernières années.

+ INFO

Le machine learning peut être vu comme une branche de l’intelligence artificielle. En effet, un système incapable d’apprendre peut difficilement etre considérée comme intelligent. La capacite a apprendre et a tirer parti de ses experiences est en effet essentielle a un système conçu pour s’adapter a un environnement changeant.

Aujourd’hui, nous avons une façon plus mathématique de définir le Machine Learning. Nous appelons ça Apprentissage Statistique (ou apprentissage automatique) car la majorité des algorithmes utilisés en Machine Learning sont en réalité des modèles statistiques développées à partir de données. Parmi ces modèles, on retrouve par exemple les arbres de décision, la régression linéaire, ainsi que les modèles Bayésien.


Ingrédients du machine learning

Le machine learning repose sur deux piliers fondamentaux :


•D’une part,les données,qui sont les exemples à partir duquel l’algorithme va apprendre.

•D’autre part, l’algorithme d’apprentissage, qui est la procédure que l’on fait tourner sur ces données pour produire un modèle.

On appelle entraînement le fait de faire tourner un algorithme d’apprentissage sur un jeu de données.

+ INFO

Ces deux piliers sont aussi importants l’un que l’autre. D’une part, aucun algorithme d’apprentissage ne pourra créer un bon modèle à partir de données qui ne sont pas pertinentes – c’est le concept garbage in, garbage out qui stipule qu’un algorithme d’apprentissage auquel on fournit des données de mauvaise qualité ne pourra rien en faire d’autre que des prédictions de mauvaise qualité. D’autre part, un modèle appris avec un algorithme inadapté sur des données pertinentes ne pourra pas être de bonne qualité.

eritat,

Types d'apprentissage en ML

Apprentissage supervisé :

+ INFO

•L’Apprentissage Supervisé est utilisé pour développer des modèles prédictifs, c’est-à-dire des modèles capables de prédire une certaine valeur y en fonction de variables x1, x2, etc.

•Le nom « Apprentissage Supervisé » vient donc du fait que l’on supervise l’apprentissage de la machine en lui fournissant des exemples (x / y) à étudier.
•Les applications de l’Apprentissage Supervisé sont nombreuses. On peut les diviser en 2 catégories de problèmes : les Régressions, et les Classifications.

Pour développer de tels modèles, il faut en premier lieu fournir à la machine une grande quantité de données . On appelle cela un dataset (un jeu de données). Ensuite, on demande à la machine de développer une fonction d’approximation qui représente au mieux la relation présente dans nos données. Pour ça, on utilise un algorithme d’optimisation qui minimise les écarts entre la fonction et les données du dataset.

Les problèmes de Régression :

Les problèmes de Régression correspondent aux situations dans lesquelles la machine doit prédire la valeur d’une variable quantitative (variable continue).

Les problèmes de Classification :

Les problèmes de Classification correspondent aux situations dans lesquelles la machine doit prédire la valeur d’une variable qualitative (variable discrète). Autrement dit, la machine doit classer ce qu’on lui donne dans des classes.

Exemples : La reconnaissance vocale et la vision par ordinateur correspondent à des problèmes de classification. En effet, la machine apprend à classer les signaux sonores / images qu’elle reçoit dans différents paquets de mots.

1/ Le Dataset :

Le couple de variable (x,y) telle que :
• La variable 𝒚 porte le nom de target (la cible). C’est la
valeur que l’on cherche à prédire.
• La variable 𝒙 porte le nom de feature (facteur). Un facteur
influence la valeur de 𝒚, et on a en général beaucoup de
features (𝒙𝟏, 𝒙𝟐, ... ) dans notre Dataset que l’on regroupe dans une matrice X
2/ Le Modèle et ses paramètres :
En Machine Learning, on développe un modèle à partir de ce Dataset. Il peut s’agir d’un modèle linéaire ou bien un modèle non-linéaire .

3/ La fonction cout :
Un modèle peut nous retourner des erreurs t. On appelle Fonction Coût l’ensemble de ces erreurs (Erreur quadratique moyen).

4/ Algorithme d'apprentissage (Descente du gradient) :
l’objectif central en Supervised Learning, c’est de trouver les paramètres du modèle qui minimisent la Fonction Coût. Pour cela, on utilise un algorithme d’apprentissage.

• Fonctionnement de l'Apprentissage supervisé (non supervisé)en ML :

Supervised Learning

+ INFO

Dans l’apprentissage non-supervisé, on dispose ainsi d’un Dataset (𝑥) sans valeur (𝑦), et la machine apprend à reconnaitre des structures dans les données (𝑥) qu’on lui montre.

Insupervised Learning ( Apprentissage non supervisé) :

Régression linéaire simple (logistique) :

Créer un modéle linéaire pour prédire les paramétres .

+ NFO

• Nous allons voir comment développer un modèle de Machine Learning à partir d’un Dataset à une seule variable x1 (que l’on notera simplement x). On aura donc un Dataset avec m exemples et n = 1 « feature » variable.
On va développer un modéle linéaire f(x) =ax+b.
• La fonction cout : pour mesurer les erreurs entre les prédictions f(x) et les valeurs y du Dataset, on calcule le carré de la différence : (f(x)−y)2 la norme euclidienne .
• J(a,b)= 1 /2m ∑(ax(i)+b−y(i))2
==>On dit que c’est une fonction convexe.Cette propriété est très importante pour s’assurer de converger vers le minimum avec l’algorithme de la descente de gradient.
• La Descente du gradient :
il s’agit de laisser la machine apprendre quels sont les paramètres qui minimisent la Fonction Coût,
c’est-à-dire les paramètres qui nous donnent le meilleur modèle.
==>Notre objectif final : Trouver les paramètres a et b qui minimisent J(a,b).
Pour cela, nous allons choisir a et b au hasard puis allons utiliser en boucle la descente de gradient
pour mettre a jour nos parametres dans la direction de la Fonction Coût la plus faible.







Lorem ipsum dolor sit amet consectetur adipiscing, elit dignissim arcu primis quam nec, aptent lectus morbi rutrum metus. Nisl dictumst cum varius pulvinar nibh vestibulum mauris bibendum, odio nunc nam fusce est condimentum morbi, tellus integer etiam dui magna lacinia convallis. Primis eu velit tempor malesuada vel ad augue mollis integer, magnis facilisis ut maecenas litora commodo hendrerit hac, molestie imperdiet posuere egestas lobortis gravida proin massa.

Sed dui pulvinar rhoncus class id consequat morbi nullam senectus, velit curae purus ultricies nostra molestie proin vel, sagittis dictumst quis felis eros ante magna taciti. Vel arcu massa tempus sagittis at molestie tincidunt nam, magna torquent cum fames magnis nibh turpis.

Etape 1 : Les paramétres

Etape 2 : calcul dérivées partielles

Etape 3 : Vectorisation

•𝒂=𝒂− α𝑱(𝒂,𝒃)/ 𝝏𝒂


•𝒃=𝒃− α𝑱(𝒂,𝒃) /𝝏𝒃
à chaque itération de cette boucle, les paramètres 𝒂 et 𝒃 sont mis à jour en soustrayant leur propre valeur à la valeur de la
pente 𝝏 𝑱(𝒂,𝒃)/𝝏... multipliée par la distance à parcourir α . On appelle α la vitesse d’apprentissage (Learning rate).

Dérivée selon le paramètre 𝒂 :
• 𝝏𝑱(𝒂,𝒃) /𝝏 𝒂 = 1/𝒎∑(𝒂𝒙(𝒊) +𝒃 − 𝒚(𝒊) ) ×𝒙(𝒊)
Dérivée selon le paramètre 𝒃 :
•𝝏𝑱(𝒂,𝒃)/𝝏 𝒃 = 𝟏 /𝒎 ∑( 𝒂𝒙(𝒊) + 𝒃 − 𝒚(𝒊) )


Dans la pratique, on exprime notre Dataset et nos paramètres sous forme matricielle, ce qui simplifie beaucoup les calculs. On créer ainsi un vecteur 𝜽 = (𝒂 ,b) ∈ R 𝒏+𝟏 qui contient tous les paramètres pour notre modèle, un vecteur 𝒚 ∈ R𝒎×𝟏 et une matrice 𝑋 ∈ R𝒎×𝒏 qui inclut toutes les features 𝒏. Dans la régression linéaire, 𝒏 = 𝟏.

𝜕 𝐽(𝜃)/𝜕𝜃= 1/m 𝑋𝑇.( 𝐹(𝑋) − 𝑌)

+ INFO

Si la vitesse est trop lente, le modèle peut mettre longtemps à être entraîné, mais si la vitesse est trop grande, alors la distance parcourue est trop longue et le modèle peut ne jamais converger. Il est important de trouver un juste milieu.

+ INFO

Note : Il s’agit simplement de la dérivée d’une fonction composée :

(𝑔 ∘ 𝑓)= 𝑓× 𝑔′ ∘ 𝑓

Avec : 𝒇 = 𝒂𝒙 + 𝒃 − 𝒚 et 𝒈 = (𝒇)𝟐

En dérivant, le carré tombe et se simplifie avec la fraction 1/2m pour devenir1/m et 𝒙(𝒊) apparait en facteur pour la dérivée par rapport à 𝑎.

+ INFO

Le 𝐿𝑒𝑎𝑟𝑛𝑖𝑛𝑔 𝑟𝑎𝑡𝑒 𝛼 prend le nom d’hyper-paramètre de par son influence sur la performance finale du modèle (s’il est trop grand où trop petit, la fonction le Gradient Descent ne converge pas).

Introduction

Le Deep learning ou apprentissage profond est l’une des technologies principales du Machine learning. Avec le Deep Learning, nous parlons d’algorithmes capables de mimer les actions du cerveau humain grâce à des réseaux de neurones artificielles. Les réseaux sont com- posés de dizaines voire de centaines de «couches» de neurones, chacune recevant et interprétant les informations de la couche précédente

Fonctionnement des neurones

le réseau de neurones de l’IA est un groupe d’algorithmes mathématiques produisant une donnée de sortie (output) à partir des données d’entrée (input).Ces algorithmes peuvent être groupés pour produire les résultats souhaités.

Ils sont entrainés avec une multitude de données d’entrées couplée à leurs données de sortie respectives.

+ INFO

Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.

+ INFO

• Les principales composantes du réseau de neurones :

1/ Neurones : ensemble de fonctions

Ils prennent une donnée d’entrée et produisent une donnée de sortie. Un certain nombre de neurones sont groupés en couches (ou layers). Tous les neurones du même groupe remplissent un type de fonction similaire.

2/ Couches : groupement de neurones

Les couches (ou layers) contiennent des neurones et aident à faire circuler l’informa- tion. Il existe au moins deux couches dans un réseau de neurones : la couche d’entrée (input layer) et la couche de sortie (output layer).

3/ Poids et biais : valeurs numériques

Les poids et biais sont des variables du modèle qui sont mises à jour pour améliorer la précision du réseau. Un poids est appliqué à l’entrée de chacun des neurones pour calculer une donnée de sortie. Les réseaux de neurones mettent à jour ces poids de manière continue.

Les poids et les biais sont donc en quelque sorte des valeurs d’auto-apprentissage de nos réseaux de neurones.



Les réseaux de neurones

Deep Learning

Définition

Le perceptron est l’unité de base des réseaux de neurones. Il s’agit d’un modéle de classification binaire,capable de séparer linéairements 2 classes de points.Le perceptron est le premier algorithme proposé dans l’histroire des réseaux de neurones artificiels.

Fonction logistique : Sigmoïde


Dans les réseaux de neurones artificiels et biologiques, un neurone ne sort pas seule- ment son entrée. Au lieu de cela, il y a une autre étape, appelée une fonction d’activation

a(z) = 1 /1+e−z
Elle est représentée par la courbe suivante et permet de convertir la sortie z en une probabilité a(z) et qui donne deux valeurs différentes soit 0 ou 1 .

+ INFO

Le perceptron est une représentation graphique d’une fonction mathématique composée de deux parties. À gauche, le perceptron calcule la somme pondérée des entrées xi, la partie droite est une fonction appelée fonction d’activation choisie en fonction du type de réseau. La fonction de notre modèle du réseau est donnée par :

z(x1,x2)=w1x1 +w2x2 +b

z = b +∑wi.xi

Chaque poidswi , peut être interprété comme signifiant l’influence relative de l’en- trée sur laquelle il est multiplié par xi. Le terme b dans l’équation est souvent appelé le biais, car il contrôle la façon dont le neurone est prédisposé à déclencher un 1 ou un 0, quel que soit le poids. Un biais élevée fait que le neurone nécessite une grande valeur en entrée pour produire un 1, un biais faible le permet plus facilement.



+ INFO

• Les principales composantes du réseau de neurones :

1/ Neurones : ensemble de fonctions

Ils prennent une donnée d’entrée et produisent une donnée de sortie. Un certain nombre de neurones sont groupés en couches (ou layers). Tous les neurones du même groupe remplissent un type de fonction similaire.

2/ Couches : groupement de neurones

Les couches (ou layers) contiennent des neurones et aident à faire circuler l’informa- tion. Il existe au moins deux couches dans un réseau de neurones : la couche d’entrée (input layer) et la couche de sortie (output layer).

3/ Poids et biais : valeurs numériques

Les poids et biais sont des variables du modèle qui sont mises à jour pour améliorer la précision du réseau. Un poids est appliqué à l’entrée de chacun des neurones pour calculer une donnée de sortie. Les réseaux de neurones mettent à jour ces poids de manière continue.

Les poids et les biais sont donc en quelque sorte des valeurs d’auto-apprentissage de nos réseaux de neurones.



Réseau de Neurone à 1 Neurone : Le Perceptron

• Fonction coût : Maximun de vraisemblance


En machine learning, une fonction coût (Loss Function) est une fonction qui per- met de quantifier les erreurs effectués par un modéle. Dans notre cas, c’est une fonction qui permet de mesurer les distances entre les sorties a(z) et les données y dont nous disposant.On la définit comme suit :


Logloss=−1/m ∑(yilog(ai)+(1−yi)log(1−ai))
But : Evaluer la performance de notre modéle.


• Descente de gradient :

Comme on a vu auparavant , c’est un algorithme d’apprentissage qui consiste à ajuster les paramétres w et b de façon à minimiser les erreurs du modéle; càd minimiser la fonction cout (logloss)
Wt+1 = Wt − α. dL /dWt
On peut l'écrire sous forme : Wt+1 = Wt − α∇L(Wt)
avec :
•w = w − α. dL /dw
•b = b − α.dL /db

• Programmation d'un Neurone Artificiel

A l’aide des librairies numpy et sklearn on introduit notre Dataset(X,y) en fixant 2 features ainsi que 100 samples. On obtient le graphe ci dessous.
On introduit par la suite les fonctions du modéle comme suit :


On observe que la performance de notre modéle est égale à 0.88 ce qui signifie que les erreurs sont plutot minimisées , c’est ce q’uon remarque d’aprés la courbe qui converge vers le min.

Le Perceptron multi couches(MLP) :

On peut voir les neurones du perceptron multicouche comme une multitude de per- ceptron connectés entre eux.La particularité topologique de ce réseau est que tous les neurones d’une couche sont connectés à tous les neurones de la couche suivante. Chaque neurones a donc n entrées, n étant le nombre de neurones présent dans la couche précédente, et une sortie qui est envoyée à tous les neurones de la couche suivante.

• z(x1, x2) = w1x1 + w2x2 + b : Fonction affine
L’idée est de laisser la machine apprendre à faire son propre feature en- gineering en lui allouant des neurones dédiées à ça (preprocessing).
De cette maniére , en empillant plusieurs couches de neurones , on obtient un modéle non linéaires qui est capable d’apprendre à résoudre une trés grandes quantités de problémes.
On reformule les fonctions du modéle qu’on a vu avant et on obtient :
• z1 = w11x1 + w12x2 + b1
• z2 = w21x1 + w22x2 + b2
Les fonctions d’activation sont présentés comme suit :
• a1= 1 /1+e−z1
•a2= 1 /1+e−z2
Chaque neurones disposant de ses propres paramétres et leurs fonctionement est indépendant l’un de l’autre.On constate que la puissance du réseau augmente avec le nombre de neurone.
On peut rajouter autant de couches qui se base sur le même principe c’est à dire ; en prenant en entrée les activation issus de la couche précédente on peut construire ce qu’on appelle un réseau de neurone Deep Neural Network .





On peut résumer cette formule comme suit :

Z(1) =W(1).X+b(1)

Pour obtenir les ativations de cette première couche , il suffit de passer la matrice Z(1) au sein de la fonction d'activation

A(1) =1/1+ez(1)



ce qui nous retourne A(1) de même dimension que Z(1). Cette matrice A(1) peut être envoyée vers la deuxiéme couche de notre réseau telle que :

Z(2) =W(2).A(1) +b(2)

C'est la méthode du Forward propagation : elle nous permet de faire passer les données de la premiére couche successivement jusqu’à la dernière soit la sortie du neurone .

L’entrainement du réseau : Back propagation


• Back propagation : consiste à retracer comment la fonction cout évolue de la derniére couche du réseau jusqu’à la toute premiére.



Le Modéle

On va créer un réseau avec 2 couches en testant à chaque fois un nombre différents de neurones(2,8,32) pour regarder l’évolution de notre modéle . On obtient les résulats suivant :

Info

Watch

On commence par la fonction cout en remplaçant le paramétre A par le paramétre d’avant A(2) :

L = -1/m∑(ylog(A(2)) + (1 y)log(1 A(2)))

Ainsi pour les paramétres W et b on trouve 4 formule pour W(1) , W(2) , b(1) et b(2) : il suffit juste de remplacer les paramétres par celle d’avant:

W(2)=W(2)α.dL/dW (2

b(2) = b(2) α.dL/db(2)

W(1)=W(1)α.dL/dW (1)

b(1) = b(1) α.dL/db(1)

Il nous reste de calculer les dérivées partielles en utilisant la Back propagation en partant du même principe de remplacer les paramètres la fonctions d'avant pour obtenir les dérivées .

Commentaire : On remarque que l’apprentissage n’a pas été terminé puisque la fonction cout ne se stabilise pas . Pour l’exactitude , on remarque qu’elle augmente au fil du temps et peut toujours atteindre des bons niveaux , elle est en progression .La performance du modéle est plutot intéressante .

On va observer pour un nombre de neurone n1=32 :



On constate que plus le nombre de neurones augmente , meilleure est la performance de notre modéle , ainsi d’un autre coté plus on augmente le nombre plus la machine va mettre du temps à s’entraîner.

Conclusion

Lors d’un projet de machine learning , il est important de bien préparer notre Da- taset, en supprimant les défauts qu’il contient, en s’assurant qu’il représente des données provenant de la même distribution que pour l’application finale, et en comprenant en profon- deur le sens des données dont on dispose, ainsi on ne peut pas s’assurer que la performance de notre modéle ou bien les résultats sont toujours meilleures puisqu’on peut rencontrer deux types de problémes que l’on fait face en ML : Overfitting et Régularisation.


Thanks!