Simulation de tissus dérivable

Les réseaux neuronaux et leur outillage apportent de nouvelles techniques pour la résolution de problèmes inverses, comme l’obtention d’un modèle 3D à partir d’une image. De manière générale, un problème inverse cherche à reconstruire les causes à partir des conséquences, au contraire d’un solveur habituel. Dans le cas particulier de la simulation physique, un solveur traditionnel part d’une situation initiale et de forces appliquées et détermine le mouvement des objets. Au contraire, le problème inverse associé part d’une position finale (comme la position d’un bras robotique) et détermine la manière de l’atteindre.

La simulation de tissus n’est pas forcément une chose aisée, même dans le cas relativement simple des jeux vidéo (on souhaite un rendu réaliste, pas forcément très précis). Parmi les difficultés, on compte la gestion des contacts avec d’autres objets et les collisions, notamment avec le tissu lui-même. Pour la simulation, on tend souvent à découper le bout de tissu à simuler en carrés (par exemple, une grille de seize carrés de côté), entre lesquels on écrit des contraintes pour que cette grille continue de représenter un bout de tissu. Cependant, même dans cet exemple assez simple, on arrive déjà à 289 sommets (seize carrés côte à côte dans chaque dimension, c’est-à-dire dix-sept points de chaque côté), 512 triangles à afficher, 867 variables (une position 3D pour chaque sommet), 140 000 contraintes juste pour prendre en compte les collisions des sommets. Il est impossible de calculer ensuite un gradient en un temps raisonnable pour résoudre un problème inverse…

Des chercheurs de l’université du Maryland et d’Intel se sont penchés sur le problème. Ils proposent une nouvelle technique pour déterminer les collisions à l’aide de matrices bien plus creuses (en réalité, un problème d’optimisation quadratique), tout en facilitant le calcul de dérivées (à l’aide d’une décomposition QR). Leur solveur est entièrement dérivable par des algorithmes automatiques (comme Autograd de PyTorch), à l’exception de cette opération de détection des collisions et de calcul des réponses ; ils peuvent en exprimer la dérivée à l’aide du résultat des forces appliquées suite à la collision et de la résolution d’un système linéaire triangulaire. Ils indiquent que, de par leurs expériences, ils peuvent réduire fortement la taille des systèmes linéaires en jeu (d’un facteur dix à vingt) et les temps de calcul (entre soixante et cent trente, bien qu’il peut en théorie monter à cent quatre-vingt-trois).

Parmi leurs expériences numériques, les chercheurs ont testé une estimation des paramètres d’un tissu qui flotte dans le vent. Le modèle physique utilisé nécessite l’estimation de trois paramètres : la densité du tissu, la raideur à l’étirement (à quel point le tissu réagit-il lorsqu’il est étiré ?) et la raideur en torsion (à quel point le tissu peut-il être courbé ou plié ?). Ils prennent en entrée une vidéo du tissu sous l’action du vent et de la gravité et en estiment les paramètres : sur septante-cinq images, les vingt-cinq premières servent à l’estimation et les cinquante dernières à la vérification de la précision d’estimation. En particulier, les chercheurs ne considèrent aucun préentraînement (contrairement à NVIDIA et à sa transformation d’objets 2D en modèles 3D) : ils n’utilisent aucun réseau neuronal, uniquement l’outillage développé pour eux. Le résultat est une meilleure estimation des paramètres du tissu par rapport aux méthodes existantes, sauf dans le cas du pliage.

Source : article. Voir aussi : le code source.

Un apprentissage profond rapide pour un grand nombre de classes

L’apprentissage automatique est une discipline issue des statistiques qui cherche à effectuer des prédictions. Par exemple, dans un problème de classification : sachant la valeur d’une série de variables, eu égard aux données disponibles, quelle classe attribuer à l’échantillon que l’on vient de recevoir ? Pour ce faire, l’algorithme d’apprentissage extrait des corrélations dans les données qu’il reçoit. L’une des techniques pour y arriver est d’entraîner un réseau de neurones, une idée très vaguement inspirée par la biologie et l’organisation des cerveaux.

Cependant, l’apprentissage risque de patiner dans le cas où le nombre de classes possibles est grand. Par exemple, la classification de spam ne fait appel qu’à deux classes : spam ou pas (“ham”). Au contraire, prédire un produit qu’un consommateur pourrait acheter nécessite de retourner un produit dans le catalogue d’un magasin (de par le monde, Amazon vendrait pas loin de trois milliards de produits différents…). Si on prend un réseau neuronal assez basique, on se retrouve avec au moins deux mille paramètres à apprendre pour chaque produit : dans le cas d’un magasin en ligne de grande taille (cent millions de produits à l’étalage), cela fait deux cent milliards de valeurs numériques à déterminer, presque un téraoctet et demi — sans compter les données sur lesquelles entraîner ce modèle. C’est beaucoup trop ! Surtout que l’entraînement est surtout effectué sur des cartes graphiques, qui ont du mal à dépasser les trente-deux gigaoctets de mémoire pour le moment…

Des chercheurs de l’université Rice, aux États-Unis, ont eu l’idée d’appliquer une série de transformations aléatoires sur les données pour que cet entraînement soit plus facilement réalisable. Ils ont décidé d’appeler leur algorithme MACH (merged average classifiers via hashing). Aléatoirement, les cent millions de classes sont divisées en un certain nombre de seaux (peu nombreux : par exemple, dix ou cinquante), on entraîne alors le réseau neuronal (ou n’importe quel autre algorithme d’apprentissage) à prédire dans quel seau doit aller chaque échantillon (on parle donc de métaclasse). Formellement, il ne s’agit pas d’une répartition aléatoire, mais selon une fonction de hachage (idéalement, une fonction de hachage a une sortie qui ressemble furieusement à un nombre aléatoire). Ce modèle n’est pas encore utile : il faut répéter ce processus un grand nombre de fois, toujours en créant les métaclasses plus ou moins au hasard. Ensuite, quand on dispose d’un nombre suffisant de modèles, on peut leur demander leur prédiction : la valeur que cet empilement de modèles doit produire est l’élément qui est présent dans toutes les prédictions. (Plus précisément, les chercheurs travaillent avec des probabilités que l’échantillon appartienne à une métaclasse, ce qui permet de gérer le cas où les différents modèles ne prédisent pas des métaclasses qui se superposent : c’est le théorème 1 de leur article.)

Tout l’intérêt de cette approche se situe dans la création arbitraire de métaclasses : les classificateurs à entraîner sont beaucoup plus petits, ce qui règle le problème de la taille du modèle complet. Cependant, il existait déjà des techniques pour gérer des nombres extrêmement importants de classes, comme Parabel, FastXML ou la création de plongements denses (représenter une classe avec quelques variables). Néanmoins, elles souffrent de problèmes de performance : leur découpage n’est jamais assez indépendant (l’entraînement des modèles ne peut pas se faire en parallèle sur des machines ne communiquant pas) ; de plus, MACH effectue de meilleures prédictions (du moins en regardant le rappel et en maintenant la précision à 100 %).

Source : article publié à NeurIPS 2019.

Les prochains processeurs de Zhaoxin seront gravés en 7 nm et implémenteront PCIe 4.0 et DDR5

Les ambitions chinoises ne sont pas neuves, tant en termes de processeurs que de cartes graphiques : l’objectif, à terme, est de ne plus dépendre d’un partenaire aussi peu fiable que les États-Unis (un projet dans lequel l’Union européenne n’est pas la dernière à avoir son mot). Cependant, atteindre le même niveau de performance que les puces américaines n’est pas exactement facile : elles ont un grand niveau de complexité, mais sont aussi fabriquées à l’aide de processus de très haute technologie.

Les gammes actuelles de Zhaoxin, la société chinoise chargée du développement des CPU et GPU nationaux, sont fabriquées sur un processus assez ancien (en seize nanomètres, à peu près 2014) et peuvent atteindre la performance du matériel de moyenne gamme actuelle. Dès 2021, néanmoins, Zhaoxin pense rivaliser avec Intel et AMD. La fabrication des puces sera toujours assurée par TSMC, une société taïwanaise (chinoise ou pas, c’est selon), mais sur un processus de dernière technologie (sept nanomètres).

Les KaiXian KX-7000 seront les successeurs des KX-6000, qui possèdent au plus huit cœurs cadencés à trois gigahertz. Les KX-7000 disposeront probablement d’une architecture améliorée : un processus de fabrication plus récent n’est pas une réponse suffisante pour atteindre la performance d’une puce AMD ou Intel. Ces processeurs disposeront d’une nouvelle génération de carte graphique intégrée, compatible avec DirectX 12. De même, ils devraient implémenter les normes PCIe 4.0 et DDR5 pour une meilleure performance (disponibles uniquement sur les processeurs AMD actuels, bientôt chez Intel aussi).

Les KaiSheng KH-40000 en seront la déclinaison serveur. Selon les informations actuellement disponibles, ils devraient être fabriqués en seize nanomètres (ce qui semble indiquer que ces processeurs resteront en DDR4 et PCIe 3.0), mais avec une architecture améliorée. La plus grande différence se fera sur le nombre de cœurs, puisque ces KH-40000 pourront monter à trente-deux cœurs (une carte-mère pouvant disposer de deux processeurs).

Source : Tom’s Hardware.

Mozilla annonce DeepSpeech 0.6

Mozilla est la société sans but lucratif derrière le navigateur Firefox, mais pas seulement. L’un de leurs autres projets est DeepSpeech, un moteur de reconnaissance vocale : l’utilisateur parle, DeepSpeech écrit ce qu’il entend. Le projet a commencé chez Baidu et continue désormais chez Mozilla. Techniquement, il s’agit d’un réseau neuronal profond entraîné par TensorFlow et disponible à travers une API prévue pour être simple à utiliser (disponible en C, pour faciliter sa réutilisation dans d’autres environnements). Le modèle est entraîné uniquement sur des données en anglais, avec l’accent américain. L’avantage d’une telle solution est qu’elle peut être utilisée sur les périphériques de l’utilisateur : aucune donnée n’est transmise vers Mozilla, pour garantir un maximum de vie privée.

La version 0.6 de ce moteur de reconnaissance vocale est sortie récemment, avec comme améliorations principales une diminution de la latence (le temps nécessaire entre l’entrée d’un signal audio et la sortie du texte), tout en gardant une utilisation de mémoire raisonnable. En pratique, cela signifie que l’on peut récupérer des bribes de texte (encore incomplètes) sans craindre de pic de latence.

DeepSpeech est, comme bon nombre de logiciels équivalents, divisés en deux blocs : un modèle acoustique, qui récupère le son et le traduit en probabilités de son prononcés ; un décodeur, qui transforme ces probabilités en bouts de texte dans la langue de l’utilisateur. Une grande avancée par rapport aux versions précédentes est la possibilité de l’utiliser en flux tendu : le programme peut demander, toutes les secondes, les derniers mots prononcés. Pour ce faire, il a fallu travailler à tous les niveaux, notamment pour le modèle acoustique (les meilleurs modèles sont bidirectionnels, c’est-à-dire qu’ils doivent disposer d’une grande quantité de son avant de travailler). DeepSpeech 0.6 peut ainsi fournir une transcription 260 ms plus tôt que la version précédente.

This diagram compares the latency of DeepSpeech before and after the decoder optimizations.

En outre, Mozilla s’est lancé dans l’utilisation de TensorFlow Lite, prévue pour les périphériques embarqués (comme des téléphones), c’est-à-dire avec peu de ressources de calcul. Avec TensorFlow Lite, le paquet DeepSpeech passe de 98 Mo à à peine 3,7 Mo (en dehors du modèle linguistique, qui représente encore 47 Mo pour l’anglais, au lieu de 188 Mo précédemment). L’outil fonctionne surtout à l’aide d’une quantification après l’entraînement. Un autre avantage est l’amélioration de la performance sur les ordinateurs de bureau, bien plus puissants. En pratique, cela veut dire que DeepSpeech peut aller plus vite que du temps réel sur un matériel aussi limité qu’un Raspberry Pi 4. En chiffres, la version 0.6 utilise 22 fois moins de mémoire et démarre 500 fois plus vite.

This bar graph compares start-up time and peak memory utilization for the last three DeepSpeech versions: v0.4.1, v0.5.1, and v0.6.0

L’API s’enrichit de fonctionnalités outre la transcription, pour récupérer des métadonnées sur le texte : l’instant auquel chaque caractère a été prononcé, une valeur de confiance pour la transcription de chaque phrase.

Avec la nouvelle version, l’entraînement est plus rapide : avec la migration vers TensorFlow 1.14, DeepSpeech peut utiliser l’implémentation des RNN proposée par cuDNN afin d’accélérer les calculs sur des cartes graphiques NVIDIA, d’un facteur deux pour l’entraînement.

Télécharger DeepSpeech 0.6 (avec des instructions pour Python, NodeJS, NuGet). Voir le code source.

Source : Mozilla.

Le matraquage de l’intelligence artificielle : vraiment de la science ?

Le sujet des infox est de plus en plus présent, notamment pour discréditer ses adversaires (tant en Chine qu’aux États-Unis, pour ne prendre que deux exemples). Et si la ribambelle d’annonces sur le côté révolutionnaire de l’intelligence artificielle en faisait partie, au moins en bonne partie ? C’est en tout cas l’avis de Gary Marcus, professeur émérite à l’université de New York et fondateur de Robust.AI : les médias (et/ou le public, barrez la mention inutile le cas échéant) adorent les histoires de révolutions, notamment scientifiques. Les scientifiques ne sont pas blancs non plus dans cette histoire : toute publicité faite sur leur recherche peut leur amener, directement ou non, des subsides pour faire avancer leur recherche, leur laboratoire, leur carrière… ou même leur salaire, plus directement. Le résultat est, actuellement, un flux presque incessant de réussites de l’intelligence artificielle, matraqué dans tous les médias… des nouvelles presque aussitôt oubliées.

Ces annonces sont parfois mensongères. La faute est parfois du côté du scientifique qui publie ses résultats en ne mettant en évidence que les bons côtés (ce qui n’est pas sans rappeler la crise de la reproductibilité des études en médecine). Elle est parfois aussi du côté du journaliste qui relaye l’information, lui qui ne fait pas toujours toutes les vérifications nécessaires (et n’a pas non plus une formation adéquate dans tous les sujets touchés par la vague d’intelligence artificielle).

Et Gary Marcus de citer quelques exemples, comme le modèle linguistique GPT-2 de OpenAI : une interview menée The Economist avec ce modèle, très cohérentemais on apprend par la suite que chaque réponse a été choisie manuellement par un humain parmi les propositions de GPT-2. Aussi, l’intelligence artificielle a résolu le problème des trois corps : en fait non, elle ne fait que proposer des solutions approchées pour des versions très réduites du problème des trois corps (avec deux degrés de liberté) — une critique ultérieure a certes été relayée, mais pas très souvent. La radiologie est un domaine en médecine dont la fin est prédite depuis longtemps pour dans peu de temps (antithèse, non oxymore…), mais il semblerait qu’aucun radiologue n’ait jamais été licencié pour cause de remplacement par une intelligence artificielle…

Les chercheurs n’indiquent pas assez souvent les limitations de leurs recherches de manière claire. Certaines entreprises les poussent d’ailleurs à volontairement omettre ce genre de détail, comme DeepMind ou OpenAI : après tout, GTP-2 était un modèle trop dangereux à libérer ; les techniques de jeu d’AlphaGo et de StarCraft peuvent s’appliquer assez directement à d’autres cas d’utilisation. Heureusement que des gens comme Pieter Abbeel et Yoshua Bengio prennent les pincettes qui siéent aux chercheurs dans ce genre de cas : oui, l’apprentissage profond fonctionne très bien dans une série de cas limités ; non, l’intelligence artificielle générale, qui permet d’articuler des phases de raisonnement et de résolution de problèmes, n’est pas encore à notre portée.

Quels sont les risques de ce comportement ? Il crée de la peur inutile, le nombre d’emplois à remplacer par l’intelligence artificielle étant sûrement surestimé. Pourtant, ce genre de publication assure un flux de devises pour continuer la recherche, mais au risque d’un nouvel hiver de l’intelligence artificielle : les promesses étaient là, mais ne seront (probablement) pas tenues. Comme les chat bots, trop limités dans leurs possibilités de communication (Facebook a fini par annuler son système M en 2018, trois ans après l’annonce d’une révolution). Comme le diagnostic médical d’IBM Watson, dont les partenaires ont fini par s’éloigner à cause de résultats insuffisants. Comme la détection des infox, que Mark Zuckerberg affichait, en 2018, comme à la portée de l’intelligence artificielle endéans les cinq à dix ans (encore raté).

Gary Marcus et Ernie Davis font donc six recommandations pour éviter ces écueils, de telle sorte que la recherche soit présentée de manière factuelle, pour éviter toute erreur de transmission. Qu’est-ce que le système fait vraiment (en dehors de toute rhétorique) ? À quel point le système peut-il généraliser (un voiture qui a appris à Phoenix peut-elle rouler à Mumbai) ? Où une démo est-elle disponible (suffisante pour qu’un lecteur puisse se faire une idée précise des compétences du système) ? Si le système est meilleur que des humains, quels humains (facile de dépasser les capacités d’un enfant de dix ans en radiologie) ? À quel point la nouveauté rapproche-t-elle la science de l’intelligence artificielle générale ? À quel point le système est-il robuste ?

Source : The Gradient.

Sortie de scikit-learn 0.22 RC

scikit-learn est la bibliothèque de référence en apprentissage automatique en Python (à l’exception de l’apprentissage profond). La prochaine version, la 0.22, pointe le bout de son nez : la première RC est maintenant disponible pour les tests.

Au menu, on compte notamment l’imputation plus avancée qu’actuellement, avec la classe IterativeImputer, pour la gestion de valeurs manquantes. Cette fonction est toujours expérimentale et doit être activée manuellement. Maintenant, on compte aussi KNNImputer pour effectuer l’imputation à l’aide des k plus proches voisins.

Les nouveaux algorithmes de dopage à base d’arbres, apparus avec scikit-learn 0.21, gèrent de manière native les valeurs manquantes : il n’y a plus besoin d’imputation lors de l’entraînement ou la prédiction. (Ces estimateurs restent expérimentaux…) Dans l’implémentation, le regroupement des échantillons selon la valeur d’un attribut se fait à l’aide d’une classe réservée aux échantillons pour lesquels cet attribut manque.

Pour l’inspection des modèles, scikit-learn fournit un calcul d’importance par permutations (une mesure similaire à l’importance définie pour des arbres de décision). Cette valeur a tendance à être plus précise dans les cas où les données comportent de nombreuses colonnes fortement corrélées.

../../_images/sphx_glr_plot_release_highlights_0_22_0_002.png

La fonction plot_roc_curve est une nouvelle manière d’afficher la courbe ROC pour un modèle donné, mais en utilisant des données de prédiction sur un jeu de test déjà disponibles. En particulier, cela signifie qu’il est très facile de créer un nouveau graphique, puisque les calculs les plus lourds peuvent être réutilisés. D’autres fonctions similaires pour les dépendances partielles, les courbes précision-rappel et la matrice de confusion existent.

../../_images/sphx_glr_plot_release_highlights_0_22_0_001.png

L’empilement de modèles est une technique simple pour combiner plusieurs modèles et ainsi obtenir un nouveau modèle qui fait moins d’erreurs que le meilleur des modèles empilés (propriété souvent vraie en pratique). Les versions les plus évoluées de ce mécanisme utilisent un modèle d’apprentissage par-dessus les modèles empilés. Cette version améliorée est désormais disponible dans scikit-learn (en sus de la classification par vote).

Les modèles à base d’arbres peuvent être élagués, c’est-à-dire que certains tests sont retirés pour diminuer la complexité de l’arbre. Cette technique permet parfois d’améliorer la performance en généralisation de l’arbre. scikit-learn implémente une technique d’élagage après l’entraînement qui minimise la somme pondérée de l’erreur effectuée par l’arbre sur les données d’entraînement (minimale pour un arbre très complexe) et du nombre de feuilles de cet arbre.

La version 0.22 est la deuxième à ne plus être disponible que pour Python 3. Elle marque aussi une différence plus claire entre les API privées (noms qui commencent par _, comme d’habitude en Python) et publiques. Les fonctions publiques sont documentées et les changements d’interface qui peuvent casser le code existant sont limitées au maximum (si c’est nécessaire, les développeurs préviennent deux versions mineures à l’avance : certains changements pour la 0.24 sont annoncés lors de la sortie de la 0.22). Certaines fonctions utilitaires étaient disponibles de manière publique, alors qu’ils n’étaient pas prévus pour cet usage ; de même, pour importer des sous-modules, plusieurs syntaxes étaient parfois possibles ( from sklearn.cluster import Birch et from sklearn.cluster.birch import Birch , la deuxième écriture n’étant plus disponible dès la version 0.22)

Voir aussi : la liste complète des changements, les nouvelles fonctionnalités mises en évidence, le nouveau site Web.

GraphCore met à disposition ses IPU dans le nuage Microsoft Azure

L’apprentissage profond génère de gros besoins en puissance de calcul pour entraîner des réseaux neuronaux profonds sur d’énormes quantités de données. Pour y répondre, de nombreuses sociétés ont développé des solutions adaptées. Par exemple, NVIDIA a commencé par réutiliser ses processeurs graphiques et finit par ajouter des cœurs tensoriels, Intel et ARM ajoutent des instructions dans leurs processeurs, Intel propose des processeurs entièrement prévus pour cette tâche, Cerebras fabrique les processeurs les plus gros au monde ; de manière plus expérimentale, Intel examine la piste des architectures neuromorphiques.

GraphCore est une jeune pousse active dans le secteur depuis 2016. Elle développe des IPU (intelligence processing unit), des processeurs extrêmement parallèles (comme les processeurs graphiques), mais avec une architecture en carreaux : un processeur contient 1216 carreaux, chacun comportant de la mémoire et six cœurs de calcul. La puce en elle-même contient 300 Mo de mémoire cache, avec une bande passante de 45 To/s, sans oublier 80 canaux de communication avec d’autres IPU.

https://cdn1.hubspot.net/hubfs/729091/ipu_diagram_021218.png

Le premier serveur muni de cette technologie, sous la forme de cartes d’extension PCIe, a été produit par Dell, fin 2018. Le DSS8440 contient jusqu’à huit cartes produites par GraphCore, chacune contenant deux de ces processeurs. Configuré avec des cartes graphiques, le même serveur peut monter jusqu’à dix cartes. La programmation des IPU se fait à l’aide de Poplar, une bibliothèque orientée graphe, mais des intégrations sont fournies pour TensorFlow et PyTorch. Il est aussi possible de lancer de l’inférence directement sur des réseaux stockés au format ONNX.

Désormais, les produits GraphCore sont disponibles sans devoir acheter de matériel hors de prix : dans la solution infonuagique Microsoft Azure. Ce fournisseur de service s’était déjà distingué en étant le premier à offrir des FPGA, toujours pour les réseaux neuronaux. Cette solution permet d’entraîner le modèle linguistique BERT sur un corpus de texte en cinquante-six heures, comme PyTorch sur un GPU. Ce faisant, cette nouvelle solution permet de battre TensorFlow d’un facteur deux — mais le coupable est probablement TensorFlow, puisque PyTorch effectue les mêmes calculs plus vite.

Là où les processeurs GraphCore montrent un intérêt plus grand, c’est au moment de l’inférence : ils peuvent effectuer trois fois plus d’opérations d’inférence par seconde, avec une latence moindre de trente pour cent. Les processeurs graphiques ont tendance à moins bien fonctionner dans ce scénario, puisqu’il faut un paquet de données à traiter pour les utiliser au mieux : si on ne passe qu’un peu de données à la fois, énormément de puissance de calcul ne peut pas être utilisée.

https://www.graphcore.ai/hs-fs/hubfs/image-6.png?width=600&name=image-6.png

Qwant, le moteur de recherche européen, est l’un des premiers clients de cette technologie (hébergée dans Microsoft Azure). Leur modèle ResNext, utilisé pour la reconnaissance d’images, peut fonctionner bien plus rapidement sur des IPU que des GPU : ils aiment résumer l’impact en termes de performance par un facteur de 3,5. Plus en détail, l’inférence peut fonctionner avec un débit au moins 3,4 fois plus élevé et une latence jusque 40 fois moindre qu’avec un GPU.

Source : communiqué de presse.

Voir aussi : des tests de performance plus poussés (effectués par GraphCore, pas par un laboratoire indépendant).

Samsung présente le premier capteur photo avec des photosites de 0,7 micron

Les téléphones portables actuels présentent des défis technologiques majeurs en termes de capture d’images : ils doivent rester extrêmement petits, mais les consommateurs souhaitent des définitions extrêmement élevées. Pour y arriver, les constructeurs de capteurs n’ont pas d’autre choix que de diminuer drastiquement la taille des photosites, des éléments sensibles du capteur (un photosite correspondant à un pixel). Les avancées technologiques dans ce domaine peuvent après coup s’appliquer à d’autres domaines, où la qualité des images est beaucoup plus importante : un capteur de téléphone peut faire une taille de 6 mm sur 4 mm (1/2.3”), approximativement, quand un appareil photo haut de gamme (full frame) a un capteur de la taille d’une pellicule photo (36 x 24 mm).

A camera sensor size chart

Samsung propose le premier capteur avec des photosites de 0,7 nm, ce qui permet d’atteindre une résolution de plus de quarante-trois mégapixels pour un capteur de moins de cinq millimètres de côté. Le ISOCELL Slim GH1 utilise divers artifices pour limiter le bruit à cette échelle, comme ISOCELL Plus : cette technique sert à isoler les pixels les uns des autres pour minimiser les influences croisées entre pixels et les pertes lumineuses, de telle sorte que chaque photosite reçoive suffisamment de lumière. ISOCELL Plus fonctionne en insérant des barrières physiques au niveau de chaque pixel.

Dans des situations de très faible lumière (là où les téléphones ont traditionnellement beaucoup de mal à bien se comporter), la technologie Tetracell fusionne les photosites pour monter en sensibilité (mais en perdant en résolution), pour devenir l’équivalent d’un capteur avec des photosites de 1,4 µm. La même technique est utilisée pour la prise de vidéos en 4K sans diminuer artificiellement la taille du capteur, ce qui évite d’encore faire baisser la profondeur de champ. De plus, le capteur gère une stabilisation électronique (EIS) et une mise au point en temps réel par détection de phase.

Cette nouvelle génération est une modification incrémentale des capteurs précédents : Samsung avait déjà présenté en 2017 un capteur en 0,9 µm (0,8 µm en 2018), un autre en 1 µm en 2015. La production de masse devrait débuter en fin 2019.

Source : Samsung. Images : ExpertPhotography, Samsung.

L’architecture Willow Cove d’Intel sera “significativement plus grosse” que Sunny Cove

Les améliorations de performance dans nos processeurs n’ont cessé ces dernières années, mais à un rythme plus lent. Les moins jeunes se souviennent d’une époque où changer de PC tous les deux ou trois ans avait un véritable intérêt, le gain de performance (notamment grâce à des fréquences plus élevées) le justifiant pour bon nombre d’usages. Maintenant, on se satisfait d’un gain d’à peine une dizaine de pour cent d’une génération à l’autre, une augmentation de quinze à vingt étant très significative : l’architecture Sunny Cove d’Intel apporte une telle amélioration par rapport à Coffee Lake, cela faisait des années que le chiffre n’était pas aussi élevé. Les changements concernent à la fois l’architecture interne des processeurs, mais aussi le processus de fabrication (qui permet d’imprimer trente-huit pour cent de transistors en plus, sans augmentation de fréquence). L’écart entre le nombre de transistors supplémentaires et l’amélioration de performance est important.

L’architecture qui suivra Sunny Cove, Willow Cove, devrait se rapprocher d’une relation linéaire entre l’augmentation de performance et le nombre de transistors. C’est tout du moins l’avis de Jim Keller, vice-président d’Intel depuis 2018. De fait, un processeur est certes le résultat du travail acharné d’un très grand nombre de personnes, mais surtout d’un grand nombre de petites équipes : chacune peut améliorer significativement sa partie, pour apporter des gains à l’échelle du processeur. En effet, la partie calcul d’un processeur actuel représente approximativement un tiers de sa consommation d’énergie, une fraction un peu plus grande des transistors : le reste sert d’interfaces avec les autres composants de l’ordinateur.

Intel Core roadmap

Intel planifie l’avenir de ses processeurs sur plus d’une dizaine d’années, avec pour objectif actuel de multiplier le nombre de transistors par processeur par cinquante. Chaque étape intermédiaire de cette feuille de route prévoit d’énormes changements pour arriver à une croissance linéaire. Par exemple, un processeur Sunny Cove maintient une fenêtre de huit cent instructions à exécuter, avec un rythme de trois à six instructions exécutées par cycle, à l’aide d’énormes prédicteurs : les prochaines générations devraient augmenter ces chiffres pour atteindre le niveau de performance espéré.

Source : Intel’s next-gen CPU architecture will be “significantly bigger” than Sunny Cove.

L’analyse topologique au secours de l’apprentissage automatique ?

L’apprentissage automatique, les réseaux neuronaux convolutifs en particulier, sont à l’origine d’une grande révolution en traitement d’images : ces techniques ont donné d’excellents résultats, par exemple pour détecter des visages ou des bandes de circulation. Avant l’arrivée de l’apprentissage automatique, les chercheurs déterminaient une série de points saillants dans une image et cherchaient à en extraire des règles de décision : on peut le faire avec relativement peu d’images d’exemple, puisqu’un humain doit analyser en détail chacune d’entre elles. L’apprentissage automatique a permis d’automatiser cette deuxième partie : pour reconnaître une forme, par exemple, il suffit de transformer une image en une série de valeurs numériques (SIFT, SURF, etc.), sur lesquelles on peut alors utiliser des algorithmes standard d’apprentissage. Pour qu’un tel système fonctionne bien, il faut accumuler une série d’images d’exemple (quelques centaines au moins) et entraîner pendant un certain temps le modèle d’apprentissage (ce qui peut se faire en quelques minutes à heures sur des ordinateurs actuels). L’apprentissage profond utilise nettement moins d’intelligence humaine : le réseau neuronal prend en entrée une image et ressort l’étiquette à lui attribuer ; au lieu d’utiliser des humains pour déterminer les points saillants à utiliser, le réseau l’apprend sur les images d’exemple. Le principal problème est qu’il faut alors des quantités astronomiques d’images (on parle de plusieurs millions) et de la puissance de calcul en conséquence (ce qui limite la recherche dans le domaine aux laboratoires les mieux équipés).

Cependant, ces dernières techniques ne sont pas parfaites : elles cherchent des ressemblances entre images, quelles qu’elles soient. Par exemple, s’il s’agit de déterminer si une image contient un chien ou un loup, si le jeu de données présente les loups uniquement sur de la neige ou les chiens uniquement avec un filigrane de copyright, le réseau neuronal risque bien de s’entraîner à retrouver de la neige ou le message de copyright plutôt que d’apprendre ce qu’on attend de lui. Le principal problème est que les réseaux neuronaux fonctionnent comme des boîtes noires : il est assez difficile de comprendre pourquoi ils prennent telle ou telle décision. Au contraire, quand on utilisait encore des détecteurs de caractéristiques, les modèles d’apprentissage pouvaient souvent dire quelles caractéristiques étaient les plus intéressantes pour donner leur prédiction.

Pour améliorer la performance des réseaux neuronaux, une manière est de contrôler l’espace de paramètres : le réseau neuronal ne pourra plus tout apprendre, mais uniquement ce qu’un humain a décidé qu’il pourrait apprendre. Pour y arriver, on peut ajouter de plus en plus d’images d’exemple : pour reprendre l’exemple des chiens et des loups, on peut ajouter des filigranes sur certaines images, changer la météo, retourner les images, afin de forcer le réseau neuronal à ne pas considérer ces points comme étant cruciaux pour effectuer une prédiction. Le gros problème est que l’on augmente alors fortement la taille du jeu de données ! On n’a cependant toujours aucune garantie que le réseau apprenne bien à généraliser : peut-être n’apprendra-t-il à reconnaître les chiens que dans un certain angle, parce qu’il a mémorisé une série d’éléments présents dans les images qu’il n’a vus que dans quelques orientations.

Encore une fois, c’est là que les mathématiques viennent faire leur apparition : plus précisément, l’analyse topologique des données (TDA, en anglais : topological data analysis), c’est-à-dire l’analyse des formes contenues dans les images. Cette théorie a été développée en 1992 et n’est revenue que récemment à l’honneur. À l’époque, on parlait de “reconnaissance de motifs” : le vocable d’apprentissage automatique est bien plus récent.

En intégrant cette théorie dans les réseaux neuronaux, on peut ainsi ordonner de ne s’intéresser qu’à certaines formes : s’il s’agit de reconnaître des panneaux routiers, que des cercles, des triangles et des carrés sur pointe, peu importe leur orientation. Cette théorie propose d’utiliser des filtres fixes qui représentent la structure interne des éléments à reconnaître. Cette structure interne est notamment indépendante de la rotation des éléments.

Techniquement, on se rapproche des approches précédentes de l’apprentissage automatique : le réseau neuronal dispose, en entrée, de l’image ainsi “filtrée” par des éléments topologiques. Il doit ensuite choisir le filtre le plus approprié à l’image qui lui est présentée. De la sorte, on peut construire un réseau neuronal qui reconnaît des chiffres manuscrits avec à peine une cinquantaine d’images (sur le jeu de données MNIST, relativement ancien) : pour atteindre la même performance, les réseaux neuronaux “classiques” doivent utiliser les trente mille images du jeu de données.

Source : Novel math could bring machine learning to the next level.

Plus d’informations : Towards a topological–geometrical theory of group equivariant non-expansive operators for data analysis and machine learning.