Androidin koneoppiminen

Kayvan Kaseb

Follow

26. marraskuuta, 2020 – 9 min read

Kuvan on tarjonnut Unsplash

Niin kuin tiedätte, kasvava kiinnostus koneoppimista kohtaan pakotti yritykset keskittymään ja investoimaan siihen. Koneoppiminen (Machine Learning, ML) on tietojenkäsittelytieteen pääaine, joka keskittyy datan kuvioiden ja rakenteiden analysointiin ja tulkintaan, jotta oppiminen, päättely ja päätöksenteko olisi mahdollista ilman ihmisen vuorovaikutusta. Lisäksi koneoppiminen on ohjelmointitapa, joka antaa Android-sovelluksillesi kyvyn oppia ja kehittyä automaattisesti aiemmasta kokemuksesta. Tämän seurauksena Google on suunnitellut ja toteuttanut useita kehittyneitä ominaisuuksia ja työkaluja Androidin koneoppimista varten. Tässä artikkelissa pyritään käsittelemään joitakin pääkäsitteitä ja kehittyneitä ominaisuuksia, joita on suositeltu Android-kehittäjille.

Esittely ja yleiskatsaus

Koneoppiminen (ML) on periaatteessa ohjelmointitapa, joka tarjoaa Android-sovelluksillesi kyvyn oppia ja parantaa automaattisesti kokemuksen perusteella ilman, että niitä on nimenomaisesti ohjelmoitu niin tekemään. Viime aikoina Androidissa on ollut laaja valikoima koneoppimisen työkaluja, jotka ovat kaikkien saatavilla: suunnittelijoiden, tuotepäälliköiden insinööreihin, mobiilikehittäjiin ja koneoppimisen asiantuntijoihin. Nyt Android on alusta, ja yksi tapa, jolla voit mitata alustan menestystä, on sen päälle rakennetut suuret saavutukset. Nykyään Android toimii 2,5 miljardissa laitteessa, ja monet niistä käyttävät jo laitteen sisäistä ML:ää. Laitteessa tapahtuva koneoppiminen ei myöskään ole enää tulevaisuuden teknologiaa, koska sitä voi käyttää jo nyt. On esimerkiksi mainittu, että yli 25 000 sovellusta Androidissa ja iOS:ssä hyödyntää ML Kitin ominaisuuksia.

Toisin sanoen nykyaikaisissa matkapuhelimissa on riittävästi kapasiteettia prosessoida yhtä paljon kuin perinteisissä tietokoneissa, ja puhelimemme ja tablettimme ovat riittävän tehokkaita käyttämään sovelluksia, jotka voivat oppia ja olla vuorovaikutuksessa reaaliajassa. Koneoppiminen(ML) auttaa meitä rakentamaan älykkäitä sovelluksia. Esimerkkinä mainittakoon Google Appsin ennustus seuraavista todennäköisesti käyttämistäsi sovelluksista ja mobiilisovellus, joka ratkaisee maailman suurimman ongelman täydellisen emojin löytämiseksi. Lisäksi älykkäät avustajat, Snapchat-suodattimet, älykkäät vastaukset ja Googlen linssi ovat joitakin muita tuotteita, joissa koneoppimista hyödynnetään laitteissa. Matkapuhelimissa on useita SDK:ita, joiden avulla Machine Learningia voidaan käyttää mobiililaitteissa. Osa niistä sisältää ohjelmistokehityspaketteja, joita ovat kehittäneet suositut yritykset, kuten Amazon, Intel ja Microsoft, ja myös Google on kehittänyt ML Kitin. Tämän esseen seuraavissa osioissa tarkastellaan joitakin keskeisiä käsitteitä ja uusia ominaisuuksia, joita Google on suositellut Android-kehitykseen.

Koneoppimisen (ML)

Koneoppimisen pääaineen määritelmä

Koneoppimisen pääaineena on itse asiassa kysymys siitä, miten voidaan rakentaa tietokoneohjelmia, jotka paranevat automaattisesti kokemusten myötä. Vastaus on siis datassa. Lyhyesti sanottuna koneoppimista pidetään tekoälyn alaryhmänä, joka käyttää tilastollisia menetelmiä, jotta koneet voivat parantaa kokemuksen myötä. Sen avulla tietokonejärjestelmä voi tehdä päätöksiä tietyn tehtävän suorittamiseksi. Nämä ohjelmat tai algoritmit on suunniteltu siten, että ne voivat oppia ja kehittyä ajan myötä havaitsemalla uutta dataa. Koneoppimisen päätavoitteena on johtaa datasta merkityksiä. Siksi data on avain koneoppimisen avaamiseen. Mitä enemmän pätevää dataa ML:llä on, sitä tarkempi ML-algoritmista tulee.

Koneoppiminen (ML) on tiede tietokonealgoritmeista, jotka kehittyvät automaattisesti aiempien kokemusten perusteella.

Tehdäkseen ennusteita tai päätöksiä ilman nimenomaista ohjelmointia koneoppimisalgoritmit rakentavat esimerkkien perusteella mallin, jota kutsutaan harjoitusdataksi.

Koneoppiminen on tiedon poimimista datasta.

Tekoälyn ja koneoppimisen välillä on lisäksi joitakin eroja. Tekoälyn tavoitteena on luoda kone, joka pystyy jäljittelemään ihmismieltä, ja se vaatii myös oppimiskykyä. Kyse on kuitenkin muustakin kuin vain oppimisesta, vaan myös tiedon esittämisestä, päättelystä ja abstraktista ajattelusta. Sitä vastoin koneoppimisessa keskitytään pelkästään kirjoittamaan ohjelmistoja, jotka voivat oppia aiemmista kokemuksista. Lisäksi koneoppiminen liittyy läheisemmin tiedonlouhintaan ja tilastotieteeseen kuin tekoälyyn.

Koneoppimisen avulla voimme ratkaista tietyntyyppisiä ongelmia hyvin tyylikkäillä tavoilla. Tärkeää on se, miksi käytämme koneoppimista käytännössä. Esimerkiksi sinun piti kirjoittaa koodia havaitaksesi, käveleekö joku. Sitä paitsi, jos sinulla oli pääsy hänen nopeuteensa, sinun täytyy kirjoittaa melko yksinkertainen koodinpätkä määrittääksesi nopeuden metriikan, joka näyttää kävelyn todellisuudessa. Tämän tilanteen laajentaminen juoksemiseen vaikuttaa riittävän suoraviivaiselta. Lisäksi jos haluaisimme kattaa myös pyöräilyn, meidän tarvitsee vain lisätä koodiin toinen reunaehto. Tällä hetkellä kysymys kuuluu, miten on muiden aktiviteettien laita, esimerkiksi golfin pelaaminen?

Tosiasiassa golfin pelaaminen sisältää paljon kävelyä, mutta siihen liittyy myös mailojen kantaminen ja heiluttaminen. Miten siis selitämme tämän ehdon? Tässä koneoppiminen voi auttaa meitä tehokkaasti. Perinteisessä ohjelmoinnissa ilmaisemme sääntöjä kielillä, kuten Kotlinilla, Javalla. Sitten sovellamme näitä sääntöjä kiinnostavaan ongelmaan. Koneoppimisessa paradigma on hieman erilainen. Sen sijaan, että kirjoittaisimme joukon sääntöjä, otamme paljon etikettidataa, kuten valokuvia ihmisistä, jotka harrastavat erityyppisiä toimintoja, ja näitä toimintoja vastaavat etiketit. Jos syötämme nämä tiedot neuroverkkoon, se oppii liiketoimintasäännöt puolestamme ilman, että niitä tarvitsee määritellä. Lyhyesti sanottuna koneoppiminen on osoittautunut huomattavan tehokkaaksi useiden erilaisten ongelmien, kuten aktiviteettien tunnistamisen, ratkaisemisessa.

Koneoppiminen Android-kehityksessä

Kuten huomasitkin, koneoppiminen on ohjelmointitapa, joka antaa Android-sovelluksillesi kyvyn oppia ja kehittyä automaattisesti kokemuksen perusteella ilman, että niitä on nimenomaisesti ohjelmoitu tekemään niin. Lisäksi se soveltuu hyvin Android-sovelluksiin, jotka käyttävät strukturoimatonta dataa, kuten kuvia ja tekstiä, tai ongelmia, joissa on suuri määrä parametreja, kuten voittavan urheilujoukkueen ennustaminen. Tällä hetkellä Android tarjoaa laajan valikoiman koneoppimisen työkaluja ja menetelmiä: ML-suunnitteluoppaat, Googlen valmis koneoppimisen SDK ML Kit, TF Hub valmiiden huippumallien löytämiseen, TF Lite Model Maker olemassa olevan mallin kouluttamiseen omilla tiedoillasi ja ML Kitin mukautetut mallit ja Android Studio näiden mallien integroimiseen Android-sovellukseesi sopivalla tavalla.

Kehittääksesi ML-sovelluksia Androidille joudut kohtaamaan neljä päätehtävää seuraavasti:

  1. Suunnittelu: Tuotteen tavoitteiden tunnistaminen ja ML-suunnittelumallien tarjoaminen niiden saavuttamiseksi.
  2. Rakenna ja kouluta: ML-mallin rakentaminen tai valmiiksi koulutetun mallin kouluttaminen Googlelta.
  3. Päättely: Prosessi, jossa käytetään koneoppimismallia, joka on valmiiksi kouluttanut tiettyyn tehtävään, ja joka on tarkoitettu tietynlaisen tehtävän suorittamiseen.
  4. Ota käyttöön: ML-mallien asentaminen ja päivittäminen Android-sovellusta varten.

Ohjeita Android-sovellusten suunnitteluun

Aluksi ei ole eroa muihin kehittyneisiin teknologioihin verrattuna. Tuotesuunnittelijat ja insinöörit päättävät yhdessä, millaisen ongelman yritämme ratkaista tuotteellamme. Kyseessä ei siis ole yksittäinen ponnistus. Se on äärimmäisen iteratiivinen prosessi, kun kyseessä on uusi teknologia. Haluat testata rajoja ja tehdä yhteistyötä. Lisäksi halutaan tarkkailla, miten käyttäjät todella käyttävät tuotetta. Tämä tarkoittaa, että suunnittelulla, tuotehallinnolla ja ohjelmistosuunnittelulla on tässä prosessissa keskeinen rooli. Google on tuottanut kaksi opasta tähän aihepiiriin liittyen seuraavasti:

  1. The People + AI Guidebook : Tässä oppaassa on kuusi eri osiota, joiden avulla voit jäsentää keskustelua suunnittelijoiden ja tuotepäälliköiden kanssa. Kaiken kaikkiaan se tarjoaa parhaita käytäntöjä, joiden avulla tiimisi voi tehdä ihmislähtöisiä tekoälytuotepäätöksiä.

2. The Material Design for Machine Learning -speksejä : Tämä opas sisältää seuraavat osiot:

Ensiksi uudet Material Design -ohjeet ML-käyttötarkoituksia varten mobiililaitteissa.

Toiseksi loistavan kokonaisvaltaisen mobiili-UX:n mahdollistaminen ML:n avulla.

Kolmanneksi, lähdekoodi saatavilla Object Detection and Tracking ja Barcode Scanning -ohjelmia varten.

Keskeinen päätös Android-kehityksessä

Keskeinen päätös, joka kannattaa ottaa huomioon Android-kehityksessä on se, ajetaanko inferenssi laitteessa vai käytetäänkö pilvipalvelua, jota käytettäisiin etänä. Jotta tämä päätös voitaisiin tehdä tarkasti, sinun pitäisi harkita joitakin parametreja etuina tai haittoina. Esimerkiksi laitteessa tapahtuvassa lähestymistavassa on joitakin etuja seuraavasti:

  1. Tietosuoja: Monissa tapauksissa on tarkoituksenmukaisempaa pitää kaikki vain laitteessa. Siksi meidän ei tarvitse huolehtia siitä, miten tietoja käsitellään pilvessä.

2. Offline: Laitteella tapahtuva koneoppiminen toimii silloin, kun yhteyttä ei ole tai kun verkko on hajanainen. Jos esimerkiksi vietät aikaa maanalaisissa junissa, tiedät, että tästä voi olla hyötyä.

3. Pieni latenssi: Kun suoritamme prosessoinnin laitteessa, voimme poistaa verkon latenssin kokonaan yhtälöstä. Kun tämä yhdistetään myös laitteistokiihdytyksen viimeisimpiin edistysaskeliin, voimme tarjota käyttäjille aidosti reaaliaikaisia kokemuksia monenlaisilla Android-laitteilla.

ML Kit sovelluskehittäjille

ML Kit SDK on Googlen uusi tuote, joka esiteltiin vuonna 2018. ML Kit on ohjelmistokehityspaketti, jonka avulla kehittäjät voivat yksinkertaistaa koneoppimismallien integrointia mobiilisovelluksiinsa. Lisäksi jopa juniorikehittäjä voi puuttua tähän tehtävään helposti. Toinen seikka on se, että se tekee iOS- ja Android-sovelluksistasi paljon houkuttelevampia, yksilöllisempiä ja hyödyllisempiä laitteelle optimoitujen ratkaisujen avulla. Kuten mainittiin, yli 25 000 Android- ja iOS-sovellusta hyödyntää ML Kitin ominaisuuksia.

Uusi SDK, joka tuo Googlen koneoppimiskokemuksen mobiilikehittäjille tehokkaana ja helppokäyttöisenä pakettina Firebase-tietokantaan.

ML Kitissä on joitain ominaisuuksia, jotka voidaan luokitella kolmeen osaan:

  1. Vision: Video- ja kuva-analyysirajapinnat kuvien merkitsemiseen ja viivakoodien, tekstin, kasvojen ja esineiden tunnistamiseen.
  2. Luonnollinen kieli: Luonnollisen kielen käsittely API:t 58 kielen tunnistamiseen ja kääntämiseen sekä vastausehdotusten antamiseen.
  3. Mukautettu: Rakenna omia malleja AutoML Vision Edgen avulla tai tuo omat TensorFlow Lite -mallisi, suorita kokeita ja ota ne käyttöön tuotannossa ML Kitin avulla.

Kuvan tarjoaa Google Documents

Kussakin kategoriassa on joitain ominaisuuksia. Esimerkiksi Visionilla on joitakin ominaisuuksia kuten Base APIs: Viivakoodin skannaus, kasvojen tunnistus, kuvien merkitseminen, objektien tunnistus, maamerkkien tunnistus ja tekstin tunnistus.

TensorFlow Lite

Periaatteessa TensorFlow Lite on joukko työkaluja, jotka auttavat ohjelmoijia käyttämään TensorFlow-malleja mobiililaitteissa, sulautetuissa laitteissa ja IoT-laitteissa asianmukaisesti. Itse asiassa se tarjoaa laitteessa tapahtuvan koneoppimisen päättelyn pienellä viiveellä ja pienellä binäärikoolla. Toisin sanoen TensorFlow Lite on suunniteltu helpottamaan koneoppimisen suorittamista laitteissa verkon reunalla sen sijaan, että tietoja lähetettäisiin edestakaisin palvelimelta. TensorFlow Lite sisältää kaksi pääkomponenttia:

  1. TensorFlow Lite -tulkki : se ajaa (optimoituja malleja) monilla eri laitteistotyypeillä, kuten matkapuhelimilla ja mikrokontrollereilla.

2. TensorFlow Lite -muunnin : se muuntaa TensorFlow-mallit tuottavaan muotoon tulkin käytettäväksi tulkissa, ja se voi ottaa käyttöön optimointeja, joilla voidaan kasvattaa binäärikokoa ja suorituskykyä.

TensorFlow Liten käytön vaiheet sisältävät lyhyesti seuraavat vaiheet:

  1. Mallin valitseminen
  2. Mallin muuntaminen
  3. Mallin käyttöönotto laitteeseen
  4. Mallin optimointi

AutoML Vision Edge

Tällä Googlen uudella ominaisuudella voi rakentaa mukautettuja kuvien luokittelumalleja omasta harjoitusdatasta. Itse asiassa, jos aiot tunnistaa kuvan sisällön, yksi vaihtoehto voisi käyttää ML Kitin laitteessa olevaa kuvien merkintä API:ta. Jos kuitenkin tarvitset erikoistuneemman kuvanmerkintämallin, voit hyödyntää Firebase ML:ää ja AutoML Vision Edgeä mallin kouluttamiseen omilla kuvillasi ja luokillasi. Esimerkiksi malli, jolla voidaan erottaa toisistaan kukkalajit tai ruokatyypit. Mukautettu malli koulutetaan Googlen pilvipalvelussa, minkä jälkeen sitä voidaan käyttää täysin laitteessa.

Yhteenvetona

Koneoppiminen on yhdellä silmäyksellä ohjelmointitapa, joka tarjoaa Android-sovelluksillesi kyvyn oppia ja kehittyä automaattisesti aiemmasta kokemuksesta. Tämän seurauksena Google on suunnitellut ja toteuttanut useita kehittyneitä ominaisuuksia ja työkaluja Android-kehitykseen. Tässä artikkelissa tarkastellaan joitakin pääkäsitteitä ja kehittyneitä ominaisuuksia, joita Google on ehdottanut Android-kehittäjille.