Android Machine Learning

Kayvan Kaseb

Follow

Nov 26, 2020 – 9 min read

Zdjęcie pochodzi z Unsplash

Jak wiadomo, rosnące zainteresowanie uczeniem maszynowym zmusiło firmy do skupienia się i inwestowania na nim. Uczenie maszynowe (ML) to kierunek w naukach obliczeniowych, który koncentruje się na analizie i interpretacji wzorców i struktur w danych, aby umożliwić uczenie się, rozumowanie i podejmowanie decyzji poza interakcją człowieka. Ponadto, Machine Learning jest podejściem programistycznym, które zapewnia aplikacji Android zdolność do uczenia się i poprawy automatycznie z poprzedniego doświadczenia. W rezultacie, Google zaprojektowało i wdrożyło wiele zaawansowanych funkcji i narzędzi dla Androida Machine Learning. Ten artykuł ma na celu omówienie niektórych głównych koncepcji i zaawansowanych funkcji, które zostały zalecane dla programistów Androida.

Wprowadzenie i przegląd

Podstawowo, Uczenie maszynowe (ML) jest podejściem programistycznym, które zapewnia twoim aplikacjom Androida zdolność do uczenia się i ulepszania automatycznie na podstawie doświadczenia bez wyraźnego zaprogramowania do tego. Ostatnio, Android ma szeroką gamę narzędzi Machine Learning, które są dostępne dla wszystkich: projektantów, menedżerów produktu do inżynierów, programistów mobilnych i ekspertów Machine Learning. Teraz, Android jest platformą, a jednym ze sposobów, które można zmierzyć sukces platformy jest poprzez wielkie osiągnięcia, które można zbudować na jej szczycie. Dzisiaj, Android działa na 2,5 miliarda urządzeń, a wiele z nich już używa on-device ML. Ponadto, on-device Machine Learning nie jest już technologią przyszłości, ponieważ jest ona dostępna do wykorzystania już teraz. Na przykład, wspomniano, że ponad 25 000 aplikacji na Androida i iOS korzystać z funkcji ML Kit.

Innymi słowy, nowoczesne telefony komórkowe mają wystarczającą pojemność do przetwarzania tyle, ile tradycyjne komputery mogą, a nasze telefony i tablety są wystarczająco silne, aby uruchomić aplikacje, które mogą uczyć się i interakcji w czasie rzeczywistym. Uczenie maszynowe (ML) pomaga nam budować inteligentne aplikacje. Na przykład, Google Apps przewiduje kolejne aplikacje, z których prawdopodobnie będziesz korzystać, a także aplikacja mobilna, która rozwiązuje największy na świecie problem ze znalezieniem idealnego emoji. Poza tym, Smart Assistants, Snapchat Filtry, Smart Reply, i obiektyw Google są niektóre z innych produktów wykorzystania uczenia maszynowego na urządzeniach. Wiele SDK istnieje na telefony komórkowe, które pomagają uruchomić Machine Learning na urządzeniach mobilnych. Niektóre z nich obejmują zestawy programistyczne opracowane przez popularne firmy, takie jak Amazon, Intel i Microsoft, a także Google opracował ML Kit. W kolejnych częściach tego eseju rozważymy niektóre główne koncepcje i nowe funkcje, które zostały zalecone przez Google dla rozwoju Android.

Definicja Machine Learning (ML)

W rzeczywistości, major Machine Learning zajmuje się pytaniem, jak konstruować programy komputerowe, które poprawiają się automatycznie z doświadczeniami. Tak więc twoja odpowiedź znajduje się w twoich danych. W skrócie, uczenie maszynowe jest uważane za podzbiór AI, który wykorzystuje metody statystyczne, aby umożliwić maszynom poprawę z doświadczeniem. Umożliwia to systemowi komputerowemu podejmowanie decyzji w celu wykonania określonego zadania. Te programy lub algorytmy są zaprojektowane w taki sposób, że mogą uczyć się i poprawiać w czasie poprzez obserwację nowych danych. Głównym celem uczenia maszynowego jest wydobycie znaczenia z danych. Dlatego dane są kluczem do odblokowania uczenia maszynowego. Im więcej kwalifikowanych danych posiada ML, tym dokładniejszy staje się algorytm ML.

Uczenie maszynowe (ML) jest nauką o algorytmach komputerowych, które ulepszają się automatycznie dzięki przeszłym doświadczeniom.

Aby dokonywać przewidywań lub podejmować decyzje bez wyraźnego programowania, algorytmy uczenia maszynowego budują model na podstawie przykładów, które są nazywane danymi treningowymi.

Uczenie maszynowe to wydobywanie wiedzy z danych.

Dodatkowo istnieją pewne różnice między sztuczną inteligencją a uczeniem maszynowym. Celem sztucznej inteligencji jest stworzenie maszyny, która może naśladować ludzki umysł, a to wymaga zdolności uczenia się, jak również. Jednakże, jest to coś więcej niż tylko uczenie się; jest to również reprezentacja wiedzy, rozumowanie i abstrakcyjne myślenie. W przeciwieństwie do tego, uczenie maszynowe skupia się wyłącznie na pisaniu oprogramowania, które może uczyć się na podstawie wcześniejszych doświadczeń. Poza tym, uczenie maszynowe jest bliżej związane z Data Mining i statystyką niż ze sztuczną inteligencją.

Uczenie maszynowe pozwala nam rozwiązywać pewne rodzaje problemów w bardzo elegancki sposób. Ważną kwestią jest to, dlaczego używamy Machine Learning w praktyce. Na przykład, trzeba było napisać kod, aby wykryć, czy ktoś chodzi. Poza tym, jeśli miałeś dostęp do jego prędkości, musisz napisać dość prosty kawałek kodu, aby określić metrykę dla prędkości, która pokazuje chodzenie w rzeczywistości. Rozszerzenie tej sytuacji na bieganie wydaje się wystarczająco proste. Dodatkowo, gdybyśmy chcieli uwzględnić jazdę na rowerze, musielibyśmy tylko dodać kolejny warunek brzegowy do naszego kodu. W tym momencie pojawia się pytanie, co z innymi rodzajami aktywności, na przykład golfem?

W rzeczywistości golf zawiera dużo chodzenia, ale jest też noszenie i wymachiwanie kijami. Więc, jak wyjaśnić ten stan? Tu właśnie może nam skutecznie pomóc uczenie maszynowe. W tradycyjnym programowaniu wyrażamy reguły w językach, takich jak Kotlin, Java. Następnie, stosujemy te reguły do interesującego nas problemu. W uczeniu maszynowym paradygmat jest nieco inny. Zamiast pisać wiele reguł, bierzemy wiele danych z etykietami, takich jak zdjęcia ludzi zaangażowanych w różne rodzaje działań z odpowiadającymi im etykietami dla tych działań. Ponadto, jeśli podamy te dane do naszej sieci neuronowej, nauczy się ona reguł biznesowych za nas, bez konieczności ich definiowania. W skrócie, uczenie maszynowe okazało się niezwykle skuteczne w rozwiązywaniu wielu różnych rodzajów problemów, takich jak wykrywanie aktywności.

Uczenie maszynowe w rozwoju Androida

Jak zauważyłeś, uczenie maszynowe jest podejściem programistycznym, które zapewnia twoim aplikacjom Android zdolność do uczenia się i poprawy automatycznie z doświadczenia bez wyraźnego zaprogramowania do tego. Ponadto, jest to dobrze dopasowane do aplikacji na Androida, które wykorzystują nieuporządkowane dane, takie jak obrazy i tekst, lub problemy z dużą liczbą parametrów, takich jak przewidywanie zwycięskiej drużyny sportowej. Obecnie, Android zapewnia szeroką gamę narzędzi i metod uczenia maszynowego: Przewodniki projektowe ML, Google’s turnkey machine learning SDK ML Kit, TF Hub do wyszukiwania wstępnie zbudowanych modeli krawędzi tnącej, TF Lite Model Maker do trenowania istniejącego modelu z własnymi danymi, a ML Kit niestandardowe modele i Android Studio do integracji tych modeli do aplikacji na Androida w odpowiedni.

Aby rozwijać aplikacje ML dla Androida, będziesz musiał zmierzyć się z czterema głównymi zadaniami, jak poniżej:

  1. Projektowanie: identyfikowanie celów produktu i dostarczanie wzorców projektowych ML, aby je osiągnąć.
  2. Buduj i trenuj: budowanie modelu ML lub trenowanie wstępnie wytrenowanego modelu z Google.
  3. Wnioskowanie: proces korzystania z modelu uczenia maszynowego, który został już przeszkolony do wykonania określonego zadania.
  4. Wdrażanie: Instalowanie i aktualizowanie modeli ML dla Twojej aplikacji na Androida.

Wskazówki dotyczące projektowania aplikacji na Androida

Początkowo nie ma różnicy w porównaniu z innymi zaawansowanymi technologiami. Twoi projektanci produktu i inżynieria wszystkie połączone, aby zdecydować, jaki rodzaj problemu staramy się rozwiązać z naszego produktu. Tak więc, nie jest to pojedynczy wysiłek. W przypadku nowej technologii jest to proces niezwykle iteracyjny. Chcesz przetestować granicę i chcesz współpracować. Ponadto, chcesz obserwować, jak użytkownicy naprawdę używają twojego produktu. Oznacza to, że projektowanie, zarządzanie produktem i inżynieria oprogramowania odgrywają kluczowe role w tym procesie. Google opracował dwa przewodniki w tej dziedzinie badań, jak poniżej:

  1. The People + AI Guidebook : W tym przewodniku, istnieje sześć różnych sekcji, aby pomóc Ci struktury rozmowy z projektantów i menedżerów produktu. Ogólnie rzecz biorąc, oferuje on najlepsze praktyki, które pomogą Twojemu zespołowi w podejmowaniu decyzji dotyczących produktów AI skoncentrowanych na człowieku.

2. The Material Design for Machine Learning spec : ten przewodnik zawiera następujące sekcje:

Po pierwsze, nowe wytyczne Material Design dla przypadków użycia ML na urządzeniach mobilnych.

Po drugie, umożliwienie świetnego end-to-end mobilnego UX napędzanego przez ML.

Po trzecie, kod źródłowy dostępny dla Object Detection and Tracking oraz Barcode Scanning.

Kluczowa decyzja w rozwoju Androida

Jak w rzeczywistości, kluczową decyzją, którą powinieneś podjąć w rozwoju Androida jest to, czy wnioskowanie będzie działało na urządzeniu, czy będzie korzystało z usługi w chmurze, do której dostęp będzie zdalny. Aby podjąć tę decyzję dokładnie, należy rozważyć niektóre parametry jako zalety lub wady. Na przykład, dla on-device podejścia można napotkać pewne korzyści, jak poniżej:

  1. Prywatność: W wielu przypadkach, to jest bardziej odpowiednie, aby po prostu zachować wszystko na urządzeniu. W związku z tym, nie musimy się martwić o to, jak dane są przetwarzane w chmurze.

2. Offline: on-device Machine Learning działa, gdy nie ma połączenia, lub gdy sieć jest niejednolita. Na przykład, jeśli spędzasz czas podziemnych pociągów, będziesz wiedzieć, że to może być przydatne.

3. Niskie opóźnienia: poprzez uruchomienie naszego przetwarzania na urządzeniu, możemy być w stanie usunąć opóźnienia sieci z równania całkowicie. Ponadto, łącząc to z najnowszymi osiągnięciami w dziedzinie akceleracji sprzętowej, możemy zapewnić użytkownikom prawdziwie rzeczywiste doświadczenia w czasie rzeczywistym w szerokim zakresie urządzeń z systemem Android.

ML Kit dla programistów aplikacji

Jako fakt, ML Kit SDK to nowy produkt od Google, który został zaprezentowany w 2018 roku. ML Kit to zestaw do tworzenia oprogramowania, który umożliwia programistom uproszczenie integracji modeli uczenia maszynowego w swoich aplikacjach mobilnych. Ponadto, nawet młodszy deweloper może łatwo zająć się tym zadaniem. Kolejną kwestią jest to, że sprawia on, że Twoje aplikacje na iOS i Androida są o wiele bardziej angażujące, spersonalizowane i użyteczne dzięki rozwiązaniom, które są zoptymalizowane do działania na urządzeniu. Jak już wspomniano, ponad 25 000 aplikacji na Androida i iOS korzysta z funkcji ML Kit.

Nowe SDK, które przynosi doświadczenie Google w zakresie uczenia maszynowego programistom mobilnym w potężnym, łatwym w użyciu pakiecie na Firebase.

ML Kit ma pewne funkcje, które można skategoryzować w trzech sekcjach:

  1. Wizja: Interfejsy API analizy wideo i obrazu do etykietowania obrazów i wykrywania kodów kreskowych, tekstu, twarzy i obiektów.
  2. Język naturalny: Interfejsy API przetwarzania języka naturalnego do identyfikacji i tłumaczenia między 58 językami oraz dostarczania sugestii odpowiedzi.
  3. Niestandardowe: Zbuduj własne modele za pomocą AutoML Vision Edge lub wprowadź własne modele TensorFlow Lite, przeprowadź eksperymenty i wdróż je w produkcji za pomocą ML Kit.

Zdjęcie pochodzi z Google Documents

Każda kategoria ma pewne funkcje. Na przykład kategoria Vision ma pewne funkcje jako Base APIs: Skanowanie kodów kreskowych, Wykrywanie twarzy, Etykietowanie obrazu, Wykrywanie obiektów, Wykrywanie punktów orientacyjnych i Wykrywanie tekstu.

TensorFlow Lite

Podstawowo, TensorFlow Lite to zestaw narzędzi, które pomagają programistom odpowiednio uruchamiać modele TensorFlow na urządzeniach mobilnych, wbudowanych i IoT. W rzeczywistości zapewnia on wnioskowanie uczenia maszynowego na urządzeniach z niską latencją i małym rozmiarem binarnym. Innymi słowy, TensorFlow Lite został zaprojektowany, aby ułatwić uruchamianie uczenia maszynowego na urządzeniach, na brzegu sieci, zamiast wysyłania danych tam i z powrotem z serwera. TensorFlow Lite zawiera dwa główne komponenty:

  1. Interpreter TensorFlow Lite : uruchamia (zoptymalizowane modele) na wielu różnych typach sprzętu, takich jak telefony komórkowe i mikrokontrolery.

2. Konwerter TensorFlow Lite : konwertuje modele TensorFlow do postaci produktywnej do wykorzystania przez interpreter, i może być w stanie wprowadzić optymalizacje w celu zwiększenia rozmiaru binarnego i wydajności.

Ostatecznie, kroki do korzystania z TensorFlow Lite zawiera następujące kroki krótko:

  1. Wybranie modelu
  2. Konwersja modelu
  3. Wprowadzenie do urządzenia
  4. Optymalizacja modelu

AutoML Vision Edge

Ta nowa funkcja od Google może budować niestandardowe modele klasyfikacji obrazów z własnych danych treningowych. W rzeczywistości, jeśli planujesz rozpoznać zawartość obrazu, jedną z opcji może być użycie ML Kit’s on-device image labeling API. Jeśli jednak potrzebujesz bardziej wyspecjalizowanego modelu etykietowania obrazów, możesz wykorzystać Firebase ML i AutoML Vision Edge do trenowania modelu z własnymi obrazami i kategoriami. Na przykład, model do rozróżniania gatunków kwiatów lub rodzajów żywności. Niestandardowy model jest szkolony w Google Cloud, a następnie może być w pełni wykorzystany na urządzeniu.

W podsumowaniu

Na pierwszy rzut oka, uczenie maszynowe jest podejściem programistycznym, które zapewnia aplikacjom Androida zdolność do uczenia się i ulepszania automatycznie na podstawie wcześniejszych doświadczeń. W rezultacie, Google zaprojektowało i wdrożyło wiele zaawansowanych funkcji i narzędzi dla rozwoju Androida. Ten artykuł rozważa niektóre główne koncepcje i zaawansowane funkcje, które zostały zaproponowane dla programistów Androida przez Google.