Programovanie

Algoritmy strojového učenia vysvetlené

Strojové učenie a hlboké učenie sa všeobecne prijímali a ešte viac sa chápali nesprávne. V tomto článku by som chcel ustúpiť a vysvetliť základné strojové učenie aj hlboké učenie, diskutovať o niektorých najbežnejších algoritmoch strojového učenia a vysvetliť, ako tieto algoritmy súvisia s ostatnými časťami skladačky vytvárania prediktívnych modelov z historických údajov.

Čo sú to algoritmy strojového učenia?

Pripomeňme, že strojové učenie je trieda metód na automatické vytváranie modelov z údajov. Algoritmy strojového učenia sú motormi strojového učenia, čo znamená, že práve algoritmy premieňajú množinu údajov na model. Aký druh algoritmu funguje najlepšie (kontrolovaný, bez dozoru, klasifikácia, regresia atď.), Závisí od druhu problému, ktorý riešite, dostupných výpočtových zdrojov a povahy údajov.

Ako funguje strojové učenie

Obyčajné programovacie algoritmy hovoria počítaču, čo má robiť priamo. Napríklad algoritmy triedenia menia neusporiadané údaje na údaje zoradené podľa niektorých kritérií, často číselného alebo abecedného poradia jedného alebo viacerých polí v dátach.

Algoritmy lineárnej regresie zodpovedajú priamke, alebo iná funkcia, ktorá je lineárna vo svojich parametroch, ako napríklad polynóm, na číselné údaje, zvyčajne vykonaním inverzií matice, aby sa minimalizovala štvorcová chyba medzi čiarou a údajmi. Druhá mocnina sa používa ako metrika, pretože vám nezáleží na tom, či je regresná čiara nad alebo pod dátovými bodmi; záleží ti iba na vzdialenosti medzi priamkou a bodmi.

Nelineárne regresné algoritmy, ktoré zodpovedajú krivkám, ktoré nie sú svojimi parametrami lineárne, údajom, sú o niečo komplikovanejšie, pretože na rozdiel od problémov s lineárnou regresiou ich nemožno vyriešiť deterministickou metódou. Namiesto toho nelineárne regresné algoritmy implementujú určitý druh iteračného procesu minimalizácie, často určité zmeny v metóde najprudšieho klesania.

Najstrmšie klesanie v zásade počíta druhú mocninu a jej gradient pri aktuálnych hodnotách parametrov, vyberie veľkosť kroku (aka rýchlosť učenia), sleduje smer gradientu „z kopca dole“ a potom prepočíta druhú mocninu chyby a jej gradient pri novej hodnote hodnoty parametrov. Nakoniec, so šťastím, sa proces zblíži. Varianty v najstrmšom klesaní sa snažia vylepšiť konvergenčné vlastnosti.

Algoritmy strojového učenia sú ešte menej priame ako nelineárna regresia, čiastočne preto, že strojové učenie sa obíde bez obmedzenia prispôsobenia sa konkrétnej matematickej funkcii, napríklad polynómu. Existujú dve hlavné kategórie problémov, ktoré sa strojovým učením často riešia: regresia a klasifikácia. Regresia sa týka číselných údajov (napr. Aký je pravdepodobný príjem pre niekoho s danou adresou a profesiou?) A klasifikácie sa týka iných ako číselných údajov (napr. Nesplní žiadateľ túto pôžičku?).

Predikčné problémy (napr. Aká bude zajtra otváracia cena za akcie spoločnosti Microsoft?) Sú podmnožinou regresných problémov pre údaje časových radov. Problémy s klasifikáciou sa niekedy delia na binárne (áno alebo nie) a viackategorické problémy (živočíšne, rastlinné alebo minerálne).

Učenie pod dohľadom vs. Učenie pod dohľadom

Nezávisle na týchto divíziách existujú ďalšie dva druhy algoritmov strojového učenia: kontrolované a bez dozoru. V učenie pod dohľadom, poskytnete tréningový dátový súbor s odpoveďami, ako je napríklad sada obrázkov zvierat spolu s menami zvierat. Cieľom tohto tréningu by bol model, ktorý by dokázal správne identifikovať obraz (druhu zvieraťa, ktoré bolo zahrnuté do výcvikovej sady), ktoré predtým nevidel.

V učenie bez dozoru, algoritmus prechádza samotnými údajmi a snaží sa dospieť k zmysluplným výsledkom. Výsledkom môže byť napríklad skupina klastrov údajových bodov, ktoré by mohli súvisieť v rámci každého klastra. To funguje lepšie, keď sa klastre neprekrývajú.

Výcvik a hodnotenie premieňajú učené algoritmy pod dohľadom na modely optimalizáciou ich parametrov tak, aby sa našiel súbor hodnôt, ktorý najlepšie zodpovedá základnej pravdivosti vašich údajov. Algoritmy sa pri optimalizácii často spoliehajú na varianty najprudšieho klesania, napríklad stochastický gradient (SGD), čo je v podstate najprudší klesanie vykonávané viackrát z randomizovaných východiskových bodov. Bežné vylepšenia SGD pridávajú faktory, ktoré opravujú smer gradientu na základe hybnosti alebo upravujú rýchlosť učenia na základe postupu od jedného prechodu cez dáta (nazývaného epocha) k ďalšiemu.

Čistenie dát pre strojové učenie

Čisté dáta vo voľnej prírode neexistujú. Aby boli údaje užitočné pre strojové učenie, musia byť agresívne filtrované. Napríklad budete chcieť:

  1. Prezrite si údaje a vylúčte všetky stĺpce, ktoré majú veľa chýbajúcich údajov.
  2. Znova skontrolujte údaje a vyberte stĺpce, ktoré chcete použiť pre svoju predpoveď. (To je niečo, čo sa možno budete chcieť pri iterácii líšiť.)
  3. Vylúčte všetky riadky, ktoré v zvyšných stĺpcoch stále majú chýbajúce údaje.
  4. Opravte zjavné preklepy a zlúčte ekvivalentné odpovede. Napríklad USA, USA, USA a Amerika by sa mali zlúčiť do jednej kategórie.
  5. Vylúčte riadky, ktoré obsahujú údaje, ktoré sú mimo rozsahu. Napríklad ak analyzujete cesty taxíkom v New Yorku, budete chcieť odfiltrovať riadky so zemepisnými šírkami a dĺžkami vyzdvihnutia alebo odchodu, ktoré sú mimo hraničného pásma metropolitnej oblasti.

Môžete toho urobiť ešte veľa, ale bude to závisieť od zhromaždených údajov. Môže to byť zdĺhavé, ale ak nastavíte krok čistenia údajov v potrubí strojového učenia, môžete ho ľubovoľne upravovať a opakovať.

Kódovanie údajov a normalizácia pre strojové učenie

Ak chcete na klasifikáciu strojov použiť kategorické údaje, musíte textové štítky zakódovať do inej formy. Existujú dve bežné kódovania.

Jeden je kódovanie štítkov, čo znamená, že každá hodnota textového štítku je nahradená číslom. Druhou je jednorazové kódovanie, čo znamená, že každá hodnota textového štítku sa zmení na stĺpec s binárnou hodnotou (1 alebo 0). Väčšina rámcov strojového učenia má funkcie, ktoré za vás urobia prevod. Všeobecne sa uprednostňuje kódovanie za horúca, pretože kódovanie štítkov môže niekedy zmiasť algoritmus strojového učenia v domnení, že je zakódovaný stĺpec.

Ak chcete použiť numerické údaje na regresiu stroja, je zvyčajne potrebné normalizovať údaje. V opačnom prípade môžu mať čísla s väčšími rozsahmi tendenciu dominovať medzi euklidiánskou vzdialenosťou medzi nimi vektory funkcií, ich účinky sa dajú zväčšiť na úkor ostatných polí a konverzia môže mať ťažkosti s najprudšou optimalizáciou zostupu. Existuje niekoľko spôsobov, ako normalizovať a štandardizovať údaje pre ML, vrátane normalizácie min-max, priemernej normalizácie, štandardizácie a zmeny mierky na jednotku dĺžky. Tento proces sa často nazýva škálovanie funkcií.

Čo sú funkcie strojového učenia?

Pretože som v predchádzajúcej časti spomenul vektory funkcií, mal by som vysvetliť, o čo ide. V prvom rade a vlastnosť je individuálna merateľná vlastnosť alebo charakteristika pozorovaného javu. Pojem „znak“ súvisí s pojmom vysvetľujúcej premennej, ktorý sa používa v štatistických technikách, ako je napríklad lineárna regresia. Vektory objektov kombinujú všetky funkcie pre jeden riadok do číselného vektora.

Súčasťou umenia pri výbere funkcií je vybrať minimálnu sadu nezávislý premenné, ktoré vysvetľujú problém. Ak sú dve premenné vysoko korelované, je potrebné ich skombinovať do jednej vlastnosti alebo jednu zrušiť. Ľudia niekedy vykonávajú analýzu hlavných komponentov, aby previedli korelované premenné na množinu lineárne nekorelovaných premenných.

Niektoré z transformácií, ktoré ľudia používajú na konštrukciu nových prvkov alebo na zníženie rozmernosti vektorov prvkov, sú jednoduché. Napríklad odčítať Rok narodenia od Rok smrti a ty zostroj Vek smrti, ktorá je prvoradou nezávislou premennou pre analýzu života a úmrtnosti. V ostatných prípadoch vlastná konštrukcia nemusí byť také zrejmé.

Bežné algoritmy strojového učenia

Existuje niekoľko desiatok algoritmov strojového učenia, ktorých zložitosť sa pohybuje od lineárnej regresie a logistickej regresie po hlboké neurónové siete a súbory (kombinácie iných modelov). Niektoré z najbežnejších algoritmov však zahŕňajú:

  • Lineárna regresia, alias regresia najmenších štvorcov (pre číselné údaje)
  • Logistická regresia (pre binárnu klasifikáciu)
  • Lineárna diskriminačná analýza (pre klasifikáciu viacerých kategórií)
  • Rozhodovacie stromy (pre klasifikáciu aj regresiu)
  • Naivní Bayes (pre klasifikáciu aj regresiu)
  • Najbližší susedia K, aka KNN (pre klasifikáciu aj regresiu)
  • Learning Vector Quantization, alias LVQ (pre klasifikáciu aj regresiu)
  • Podpora vektorových strojov, alias SVM (pre binárnu klasifikáciu)
  • Náhodné lesy, typ algoritmu súboru „vrecovania“ (pre klasifikáciu aj regresiu)
  • Metódy posilňovania, vrátane AdaBoost a XGBoost, sú súborové algoritmy, ktoré vytvárajú sériu modelov, kde sa každý nový model pokúša opraviť chyby z predchádzajúceho modelu (pre klasifikáciu aj regresiu)

Kde sú neurónové siete a hlboké neurónové siete, o ktorých toľko počujeme? Majú tendenciu byť výpočtovo náročné natoľko, že potrebujú GPU alebo iný špecializovaný hardvér, takže by ste ich mali používať iba na špeciálne problémy, ako je klasifikácia obrázkov a rozpoznávanie reči, ktoré nie sú vhodné pre jednoduchšie algoritmy. Upozorňujeme, že výraz „hlboký“ znamená, že v neurónovej sieti je veľa skrytých vrstiev.

Viac informácií o neurónových sieťach a hlbokom učení sa nájdete v téme „Čo hlboké učenie v skutočnosti znamená.“

Hyperparametre pre algoritmy strojového učenia

Algoritmy strojového učenia sa trénujú na dátach, aby našli najlepšiu množinu váh pre každú nezávislú premennú, ktorá ovplyvňuje predpovedanú hodnotu alebo triedu. Samotné algoritmy majú premenné, ktoré sa nazývajú hyperparametre. Nazývajú sa hyperparametre, na rozdiel od parametrov, pretože skôr riadia činnosť algoritmu ako určené váhy.

Najdôležitejším hyperparametrom je často rýchlosť učenia, ktorá určuje veľkosť kroku použitého pri hľadaní ďalšej sady váh, ktorú je potrebné vyskúšať pri optimalizácii. Ak je rýchlosť učenia príliš vysoká, gradientový zostup sa môže rýchlo zbiehať na plošine alebo v neoptimálnom bode. Ak je rýchlosť učenia príliš nízka, klesanie gradientu sa môže pozastaviť a nikdy úplne konvergovať.

Mnoho ďalších bežných hyperparametrov závisí od použitých algoritmov. Väčšina algoritmov má zastavovacie parametre, ako napríklad maximálny počet epoch alebo maximálny čas na spustenie alebo minimálne zlepšenie z jednej epochy na druhú. Konkrétne algoritmy majú hyperparametre, ktoré riadia tvar ich vyhľadávania. Napríklad klasifikátor náhodných lesov má hyperparametre pre minimálne vzorky na list, maximálnu hĺbku, minimálne vzorky pri štiepení, minimálny hmotnostný zlomok pre list a ďalších asi 8.

Ladenie hyperparametra

Niekoľko produkčných platforiem strojového učenia teraz ponúka automatické ladenie hyperparametrov. V zásade poviete systému, aké hyperparametre chcete meniť, a prípadne akú metriku chcete optimalizovať, a systém tieto hyperparametre pozametá na toľko cyklov, koľko povolíte. (Ladenie hyperparametra Google Cloud extrahuje príslušnú metriku z modelu TensorFlow, takže ju nemusíte špecifikovať.)

Existujú tri vyhľadávacie algoritmy na zametanie hyperparametrov: Bayesovská optimalizácia, vyhľadávanie v mriežke a náhodné vyhľadávanie. Bayesiánska optimalizácia býva najefektívnejšia.

Mysleli by ste si, že vyladenie čo najväčšieho počtu hyperparametrov vám dá najlepšiu odpoveď. Pokiaľ však nepoužívate svoj vlastný osobný hardvér, môže to byť veľmi drahé. Výnosy sa v každom prípade znižujú. Vďaka skúsenostiam zistíte, ktoré hyperparametre sú pre vaše dáta a výber algoritmov najdôležitejšie.

Automatizované strojové učenie

Keď už hovoríme o výbere algoritmov, existuje iba jeden spôsob, ako zistiť, ktorý algoritmus alebo súbor algoritmov vám poskytne najlepší model vašich údajov, a to vyskúšať všetky. Ak tiež vyskúšate všetky možné normalizácie a možnosti funkcií, čelíte kombinačnej explózii.

Vyskúšať všetko je nepraktické, robiť to ručne, takže samozrejme poskytovatelia nástrojov pre strojové učenie vynaložili veľa úsilia na uvoľnenie systémov AutoML. Najlepšie kombinujú inžinierstvo funkcií s postupmi cez algoritmy a normalizácie. Hyperparametrické vyladenie najlepšieho modelu alebo modelov sa často nechá na neskôr. Inžinierstvo funkcií je ťažké automatizovať. Nie všetky systémy AutoML to však zvládnu.

Stručne povedané, algoritmy strojového učenia sú iba jednou časťou puzzle strojového učenia. Okrem výberu algoritmu (manuálneho alebo automatického) sa budete musieť zaoberať optimalizátormi, čistením údajov, výberom funkcií, normalizáciou funkcií a (voliteľne) vyladením hyperparametra.

Keď ste to všetko zvládli a vytvorili model vhodný pre vaše dáta, bude čas nasadiť model a potom ho aktualizovať podľa zmeny podmienok. Správa modelov strojového učenia vo výrobe je však úplne iná plechovka červov.

$config[zx-auto] not found$config[zx-overlay] not found