Comment former un modèle Core ML pour une application iOS 1

Comment former un modèle Core ML pour une application iOS

ML de base permet aux développeurs iOS d’ajouter facilement un apprentissage automatique approfondi à leurs applications. Dans cet article, je vais vous montrer comment vous pouvez entraîner un modèle Core ML pour obtenir des informations intelligentes.

L’apprentissage automatique a sans aucun doute été l’un des sujets les plus brûlants de l’année écoulée, avec des entreprises de toutes sortes essayant de rendre leurs produits plus intelligents pour améliorer l’expérience utilisateur et différencier leurs offres. Google a investi entre 20 et 30 milliards de dollars dans l’intelligence artificielle rien que l’année dernière, selon McKinsey’s État de l’apprentissage automatique et de l’IA, 2017.

L’IA se transforme en une course aux brevets et à la propriété intellectuelle (PI) parmi les principales entreprises technologiques du monde … Le rapport cite de nombreux exemples de développement interne, notamment les investissements d’Amazon dans la robotique et la reconnaissance vocale, et Salesforce sur les agents virtuels et l’apprentissage automatique. BMW, Tesla et Toyota sont les principaux constructeurs automobiles dans leurs investissements dans la robotique et l’apprentissage automatique pour les voitures sans conducteur. Toyota prévoit d’investir 1 milliard de dollars dans la création d’un nouvel institut de recherche consacré à l’IA pour la robotique et les véhicules sans conducteur. (la source: Forbes)

Apple n’échappe pas à cette tendance, ayant utilisé l’apprentissage automatique dans ses propres applications. Par exemple, l’application Photos pour iOS peut reconnaître les visages, les objets et les points de repère, et Siri déduit l’intention et la signification de la parole. Messages pour iOS suggère et prédit intelligemment les mots en fonction des comportements précédents des utilisateurs.

Dans ce didacticiel, vous apprendrez comment appliquer des algorithmes d’apprentissage automatique à un ensemble de données d’entraînement, pour créer un modèle entraîné qui effectuera ensuite des prédictions basées sur une nouvelle entrée. Tout cela grâce au nouveau ML de base cadre.

Objectifs de ce didacticiel

Ce didacticiel vous présentera un sous-ensemble de l’apprentissage automatique. Vous allez former et intégrer un modèle d’apprentissage automatique dans une application iOS simple, à l’aide d’un cadre d’algorithme d’apprentissage en profondeur populaire. Dans ce tutoriel, vous allez:

  • apprendre quelques-uns des concepts de base de l’apprentissage automatique
  • entraîner votre modèle à l’aide d’exemples de données
  • intégrer le modèle entraîné dans une application iOS

Après avoir parcouru la théorie de la PNL, nous mettrons nos connaissances en pratique en travaillant sur un simple client Twitter, en analysant les messages tweet. Allez-y et clonez le dépôt GitHub du didacticiel et jetez un œil à la version finale de l’application que nous allons créer à partir de zéro.

Connaissance supposée

Ce tutoriel suppose que vous êtes un développeur iOS chevronné, mais bien que vous travailliez avec l’apprentissage automatique, vous n’avez pas besoin d’avoir des connaissances sur le sujet. Vous utiliserez un peu de Python pour créer votre modèle entraîné, mais vous pouvez suivre l’exemple du didacticiel sans connaissance préalable de Python.

Apprentissage automatique 101

L’objectif de l’apprentissage automatique est qu’un ordinateur effectue des tâches sans être explicitement programmé pour le faire – la capacité de penser ou d’interpréter de manière autonome. Un cas d’utilisation contemporain très médiatisé est la conduite autonome: donner aux voitures la capacité d’interpréter visuellement leur environnement et de conduire sans aide.

L’apprentissage automatique est aujourd’hui exploité par les grandes entreprises pour prendre de meilleures décisions commerciales basées sur des données historiques, en utilisant des algorithmes d’apprentissage en profondeur pour identifier les modèles et les corrélations, ce qui leur permet de faire de meilleures prévisions pour l’avenir. Par exemple, vous pouvez résoudre des problèmes tels que « Quelle est la probabilité qu’un client spécifique achète un produit ou un service spécifique? » avec une plus grande confiance en fonction du comportement antérieur.

L’apprentissage automatique est mieux appliqué aux problèmes pour lesquels vous avez un historique de réponses, comme vous le découvrirez plus tard dans ce didacticiel lorsque nous passerons en revue notre exemple de problème. Un exemple d’apprentissage automatique en action serait votre filtre anti-spam, qui utilise l’apprentissage supervisé (lorsque vous marquez ou non des éléments comme spam) pour mieux filtrer le spam au fil du temps. Le modèle d’apprentissage automatique encode toutes ces connaissances sur les résultats passés et les met à la disposition de l’algorithme pour une utilisation efficace au moment de l’exécution.

Tout cela peut sembler un peu écrasant au début, mais ce n’est pas compliqué, et je vais vous expliquer comment créer un modèle entraîné sous peu. Une fois que vous avez conçu un modèle entraîné via un algorithme, vous le convertissez ensuite en un modèle pouvant être consommé par iOS, grâce à Core ML.

ML de base est une nouveauté de la famille de SDK d’Apple, introduite dans le cadre d’iOS 11 pour permettre aux développeurs de mettre en œuvre une grande variété de modes d’apprentissage automatique et de types de couches d’apprentissage en profondeur.

La source de la pile de la technologie Core ML Apple

Le traitement du langage naturel (NLP) se trouve logiquement dans le cadre Core ML aux côtés de deux autres bibliothèques puissantes, Vision et GameplayKit. Vision offre aux développeurs la possibilité de mettre en œuvre l’apprentissage automatique de la vision par ordinateur pour accomplir des tâches telles que la détection de visages, de points de repère ou d’autres objets, tandis que GameplayKit fournit aux développeurs de jeux des outils pour créer des jeux et des fonctionnalités de jeu spécifiques.

L’avantage de Core ML par rapport aux autres solutions est qu’Apple a optimisé l’apprentissage automatique pour s’exécuter sur l’appareil, ce qui signifie une consommation d’énergie de la mémoire réduite et une latence réduite. Cela conteneurise également les informations utilisateur dans l’appareil, améliorant ainsi la confidentialité.

Core ML et modèles source Apple

Avec une vue d’ensemble de l’apprentissage automatique et des modèles, mettons la théorie en pratique en créant votre premier modèle de formation.

Entraîner votre modèle

Pour qu’un modèle soit utile, il doit être formé pour reconnaître les données en tant qu’informations qu’il peut ensuite utiliser pour affirmer des prédictions avec un algorithme approprié. Core ML prend actuellement en charge les types de modèles suivants:

Types de modèles et outils Core ML source Apple

En plus de désigner un algorithme, plus vous avez de données, meilleur sera votre modèle formé et plus les prédictions seront précises. Avant de commencer à créer notre modèle Core ML, examinons l’exemple d’application avec lequel nous allons travailler, et en particulier les exemples de données.

Exemple d’application: Prédicteur de score d’hôtel à Las Vegas

Pour ce didacticiel, nous allons utiliser un ensemble de données open-source sur les avis d’hôtels dans le Strip de Las Vegas, dont je me suis procuré UCI pour illustrer comment entraîner un modèle et calculer des corrélations. Vous pouvez jeter un oeil au complet fichier CSV délimité par des virgules que nous utiliserons dans notre application. La structure des données est la suivante:

Nous serons intéressés à prédire le nombre d’étoiles des hôtels sur la base de la corrélation du nombre d’avis sur les hôtels et des avis généraux, pour chaque hôtel spécifique, ce qui est un exemple assez artificiel mais assez simple pour illustrer le concept de formation d’un modèle avec des données simples.

Téléchargez le CSV délimité par des virgules fichier dans un nouveau dossier que vous utiliserez pour cet exercice. Maintenant, allons-y et mettons la main à la pâte avec du Python, dans le but d’accomplir ce qui suit:

  • importer les bibliothèques nécessaires, y compris les bibliothèques Python Core ML
  • importer nos exemples de données
  • appliquer un algorithme de régression linéaire à nos données, en utilisant une bibliothèque appelée SciKit
  • identifier les colonnes des données que nous souhaitons modéliser (Nr. Commentaires, Nr. avis sur les hôtels, Étoiles de l’hôtel)
  • identifier la colonne sur laquelle il peut influencer (But)
  • conversion du modèle entraîné en modèle Core ML

Il peut sembler qu’il y a pas mal d’étapes, mais ce n’est pas aussi intimidant que vous le pensez. Le code Python que nous allons démontrer ensuite ne sera pas difficile à suivre, quelle que soit votre expérience avec le langage.

Tout d’abord, nous allons configurer nos modules et dépendances requis, y compris SciKit, coremltools (Outils officiels Core ML d’Apple pour Python), et pandas, un outil puissant pour l’analyse de la structure des données.

Ouvrez une fenêtre de terminal, accédez au dossier du projet dans lequel vous avez le fichier CSV et entrez ce qui suit:

sudo -H pip install --ignore-installed coremltools scikit-learn pandas

Ensuite, à l’aide d’un éditeur de votre choix, créez un nouveau .py fichier, et nommez-le quelque chose comme convert_reviews.py, en ajoutant les lignes suivantes pour importer les bibliothèques que vous utiliserez:

Juste après les instructions d’importation, ajoutez ce qui suit:

Jusqu’à présent, nous importons simplement le CSV en utilisant le pandas framework, en imprimant les données importées à l’écran, puis en utilisant le SciKit cadre pour établir un algorithme de régression linéaire à appliquer aux colonnes que nous souhaitons extrapoler.

Ne vous inquiétez pas trop de ce que signifie un algorithme de régression linéaire, mais sachez simplement que nous utilisons une technique d’algorithme de modélisation simple pour faire des prédictions. Dans ce projet, nous nous intéressons à la manière dont il affecte le score de notre hôtel, que nous venons d’établir à l’aide du model.fit fonction.

Nous avons maintenant notre modèle entraîné, mais nous devons encore le convertir en un modèle que Core ML peut consommer, c’est là que coremltools entre. Insérez les lignes de code suivantes:

Les deux dernières lignes convertissent votre modèle en un modèle compatible Core ML avant d’enregistrer le résultat en tant que .mlmodel objet, prêt à être utilisé dans votre projet Xcode. Enregistrez le script Python et exécutez-le via le terminal:

python convert_reviews.py

En supposant que vous n’ayez rencontré aucune erreur, le Vegas_Reviews.mlmodel Le fichier sera généré et votre modèle entraîné prêt à être importé dans Xcode.

Intégration du modèle formé

Pour la deuxième partie de ce didacticiel, vous allez créer une application simple avec un seul contrôleur de vue, quelques curseurs et un contrôle de segment pour permettre aux utilisateurs de basculer entre différentes valeurs, vous permettant d’observer diverses prédictions Core ML. L’application finale ressemblera à ce qui suit:

L'interface utilisateur finale de l'application

Dans Xcode, créez un nouveau Application à vue unique Projet Swift, et donnez-lui un nom.

Créer une nouvelle application

Ensuite, assurez-vous d’avoir inclus le fichier généré Vegas_Reviews.mlmodel dans votre projet, en le faisant glisser dans votre volet de projet de navigation.

Importer le modèle Core ML

Maintenant, ouvrez le ViewController.swift fichier et ajoutez ce qui suit:

La première chose que vous faites est de créer une instance de notre modèle, que vous utiliserez pour faire des prédictions plus tard dans la classe. Vous créez également quelques IBOutlet variables que vous câblerez dans le storyboard sous peu, qui correspondent aux propriétés de modèle individuelles avec lesquelles nous voulons jouer.

Basculez vers Storyboard et ajoutez les contrôles correspondants que nous avons déclarés dans votre contrôleur de vue, en vous assurant de câbler chaque contrôle au contrôleur de vue:

Câbler les contrôles dans Storyboard

Revenez au ViewController.swift fichier et ajoutez ce qui suit @IBAction méthode:

Il s’agit du code fonctionnel principal de notre moteur de prédiction, donc disséquons cette méthode étape par étape. Nous avons d’abord converti les différents contrôles dans le Double type, qui sera passé en arguments lorsque nous appelons notre méthode de prédictions. Dans un try? bloquer, appeler self.reviews.prediction(), qui est une méthode générée automatiquement appartenant à notre modèle, ainsi que les propriétés attendues que nous avons définies lors de l’importation de notre modèle entraîné.

Le résultat du bloc de prédictions est ensuite passé à l’étiquette ScoreValue, à afficher dans votre application. Nous avons presque terminé. Revenez simplement au storyboard et mappez chaque contrôle valueChanged: propriété à la @IBAction méthode que nous avons créée dans le contrôleur de vue. Vous souhaitez que cette méthode soit appelée chaque fois que vous modifiez une valeur de curseur ou de segment. Et pour faire bonne mesure, vous pouvez également vous assurer que vous appelez automatiquement cette méthode dans votre viewDidLoad() méthode pour qu’elle se mette à jour dès le début:

Créez et exécutez l’application dans Xcode, et dans le simulateur, activez les différents curseurs et observez la prédiction de la valeur de score à mesure qu’elle change en fonction des autres facteurs d’attribution du nombre de critiques d’hôtels et de critiques en général.

Comme souligné précédemment, il s’agit en effet d’un exemple artificiel, mais il vous donne une idée de la façon de construire vos propres expériences pour les corréler, et plus important encore, de la simplicité d’implémentation de modèles entraînés dans iOS.

Conclusion

Grâce à ML de base dans iOS 11, Apple a facilité la tâche des développeurs de tous les jours sans expérience en apprentissage profond pour pouvoir ajouter de l’intelligence à leurs applications. Tout le traitement est effectué sur l’appareil, garantissant de meilleures performances sans les problèmes de confidentialité liés au stockage des données dans le cloud. Avec Apple auparavant «  dog-food  » sa mise en œuvre d’apprentissage automatique sur des applications intégrées telles que Photos et Mail, les développeurs tiers ont désormais la possibilité de reconnaître les modèles, les images et l’intention textuelle avec seulement quelques lignes de code.

Ce n’est sans doute que le début du mouvement Core ML d’Apple, mais c’est une excellente opportunité pour les développeurs de commencer à penser de manière plus holistique aux données. Avec Core ML, nous pouvons offrir aux utilisateurs une meilleure expérience utilisateur tout en fournissant aux chefs de produit une meilleure compréhension des comportements des utilisateurs.

Pendant que vous êtes ici, consultez certains de nos autres articles sur le développement d’applications iOS et l’apprentissage automatique!

Moyens I/O Staff est une équipe de rédacteurs spécialisés, passionnés par la technologie, l’innovation et les usages numériques. Forts d’une expertise pointue en IA, applications mobiles, gaming et tendances digitales, nous produisons un contenu rigoureux, vérifié et utile. Notre mission : vous offrir une information fiable et claire pour mieux naviguer dans le monde numérique en constante évolution. Découvrez les avis de nos lecteurs sur Trustpilot.