Ohjelmointi

Mitä koneoppiminen on? Tiedoista johdettu älykkyys

Koneoppiminen määritelty

Koneoppiminen on tekoälyn haara, joka sisältää menetelmiä tai algoritmeja mallien automaattiseen luomiseen datasta. Toisin kuin järjestelmä, joka suorittaa tehtävän noudattaen selkeitä sääntöjä, koneoppimisjärjestelmä oppii kokemuksesta. Sääntöihin perustuva järjestelmä suorittaa tehtävän samalla tavalla joka kerta (hyvässä tai huonossa), mutta koneoppimisen järjestelmän suorituskykyä voidaan parantaa kouluttamalla altistamalla algoritmi enemmän tiedoille.

Koneoppimisalgoritmit jaetaan usein valvottu (harjoitustiedot on merkitty vastauksilla) ja valvomaton (mahdollisia tunnisteita ei näytetä harjoitusalgoritmissa). Valvotut koneoppimisongelmat jaetaan edelleen luokitus (ennustaa ei-numeeriset vastaukset, kuten asuntolainan maksamatta jättämisen todennäköisyys) ja regressio (ennustaa numeeriset vastaukset, kuten ensi kuussa myytävien widgetien määrä Manhattan-myymälässäsi).

Valvomaton oppiminen jaetaan edelleen ryhmittyminen (löytää samankaltaisten esineiden ryhmiä, kuten juoksukengät, kävelykengät ja mekot) yhdistys (löytää yleisiä esineiden sekvenssejä, kuten kahvi ja kerma) ja ulottuvuuden vähentäminen (projektio, ominaisuuksien valinta ja ominaisuuksien poiminta).

Koneoppimisen sovellukset

Kuulemme koneoppimisen sovelluksista päivittäin, vaikkakaan niistä ei kuitenkaan ole seostamatonta menestystä. Itse ajavat autot ovat hyvä esimerkki, jossa tehtävät vaihtelevat yksinkertaisista ja onnistuneista (pysäköintiavustin ja moottoriteiden seuranta) monimutkaisiin ja epäselviin (täysi ajoneuvon hallinta kaupunkiympäristössä, mikä on johtanut useisiin kuolemiin).

Pelikoneoppiminen on erittäin onnistunutta tammi-, shakki-, shogi- ja Go-pelaajille, jotka ovat voittaneet ihmisten maailmanmestareita. Automaattinen kielenkäännös on onnistunut suurelta osin, vaikka jotkut kieliparit toimivat paremmin kuin toiset, ja ihmisen kääntäjät voivat edelleen parantaa monia automaattisia käännöksiä.

Automaattinen puhe tekstiksi toimii melko hyvin ihmisille, joilla on yleisiä aksentteja, mutta ei niin hyvin ihmisille, joilla on voimakkaita alueellisia tai kansallisia aksentteja; suorituskyky riippuu myyjien käyttämistä koulutusjoukoista. Sosiaalisen median automaattisella mielipiteiden analysoinnilla on kohtuullisen hyvä onnistumisaste, todennäköisesti siksi, että koulutusjoukot (esim.Amazonin tuotearvostelut, jotka yhdistävät kommentin numeerisella pistemäärällä) ovat suuria ja helposti saatavilla.

Automaattinen resumien seulonta on kiistanalainen alue. Amazon joutui vetämään sisäisen järjestelmänsä pois harjoittelun perusteella, mikä aiheutti sen, että se heikensi naisten kaikkia työhakemuksia.

Muilla tällä hetkellä käytössä olevilla yhteenvetoseulontajärjestelmillä saattaa olla harhaluuloja, jotka saavat heidät päivittämään nykyisten työntekijöiden kaltaisia ​​ehdokkaita tavoilla, joilla ei laillisesti ole merkitystä (esim. Nuoret, valkoiset, miesehdokkaat tasokkaista englanninkielisistä alueista joukkuelajit läpäisevät todennäköisemmin seulonnan). Microsoftin ja muiden tutkimushankkeet keskittyvät koneoppimisen implisiittisten ennakkoluulojen poistamiseen.

Automaattinen patologian ja radiologisten kuvien luokittelu on edennyt pisteeseen, jossa se voi auttaa (mutta ei korvata) patologeja ja radiologeja havaitsemaan tietyntyyppisiä poikkeavuuksia. Samaan aikaan kasvojen tunnistusjärjestelmät ovat molemmat kiistanalaisia, kun ne toimivat hyvin (yksityisyyden suojan vuoksi), eivätkä ne yleensä ole yhtä tarkkoja naisille ja väreille kuin valkoisille miehille (harjoittelupopulaation puolueellisuudesta johtuen).

Koneoppimisalgoritmit

Koneoppiminen riippuu joukosta algoritmeja tietojoukon muuttamiseksi malliksi. Mikä algoritmi toimii parhaiten, riippuu ratkaisemasi ongelman tyypistä, käytettävissä olevista laskentaresursseista ja tietojen luonteesta. Riippumatta siitä, mitä algoritmia tai algoritmeja käytät, sinun on ensin puhdistettava ja kunnostettava tiedot.

Keskustellaan tavallisimmista algoritmeista jokaiselle ongelmalle.

Luokittelualgoritmit

Luokitteluongelma on valvottu oppimisongelma, joka pyytää valintaa kahden tai useamman luokan välillä, yleensä antamalla todennäköisyydet jokaiselle luokalle. Jättäen pois hermoverkot ja syvällisen oppimisen, jotka vaativat paljon korkeamman tason laskentaresursseja, yleisimmät algoritmit ovat Naive Bayes, päätöksentekopuu, logistinen regressio, K-lähimmät naapurit ja Support Vector Machine (SVM). Voit myös käyttää yhdistelmämenetelmiä (mallien yhdistelmiä), kuten Random Forest, muita Bagging-menetelmiä ja tehostamismenetelmiä, kuten AdaBoost ja XGBoost.

Regressioalgoritmit

Regressio-ongelma on valvottu oppimisongelma, joka pyytää mallia ennustamaan luvun. Yksinkertaisin ja nopein algoritmi on lineaarinen (pienimmän neliösumman) regressio, mutta sinun ei pitäisi pysähtyä siihen, koska se antaa sinulle usein keskinkertaisen tuloksen. Muita yleisiä koneoppimisen regressioalgoritmeja (hermoverkoista puuttuvat) ovat Naive Bayes, päätöksentekopuu, K-lähimmät naapurit, LVQ (Learning Vector Quantization), LARS Lasso, Elastic Net, Random Forest, AdaBoost ja XGBoost. Huomaat, että koneen oppimisalgoritmien regressio ja luokittelu ovat jonkin verran päällekkäisiä.

Ryhmittelyalgoritmit

Klusterointiongelma on valvomaton oppimisongelma, joka pyytää mallia etsimään samanlaisia ​​datapisteitä. Suosituin algoritmi on K-Means Clustering; muita ovat keskivaiheen klusterointi, DBSCAN (tiheyspohjainen sovelluskohtainen klusterointi melulla), GMM (Gaussin seosmallit) ja HAC (hierarkkinen agglomeratiivinen klusterointi).

Ulottuvuuden vähentämisen algoritmit

Ulottuvuuden vähentäminen on valvomaton oppimisongelma, joka pyytää mallia pudottamaan tai yhdistämään muuttujia, joilla on vain vähän tai ei lainkaan vaikutusta tulokseen. Tätä käytetään usein luokituksen tai regressio-yhdistelmän kanssa. Ulottuvuuden pienennysalgoritmeihin kuuluu muuttujien poistaminen, joissa on paljon puuttuvia arvoja, muuttujien poistaminen pienellä varianssilla, päätöksentekopuu, satunnainen metsä, muuttujien poistaminen tai yhdistäminen korkealla korrelaatiolla, taaksepäin tapahtuvan ominaisuuksien eliminointi, eteenpäin tehtävien valinta, tekijäanalyysi ja PCA (pääkomponenttianalyysi).

Optimointimenetelmät

Koulutus ja arviointi muuttavat valvotut oppimisalgoritmit malleiksi optimoimalla niiden parametripainot, jotta löydetään arvojoukko, joka parhaiten vastaa tietojesi perustotuutta. Algoritmit luottavat optimoijiinsa usein jyrkimmän laskeutumisen muunnoksiin, esimerkiksi stokastiseen gradientin laskeutumiseen (SGD), joka on olennaisesti jyrkempi lasku, joka suoritetaan useita kertoja satunnaistetuista lähtökohdista.

SGD: n yleiset tarkennukset lisäävät tekijöitä, jotka korjaavat kaltevuuden suunnan vauhdin perusteella tai säätävät oppimisnopeutta tietojen yhdestä läpikulusta (kutsutaan aikakausi tai erä) seuraavaan.

Hermoverkot ja syvä oppiminen

Neuraaliverkot innoittivat biologisen visuaalisen aivokuoren arkkitehtuuri. Syväoppiminen on joukko tekniikoita oppimiseen hermoverkoissa, johon liittyy suuri määrä "piilotettuja" kerroksia ominaisuuksien tunnistamiseksi. Piilotetut tasot tulevat sisääntulo- ja lähtötasojen väliin. Jokainen kerros koostuu keinotekoisista hermosoluista, joissa on usein sigmoidi- tai ReLU (Rectified Linear Unit) -aktivaatiotoimintoja.

Syöttö eteenpäin -verkossa neuronit on järjestetty erillisiksi kerroksiksi: yksi tulokerros, mikä tahansa määrä piilotettuja prosessointikerroksia ja yksi ulostulokerros, ja kunkin kerroksen lähdöt menevät vain seuraavaan kerrokseen.

Pikakytkennällä varustetussa eteenpäin suuntautuvassa verkossa jotkut yhteydet voivat hypätä yhden tai useamman välikerroksen yli. Toistuvissa hermoverkoissa neuronit voivat vaikuttaa itseensä joko suoraan tai epäsuorasti seuraavan kerroksen kautta.

Neuraaliverkon ohjattu oppiminen tapahtuu aivan kuten mikä tahansa muu koneoppiminen: Esität verkon harjoitustietoryhmillä, verrataan verkon lähtöä haluttuun lähtöön, luodaan virhevektori ja tehdään korjauksia verkkoon virhevektorin perusteella , yleensä käyttämällä backpropagation-algoritmia. Erät harjoitustiedoista, jotka ajetaan yhdessä ennen korjausten tekemistä, kutsutaan aikakausiksi.

Kuten kaikessa koneoppimisessa, myös hermoverkon ennusteet on tarkistettava erillisen testitietojoukon perusteella. Tekemättä sitä vaarana on luoda hermoverkkoja, jotka vain muistavat panoksensa sen sijaan, että oppisivat yleistyneiksi ennustajiksi.

Läpimurto hermoverkon näkökentässä oli Yann LeCunin vuoden 1998 LeNet-5, seitsemän tason konvoluutioinen hermoverkko (CNN) 32x32 pikselin kuvina digitoitujen käsinkirjoitettujen numeroiden tunnistamiseksi. Suuremman resoluution kuvien analysointiin verkko tarvitsee enemmän neuroneja ja enemmän kerroksia.

Konvoluutio-hermoverkot käyttävät tyypillisesti konvoluutio-, poolointi-, ReLU-, täysin kytkettyjä ja häviökerroksia visuaalisen aivokuoren simulointiin. Konvoluutiokerros ottaa periaatteessa monien pienten päällekkäisten alueiden integraalit. Poolikerros suorittaa muodon epälineaarisen alinäytteenoton. ReLU-kerrokset, jotka mainitsin aiemmin, käyttävät ei-kyllästävää aktivointitoimintoa f (x) = max (0, x).

Täysin kytketyssä kerroksessa neuroneilla on täydelliset yhteydet kaikkiin edellisen kerroksen aktivointeihin. Häviökerros laskee, kuinka verkkokoulutus rankaisee ennustettujen ja todellisten tarrojen välistä poikkeamaa käyttämällä luokitukseen Softmax- tai ristiintrooppihäviötä tai regressioon Euclidean menetystä.

Luonnollisen kielen käsittely (NLP) on toinen tärkeä syväoppimisen sovellusalue. Google-kääntäjän käsittelemän konekäännösongelman lisäksi tärkeimmät NLP-tehtävät sisältävät automaattisen yhteenvedon, vertailuratkaisun, diskurssianalyysin, morfologisen segmentoinnin, nimettyjen yksiköiden tunnistamisen, luonnollisen kielen luomisen, luonnollisen kielen ymmärtämisen, puheen osittaisen merkinnän, mielipiteen analyysi ja puheentunnistus.

CNN-verkkojen lisäksi NLP-tehtävät käsitellään usein toistuvilla hermoverkoilla (RNN), joihin sisältyy Long-Short Term Memory (LSTM) -malli.

Mitä enemmän kerroksia on syvässä hermoverkossa, sitä enemmän laskentaa tarvitaan mallin kouluttamiseksi keskusyksiköllä. Neuroverkkojen laitteistokiihdyttimet sisältävät GPU: t, TPU: t ja FPGA: t.

Vahvistusoppiminen

Vahvistusoppiminen kouluttaa an näyttelijä tai agentti vastata ympäristössä tavalla, joka maksimoi jotkut arvo, yleensä kokeilemalla ja erehdyksellä. Se eroaa valvotusta ja valvomattomasta oppimisesta, mutta se yhdistetään usein niihin.

Esimerkiksi DeepMind's AlphaGo, oppiakseen pelaamaan (toimintaa) Go-peliä (ympäristö), oppi ensin matkimaan ihmisen Go-pelaajia suuresta historiallisten pelien joukosta (oppisopimusoppilaiden oppiminen). Sitten se paransi peliä kokeilemalla ja erehdyttämällä (vahvistava oppiminen), pelaamalla suuria määriä Go-pelejä itsenäisiä esiintymiä vastaan.

Robottiohjaus on toinen ongelma, johon on hyökätty syvävahvistusoppimismenetelmillä, mikä tarkoittaa vahvistusoppimista ja syviä hermoverkkoja, ja syvähermoverkot ovat usein CNN-verkostoja, jotka on koulutettu poimimaan ominaisuuksia videokehyksistä.

Kuinka käyttää koneoppimista

Kuinka koneoppimismalli luodaan? Aloitat puhdistamalla ja vakauttamalla tiedot, jatkaaksesi ominaisuuksien suunnittelua ja kokeile sitten kaikkia järkeviä koneoppimisalgoritmeja. Tietyissä ongelmaluokissa, kuten näkö ja luonnollisen kielen käsittely, todennäköisesti toimivat algoritmit edellyttävät syvällistä oppimista.

Tietojen puhdistus koneoppimista varten

Ei ole olemassa sellaista asiaa kuin puhdasta tietoa luonnossa. Jotta tiedoista olisi hyötyä koneoppimisessa, ne on suodatettava aggressiivisesti. Haluat esimerkiksi:

  1. Tarkastele tietoja ja sulje pois kaikki sarakkeet, joissa on paljon puuttuvia tietoja.
  2. Katso tietoja uudelleen ja valitse sarakkeet, joita haluat käyttää (ominaisuuksien valinta) ennusteesi. Tätä haluat ehkä muuttaa, kun toistat.
  3. Sulje pois kaikki rivit, joista edelleen puuttuu tietoja jäljellä olevista sarakkeista.
  4. Korjaa ilmeiset kirjoitusvirheet ja yhdistä vastaavat vastaukset. Esimerkiksi Yhdysvallat, Yhdysvallat, Yhdysvallat ja Amerikka tulisi yhdistää yhteen luokkaan.
  5. Sulje pois rivit, joiden tietoja on alueen ulkopuolella. Jos esimerkiksi analysoit taksimatkoja New York Cityssä, sinun kannattaa suodattaa pois rivit, joissa on nouto- tai pudotusleveysasteita ja -asteita, jotka ovat pääkaupunkiseudun raja-alueen ulkopuolella.

Voit tehdä paljon enemmän, mutta se riippuu kerätyistä tiedoista. Tämä voi olla työlästä, mutta jos määrität tiedonsiirtovaiheen koneoppimisputkellesi, voit muokata sitä ja toistaa sen haluamallasi tavalla.

Tietojen koodaus ja normalisointi koneoppimista varten

Jos haluat käyttää kategorisia tietoja koneiden luokittelussa, sinun on koodattava tekstitarrat toiseen muotoon. Koodauksia on kaksi.

Yksi on tarran koodaus, mikä tarkoittaa, että jokainen tekstitarran arvo korvataan numerolla. Toinen on yksi kuuma koodaus, mikä tarkoittaa, että jokainen tekstitarra-arvo muutetaan sarakkeeksi, jossa on binääriarvo (1 tai 0). Useimmissa koneoppimisen puitteissa on toimintoja, jotka tekevät muunnoksen puolestasi. Yleensä yksi kuuma koodaus on edullinen, koska tarrojen koodaus voi joskus sekoittaa koneoppimisalgoritmin ajattelemaan, että koodattu sarake on järjestetty.