Ohjelmointi

Syvä oppiminen vs. koneoppiminen: Ymmärrä erot

Koneoppiminen ja syvällinen oppiminen ovat molemmat tekoälyn muotoja. Voit myös sanoa oikein, että syvällinen oppiminen on tietyntyyppinen koneoppiminen. Sekä koneoppiminen että syvällinen oppiminen alkavat koulutus- ja testitiedoista sekä mallista ja käyvät läpi optimointiprosessin löytääksesi painot, jotka sopivat malliin parhaiten dataan. Molemmat pystyvät käsittelemään numeerisia (regressio) ja muita kuin numeerisia (luokittelu) ongelmia, vaikka on olemassa useita sovellusalueita, kuten esineiden tunnistaminen ja kielen kääntäminen, joissa syvälliset oppimismallit tuottavat yleensä paremmin kuin koneoppimismallit.

Koneoppiminen selitetty

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).

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, joka on olennaisesti jyrkintä laskeutumista, joka suoritetaan useita kertoja satunnaistetuista lähtökohdista.

Stokastisen gradientin laskeutumisen yleiset tarkennukset lisäävät tekijöitä, jotka korjaavat gradientin suunnan liikemäärän perusteella tai säätävät oppimisnopeutta tietojen läpikäynnin perusteella (kutsutaan aikakausi tai erä) seuraavaan.

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ä yhden kuuman koodaaminen on suositeltavaa, koska tarrakoodaus voi joskus sekoittaa koneoppimisalgoritmin ajattelemaan, että koodatun sarakkeen oletetaan olevan järjestetty luettelo.

Jos haluat käyttää numeerista dataa koneen regressiossa, sinun on yleensä normalisoitava tiedot. Muuten suuremmilla alueilla olevat luvut saattavat yleensä hallita euklidista etäisyyttä ominaisuusvektorit, niiden vaikutuksia voitaisiin suurentaa muiden kenttien kustannuksella, ja jyrkimmällä laskeutumisoptimoinnilla voi olla vaikeuksia lähentyä. On olemassa useita tapoja normalisoida ja standardoida koneoppimista koskevia tietoja, mukaan lukien min-max-normalisointi, keskimääräinen normalisointi, standardointi ja skaalaus yksikön pituuteen. Tätä prosessia kutsutaan usein ominaisuuksien skaalaus.

Ominaisuustekniikka koneoppimiseen

A ominaisuus on havaittavan ilmiön yksilöllinen mitattava ominaisuus tai ominaisuus. "Ominaisuuden" käsite liittyy selittävän muuttujan käsitteeseen, jota käytetään tilastollisissa tekniikoissa, kuten lineaarisessa regressiossa. Ominaisuusvektorit yhdistävät kaikki yhden rivin ominaisuudet numeeriseksi vektoriksi.

Osa ominaisuuksien valitsemisesta on valita vähimmäisjoukko riippumaton muuttujat, jotka selittävät ongelman. Jos kaksi muuttujaa korreloi voimakkaasti, ne on joko yhdistettävä yhdeksi ominaisuudeksi tai yksi on hylättävä. Joskus ihmiset suorittavat pääkomponenttianalyysin muuntamaan korreloivat muuttujat joukoksi lineaarisesti korreloimattomia muuttujia.

Jotkut muunnoksista, joita ihmiset käyttävät uusien ominaisuuksien rakentamiseen tai piirteiden vektorien ulottuvuuden vähentämiseen, ovat yksinkertaisia. Esimerkiksi vähennä Syntymävuosi alkaen Kuoleman vuosi ja sinä rakennat Ikä kuolemassa, joka on tärkein riippumaton muuttuja elinikä- ja kuolleisuusanalyysissä. Muissa tapauksissa ominaisuusrakenne ei ehkä ole niin ilmeinen.

Tietojen jakaminen koneoppimista varten

Valvotun koneoppimisen tavanomainen käytäntö on jakaa tietojoukko alaryhmiin koulutus, validointija testata. Yksi tapa työskennellä on osoittaa 80% tiedoista harjoitustietojoukkoon ja 10% kukin validointi- ja testitietojoukkoihin. (Tarkka jako on mieltymyskysymys.) Suurin osa harjoittelusta tehdään harjoitustietojoukkoa vastaan ​​ja ennustus tehdään jokaisen aikakauden lopussa olevien validointitietosarjojen mukaan.

Vahvistustietojoukon virheitä voidaan käyttää pysäytyskriteerien tunnistamiseen tai hyperparametrien virittämiseen. Tärkeintä on, että validointitietojoukossa olevat virheet voivat auttaa sinua selvittämään, onko malli sopinut liikuntatietoihin.

Ennustus testidataa vastaan ​​tehdään tyypillisesti lopullisella mallilla. Jos testitietosarjaa ei koskaan käytetty koulutukseen, sitä kutsutaan joskus holdout-tietojoukoksi.

Tietojen jakamiseksi on useita muita järjestelmiä. Yksi yleinen tekniikka, ristivalidointi, sisältää koko tietojoukon toistuvan jakamisen harjoitteludatajoukoksi ja validointitietojoukoksi. Jokaisen aikakauden lopussa tiedot sekoitetaan ja jaetaan uudelleen.

Koneoppimisen kirjastot

Pythonissa Spark MLlib ja Scikit-learn ovat erinomaisia ​​valintoja koneoppimiskirjastoille. R: ssä jotkut koneoppimispakettivaihtoehdot ovat CARAT, randomForest, e1071 ja KernLab. Javassa hyviä valintoja ovat Java-ML, RapidMiner ja Weka.

Syvä oppiminen selitetty

Syväoppiminen on koneoppimisen muoto, jossa koulutettavalla mallilla on enemmän kuin yksi piilotettu kerros tulon ja lähdön välillä. Useimmissa keskusteluissa syvä oppiminen tarkoittaa syvän käyttämistä hermoverkot. On kuitenkin olemassa muutamia algoritmeja, jotka toteuttavat syvällisen oppimisen käyttämällä muunlaisia ​​piilotettuja kerroksia hermoverkkojen lisäksi.

Ideat “keinotekoisista” hermoverkoista juontaa juurensa 1940-luvulle. Olennainen käsite on, että toisiinsa kytketyistä kynnyskytkimistä rakennettu keinotekoisten hermosolujen verkko voi oppia tunnistamaan kuviot samalla tavalla kuin eläimen aivot ja hermosto (verkkokalvo mukaan lukien).

Backprop

Oppiminen tapahtuu periaatteessa vahvistamalla kahden neuronin välistä yhteyttä, kun molemmat ovat aktiivisia samanaikaisesti harjoittelun aikana. Nykyaikaisessa hermoverkko-ohjelmistossa kyse on yleisimmin hermosolujen välisten yhteyksien painoarvojen nostamisesta käyttämällä kutsuttua sääntöä virheiden eteneminen takaisin, backprop tai BP.

Neuronit keinotekoisissa hermoverkoissa

Kuinka neuronit mallinnetaan? Jokaisella on etenemisfunktio, joka muuntaa kytkettyjen hermosolujen lähdöt, usein painotetulla summalla. Etenemisfunktion lähtö siirtyy aktivointitoimintoon, joka käynnistyy, kun sen tulo ylittää kynnysarvon.

Aktivointitoiminnot hermoverkoissa

1940- ja 50-luvuilla keinotekoiset neuronit käyttivät porrasaktivaatiotoimintoa, ja niitä kutsuttiin perceptronit. Nykyaikaiset hermoverkot voivat sanoa he käyttävät perceptroneja, mutta niillä on tosiasiallisesti sujuvat aktivointitoiminnot, kuten logistinen tai sigmoidifunktio, hyperbolinen tangentti tai Rectified Linear Unit (ReLU). ReLU on yleensä paras valinta nopeaan lähentymiseen, vaikka siinä onkin kysymys siitä, että neuronit “kuolevat” harjoittelun aikana, jos oppimisnopeus asetetaan liian korkeaksi.

[Myös: 6 tapaa saada koneoppiminen epäonnistumaan]

Aktivointitoiminnon lähtö voi siirtyä lähtötoimintoon muokkausta varten. Usein lähtöfunktio on kuitenkin identiteettifunktio, mikä tarkoittaa, että aktivointitoiminnon ulostulo välitetään alavirtaan kytkettyihin hermosoluihin.

Neuroverkkotopologiat

Nyt kun tiedämme hermosoluista, meidän on opittava yhteisistä hermoverkkotopologioista. Syöttö eteenpäin -verkossa neuronit on järjestetty erillisiksi kerroksiksi: yhdeksi tulokerrokseksi, n piilotetut käsittelykerrokset ja yksi tulostuskerros. Jokaisen 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.

Neuroverkkojen koulutus

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 . Erät harjoitustiedoista, jotka ajetaan yhdessä ennen korjausten tekemistä, kutsutaan aikakausiksi.

Niille, jotka ovat kiinnostuneita yksityiskohdista, taaksepäin eteneminen käyttää virheen (tai kustannuksen) gradienttia mallin painojen ja esijännitysten suhteen oikean suunnan löytämiseksi virheen minimoimiseksi. Korjausten soveltamista hallitsee kaksi asiaa: optimointialgoritmi ja oppimisnopeuden muuttuja. Oppimisnopeuden muuttujan on yleensä oltava pieni, jotta taataan lähentyminen ja vältetään kuolleiden ReLU-hermosolujen aiheuttaminen.

Optimoijat hermoverkoille

Neuraaliverkkojen optimoijat käyttävät yleensä jonkinlaista kaltevuuden laskeutumisalgoritmia takaosan etenemisen ajamiseksi, usein mekanismilla, joka auttaa välttämään jumittumista paikallisiin minimiin, kuten satunnaisesti valittujen minierien optimointi (stokastinen kaltevuuslasku) ja levittäminen vauhtia kaltevuuden korjaukset. Jotkut optimointialgoritmit mukauttavat myös malliparametrien oppimisnopeuksia tarkastelemalla gradienttihistoriaa (AdaGrad, RMSProp ja Adam).