Thématiques principales

Affichage des articles dont le libellé est hessien. Afficher tous les articles
Affichage des articles dont le libellé est hessien. Afficher tous les articles

lundi 25 juin 2018

IA : Intelligence artificielle

En mars dernier nous avions commencé à évoquer quelques notions mathématiques indispensables à la compréhension de l'implémentation de l’IA comme les vecteurs, les matrices ou les fonctions de calcul d’erreur (comme l’erreur quadratique) [1]. Nous avions aussi évoqué la relation que le domaine de l'Intelligence Artificielle pouvait avoir avec le domaine de l’automatique [2]. Aujourd’hui nous allons parfaire ce tour d’horizon des bases de l’IA en nous intéressant un peu plus aux origines de l’IA.

Un peu d'histoire

Pour parler de l'IA, je vous propose avant tout de revenir aux origines de l’informatique. Alors bien sûr, nous allons évoquer Alan Turing et son fameux article de 1950 sur l’intelligence dans le calcul informatique, soulevant la question : les machines pensent elles ? [3] Mais avant cela, il faut aussi évoquer brièvement, tout comme Turing l’a fait lui même, les origines de l’informatique avec la Machine de Manchester de Charles Babbage [4] qui fut le premier à élaborer une machine capable de calcul. Celle ci était certes mécanique (et non électronique) et partiellement fonctionnelle mais déjà à cette époque, il a été possible de penser des machines capable de réaliser des tâches équivalentes a celles réalisées par l'homme. En effet, cette machine permettait entre autre la mise en œuvre de calcul analytique à partir de carte perforée (à l’image de nos disquettes des années 80) ouvrant alors le champs de l'automatisation que nous connaissons aujourd'hui.



A la suite de Charles Babbage, (et la aussi cité par Alan Turing), il est intéressant de savoir que la première personne à utiliser et étudier cette machine fut une femme, Lady Ada Lovelace [5] considérée aujourd’hui comme la première personne à avoir développé un programme “informatique”. Celle-ci, intervient là aussi de façon significative dans la réflexion de Alan Turing lorsqu’elle conclut (je me permets peut être abusivement de résumer) que les machines ne feront que ce pour quoi elles ont été programmé.

En un sens elle n'avait pas tort mais Turing, dans son article (et c’est peut être la son génie), verra dans les capacités offertes par l'électronique beaucoup plus de potentiel et de possibilité. A la décharge de Ada Lovelace, bien que contemporaine de Georg Ohm, et de la seconde révolution industrielle qui verra exploser l’utilisation de l'électricité, il lui aurait encore fallu attendre le tube électronique au début du siècle (1900) dernier pour commencer à pouvoir imaginer ce que verra 50 ans plus tard Turing

Bien sur, avant cet article, la science fiction avait déjà évoqué le concept d’intelligence artificielle et les conséquences de machines pensantes, comme par exemple Issa Asimov, lorsqu'il formula les 3 lois de la robotique [6] soulevant ainsi la question de la problématique morale dans laquelle l’homme pourrait se trouver si un jour les machines devenaient capables d’intelligence et de réflexion.

Approche scientifique

Pourtant l’article de Turing marqua un basculement car, à partir de celui-ci, la question de l’intelligence des machines et de leur capacité à apprendre et penser s’est posée de façon plus formelle auprès de la communauté scientifique. Il proposa le test d'imitation aujourd’hui connu sous le nom de test de Turing, pendant lequel, une IA est évaluée au travers une discussion à l’aveugle afin de déterminer si celle-ci est humaine ou non. Bien sur ce qui est évalué, comme tout bon protocole expérimental, est le taux statistique de réussite à duper un humain comparé a ce que serait capable de faire un véritable humain (et oui car il est possible aussi qu’un humain ne soit pas crédible en tant qu’humain… le fameux faux positif, nous y reviendrons quand nous traiterons du bayesianisme)

Il est évident que ce test comporte de nombreuses limites car effectivement, réussir ce test ne permet pas forcément de se convaincre que l’IA, est réellement capable de penser, d'élaborer une réflexion, juste qu’elle en donne une impression suffisante pour donner le change. Mais alors qu'est ce que l'IA?

Une définition de l’IA

Tout d'abord distinguons L'Intelligence artificielle et UNE intelligence artificielle. Le premier est l'ensemble des théories permettant la mise en œuvre de la seconde, c'est à dire une entité capable de simuler la pensée [23]. Cette définition reste cependant assez vague sur la notion de simulation. Est ce être capable de mimer une pensée comme un être humain comme le propose Turing dans son article ? Finalement si nous reprenons son test, celui ci ne permet que d'évaluer et valider la conséquence possible d'être une chose pensante, rien ne dit que d’autres solutions ne pourraient amener à la même conclusion sans que ces solutions soient des entités pensantes.

Tout cela est finalement très philosophique mais ces points ont le mérite de soulever des questions sur la nature même de la pensée, voir de la conscience [7, 8]. Ainsi il sera possible de distinguer deux types d'intelligences artificielles, celles dites faibles (qui ne fait que mimer la pensée mais suffisamment pour nous tromper) celles dites fortes, qui elles pensent vraiment et dont le statut est clairement a redéfinir. Nous reviendrons sur ces deux concepts mais il est à noter qu’à l'heure d'aujourd'hui seul le premier type d'IA existe.

De Turing a aujourd'hui

Suite à l'article de Turing, l’IA a été très en vogue avec un engouement qui a eut malgré tout des hauts et des bas en sautant de découvertes prometteuses en désillusion. Elle s’est construite sur différents domaines, la mathématique, l’informatique, l’automatique et la robotique.

Dans un premier temps, elle a fait émerger des domaines plus accessibles à une mise en œuvre comme les systèmes experts [17] ou la logique floue issue de l'automatique (nous reviendrons sur la logique flou dans un autre article). Nous avions déjà traité dans l'article [9] les systèmes experts. Pour rappel, ces derniers ont la particularité de réifier la connaissance des experts des domaines par la mise en œuvre d'un langage de règles (porté par du Lisp [10] ou Prolog [11] par exemple). Cette approche, a permit des avancés majeures dans le domaine médical en fiabilisant les processus de diagnostic [12]. Pourtant ces approches, bien que performantes, n'ont pas eut le succès escompté à cause d'une réception assez peu positive du public. Leur règne aura pourtant duré de 1969 à 1993. Aujourd'hui les systèmes experts n'en ont pas pour autant disparu. Des Framework tels que Drools [13] continuent d'être largement employés.

Face à cette désillusion au cours des années 90, la recherche en IA a su réorienter ses ressources en redécouvrant le modèle neuromimétique [14], exprimé par McCulloch et Pitts en 1943, mais considéré à l'époque comme trop complexe a mettre en œuvre. Ce modèle donna à la recherche en IA un nouveau souffle qui cependant fut de courte durée à cause des moyens et solutions techniques encore trop limités. Cependant ce regain d’intérêt a profité a d'autres approches qui a l'instar de l'idée que l'observation de la nature pouvait permettre l'élaboration de nouvelles formes d'IA, permis, dans les années 2000, le renouveaux d'algorithmes tels que les algorithmes de vie artificielle [15], les algorithmes génétiques [16], les systèmes multi-agents [17] ou le Machine Learning qui peinait a émerger depuis 1980 [21] mais qui profita de l'explosion du BigData pour redevenir un incontournable du traitement des données.

Déclinaison de l'IA



L'IA est donc un domaine vaste composé donc principalement d'un coté des systèmes experts et de l'autre ce que l'on appelé le Machine Learning.

La machine Learning est un sous domaine de l'intelligence artificielle composé d'un ensemble d'approches et techniques mathématiques permettant la mise en œuvre d'algorithmes et de structures simulant des processus d'apprentissages.

Nous ne traiterons pas ici du contenu de ces différents algorithmes et vous invite pour cela sur d'autres futurs articles cependant, nous pouvons les lister. Le machine Learning se subdivise en différentes catégories [18, 19, 20, 21] guidées par le mode d'apprentissage ou les structures logiques mise en œuvre.Ainsi, de façon non exhaustive, nous trouverons donc les différents types d'apprentissages suivant:

  • Supervisé guidé par des algorithmes et structure de type:
    • Régression linéaire ou logistique 
    • Descente de gradient  
    • Régression polynomiale 
    • Séparation a vaste marge (machine à vecteurs de support) 
    • Arbre de descision 
    • Classification linéaire ou non linéaire 
    • Réseau de neurone 
    • Naïve bayes
  • non-supervisé guidé par des algorithmes et structure de type:
    • Foret aléatoire 
    • Clustering et réduction de dimension 
    • SVD 
    • Analyse par composante principale (a noyau ou non) 
    • Règles
  • Par renforcement 
  • Semi-supervisé

Enfin depuis 2014, une approche différente des réseaux de neurones a été proposée par Yann Lecun [24] : le Deep Learning [28]. Ainsi, âpres avoir travaillé depuis les années 80 sur les réseaux de neurones, et proposé différentes améliorations de leur algorithme (par exemple sur la back propagation en 99 [25]), Yann LeCun a proposé la mise en abîme des couches des réseaux de neurones en multipliant leur nombre et leur type (de convolution, de filtrage, de réduction de dimension, etc.) et améliorant alors significativement leur efficacité.

Objectifs

Le but de cet article n'est pas d'entrer dans le détail des techniques de ML ni du DeepLearning (ceci sera l'objet d'articles futur), mais d'en présenter surtout l'historique et les champs d'applications. Ainsi il faut garder a l'esprit que désormais, il faut faire avec l'IA dans notre quotidien, et pour ceux qui ne sont pas encore convaincu, il suffit de regarder la cascade d'innovations majeures menant aux dernières avancées de l'IA connues aujourd'hui: Alpha Go [26], Google Home ou plus récemment Alexa de Amazon et bien d'autres [27].

Pour preuve, il suffit juste de penser aux algorithmes de recommandations des vidéo Youtube, les systèmes de notations de films chez NetFlix, ou encore les outils de reconnaissance vocale dans votre téléphone Androïde ou Apple.

L'IA est aujourd'hui partout et sous de multiples forme. Elle va aussi servir [29] dans l'aide à la conduite ou même dans la mise en œuvre de système de conduite autonome. Elle était déjà présente dans le domaine médical via les systèmes experts mais les réseaux à base de DeepLearning deviennent maintenant incontournables en aidant au dépistage des cancers.

En fait le champs applicatif de l'IA est partout ou la, nous, être humains, avons une activité [30] dite classique (par exemple et tout betement le tri de CV [31]).

Conclusions

Nous arrivons au terme de cet article. J’espère qu'il aura été intéressant autant pour vous que pour moi car la je sors un peu de mes habitudes en traitant plus de l'historique que de techniques. Je n'ai pas beaucoup parlé des concepts d'IA faible et d'IA forte, juste évoqué, mais à la lecture de cet article, je pense qu'il n'est pas nécessaire d'en dire grand chose a part qu'aujourd'hui tout ce que nous entendons par IA, est en fait de l'IA faible et que l'IA forte (celle doté de conscience et qui détruira l'humanité ^^) n'est pas encore la (je n'ai pas dit que le sujet n'est pas d'actualité mais disons que techniquement, il nous faudra encore quelques décennies de recherche).

Références

[1] https://un-est-tout-et-tout-est-un.blogspot.com/2018/03/notions-de-mathematiques-elementaires.html
[2] https://un-est-tout-et-tout-est-un.blogspot.com/2018/04/ia-principe-de-lautomatique.html
[3] https://www.csee.umbc.edu/courses/471/papers/turing.pdf
[4] https://fr.wikipedia.org/wiki/Charles_Babbage
[5] https://femmessavantes2.pressbooks.com/chapter/ada-lovelace-mathematicienne-1815-1852/
[6] https://fr.wikipedia.org/wiki/Trois_lois_de_la_robotique
[7] https://www.youtube.com/channel/UC0NCbj8CxzeCGIF6sODJ-7A
[8] https://www.youtube.com/channel/UCqA8H22FwgBVcF3GJpp0MQw
[9] https://un-est-tout-et-tout-est-un.blogspot.com/2018/01/ia-les-systemes-experts-drools.html
[10] http://lisp-lang.org/
[11] http://www.swi-prolog.org/
[12] https://en.wikibooks.org/wiki/Expert_Systems/MYCIN
[13] https://www.drools.org/
[14] http://www.cse.chalmers.se/~coquand/AUTOMATA/mcp.pdf
[15] https://fr.wikipedia.org/wiki/Vie_artificielle
[16] http://souqueta.free.fr/Project/files/TE_AG.pdf
[17] https://www.inprincipio.xyz/systemes-experts/
[18] https://dzone.com/articles/deep-dive-into-machine-learning?edition=334840&utm_source=Weekly%20Digest&utm_medium=email&utm_campaign=Weekly%20Digest%202017-11-08
[19] https://www.datasciencecentral.com/profiles/blogs/decoding-machine-learning-methods?utm_content=bufferfd5b1&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer
[20] https://dzone.com/articles/artificial-intelligence-vs-machine-learning-vs-dee?edition=343095&utm_source=Daily%20Digest&utm_medium=email&utm_campaign=Daily%20Digest%202017-12-05
[21] https://dzone.com/articles/demystifying-ai-machine-learning-and-deep-learning
[22] https://dzone.com/articles/machine-learning-algorithms-which-one-to-choose-fo?edition=334817&utm_source=Daily%20Digest&utm_medium=email&utm_campaign=Daily%20Digest%202017-10-30
[23] https://fr.wikipedia.org/wiki/Intelligence_artificielle
[24] https://www.nature.com/articles/nature14539
[25] http://yann.lecun.com/exdb/publis/pdf/lecun-98b.pdf
[26] https://deepmind.com/research/alphago/
[27] https://www.business2community.com/trends-news/10-companies-using-machine-learning-cool-ways-01889944#tglOfs28u8HMalfU.97
[28] https://medium.freecodecamp.org/want-to-know-how-deep-learning-works-heres-a-quick-guide-for-everyone-1aedeca88076
[29] https://www.mathworks.com/discovery/deep-learning.html?s_v1=21617&elqem=1711045_EM_WW_17-11_COMM-GOV-DIGEST_NEWSLETTER_DEFAULT&elqTrackId=05e1f66444b94d7c9517446750fe547d&elq=070b93472b5b4eaab436c04dbb819624&elqaid=21617&elqat=1&elqCampaignId=7021
[30] https://dzone.com/articles/effective-learning-the-near-future-of-ai-1?edition=334921&utm_source=Daily%20Digest&utm_medium=email&utm_campaign=Daily%20Digest%202017-11-16
[31] https://dzone.com/articles/cv-r-cvs-retrieval-system-based-on-job-description?edition=333604&utm_source=Daily%20Digest&utm_medium=email&utm_campaign=Daily%20Digest%202017-10-17
[32] https://dzone.com/articles/ai-glossary?edition=306214&utm_source=Daily%20Digest&utm_medium=email&utm_campaign=dd%202017-07-04

samedi 3 mars 2018

IA: Notions de mathématiques élémentaires pour l'IA

Dans la perspective de faire une série d’articles sur l’IA, quelques notions mathématiques vont être abordés et donc nécessaires. J’avoue que j’ai eut du mal à écrire cet article car je ne sais pas si je dois me borner a juste présenter les quelques notions dont nous avons besoin ou si il faut partir dans des explications plus profondes afin de mieux en comprendre les mécanismes.

Alors ma première idée était de présenter de façon théorique les mathématiques sous jacente au machine learning et au deep learning cependant, bien que les quelques outils essentiels se résument globalement à la manipulation de vecteur, de l’utilisation du calcul matriciel, des combinaisons linéaires, d’algo d’apprentissage, des dérivées partielles (de fonction de coûts, d’erreurs quadratiques) et quelques notions en probabilités, cela fait énormément de base théorique à développer.

Or même si l’envie y est, je n’ai pas forcément le temps de développer tout cela. En fait il faudrait globalement replonger dans la moitié du programme de math de classe prépa, et si d’une part, la masse est conséquente, je ne pense pas que cela soit franchement pertinent pour aborder ensuite ce qui nous intéresse vraiment : l’IA.

Deja que globalement, en employant les frameworks adéquats du domaine, aujourd’hui, une bonne partie même des aspects mathématiques peuvent être masqués. Et si l’on a une bonne connaissance du comportement que l’on peut attendre de tel ou tel algo ou fonction de coût, il est presque inutile d’aborder ces sujets. Cependant, ceci est une vision très réductrice et je pense qu’une connaissance même succincte de la forme de ces algorithmes et que savoir quels sont les mécanismes de calcul sous jacent est un plus pour parfaire et optimiser nos choix sur le traitement des données et le choix des modèles à employer.

Partie Espace vectoriel

Bien nous allons aborder les bases supportant le domaine du machine learning. en l'occurrence ici les espaces vectoriels. Ne partez pas en courant, c’est juste pour dire que l’on a utiliser des vecteurs et des matrices!

Pour aborder le sujet, nous considérerons dans la suite de l'article deux espaces vectoriels
et

de base respectivement
et

Les vecteurs

Ainsi on appellera vecteur tout triplet
noté

définie dans tel que


ou de façon généralisée:


Par convention on pourra noter le vecteur comme suit (notation vectorielle) :


La définition du vecteur que nous avons utilisé précédemment par la combinaison linéaire des éléments de avec les vecteurs de base va nous permettre plein de chose.

La multiplication par un scalaire tel que:


L’addition de deux vecteurs:


On peut évidement évoquer le produit scalaire ou le produit vectoriel (souvent vu en géométrie euclidienne et utile en mécanique) mais ceux ci ne nous apporteront pas immédiatement grand chose a part dans les Machines a vecteurs de support (SVM)[1] mais nous y reviendrons.

Pour introduire le produit scalaire, il nous faut d'abord la notion de projection. Ainsi la projection d'un vecteur sur un autre, permet de construire un nouveau vecteur dirigé par normalisé [2] tel que:


Ainsi si l'on considère le produit scalaire , défini dans la même base alors on a un valeur scalaire telle que:


ou plus habituellement


A noter que dans le cas ou les deux vecteurs sont définis dans des base differentes, il sera nécessaire d'appliquer une transformation a l'un des deux vecteur afin que celui ci soit définit dans la même base.

Pour cela, il est nécessaire de définir les combinaisons linéaires de passage de la première base vers la seconde (faire la réciproque permettra d'obtenir le résultat dans la base initiale). Pour cela, nous verrons que l'utilisation des matrices, bien que pas forcement nécessaire, sera d'une grande aide.

Maintenant si l'on considère le produit vectoriel , défini dans la même base alors on obtient un nouveau vecteur tel que:


avec les propriétés suivantes:

est orthogonal a et . (leur produit scalaire est nul) formant une base direct.

Les matrices

Considérons toujours les deux espaces vectoriels précédemment donnés munis de leur base respective. Considérons l'application:


Ainsi tous les vecteurs de admettent une décomposition selon un ensemble de vecteurs de tel que les vecteurs de base on a:


On notera alors M l'ensemble des paramétres m organisés selon une grille a i ligne et j colonne:


Ainsi on a pour tous les vecteurs et de et , les matrices colonne V et U telle que:


Nous ramenant au système d’équations:



Ceci définissant les bases sur la nature des matrices, je vous invite a vous projeter dans quelques documents plutôt simple a comprendre afin d'en percevoir le très grand potentiel de cet outil [3].

On peut donc maintenant passer aux opérations de base sur les matrices que sont les additions et la multiplication (attention celle ci n'est pas commutative). Considérons alors pour la suite les matrices 3X3, A et B .

L'addition matricielle:

Multiplication matricielle

Partie statistique

Maintenant que nous avons traités des structures nécessaires au machine learning, intéressons nous aux algorithmes. Globalement, nous avons vu ce que nous allions manipuler pour l'IA mais il reste encore les traitements particuliers qui peuvent être utiliser.

Par exemple, il nous faudra être capable d’évaluer l'erreur que fait notre modèle de machine learning en utilisant par exemple l'erreur quadratique moyenne ou (MSE, mean square error). Celle-ci étant utilisé très souvent sous differentes formes et déclinaison afin d'une part mesurer la performance des modèles et procéder a leur apprentissage, il est intéressant d'en présenter quelques notions.

L'erreur quadratique moyenne permet la mesure globale de l’écart entre la valeur désirée et celle obtenue calculé sous la forme d'une moyenne. Celle ci est construite de façon quadratique pour que les erreurs ne se compensent pas autour de la moyenne.

L'erreur moyenne se définit tel que:


L'erreur quadratique moyenne se définit tel que:


A noter que généralement on utilise l'erreur quadratique sans la racine puisque utiliser de façon continue sur l'ensemble des données, la mesure de performance reste homogène. La notation chapeau représente la valeur estimé par le modèle (donc la fonction dépendante des paramètres du modèle qui sont à ajuster), en opposition avec celle réelle.

Sur la base de l'erreur quadratique pourront etre ajouté divers paramètres complémentaires permettant un ajustement dynamique des paramètres du modèle. L'apprentissage sera alors plus ou moins efficace et ou rapide, sachant que généralement, ces deux propriétés seront assez antagoniste.

Enfin de façon a permettre un apprentissage efficace, on procédera au calcul du gradient de l'erreur (c'est a dire l'ensemble des dérivés de la fonction selon l'ensemble de ses paramètres). Celle ci aura l’intérêt de garantir la convergence de la procédure d'apprentissage en garantissant l'orientation de la correction a appliquer au fils des itérations d'apprentissage.

Sans entrer dans le détail, si l'on considére la fonction suivant:


alors le gradient se notera:



et son hessien (le gradient du gradient) formant la matrice hessienne:


Voila, je ne pense pas que cette liste est exhaustive des outils mathématiques nécessaires a l'IA mais pour tous ceux manquant (comme les fonctions d'activations possible), nous prendrons le temps de les explicités le moment venu au cas par cas. En tout cas nous voyons rapidement que le domaine de l'IA nécessite de bonnes et larges bases théoriques comme technique (nous le verrons dans les prochains articles).

Références:

[1] https://zestedesavoir.com/tutoriels/1760/un-peu-de-machine-learning-avec-les-svm/
[2] https://fr.wikipedia.org/wiki/Norme_(math%C3%A9matiques)
[3] https://webusers.imj-prg.fr/~nicolas.laillet/Methodo1.pdf