Microsoft propose ML.NET, un framework d'apprentissage automatique open source
Qui rend l'apprentissage automatique accessible aux développeurs .NET

Le , par Stéphane le calme

126PARTAGES

12  0 
ML.NET (Machine Learning for .NET) est un framework d’apprentissage machine open source et multiplate-forme qui rend l’apprentissage machine accessible aux développeurs .NET.

ML.NET permet aux développeurs .NET de développer leurs propres modèles et d'insuffler un apprentissage automatique personnalisé à leurs applications, en utilisant .NET, même sans expertise préalable dans le développement ou le réglage de modèles d'apprentissage automatique.

ML.NET a été développé à l'origine par Microsoft Research et a évolué pour devenir une structure importante au cours de la dernière décennie. Il est utilisé dans de nombreux groupes de produits Microsoft tels que Windows, Bing, PowerPoint, Excel, etc.

ML.NET permet des tâches d'apprentissage automatique telles que la classification (par exemple: classification du texte de support, analyse des sentiments) et la régression (par exemple, la prévision du prix).

Outre ces fonctionnalités ML, cette première version de ML.NET propose également le premier projet d’API .NET pour les modèles de formation, utilisant des modèles pour les prédictions, ainsi que les composants principaux de ce cadre, tels que les algorithmes d’apprentissage, les transformations et les données ML. structures.

Exemples

Voici un exemple de code permettant de former un modèle permettant de prédire (sous forme de déduction) le sentiment à partir d'échantillons de texte.

Code C# : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var mlContext = new MLContext(); 
var reader = mlContext.Data.TextReader(new TextLoader.Arguments 
        { 
        Column = new[] { 
            new TextLoader.Column("SentimentText", DataKind.Text, 1), 
            new TextLoader.Column("Label", DataKind.Bool, 0), 
        }, 
        HasHeader = true, 
        Separator = "," 
}); 
var data = reader.Read(dataPath); 
var learningPipeline = mlContext.Transforms.Text.FeaturizeText("SentimentText", "Features") 
        .Append(mlContext.BinaryClassification.Trainers.FastTree()); 
var model = learningPipeline.Fit(data);

Maintenant, à partir du modèle, nous pouvons faire des déductions (prédictions):

Code C# : Sélectionner tout
1
2
3
4
5
6
var predictionFunc = model.MakePredictionFunction<SentimentData, SentimentPrediction>(mlContext); 
var prediction = predictionFunc.Predict(new SentimentData 
{ 
    SentimentText = "Today is a great day!" 
}); 
Console.WriteLine("prediction: " + prediction.Prediction);

Échantillons

Bien entendu, le framework embarque des échantillons qui sont regroupés sous formes de tâches. Et si le nom d’une catégorie (tâche) ne s’avère pas suffisamment explicite, Microsoft propose une description aux développeurs.

Par exemple, le framework propose la catégorie classification binaire, qui est décrite comme étant la tâche de classer les éléments d'un ensemble donné en deux groupes, en prédisant à quel groupe appartient chacun. Trois scénarios sont donné : l’analyse du sentiment, la détection de spam et la détection de fraude.

Le framework propose également la catégorie recommandation. À ce sujet, il est expliqué que les systèmes de recommandation sont généralement basés sur des méthodes basées sur le contenu.ainsi que des méthodes de filtrage collaboratif. Une méthode collaborative prédit quels articles / produits un utilisateur peut aimer en fonction de ses actions / likes / évaluations passées par rapport aux autres utilisateurs. Ici, deux scénarios sont donné : la recommandation de film et la recommandation de produit.

Il faut compter aussi sur la classification multi-classe qui est décrite comme étant la tâche de classer les instances dans l’une des trois classes ou plus, en prévoyant à quel groupe chacune appartient. Ici les scénarios sont la classification des problèmes et la classification des fleurs d'iris.


La régression est présentée comme la tâche consiste à prédire une valeur numérique avec des données variables d'entrée données. Elle est largement utilisé pour les prévisions qui impliquent de se poser des questions sur les quantités. Les scénarios mis à la disposition des développeurs sont la prédiction de prix, les prévisions de ventes ainsi que la prévision de la demande.

Il y a également le clustering, décrit comme étant la tâche ML de regrouper un ensemble d'objets de telle sorte que les objets du même groupe (appelé cluster) se ressemblent davantage que ceux des autres groupes. C'est une tâche d’exploration. Elle ne classe pas les éléments sur des étiquettes particulières. Les scénarios disponibles sont la Segmentation de la clientèle et le regroupement de fleurs d'iris.

D’autres catégories ne sont pas encore fournies mais Microsoft explique que ce sera bientôt fait. C’est le cas par exemple de la détection d’anomalie, dont l'objectif est d'identifier des éléments, événements ou observations rares qui soulèvent des suspicions en se différenciant de manière significative de la majorité des données.En règle générale, il s’agit de problèmes tels que la fraude bancaire, des défauts de structure ou des problèmes médicaux. La catégorie classement sera elle aussi fournie bientôt. Il s’agit ici de la construction de modèles de classement pour les systèmes de récupération d'informations afin que les éléments soient classés / ordonnés en fonction des variables d'entrée de l'utilisateur telles que les goûts / aversions, le contexte, les intérêts, etc.

Une catégorie a déjà un scénario fourni et trois autres qui le seront bientôt. Il s’agit de Deep Learning (apprentissage en profondeur). Microsoft explique que l'apprentissage en profondeur est un sous-ensemble de l'apprentissage automatique. Les architectures d’apprentissage en profondeur, telles que les réseaux neuronaux profonds, sont généralement appliquées à des domaines tels que la vision par ordinateur (détection d’objets, classification d’images, transfert de style), la reconnaissance de la parole, le traitement du langage naturel et la reconnaissance audio. Le scénario déjà fourni est celui de TensorFlow appliqué à ML.NET. Microsoft prévoit d’apporter la détection d’objet, Style Transfer mais aussi ONNX appliqué à ML.NET.

Quelques alternatives

TensorFlow, le framework Machine Learning de Google

Bien que ML.NET dispose d’une application de TensorFlow, il faut noter que celle-ci est circonscrite au langage de Microsoft C#. TensorFlow utilise un graph statique ainsi que des bibliothèques d’abstractions, telles que l’API de réseaux de neurones Keras, Sonnet ou encore TFLearn. Le principal langage de programmation de TensorFlow est Python, mais les langages C++, Java et Go sont également pris en charge. Une API basée sur C est aussi disponible pour permettre la prise en charge d’autres langages.

L’un des principaux avantages de TensorFlow est sa grande communauté, proposant des didacticiels, des documents et des projets. En outre, TensorBoard permet de visualiser les algorithmes créés directement sur un navigateur.


PyTorch, le framework Machine Learning de Facebook

PyTorch est le framework Machine Learning de Facebook. Il s’agit du successeur de Torch, une bibliothèque Machine Learning open source basée sur le langage de programmation Lua et lancée en 2002.

Basé sur Python, PyTorch peut exploiter les principaux packages Python tels que NumPy. Ce framework utilise des graphes dynamiques, et ses algorithmes Machine Learning sont donc développés en utilisant le flot de contrôle standard de Python. Ainsi, les développeurs Python pourront le maîtriser plus facilement, et il est aussi plus simple de créer des algorithmes complexes comme un réseau de neurones récurrent. PyTorch n’est pas compatible Keras, mais on retrouve d’autres API comme Ignite et Scorch.

Source : dépôt GitHub

Et vous ?

Qu'en pensez-vous ?

Voir aussi :

De .NET Core 1 à .NET Core 3.0, retour sur l'évolution du Framework open source et multiplateforme de Microsoft
Visual Studio 2019 vient avec de nouvelles fonctionnalités pour améliorer la productivité des développeurs .NET, annonce Microsoft
ASP.NET Core 2.2 est disponible en version stable avec un nouveau module d'hébergement dans IIS et une nouvelle API pour suivre l'état des apps
La version 2.2 du framework .Net Core est disponible avec l'ajout de sécurité pour les connexions avec SQL Server et un meilleur suivi des services
Microsoft annonce la sortie de la première préversion publique de .NET Core 3 et le passage en open source des frameworks « Windows Desktop »

Une erreur dans cette actualité ? Signalez-le nous !


 
Contacter le responsable de la rubrique Accueil

Partenaire : Hébergement Web