Android Machine Learning

Kayvan Kaseb

Follow

Nov 26, 2020 – 9 min read

Das Bild wird von Unsplash zur Verfügung gestellt

Wie Sie wissen, zwingt das wachsende Interesse an maschinellem Lernen die Unternehmen dazu, sich darauf zu konzentrieren und zu investieren. Maschinelles Lernen (ML) ist ein Teilgebiet der Computerwissenschaften, das sich mit der Analyse und Interpretation von Mustern und Strukturen in Daten befasst, um Lernen, Schlussfolgerungen und Entscheidungsfindung außerhalb der menschlichen Interaktion zu ermöglichen. Darüber hinaus ist maschinelles Lernen ein Programmieransatz, der Ihre Android-Apps in die Lage versetzt, automatisch aus früheren Erfahrungen zu lernen und sich zu verbessern. Infolgedessen hat Google eine Reihe von fortschrittlichen Funktionen und Tools für das maschinelle Lernen in Android entwickelt und implementiert. Dieser Artikel zielt darauf ab, einige Hauptkonzepte und fortgeschrittene Funktionen zu diskutieren, die für Android-Entwickler empfohlen wurden.

Einführung und Überblick

Grundlegend ist maschinelles Lernen (ML) ein Programmieransatz, der Ihren Android-Apps die Fähigkeit bietet, automatisch aus Erfahrungen zu lernen und sich zu verbessern, ohne dass sie explizit dafür programmiert werden. Seit kurzem verfügt Android über eine breite Palette von Tools für maschinelles Lernen, die allen zur Verfügung stehen: Designern, Produktmanagern, Ingenieuren, Mobilentwicklern und Experten für maschinelles Lernen. Android ist eine Plattform, und eine der Möglichkeiten, den Erfolg einer Plattform zu messen, sind die großartigen Errungenschaften, die man auf ihr aufbaut. Heute läuft Android auf 2,5 Milliarden Geräten, und einige von ihnen nutzen bereits geräteinternes maschinelles Lernen. Außerdem ist Machine Learning auf dem Gerät keine Zukunftstechnologie mehr, denn es kann bereits jetzt genutzt werden. Es wurde beispielsweise erwähnt, dass mehr als 25.000 Anwendungen auf Android und iOS die Funktionen des ML-Kits nutzen.

Moderne Mobiltelefone verfügen also über eine ausreichende Verarbeitungskapazität, die der herkömmlicher Computer entspricht, und unsere Telefone und Tablets sind leistungsfähig genug, um Anwendungen auszuführen, die in Echtzeit lernen und interagieren können. Maschinelles Lernen (ML) hilft uns bei der Entwicklung intelligenter Anwendungen. Zum Beispiel die Google-Apps-Vorhersage für die nächsten Apps, die Sie wahrscheinlich verwenden werden, und eine mobile App, die das größte Problem der Welt löst, das perfekte Emoji zu finden. Außerdem sind Smart Assistants, Snapchat-Filter, Smart Reply und Google Lens einige der anderen Produkte, die maschinelles Lernen auf Geräten nutzen. Es gibt eine Reihe von SDKs für Mobiltelefone, die dabei helfen, maschinelles Lernen auf mobilen Geräten auszuführen. Einige davon sind Software Development Kits, die von bekannten Unternehmen wie Amazon, Intel und Microsoft entwickelt wurden, und auch Google hat das ML Kit entwickelt. In den folgenden Abschnitten dieses Aufsatzes werden einige Hauptkonzepte und neue Funktionen betrachtet, die von Google für die Android-Entwicklung empfohlen wurden.

Die Definition des maschinellen Lernens (ML)

In der Tat befasst sich der Hauptteil des maschinellen Lernens mit der Frage, wie man Computerprogramme konstruiert, die sich mit der Erfahrung automatisch verbessern. Die Antwort liegt also in den Daten. Kurz gesagt: Maschinelles Lernen wird als Teilbereich der KI betrachtet, der statistische Methoden einsetzt, um Maschinen in die Lage zu versetzen, sich durch Erfahrung zu verbessern. Es ermöglicht einem Computersystem, Entscheidungen zu treffen, um eine bestimmte Aufgabe auszuführen. Diese Programme oder Algorithmen sind so konzipiert, dass sie durch die Beobachtung neuer Daten lernen und sich mit der Zeit verbessern können. Das Hauptziel des maschinellen Lernens besteht darin, aus Daten eine Bedeutung abzuleiten. Daher sind Daten der Schlüssel zum maschinellen Lernen. Je mehr qualifizierte Daten ML hat, desto genauer wird der ML-Algorithmus.

Maschinelles Lernen (ML) ist die Wissenschaft von Computeralgorithmen, die sich aufgrund früherer Erfahrungen automatisch verbessern.

Um Vorhersagen zu treffen oder Entscheidungen zu treffen, ohne explizit programmiert zu werden, erstellen Algorithmen des maschinellen Lernens ein Modell auf der Grundlage von Beispielen, die als Trainingsdaten bezeichnet werden.

Maschinelles Lernen ist die Extraktion von Wissen aus Daten.

Außerdem gibt es einige Unterschiede zwischen künstlicher Intelligenz und maschinellem Lernen. Das Ziel der Künstlichen Intelligenz ist es, eine Maschine zu schaffen, die den menschlichen Verstand imitieren kann, und dazu sind auch Lernfähigkeiten erforderlich. Dabei geht es jedoch nicht nur um Lernen, sondern auch um Wissensdarstellung, Schlussfolgerungen und abstraktes Denken. Im Gegensatz dazu geht es beim maschinellen Lernen ausschließlich darum, Software zu schreiben, die aus früheren Erfahrungen lernen kann. Außerdem ist maschinelles Lernen enger mit Data Mining und Statistik verwandt als mit künstlicher Intelligenz.

Maschinelles Lernen ermöglicht es uns, bestimmte Arten von Problemen auf sehr elegante Weise zu lösen. Der wichtige Punkt ist, warum wir Machine Learning in der Praxis einsetzen. Man müsste zum Beispiel einen Code schreiben, um zu erkennen, ob jemand geht. Und wenn Sie Zugang zu seiner Geschwindigkeit hätten, müssten Sie einen recht einfachen Code schreiben, um eine Metrik für die Geschwindigkeit festzulegen, die das Gehen in der Realität zeigt. Die Ausweitung dieser Situation auf das Laufen scheint einfach genug zu sein. Wenn wir auch das Radfahren abdecken wollten, müssten wir lediglich eine weitere Randbedingung in unseren Code einfügen. Im Moment stellt sich die Frage, was mit anderen Arten von Aktivitäten ist, z. B. mit dem Golfen?

In der Tat beinhaltet das Golfen eine Menge Gehen, aber auch das Tragen und Schwingen von Schlägern. Wie können wir also diesen Zustand erklären? Hier kann uns das maschinelle Lernen wirksam helfen. Bei der traditionellen Programmierung drücken wir Regeln in Sprachen wie Kotlin oder Java aus. Dann wenden wir diese Regeln auf ein Problem von Interesse an. Beim maschinellen Lernen ist das Paradigma etwas anders. Anstatt eine Reihe von Regeln zu schreiben, nehmen wir eine Menge von Daten, z. B. Fotos von Menschen, die verschiedenen Aktivitäten nachgehen, mit entsprechenden Bezeichnungen für diese Aktivitäten. Wenn wir diese Daten in unser neuronales Netz einspeisen, lernt es die Geschäftsregeln für uns, ohne dass wir sie definieren müssen. Kurz gesagt, maschinelles Lernen hat sich als bemerkenswert effektiv erwiesen, wenn es darum geht, eine Reihe verschiedener Probleme zu lösen, wie z. B. die Erkennung von Aktivitäten.

Maschinelles Lernen in der Android-Entwicklung

Wie Sie bereits bemerkt haben, ist maschinelles Lernen ein Programmieransatz, der Ihren Android-Anwendungen die Fähigkeit verleiht, automatisch aus Erfahrungen zu lernen und sich zu verbessern, ohne dass sie explizit dafür programmiert werden müssen. Außerdem eignet sich dieser Ansatz gut für Android-Apps, die unstrukturierte Daten wie Bilder und Text verwenden, oder für Probleme mit einer großen Anzahl von Parametern, wie die Vorhersage der siegreichen Sportmannschaft. Derzeit bietet Android eine Vielzahl von Tools und Methoden für maschinelles Lernen: Die ML-Design-Guides, Googles schlüsselfertiges SDK für maschinelles Lernen ML Kit, TF Hub für die Suche nach vorgefertigten Spitzenmodellen, TF Lite Model Maker, um ein vorhandenes Modell mit Ihren eigenen Daten zu trainieren, und ML Kit benutzerdefinierte Modelle und Android Studio für die Integration dieser Modelle in Ihre Android-App in geeigneter Weise.

Um ML-Apps für Android zu entwickeln, stehen Sie vor den folgenden vier Hauptaufgaben:

  1. Design: Identifizieren von Produktzielen und Bereitstellen von ML-Designmustern, um diese zu erreichen.
  2. Build and Train: Erstellen des ML-Modells oder Trainieren eines vortrainierten Modells von Google.
  3. Inferenz: der Prozess der Verwendung eines maschinellen Lernmodells, das bereits für eine bestimmte Aufgabe trainiert wurde.
  4. Deploy: Installieren und Aktualisieren von ML-Modellen für Ihre Android-App.

Richtlinien für die Entwicklung von Android-Apps

Anfänglich gibt es keinen Unterschied zu anderen fortschrittlichen Technologien. Ihre Produktdesigner und Ingenieure entscheiden gemeinsam, welche Art von Problem wir mit unserem Produkt lösen wollen. Es handelt sich also nicht um eine einzige Anstrengung. Bei einer neuen Technologie handelt es sich um einen extrem iterativen Prozess. Man will die Grenzen austesten, und man will zusammenarbeiten. Außerdem muss man beobachten, wie die Benutzer das Produkt wirklich nutzen. Das bedeutet, dass Design, Produktmanagement und Softwareentwicklung in diesem Prozess eine Schlüsselrolle spielen. Google hat zu diesem Thema zwei Leitfäden herausgegeben:

  1. The People + AI Guidebook : In diesem Leitfaden gibt es sechs verschiedene Abschnitte, die Ihnen helfen, Ihre Gespräche mit Ihren Designern und Produktmanagern zu strukturieren. Insgesamt bietet es Best Practices, die Ihrem Team helfen, menschenzentrierte KI-Produktentscheidungen zu treffen.

2. The Material Design for Machine Learning spec : Dieser Leitfaden umfasst folgende Abschnitte:

Erstens, neue Material Design-Richtlinien für ML-Anwendungsfälle auf Mobilgeräten.

Zweitens, Ermöglichung einer großartigen End-to-End-UX für Mobilgeräte mit ML.

Drittens: Quellcode für Objekterkennung und -verfolgung sowie Barcode-Scanning.

Die wichtigste Entscheidung bei der Android-Entwicklung

Eine wichtige Entscheidung, die Sie bei der Android-Entwicklung treffen sollten, ist die Frage, ob das Inferencing auf dem Gerät ausgeführt werden soll oder ob ein Cloud-Service verwendet werden soll, auf den aus der Ferne zugegriffen werden kann. Um diese Entscheidung genau zu treffen, sollten Sie einige Parameter als Vor- oder Nachteile betrachten. Für den On-Device-Ansatz ergeben sich zum Beispiel folgende Vorteile:

  1. Datenschutz: In vielen Fällen ist es sinnvoller, alles auf dem Gerät zu speichern. Daher müssen wir uns keine Gedanken darüber machen, wie die Daten in der Cloud verarbeitet werden.

2. Offline: Machine Learning auf dem Gerät funktioniert auch dann, wenn es keine Verbindung gibt oder das Netzwerk lückenhaft ist. Wenn Sie zum Beispiel einige Zeit in der U-Bahn verbringen, werden Sie wissen, dass dies nützlich sein könnte.

3. Geringe Latenz: Durch die Verarbeitung auf dem Gerät können wir die Netzwerklatenz ganz aus der Gleichung entfernen. Wenn wir dies mit den neuesten Fortschritten bei der Hardware-Beschleunigung verbinden, können wir den Nutzern echte Echtzeit-Erlebnisse auf einer Vielzahl von Android-Geräten bieten.

ML Kit für App-Entwickler

Tatsächlich ist ML Kit SDK ein neues Produkt von Google, das 2018 vorgestellt wurde. ML Kit ist ein Softwareentwicklungskit, das es Entwicklern ermöglicht, die Integration von Machine-Learning-Modellen in ihre mobilen Apps zu vereinfachen. Darüber hinaus kann auch ein Junior-Entwickler diese Aufgabe leicht angehen. Ein weiterer Punkt ist, dass es Ihre iOS- und Android-Apps mit Lösungen, die für die Ausführung auf dem Gerät optimiert sind, viel ansprechender, personalisierter und nützlicher macht. Wie bereits erwähnt, nutzen mehr als 25.000 Apps auf Android und iOS die Funktionen von ML Kit.

Ein neues SDK, das die Erfahrung von Google im Bereich des maschinellen Lernens für mobile Entwickler in einem leistungsstarken, benutzerfreundlichen Paket auf Firebase bereitstellt.

ML Kit verfügt über einige Funktionen, die in drei Abschnitte kategorisiert werden können:

  1. Vision: Video- und Bildanalyse-APIs, um Bilder zu beschriften und Strichcodes, Text, Gesichter und Objekte zu erkennen.
  2. Natürliche Sprache: APIs zur Verarbeitung natürlicher Sprache, um 58 Sprachen zu identifizieren und zu übersetzen und Antwortvorschläge zu liefern.
  3. Benutzerdefiniert: Erstellen Sie Ihre eigenen Modelle mit AutoML Vision Edge, oder bringen Sie Ihre eigenen TensorFlow Lite-Modelle mit, führen Sie Experimente durch und stellen Sie sie mit ML Kit in der Produktion bereit.

Das Bild wird von Google Documents zur Verfügung gestellt

Jede Kategorie hat einige Funktionen. Zum Beispiel hat Vision einige Funktionen als Basis-APIs: Barcode Scanning, Face Detection, Image Labeling, Object Detection, Landmark Detection und Text Detection.

TensorFlow Lite

Grundsätzlich ist TensorFlow Lite eine Reihe von Tools, die Programmierern helfen, TensorFlow-Modelle auf mobilen, eingebetteten und IoT-Geräten angemessen auszuführen. Es ermöglicht maschinelles Lernen auf dem Gerät mit geringer Latenz und einer kleinen Binärgröße. Mit anderen Worten, TensorFlow Lite wurde entwickelt, um maschinelles Lernen auf Geräten am Rande des Netzwerks zu ermöglichen, anstatt Daten von einem Server hin und her zu senden. TensorFlow Lite besteht aus zwei Hauptkomponenten:

  1. Der TensorFlow Lite Interpreter: er läuft (optimierte Modelle) auf vielen verschiedenen Hardwaretypen, wie z.B. Mobiltelefonen und Mikrocontrollern.

2. Der TensorFlow Lite Konverter: er konvertiert TensorFlow Modelle in eine produktive Form für die Verwendung durch den Interpreter und kann Optimierungen einführen, um die Binärgröße und Leistung zu verbessern.

Die Schritte für die Verwendung von TensorFlow Lite umfassen im Wesentlichen die folgenden Schritte:

  1. Auswahl eines Modells
  2. Konvertierung des Modells
  3. Einsatz auf dem Gerät
  4. Optimierung des Modells

AutoML Vision Edge

Dieses neue Feature von Google kann benutzerdefinierte Bildklassifizierungsmodelle aus Ihren eigenen Trainingsdaten erstellen. Wenn Sie vorhaben, den Inhalt eines Bildes zu erkennen, können Sie zum Beispiel die geräteinterne Bildbeschriftungs-API von ML Kit verwenden. Wenn Sie jedoch ein spezielleres Bildbeschriftungsmodell benötigen, können Sie Firebase ML und AutoML Vision Edge nutzen, um ein Modell mit Ihren eigenen Bildern und Kategorien zu trainieren. Zum Beispiel ein Modell zur Unterscheidung von Blumenarten oder Lebensmittelarten. Das benutzerdefinierte Modell wird in der Google Cloud trainiert und kann dann vollständig auf dem Gerät verwendet werden.

Zusammenfassend

Auf einen Blick ist maschinelles Lernen ein Programmieransatz, der Ihren Android-Apps die Fähigkeit verleiht, automatisch aus früheren Erfahrungen zu lernen und sich zu verbessern. Infolgedessen hat Google eine Reihe von fortschrittlichen Funktionen und Tools für die Android-Entwicklung entworfen und implementiert. Dieser Artikel befasst sich mit einigen wichtigen Konzepten und fortgeschrittenen Funktionen, die von Google für Android-Entwickler vorgeschlagen wurden.