Android Machine Learning

Kayvan Kaseb

Follow

26. nov, 2020 – 9 min read

Billedet er stillet til rådighed af Unsplash

Som du ved, en voksende interesse for Machine Learning tvang virksomhederne til at fokusere og investere på det. Maskinlæring (ML) er den store del af computervidenskab, som fokuserer på at analysere og fortolke mønstre og strukturer i data for at muliggøre læring, ræsonnement og beslutningstagning uden for menneskelig interaktion. Desuden er Machine Learning en programmeringstilgang, der giver dine Android-apps mulighed for at lære og forbedre sig automatisk ud fra tidligere erfaringer. Som følge heraf har Google designet og implementeret en række avancerede funktioner og værktøjer til Android Machine Learning. Denne artikel har til formål at diskutere nogle hovedkoncepter og avancerede funktioner, der er blevet anbefalet til Android-udviklere.

Indledning og oversigt

Grundlæggende er maskinlæring (ML) en programmeringstilgang, der giver dine Android-apps mulighed for at lære og forbedre sig automatisk ud fra tidligere erfaringer uden at være eksplicit programmeret til at gøre det. På det seneste har Android en bred vifte af Machine Learning-værktøjer, der er tilgængelige for alle: designere, produktchefer til ingeniører, mobiludviklere og Machine Learning-eksperter. Nu er Android en platform, og en af de måder, du, som du kan måle en platforms succes på, er gennem de store resultater, som du bygger oven på den. I dag kører Android på 2,5 milliarder enheder, og en række af dem bruger allerede on-device ML på enhederne. On-device Machine Learning er heller ikke længere en fremtidsteknologi, for den er tilgængelig for brug lige nu. Det er f.eks. blevet nævnt, at mere end 25 000 applikationer på Android og iOS gør brug af ML Kits funktioner.

Med andre ord har de moderne mobiltelefoner kapacitet nok til at behandle lige så meget som traditionelle computere kan, og vores telefoner og tablets er kraftige nok til at køre applikationer, som kan lære og interagere i realtid. Machine Learning(ML) hjælper os med at bygge smarte apps. F.eks. Google Apps forudsigelse af de næste apps, du sandsynligvis vil bruge, og en mobilapp, som løser verdens største problem med at finde den perfekte emoji. Desuden er smarte assistenter, Snapchat-filtre, Smart Reply og Google Lens nogle af de andre produkter, der udnytter Machine Learning på enheder. Der findes en række SDK’er på mobiltelefoner, som hjælper med at køre Machine Learning på mobile enheder. Nogle af dem omfatter softwareudviklingskits, der er udviklet af populære virksomheder som Amazon, Intel og Microsoft, og også Google har udviklet ML Kit. De følgende afsnit i dette essay vil overveje nogle hovedkoncepter og nye funktioner, der er blevet anbefalet af Google til Android-udvikling.

Definitionen af Machine Learning (ML)

Den store af Machine Learning beskæftiger sig faktisk med spørgsmålet om, hvordan man kan konstruere computerprogrammer, der forbedres automatisk med erfaringer. Dit svar ligger således i dine data. Kort sagt betragtes Machine Learning som en delmængde af AI, som anvender statistiske metoder til at sætte maskiner i stand til at forbedre sig med erfaringer. Det sætter et computersystem i stand til at træffe beslutninger for at udføre en bestemt opgave. Disse programmer eller algoritmer er udformet på en sådan måde, at de kan lære og forbedre sig over tid ved at observere nye data. Hovedformålet med maskinlæring er at udlede mening af data. Derfor er data nøglen til at låse Machine Learning op. Jo flere kvalificerede data ML har, jo mere præcis bliver ML-algoritmen.

Machine Learning (ML) er videnskaben om computeralgoritmer, der forbedres automatisk gennem tidligere erfaringer.

For at kunne foretage forudsigelser eller træffe beslutninger uden at være eksplicit programmeret, opbygger Machine Learning-algoritmer en model baseret på eksempler, der kaldes træningsdata.

Machine Learning er udvinding af viden fra data.

Der er desuden nogle forskelle mellem kunstig intelligens og Machine Learning. Målet med kunstig intelligens er at skabe en maskine, der kan efterligne en menneskelig hjerne, og det kræver også indlæringsevner. Det drejer sig imidlertid om mere end blot læring; det drejer sig også om vidensrepræsentation, ræsonnement og abstrakt tænkning. I modsætning hertil er maskinlæring udelukkende fokuseret på at skrive software, som kan lære af tidligere erfaringer. Desuden er maskinlæring tættere beslægtet med datamining og statistik end med kunstig intelligens.

Maskinlæring giver os mulighed for at løse visse typer problemer på meget elegante måder. Det vigtige punkt er, hvorfor vi bruger Machine Learning i praksis. F.eks. skulle man skrive kode for at registrere, om nogen gik. Desuden, hvis du havde adgang til hans hastighed, skal du skrive en ret simpel smule kode for at angive en metrik for hastighed, der viser gang i virkeligheden. Udvidelse af denne situation til at løbe synes ligetil nok. Hvis vi desuden ville dække cykling, skal vi blot tilføje endnu en randbetingelse til vores kode. I øjeblikket er spørgsmålet, hvad med andre typer af aktiviteter, f.eks. golfsporten?

Golfsporten omfatter faktisk en masse gang, men der er også at bære og svinge en masse køller. Så hvordan kan vi forklare denne tilstand? Det er her, at maskinlæring kan hjælpe os effektivt. I traditionel programmering udtrykker vi regler i sprog som Kotlin, Java osv. Derefter anvender vi disse regler på et problem af interesse. I Machine Learning er paradigmet noget anderledes. I stedet for at skrive en masse regler tager vi en masse mærkedata som f.eks. billeder af mennesker, der er involveret i forskellige typer af aktiviteter med tilsvarende mærker for disse aktiviteter. Hvis vi desuden giver disse data til vores neurale netværk, vil det lære forretningsreglerne for os, uden at vi behøver at definere dem. Kort sagt har maskinlæring vist sig at være bemærkelsesværdigt effektiv til at løse en række forskellige slags problemer som f.eks. aktivitetsdetektion.

Maskinlæring i Android-udvikling

Som du har bemærket, er maskinlæring en programmeringstilgang, der giver dine Android-apps mulighed for at lære og forbedre sig automatisk ud fra erfaring uden at være eksplicit programmeret til at gøre det. Desuden er dette velegnet til Android-apps, der bruger ustrukturerede data som billeder og tekst eller problemer med et stort antal parametre som f.eks. forudsigelse af det vindende sportshold. På nuværende tidspunkt tilbyder Android en lang række værktøjer og metoder til maskinlæring: ML-designguides, Googles nøglefærdige maskinlærings-SDK ML Kit, TF Hub til at finde forudbyggede banebrydende modeller, TF Lite Model Maker til at træne en eksisterende model med dine egne data, og ML Kit brugerdefinerede modeller og Android Studio til at integrere disse modeller i din Android-app på en passende.

For at udvikle ML-apps til Android står du over for følgende fire hovedopgaver:

  1. Design: Identifikation af produktmål og tilvejebringelse af ML-designmønstre til at opnå dem.
  2. Byg og træn: Opbygning af ML-modellen eller træning af en på forhånd trænet model fra Google.
  3. Inferens: Processen med at bruge en maskinlæringsmodel, som allerede er blevet trænet til at udføre en bestemt opgave.
  4. Implementering: Installation og opdatering af ML-modeller til din Android-app.

Guidelines for design af Android-apps

I første omgang er der ingen forskel i forhold til andre avancerede teknologier. Dine produktdesignere og ingeniører har alle sammen taget stilling til, hvilken type problem vi forsøger at løse med vores produkt. Så det er ikke en enkeltstående indsats. Det er en ekstremt iterativ proces, når man har en ny teknologi. Man ønsker at afprøve grænserne, og man ønsker at samarbejde. Desuden ønsker man at observere, hvordan brugeren virkelig bruger ens produkt. Det betyder, at design, produktstyring og softwareudvikling spiller vigtige roller i denne proces. Google har udarbejdet to vejledninger inden for dette område som følger:

  1. The People + AI Guidebook : I denne vejledning er der seks forskellige afsnit, der kan hjælpe dig med at strukturere din samtale med dine designere og produktchefer. Overordnet set tilbyder den bedste praksis til at hjælpe dit team med at træffe menneskecentrerede AI-produktbeslutninger.

2. The Material Design for Machine Learning spec : Denne vejledning omfatter af følgende afsnit:

Først nye Material Design-retningslinjer for ML-brugstilfælde på mobilen.

For det andet, muliggør fantastisk end-to-end mobile UX drevet af ML.

For det tredje, kildekode tilgængelig for objektdetektering og -sporing og stregkodescanning.

Nøglebeslutningen i Android-udvikling

En nøglebeslutning, du bør tage stilling til i Android-udviklingen, er faktisk, om inferencing vil køre på enheden eller bruge en cloud-tjeneste, der vil blive tilgået eksternt. For at træffe denne beslutning nøjagtigt bør du overveje nogle parametre som fordele eller ulemper. Hvis du f.eks. vælger en tilgang på enheden, vil du få følgende fordele:

  1. Fortrolighed: I mange tilfælde er det mere hensigtsmæssigt bare at holde alt på enheden. Derfor behøver vi ikke at bekymre os om, hvordan dataene behandles i skyen.

2. Offline: On-device Machine Learning fungerer, når der ikke er nogen forbindelse, eller når netværket er broget. Hvis du f.eks. tilbringer noget tid i undergrundstog, vil du vide, at dette kan være nyttigt.

3. Lav latenstid: Ved at køre vores behandling på enheden kan vi være i stand til at fjerne netværkslatenstid helt ud af ligningen. Hvis vi også kobler dette med de seneste fremskridt inden for hardwareacceleration, kan vi give brugerne ægte realtidsoplevelser på tværs af en lang række Android-enheder.

ML Kit til app-udviklere

Som en kendsgerning er ML Kit SDK et nyt produkt fra Google, som blev præsenteret i 2018. ML Kit er et softwareudviklingssæt, der gør det muligt for udviklere at forenkle integrationen af maskinlæringsmodeller i deres mobilapps. Desuden kan selv en juniorudvikler nemt tage fat på denne opgave. Et andet punkt er, at det gør dine iOS- og Android-apps meget mere engagerende, personlige og nyttige med løsninger, der er optimeret til at køre på enheden. Som det blev nævnt, gør mere end 25.000 apps på Android og iOS brug af ML Kits funktioner.

En ny SDK, der bringer Googles maskinlæringserfaring til mobiludviklere i en kraftfuld, brugervenlig pakke på Firebase.

ML Kit har nogle funktioner, der kan kategoriseres i tre sektioner:

  1. Vision: Video- og billedanalyse-API’er til at mærke billeder og registrere stregkoder, tekst, ansigter og objekter.
  2. Naturligt sprog: API’er til behandling af naturligt sprog til at identificere og oversætte mellem 58 sprog og give svarforslag.
  3. Brugerdefineret: Byg dine egne modeller ved hjælp af AutoML Vision Edge, eller medbring dine egne TensorFlow Lite-modeller, kør eksperimenter, og implementer dem i produktion med ML Kit.

Billedet er leveret af Google Documents

Hver kategori har nogle funktioner. For eksempel har Vision nogle funktioner som Base API’er: Stregkodescanning, ansigtsdetektering, billedmærkning, objektdetektering, landmærkedetektering og tekstdetektering.

TensorFlow Lite

TensorFlow Lite er grundlæggende et sæt værktøjer, der hjælper programmører med at køre TensorFlow-modeller på passende vis på mobile, indlejrede og IoT-enheder. Faktisk giver det maskinlæringsinferens på enheden med lav latenstid og en lille binær størrelse. Med andre ord er TensorFlow Lite designet til at gøre det nemt at køre maskinlæring på enheder, i kanten af netværket, i stedet for at sende data frem og tilbage fra en server. TensorFlow Lite omfatter to hovedkomponenter:

  1. TensorFlow Lite-fortolkeren : den kører (optimerede modeller) på mange forskellige hardwaretyper, f.eks. mobiltelefoner og mikrocontrollere.

2. TensorFlow Lite-konverteren : den konverterer TensorFlow-modeller til en produktiv form til brug for fortolkeren, og kan være i stand til at indføre optimeringer for at forbedre binær størrelse og ydeevne.

Eventuelt indeholder trinene til brug af TensorFlow Lite kort fortalt følgende trin:

  1. Vælg en model
  2. Konvertering af modellen
  3. Deployering til din enhed
  4. Optimering af din model

AutoML Vision Edge

Denne nye funktion fra Google kan opbygge brugerdefinerede billedklassifikationsmodeller ud fra dine egne træningsdata. Hvis du planlægger at genkende indholdet af et billede, kan en mulighed faktisk være at bruge ML Kit’s API til billedmærkning på enheden. Hvis du imidlertid har brug for en mere specialiseret billedmærkningsmodel, kan du være i stand til at udnytte Firebase ML og AutoML Vision Edge til at træne en model med dine egne billeder og kategorier. F.eks. en model til at skelne mellem arter af blomster eller typer af mad. Den brugerdefinerede model trænes i Google Cloud, og derefter kan den bruges fuldt ud på enheden.

Sammenfattende

Maskinlæring er kort sagt en programmeringsmetode, der giver dine Android-apps mulighed for at lære og forbedre sig automatisk ud fra tidligere erfaringer. Som følge heraf har Google designet og implementeret en række avancerede funktioner og værktøjer til Android-udvikling. I denne artikel er der taget hensyn til nogle hovedkoncepter og avancerede funktioner, som Google har foreslået Android-udviklere.