Android Machine Learning

Kayvan Kaseb

Sledovat

26. listopadu, 2020 – 9 minut čtení

Obrázek poskytl Unsplash

Jak víte, rostoucí zájem o strojové učení donutil společnosti, aby se na něj zaměřily a investovaly do něj. Strojové učení (Machine Learning, ML) je obor výpočetní vědy, který se zaměřuje na analýzu a interpretaci vzorů a struktur v datech, aby umožnil učení, uvažování a rozhodování mimo interakci s člověkem. Kromě toho je strojové učení programátorský přístup, který poskytuje aplikacím pro systém Android schopnost automaticky se učit a zlepšovat na základě předchozích zkušeností. V důsledku toho společnost Google navrhla a implementovala řadu pokročilých funkcí a nástrojů pro strojové učení systému Android. Cílem tohoto článku je probrat některé hlavní koncepty a pokročilé funkce, které byly doporučeny vývojářům systému Android.

Úvod a přehled

Základem je, že strojové učení (ML) je programovací přístup, který poskytuje vašim aplikacím pro systém Android schopnost automaticky se učit a zlepšovat na základě předchozích zkušeností, aniž by k tomu byly výslovně naprogramovány. V poslední době je v systému Android k dispozici široká škála nástrojů pro strojové učení, které jsou k dispozici všem: návrhářům, produktovým manažerům až po inženýry, mobilní vývojáře a odborníky na strojové učení. Nyní je Android platforma a jedním ze způsobů, kterými můžete měřit úspěch platformy, jsou skvělé úspěchy, které na ní vybudujete. Systém Android dnes běží na 2,5 miliardy zařízení a řada z nich již využívá ML přímo v zařízení. Také on-device Machine Learning již není technologií budoucnosti, protože je dostupná k použití již nyní. Bylo například zmíněno, že více než 25 000 aplikací v systémech Android a iOS využívá funkce sady ML.

Jinými slovy, moderní mobilní telefony mají dostatečnou kapacitu pro zpracování stejného množství dat jako tradiční počítače a naše telefony a tablety jsou dostatečně výkonné pro spouštění aplikací, které se mohou učit a komunikovat v reálném čase. Strojové učení(ML) nám pomáhá vytvářet chytré aplikace. Například aplikace Google Apps předpovídající další aplikace, které budete pravděpodobně používat, a mobilní aplikace, která řeší největší problém na světě při hledání dokonalých emoji. Kromě toho jsou dalšími produkty využití strojového učení v zařízeních chytří asistenti, filtry Snapchat, chytré odpovědi a čočky Google. V mobilních telefonech existuje řada SDK, které pomáhají spouštět Machine Learning na mobilních zařízeních. Některé z nich zahrnují sady pro vývoj softwaru vyvinuté populárními společnostmi, jako jsou Amazon, Intel a Microsoft, a také společnost Google vyvinula ML Kit. V následujících částech této eseje se budeme zabývat některými hlavními pojmy a novými funkcemi, které doporučila společnost Google pro vývoj v systému Android.

Definice strojového učení (ML)

V podstatě se hlavní obor strojového učení zabývá otázkou, jak konstruovat počítačové programy, které se automaticky zlepšují se zkušenostmi. Odpověď se tedy skrývá v datech. Stručně řečeno, strojové učení je považováno za podmnožinu umělé inteligence, která využívá statistické metody k tomu, aby umožnila strojům zlepšovat se pomocí zkušeností. Umožňuje počítačovému systému činit rozhodnutí k provedení určitého úkolu. Tyto programy nebo algoritmy jsou navrženy tak, aby se pozorováním nových dat mohly v průběhu času učit a zdokonalovat. Hlavním cílem strojového učení je odvodit význam z dat. Klíčem k odemčení strojového učení jsou tedy data. Čím více kvalifikovaných dat ML má, tím je algoritmus ML přesnější.

Strojové učení (ML) je věda o počítačových algoritmech, které se automaticky zlepšují na základě minulých zkušeností.

Aby algoritmy strojového učení mohly předpovídat nebo rozhodovat, aniž by byly explicitně naprogramovány, vytvářejí model na základě příkladů, které se nazývají trénovací data.

Strojové učení je získávání znalostí z dat.

Mezi umělou inteligencí a strojovým učením navíc existují určité rozdíly. Cílem umělé inteligence je vytvořit stroj, který dokáže napodobit lidskou mysl, a vyžaduje také schopnost učení. Nejde však jen o učení, ale také o reprezentaci znalostí, uvažování a abstraktní myšlení. Naproti tomu strojové učení se zaměřuje výhradně na psaní softwaru, který se dokáže učit z minulých zkušeností. Kromě toho je strojové učení těsněji spjato s dolováním dat a statistikou než s umělou inteligencí.

Strojové učení nám umožňuje řešit určité druhy problémů velmi elegantním způsobem. Důležité je, proč strojové učení v praxi používáme. Například jste museli napsat kód, abyste zjistili, zda někdo chodí. Kromě toho, pokud byste měli přístup k jeho rychlosti, musíte napsat poměrně jednoduchý kus kódu, abyste zadali metriku pro rychlost, která ukazuje chůzi ve skutečnosti. Rozšíření této situace na běh se zdá být dostatečně jednoduché. Pokud bychom navíc chtěli pokrýt i jízdu na kole, stačí do kódu přidat další okrajovou podmínku. V tuto chvíli se nabízí otázka, co s dalšími typy činností, například s golfem?

Ve skutečnosti golf zahrnuje hodně chůze, ale je zde také nošení a máchání hromadou holí. Jak tedy vysvětlíme tento stav? Zde nám může účinně pomoci strojové učení. V tradičním programování vyjadřujeme pravidla v jazycích, jako je Kotlin, Java. Pak tato pravidla aplikujeme na problém, který nás zajímá. Ve strojovém učení je paradigma poněkud odlišné. Místo psaní hromady pravidel vezmeme spoustu dat se štítky, například fotografie lidí, kteří se věnují různým typům činností, s odpovídajícími štítky pro tyto činnosti. Kromě toho, pokud tato data dodáme naší neuronové síti, naučí se obchodní pravidla za nás, aniž bychom je museli definovat. Stručně řečeno, strojové učení se ukázalo jako pozoruhodně efektivní při řešení řady různých druhů problémů, jako je například detekce aktivit.

Strojové učení ve vývoji systému Android

Jak jste si všimli, strojové učení je programátorský přístup, který poskytuje vašim aplikacím pro systém Android schopnost učit se a zlepšovat se automaticky na základě zkušeností, aniž by k tomu byly explicitně naprogramovány. Navíc se dobře hodí pro aplikace pro Android, které používají nestrukturovaná data, jako jsou obrázky a text, nebo problémy s velkým počtem parametrů, jako je předpovídání vítězného sportovního týmu. V současné době poskytuje systém Android širokou škálu nástrojů a metod strojového učení: ML průvodce návrhem, hotovou sadu strojového učení SDK ML Kit od společnosti Google, TF Hub pro vyhledávání předpřipravených špičkových modelů, TF Lite Model Maker pro trénování existujícího modelu s vlastními daty a vlastní modely ML Kit a Android Studio pro vhodnou integraci těchto modelů do aplikace pro Android.

Při vývoji ML aplikací pro Android vás čekají následující čtyři hlavní úkoly:

  1. Návrh: určení cílů produktu a poskytnutí ML návrhových vzorů k jejich dosažení.
  2. Sestavení a trénink: sestavení ML modelu nebo trénink předtrénovaného modelu od Googlu.
  3. Inference: proces použití modelu strojového učení, který již byl vycvičen k provedení určitého úkolu.
  4. Nasazení: Instalace a aktualizace ML modelů pro vaši aplikaci pro Android.

Pokyny pro navrhování aplikací pro Android

Zpočátku není žádný rozdíl ve srovnání s jinými pokročilými technologiemi. Vaši návrháři a inženýři společně rozhodují o tom, jaký problém se snažíme naším produktem vyřešit. Nejedná se tedy o jednorázové úsilí. Když máte novou technologii, je to extrémně iterativní proces. Chcete testovat hranice a chcete spolupracovat. Kromě toho chcete pozorovat, jak uživatelé váš produkt skutečně používají. To znamená, že v tomto procesu hrají klíčovou roli design, produktový management a softwarové inženýrství. Společnost Google vytvořila v této oblasti dva následující průvodce:

  1. Průvodce Lidé + AI : V tomto průvodci je šest různých oddílů, které vám pomohou strukturovat rozhovor s designéry a produktovými manažery. Celkově nabízí osvědčené postupy, které vašemu týmu pomohou při rozhodování o produktech AI zaměřených na člověka.

2. The Material Design for Machine Learning spec : tento průvodce obsahuje následující části:

První, nové pokyny pro Material Design pro případy použití ML na mobilních zařízeních.

Druhá, umožnění skvělého end-to-end mobilního UX poháněného ML.

Zatřetí, zdrojový kód dostupný pro detekci a sledování objektů a skenování čárových kódů.

Klíčové rozhodnutí při vývoji systému Android

V podstatě klíčovým rozhodnutím, které byste měli při vývoji systému Android řešit, je, zda bude inferencování probíhat na zařízení, nebo se použije cloudová služba, ke které by se přistupovalo vzdáleně. Abyste toto rozhodnutí učinili přesně, měli byste zvážit některé parametry jako výhody nebo nevýhody. Například v případě přístupu na zařízení se setkáte s některými výhodami, které jsou následující:

  1. Soukromí: V mnoha případech je vhodnější mít vše pouze v zařízení. Nemusíme se tedy starat o to, jak jsou data zpracovávána v cloudu.

2. Offline: Strojové učení na zařízení funguje, když není připojení nebo když je síť nejednotná. Pokud například trávíte nějaký čas v podzemních vlacích, jistě víte, že by to mohlo být užitečné.

3. Nízká latence: Díky tomu, že zpracování probíhá na zařízení, můžeme být schopni latenci sítě z rovnice zcela odstranit. Také ve spojení s nejnovějšími pokroky v oblasti hardwarové akcelerace můžeme uživatelům poskytnout zážitky skutečně v reálném čase na široké škále zařízení se systémem Android.

ML Kit pro vývojáře aplikací

V podstatě ML Kit SDK je nový produkt od společnosti Google, který byl představen v roce 2018. ML Kit je sada pro vývoj softwaru, která vývojářům umožňuje zjednodušit integraci modelů strojového učení do jejich mobilních aplikací. Navíc se tímto úkolem může snadno zabývat i juniorský vývojář. Dalším bodem je, že díky řešením, která jsou optimalizována pro běh na zařízení, jsou aplikace pro iOS a Android mnohem poutavější, personalizovanější a užitečnější. Jak bylo uvedeno, funkce sady ML Kit využívá více než 25 000 aplikací pro systémy Android a iOS.

Nová sada SDK, která přináší mobilním vývojářům zkušenosti se strojovým učením společnosti Google ve výkonném a snadno použitelném balíčku na platformě Firebase.

ML Kit má některé funkce, které lze rozdělit do tří sekcí:

  1. Vision: Rozhraní API pro analýzu videa a obrazu pro označování obrázků a detekci čárových kódů, textu, obličejů a objektů.
  2. Přirozený jazyk:
  3. Vlastní: API pro zpracování přirozeného jazyka k identifikaci a překladu mezi 58 jazyky a poskytování návrhů odpovědí:

Obrázek poskytuje Google Documents

Každá kategorie má některé funkce. Například kategorie Vision má některé funkce jako Base API: Skenování čárových kódů, Detekce obličejů, Označování obrázků, Detekce objektů, Detekce orientačních bodů a Detekce textu.

TensorFlow Lite

Základní TensorFlow Lite je sada nástrojů, které pomáhají programátorům vhodně spouštět modely TensorFlow na mobilních, vestavěných a IoT zařízeních. Ve skutečnosti poskytuje odvozování strojového učení na zařízení s nízkou latencí a malou velikostí binárky. Jinými slovy, TensorFlow Lite je navržen tak, aby usnadnil spouštění strojového učení na zařízeních, na okraji sítě, namísto odesílání dat ze serveru tam a zpět. TensorFlow Lite obsahuje dvě hlavní součásti:

  1. interpret TensorFlow Lite : běží (optimalizované modely) na mnoha různých typech hardwaru, jako jsou mobilní telefony a mikrokontroléry.

2. Konvertor TensorFlow Lite : převádí modely TensorFlow do produktivní formy pro použití interpretem a může být schopen zavést optimalizace pro zvýšení velikosti binárky a výkonu.

Případně kroky pro použití TensorFlow Lite obsahují stručně následující kroky:

  1. Výběr modelu
  2. Konverze modelu
  3. Uložení do zařízení
  4. Optimalizace modelu

AutoML Vision Edge

Tato nová funkce od společnosti Google dokáže vytvořit vlastní modely klasifikace obrazu z vlastních trénovacích dat. Pokud totiž plánujete rozpoznávat obsah obrázku, jednou z možností by mohlo být použití rozhraní API pro označování obrázků v zařízení ML Kit. Pokud však požadujete specializovanější model označování obrázků, můžete mít možnost využít Firebase ML a AutoML Vision Edge k trénování modelu s vlastními obrázky a kategoriemi. Například model pro rozlišování druhů květin nebo typů potravin. Vlastní model je vycvičen v cloudu Google a poté jej lze plně používat v zařízení.

Závěrem

Všeobecně řečeno, strojové učení je programátorský přístup, který vašim aplikacím pro systém Android poskytuje možnost automatického učení a vylepšování na základě předchozích zkušeností. Díky tomu společnost Google navrhla a implementovala řadu pokročilých funkcí a nástrojů pro vývoj systému Android. Tento článek se zabýval některými hlavními koncepty a pokročilými funkcemi, které společnost Google navrhla pro vývojáře systému Android.