Förra året lanserade Apple Core ML-en segue i världen av maskininlärning för Apples utvecklare. Innan det brukade vi redan använda maskininlärning med tekniker som AutoCorrect, Siri och ett prediktivt tangentbord, men Core ML tog en ny makt och flexibilitet i händerna på utvecklare. Under WWDC 18 meddelade Apple Core ML 2, och i den här artikeln lär du dig om vad som är nytt.
Innan vi dyker in i de förändringar som Core ML 2 ger, låt oss kortfattat diskutera vad Core ML verkligen är. Mer specifikt, låt oss lära oss lite om nyanser av maskininlärning. Core ML är en ram som låter iOS och macOS utvecklare enkelt och effektivt genomföra maskininlärning i sina appar.
Maskininlärning är användningen av statistisk analys för att hjälpa datorer att fatta beslut och förutsägelser baserat på egenskaper som finns i den data. Med andra ord är det att en dator bildar en abstrakt förståelse för en befintlig dataset (kallad en "modell") och använder den modellen för att analysera nyare data.
Med hjälp av lågnivåteknologi i Apple-plattformar kan Core ML erbjuda snabba och effektiva verktyg för maskininlärning att implementera i dina appar. Detta fungerar genom att använda Metal och Accelerate för att dra full nytta av GPU och CPU på enheten, vilket ger en sömlös hastighet. Detta gör det också möjligt för maskininlärning att arbeta på enheten istället för att ha tillgång till internet för varje förfrågan.
Predicterar utgångsfunktionsvärden från det givna en sats av inmatningsfunktionsvärden.-Apple Dokumentation
Batchprediktning är värt att notera eftersom Apple inte hade den i den första versionen av Core ML. I ett ögonblick kan batchprediktionen du köra din modell på en uppsättning data och få en uppsättning utgångar.
Om du hade en Core ML-modell för att klassificera bilder om de innehöll blommor eller träd och du ville klassificera flera bilder, låt oss säga 300, du skulle behöva skriva en for-slinga
att iterera genom var och en av bilderna och klassificera regelbundet var och en med din modell.
I Core ML 2 får vi dock vad Apple kallar Batch Predict API. Detta gör det möjligt för oss att göra flera förutsägelser på en uppsättning data utan att behöva använda för-loopar. Om du ville använda den, skulle du bara ringa:
modelOutputs = model.prediction (från: modelInputs, options: options)
modelInputs
, i det här exemplet är den uppsättning ingångar som du vill köra din modell på, men vi kommer inte att täcka vad alternativ
finns i den här artikeln. Om du vill lära dig mer om hur du använder Batch Predict API, vänligen hänvisa till Apples dokumentation. Även om detta kanske inte verkar som en stor sak först, det förbättrar faktiskt prestandan hos modellen med en hel 30%!
Använd Skapa ML med bekanta verktyg som Swift och macOS lekplatser för att skapa och träna anpassade maskininlärningsmodeller på din Mac. Du kan träna modeller för att utföra uppgifter som att känna igen bilder, extrahera mening från text eller hitta relationer mellan numeriska värden. - Apple Dokumentation
Medan Core ML alltid har varit en kraftfull plattform var det inte alltid lätt att skapa egna modeller. Tidigare var det nästan nödvändigt att vara bekant med Python för att skapa även de mest grundläggande modellerna. Med Core ML 2 har vi också skapat ML, ett enkelt sätt för dig att skapa egna Core ML-modeller.
Skapa ML är dock inte bara begränsat till bildbaserade modeller. Utan att skapa ett riktigt Xcode-projekt kan du träna olika typer av modeller på en lekplats. Dessutom kan du också testa dessa modeller och exportera dem för användning i alla applikationer.
Med ett mönster som ett konvolutionellt neuralt nätverk kan Skapa ML hjälpa dig att skapa en anpassad bildklassificator för att identifiera vissa egenskaper från en given bild. Till exempel kan du träna det för att skilja mellan ett träd och en blomma.
Eller du kan använda den för mer komplexa tillämpningar som att identifiera typen av växt eller en specifik hundras. Baserat på antalet bilder ökar noggrannheten, som med vilken maskinlärningsmodell som helst.
Kolla in mitt inlägg här på Envato Tuts + för att lära dig hur du skapar en bildklassificerare i Create ML.
Utöver att vara ett verktyg för bildklassificering kan Create ML också hjälpa dig att skapa textbaserade maskininlärningsmodeller. Till exempel kan du skapa en modell som berättar om känslan i en viss mening. Eller du kan skapa ett spamfilter som använder textens egenskaper (dvs de använda orden) för att kontrollera om en sträng är "spam" eller "inte spam".
Ibland kan flera datapunkter eller funktioner vara till hjälp när du försöker klassificera data. Kalkylblad är ett mycket starkt exempel på detta, och Skapa ML kan skapa Core ML-modeller baserade på CSV filer också.
Nu kan dina Excel-kalkylblad användas för att skapa en modell som förutsätter aktiemarknaden baserat på köp- och försäljningsmönster. eller kanske förutspår bokens genre baserat på författarens namn, titeln och antalet sidor.
Bundling din maskininlärningsmodell i din app är det enklaste sättet att komma igång med Core ML. Som modeller blir mer avancerade kan de bli stora och ta upp betydande lagringsutrymme. För en neuronbaserad modell, överväg att minska sitt fotavtryck genom att använda en lägre precisionsrepresentation för dess viktparametrar. - Apple-dokumentation
Med introduktionen av Core ML 2 och iOS 12 kan utvecklare nu minska storleken på sina redan utbildade modeller med över 70% från originalstorleken. Modellstorlek kan vara en verklig fråga - du kanske har märkt att några av dina appar blir större och större med varje uppdatering!
Det här är inte någon överraskning eftersom utvecklare ständigt gör sina maskininlärningsmodeller bättre, och naturligtvis, som framgår av utvecklardokumentationen, tar mer avancerade modeller upp mer lagringsutrymme, vilket gör själva appen större. Om appen blir för stor kan vissa användare sluta ladda ner uppdateringar och kan sluta använda dessa appar.
Lyckligtvis har du dock förmågan att quantize en modell som gör att storleken minskar avsevärt, baserat på den mängd kvalitet du är villig att ge upp. Kvantisering är inte det enda sättet att gå; det finns också andra sätt!
Core ML Tools ger utvecklare ett sätt att minska vikterna till halvstorlek. Om du inte vet vad vikter är det ändå okej; allt du behöver veta är att de är direkt relaterade till modellens precision. Som du kanske har gissat, motsvarar halvstorlek halv-precision.
Modeller före Core ML 2 hade bara möjlighet att representeras med 32 bitar, vilket är bra för precision men inte idealisk för lagringsstorlek. Halv precision minskar detta till bara 16 bitar och kan kraftigt minska modellens storlek. Om du vill göra det på dina modeller, besök dokumentationen för en omfattande guide.
Det är bra att ha dina modeller på din enhet eftersom det leder till ökad säkerhet och prestanda, och det beror inte på en solid internetanslutning. Men om din app använder flera modeller för att skapa en sömlös upplevelse för användaren kan alla dessa modeller inte behövas på en gång.
Du kan också hämta dessa modeller på önskat sätt och kompilera dem på plats istället för att kombinera dem med din app och öka hur mycket utrymme din app tar upp på användarens enhet. Du kan även ladda ner dessa modeller och lagra dem på din användares enhet tillfälligt för att undvika att ladda ner samma modell flera gånger.
I den här artikeln lärde du dig om den senaste och bästa tekniken i Core ML och hur den stackar upp mot föregående års version av API: n. Medan du är här på Envato Tuts +, kolla in några av våra andra fantastiska maskininlärningsinnehåll!