Prenons le temps de bien comprendre ces 2 lettres : IA

Prenons le temps de bien comprendre ces 2 lettres : IA

IA 101 – Où les premiers pas de l’Intelligence Artificielle

A l’heure où l’IA envahit les écrans et les conversations, nourrit de nouvelles angoisses sociétales et redéfinit la place de l’Homme dans les processus de création et de production, nous, professionnels du logiciel devons faire œuvre de pédagogie et de mise en perspective de cette Informatique Avancée.


 

 

 

 

 

 

“Saurons nous expliquer à notre petite cousine et à notre grand-mère

ce que sont l’Intelligence Artificielle et ses enjeux ?”

Et pour cela la compréhension des fondamentaux, en particulier celle des algorithmes appartenant à la grande famille IA, constitue notre valeur ajoutée et notre contribution aux débats.

  • Quelles sont les classes de problèmes couvertes par ces algorithmes ?
  • Quels sont les domaines d’usage et de validité de ces différents algorithmes ?
  • Pourquoi ces algorithmes, dont certains datent des années 40, connaissent-ils actuellement un regain d’intérêt ?

Par exemple, sur votre table de cuisine, il y a des petits pois et des billes de plomb. Comment les séparer ?

Les succès de l’IA connexionniste

La famille IA se structure en deux grandes branches – parfois complémentaires mais souvent rivales :

  1. L’IA symbolique (les neats) repose sur le raisonnement formel et la logique (moteur de règles, programmation par contraintes, systèmes experts…) qui garantissent une approche déterministe et des résultats explicables,
  2. L’IA connexionniste (les scruffies) (réseaux neuronaux, machine learning, deep learning…) utilise des approches statistiques, voire probabilistes, qui nécessitent de gros volumes de données d’apprentissage et ne permettent pas ‘d’expliquer’ les résultats obtenus.

les succes de l'ia connexionniste

Les récents progrès de l’IA sont liés à la branche connexionniste, à l’existence de gros volumes de données (issues de l’IoT ou des réseaux sociaux) et à la puissance de calcul disponible dans le Cloud.

Les méthodes de l’IA connexionniste sont de nature probabilistes et les résultats produits sont non formels et exprimés sous la forme d’un pourcentage de véracité (« il est probable à 80% que cette pièce sera en panne dans 3 mois »). On va pouvoir prédire mais sans forcément comprendre !

Pour aller plus loin sur les distinctions IA symbolique / IA connexionniste :
Olivier Ezratty : http://www.oezratty.net/wordpress/2018/que-devient-ia-symbolique/
Marvin Minsky : https://www.aaai.org/ojs/index.php/aimagazine/article/view/894/812

Les grands domaines d’applications de ces algorithmes IA connexionnistes sont :

La classification d’éléments. Identifier un spam, une tumeur.
La prédiction d’événements. Anticiper une prévision de panne.
La découverte de modèles et de relations cachées. Optimiser l’utilisation de ressources.
La détection d’anomalies de comportement. Détecter une tentative de fraude.

Premiers éléments d’algorithmie

Les variables prédictives : à partir desquelles on espère faire une prédiction, représentées par un vecteur X = {x1… xp}. Exemple x1= âge du client, x2=son domicile, x3= son niveau étude, ….

La variable cible : dont on souhaite prédire la valeur pour des éléments non encore observés. Représentée par Y qui peut-être une valeur quantitative (ie numérique) ou qualitative (ie un nom de catégorie, ou 0 ou 1). Exemple Y : probabilité de rembourser un crédit.

  • Pour une variable cible quantitative on utilisera des modèles dits de ‘régression’.
  • Pour une variable cible qualitative on utilisera des modèles dits de ‘classification’.

La fonction de prédiction :

La valeur observée Y dépend d’une fonction entièrement déterminée par les variables prédictives X et d’un bruit aléatoire : Y = FonctionDeterministe(X) + BruitAleatoire(X)

Cette FonctionDeterministe() et ce BruitAleatoire() resteront toujours inconnus. Ce que l’on cherche c’est une approximation – suffisamment bonne – de cette FonctionDeterministe() par une FonctionPrédiction(X) construite à partir des données observées. La fonction de prédiction peut être linéaire (exemple la régression linéaire f(x) = a1.x1 + … + an.xn) ou non linéaire (exemple les machines à vecteurs de support).

Il s’agit d’une approche résolument pragmatique et non académique.

Le Machine Learning (ML) permet d’automatiser la construction de la FonctionPrédiction() à partir d’un ensemble de données d’apprentissage.
La construction de la FonctionPrédiction() constitue la phase d’apprentissage du modèle.

Les stratégies d’apprentissage

Dans le Machine Learning (ML) on distinguera différentes stratégies d’apprentissage :

  • Un apprentissage supervisé avec des données et leurs résultats associés.
  • Un apprentissage semi-supervisé avec des données mais sans tous les résultats associés.
  • Un apprentissage non supervisé avec des données mais sans aucun résultat associé.
  • Un apprentissage par renforcement de capacités avec les règles mais sans les données.

Pour apprendre à un enfant à reconnaître une girafe il suffit de 4 photos.

Pour entraîner une IA il faut des centaines de milliers de photos.

Il faut disposer d’un gros volume des données d’apprentissage !

Source

Pour chacune de ces stratégies d’apprentissage, on dispose de plusieurs algorithmes pour construire les fonctions de prédiction correspondantes.

Apprentissage supervisé et semi-supervisé

Bayesian Statistics

Decision Trees

Forcasting

Neural Networks

Random Forest

Regression Analysis

Support Vector Machine (SVM)

Apprentissage non supervisé

Affinity Analysis

Clustering

K-Means

Nearest Neighbour Mapping

Self-Organizing Maps

Singular Value Decomposition

Apprentissage par renforcement de capacités

Artificial Neural Networks

Learning Automata

Makov Decision Process (MDP)

Q-Learning

Un algorithme possède son domaine d’utilisation (veut-on Prédire / Classifier / Identifier / Détecter), ses caractéristiques d’apprentissage (rapide, lent, avec plus ou moins de données d’apprentissage…) et ses performances (temps, mémoire, précision…).

« Quand on n’a qu’un marteau, tous les problèmes deviennent des clous… » Abraham Maslow

-> Pratiquer l’IA, c’est donc disposer d’une boite à outils d’algorithmes variés !

Exemple d’utilisation du Support Vector Machine :

« Sur votre table de cuisine, il y a des petits pois et des billes de plomb. Comment les séparer ? »

SVM nous suggère de changer de dimension pour trouver alors dans la nouvelle dimension un facteur discriminant qui n’est pas visible dans la dimension initiale.

De la table de cuisine (2D) mettre petits pois et billes de plomb dans une casserole d’eau (3D).

-> La gravité sera le facteur discriminant.

Les grandes étapes d’un projet IA – ML

  1. L’expression du besoin métier avec une question précise.
  2. La sélection d’un ou de plusieurs algorithmes IA (tous les problèmes ne sont pas des clous).
  3. L’entrainement de l’algorithme à partir des données d’apprentissage et la construction automatique de la fonction de prédiction.
  4. La validation de la fonction de prédiction sur des données de tests.
  5. L’exécution de la fonction de prédiction sur les nouvelles données.
  6. L’amélioration de l’algorithme avec les nouvelles données.

 

A suivre…

Node.js : de la performance pour les services web

Node.js : de la performance pour les services web

Créée en 2009, cette plateforme compatible avec les environnements Windows et Linux a conquis les développeurs Web expérimentés qui traitent un très grand nombre de requêtes même avec de tout petits volumes. Elle est de plus en plus utilisée par des grands comptes :

  • Ebay a developpé une passerelle HTTP basée sur Node.js.
  • LinkedIn se sert du framework comme interface pour ses applications mobiles.
  • Paypal a developpé un serveur pour tous les développements de leurs applications web. La migration d’une douzaine de ses applications a été amorcée.
  • General Electric utilise Node.js pour développer une interface utilisateur commune à toute l’entreprise.
  • Dow Jones a développé une large gamme d’outils qui tournent exclusivement sur Node.js dont la version mobile du Wall Street Journal.
  • 53% du trafic de Walmart est traité par Node.js.

Une prise en main rapide

Node.js contient une bibliothèque de serveurs HTTP intégrée permettant de faire tourner un serveur web sans recourir à une infrastructure externe lourde comme Apache. Il utilise la machine virtuelle V8 (V8 JavaScript engine), un moteur Javascript open source développé par Google. Parmi ses avantages, Node.js bénéficie d’une très bonne montée en charge, son langage (JavaScript) est connu de tous et rend cohérente la programmation côté serveur et côté client.

Des gains de performances spectaculaires

Malgré une maturité moindre que PHP par exemple, les performances notables de Node.js font qu’un grand compte comme Groupon a repensé son architecture pour des raisons de performance et de rapidité de développement.

“Les tests de performances en production sur du matériel identique ont montré que l’application Node.js était 35% plus rapide que son équivalent Java” Jeff Harrell, Directeur de l’ingénierie chez Paypal.

Un cas concret avec DELL France

GIGS France, entité service de DELL France, a choisi Node.js pour accompagner la filiale développement d’un grand nom du CAC 40 dans la mise en oeuvre d’une application Web métier remplaçant une solution bureautique vieillissante et limitée.

L’outil développé répond pleinement aux besoins importants de charge : 3 000 utilisateurs internes et plus de 50 000 externes. Il fonctionne en interopérabilité avec SharePoint et Office Web Application qui sont utilisés pour fournir les fonctionnalités de gestion électronique des documents de l’application.

Si vous désirez réellement donner un coup d’accélérateur à vos applications, venez donc consulter Apitech, qui se positionne en expert sur le sujet.

Modernisez l’interface web de votre messagerie

Modernisez l’interface web de votre messagerie

L’enjeu était de taille pour les équipes technique du MEDDE et du MLET qui devaient moderniser la suite collaborative Mélanie 2 basée sur Horde 3, afin de mieux servir leurs 55 000 agents. Il leur fallait une solution libre évolutive, devant faire face à de fortes contraintes de maîtrise des coûts, de déploiements et de maintien des conditions opérationnelles actuelles.

Accompagnés par Apitech, des tests de charge ont démontré d’excellentes performances en période de pointe : en moyenne, la charge était de 5 fois moins importante qu’avec Horde pour les mêmes services d’accès aux données personnelles et partagées (contacts, agendas, notes et tâches), de gestion de l’annuaire et du compte utilisateur. De plus, la plateforme Roundcube supporte 3 fois plus d’utilisateurs par serveur.

Roundcube repose sur une communauté active depuis près de 10 ans et compte parmi ses utilisateurs le Massachussets Institute of Technology (70 000 utilisateurs) ou l’hébergeur Gandi. Plus d’informations sur http://roundcube.net/.

Les points forts de Roundcube :

  • Une meilleure utilisation des ressources matérielles pour héberger plus d’utilisateurs.
  • Un produit modulaire facilitant l’intégration d’applications externes (plug-ins) et réduisant la complexité des changements de versions.
  • Une interface utilisateur fluide, moderne et personnalisable.

Devenez ActiveSync compliant avec Z-Push

Devenez ActiveSync compliant avec Z-Push

ActiveSync est un des protocoles de synchronisation mobile les plus utilisés. Contrairement à la plupart de ses concurrents, il est nativement présent sur la majorité des smartphones du marché. Il supporte le push pour tous les services synchronisés (e-mail, calendriers, contacts, …). De plus, la configuration sur les téléphones est simplifiée, grâce à des technologies comme l'”autodiscover”.

Z-Push est un projet open-source permettant de déployer une interface ActiveSync. Il est adaptable pour se connecter à un backend (serveur IMAP, webmail, messagerie atypique, …). La version 2 de Z-Push apporte le support d’ActiveSync 14. Cette nouvelle version permet notamment la gestion de politiques de sécurité sur le mobile (verrouillage du téléphone, cryptage des données, …).

Avec l’abandon annoncé par Google de leur serveur ActiveSync, le 31 juillet 2013, mettre en place son propre serveur de synchronisation ActiveSync est une décision stratégique. En effet, aucun autre protocole de synchronisation n’atteint encore le niveau de fonctionnalités d’ActiveSync. Or, les besoins en synchronisation des utilisateurs continuent d’augmenter, et ActiveSync reste la solution universelle pour synchroniser les appareils iOS, Android, Windows Phone ou autres.