Machine Learning (ML) prichádza na svoje, s rastúcim uznaním, že ML môže hrať kľúčovú rolu v širokej škále kritických aplikácií, ako je data mining, spracovanie prirodzeného jazyka, rozpoznávanie obrázkov a expertné systémy. ML poskytuje potenciálne riešenia vo všetkých týchto doménach a ešte viac a má byť pilierom našej budúcej civilizácie.
Dodávka schopných návrhárov ML tento dopyt ešte musí dohnať. Hlavným dôvodom je to, že ML je jednoducho zložitý. Tento tutoriál o strojovom učení predstavuje základné teórie ML, stanovuje spoločné témy a koncepty a uľahčuje nasledovanie logiky a uľahčenie ovládania základov strojového učenia.
Čo to vlastne vlastne je „strojové učenie“? ML je vlastne a veľa vecí. Toto pole je pomerne rozsiahle a rýchlo sa rozširuje, pričom sa neustále rozdeľuje a rozdeľuje na nauseam do rôznych podšpecializácií a typy strojového učenia .
Existuje niekoľko základných spoločných vlákien a všeobecnú tému najlepšie vystihuje toto často citované vyhlásenie Arthura Samuela už v roku 1959: „[Machine Learning je] študijný odbor, ktorý dáva počítačom schopnosť učiť sa bez výslovného programovania.“
A nedávno, v roku 1997, Tom Mitchell „dobre postavenú“ definíciu, ktorá sa ukázala byť užitočnejšia pre technické typy: 'Počítačový program sa hovorí, že sa učí zo skúsenosti E v súvislosti s niektorými úlohami T a určitými ukazovateľmi výkonu P, ak sa ich výkon na T, meraný P, zlepšuje so skúsenosťami E.'
'Počítačový program sa hovorí, že sa učí zo skúsenosti E v súvislosti s niektorými úlohami T a určitými ukazovateľmi výkonu P, ak sa ich výkon na T, meraný P, zlepšuje so skúsenosťami E.' - Tom Mitchell, Carnegie Mellon UniversityTakže ak chcete, aby váš program predpovedal napríklad dopravné vzorce na rušnej križovatke (úloha T), môžete ich spustiť pomocou algoritmu strojového učenia s údajmi o minulých dopravných vzoroch (skúsenosť E) a ak sa úspešne „naučil“ ”, Bude potom lepšie predpovedať budúce vzorce prenosu (meranie výkonu P).
Vysoko zložitá povaha mnohých problémov v reálnom svete však často znamená, že vymýšľanie špecializovaných algoritmov, ktoré ich zakaždým dokonale vyriešia, je nepraktické, ak nie nemožné. Medzi príklady problémov so strojovým učením patria: 'Je to rakovina?' , 'Aká je trhová hodnota tohto domu?' , 'Ktorí z týchto ľudí sú navzájom dobrí priatelia?' , 'Bude tento raketový motor explodovať pri štarte?' , 'Bude sa tejto osobe tento film páčiť?' , 'Kto to je?' , 'Čo si povedal?' a 'Ako lietate s touto vecou?' . Všetky tieto problémy sú vynikajúcim cieľom projektu ML a v skutočnosti bol ML aplikovaný na každý z nich s veľkým úspechom.
ML rieši problémy, ktoré sa nedajú vyriešiť iba numerickými prostriedkami.Medzi rôznymi typmi úloh ML sa zásadne rozlišuje medzi kontrolovaným a nekontrolovaným učením:
Tu sa primárne zameriame na učenie pod dohľadom, ale koniec článku obsahuje krátku diskusiu o učení bez dozoru s odkazmi pre tých, ktorí majú záujem venovať sa téme ďalej.
Vo väčšine kontrolovaných učebných aplikácií je konečným cieľom vyvinúť jemne vyladenú predikčnú funkciu h(x)
(niekedy sa nazýva „hypotéza“). „Učenie“ spočíva v použití sofistikovaných matematických algoritmov na optimalizáciu tejto funkcie tak, aby dané vstupné údaje x
o určitej doméne (povedzme, námestie domu), bude presne predpovedať zaujímavú hodnotu h(x)
(povedzme trhová cena daného domu).
V praxi x
takmer vždy predstavuje viac dátových bodov. Napríklad prediktor ceny bývania môže trvať nielen metre štvorcové (x1
), ale aj počet spální (x2
), počet kúpeľní (x3
), počet poschodí (x4)
, rok výroby (x5
), PSČ (x6
) a tak ďalej. Určenie, ktoré vstupy sa majú použiť, je dôležitou súčasťou dizajnu ML. Kvôli vysvetlenie je najjednoduchšie predpokladať, že sa použije jedna vstupná hodnota.
Povedzme teda, že náš jednoduchý prediktor má túto formu:
kde a
sú konštanty. Naším cieľom je nájsť perfektné hodnoty
a
aby náš prediktor fungoval čo najlepšie.
Optimalizácia prediktora h(x)
sa vykonáva pomocou príklady školení . Pro každý příklad školení máme vstupní hodnotu x_train
, pre ktorú je vopred známy zodpovedajúci výstup, y
. Pre každý príklad nájdeme rozdiel medzi známou a správnou hodnotou y
a našou predikovanou hodnotou h(x_train)
. Vďaka dostatku príkladov tréningu nám tieto rozdiely poskytujú užitočný spôsob na meranie „nesprávnosti“ h(x)
. Potom môžeme doladiť h(x)
doladením hodnôt a
aby to bolo „menej zlé“. Tento proces sa opakuje stále dokola, kým systém nedosiahne najlepšie hodnoty pre
a
. Týmto spôsobom sa prediktor trénuje a je pripravený na predpovedanie v reálnom svete.
V tomto príspevku sa kvôli ilustrácii držíme jednoduchých problémov, ale dôvod, prečo ML existuje, je ten, že v skutočnom svete sú problémy oveľa zložitejšie. Na tejto plochej obrazovke vám môžeme nakresliť obraz nanajvýš trojrozmernej množiny údajov, ale problémy ML sa bežne zaoberajú údajmi s miliónmi dimenzií a veľmi zložitými predikčnými funkciami. ML rieši problémy, ktoré sa nedajú vyriešiť iba numerickými prostriedkami.
Z tohto dôvodu sa pozrime na jednoduchý príklad. Povedzme, že máme nasledujúce školiace údaje, kde zamestnanci spoločnosti hodnotili svoju spokojnosť na stupnici od 1 do 100:
Najprv si všimnite, že údaje sú trochu hlučné. To znamená, že aj keď vidíme, že existuje určitý vzor (to znamená, že spokojnosť zamestnancov má tendenciu stúpať so zvyšujúcim sa platom), ale nemusí to všetko ladiť rovno. Toto bude vždy prípad údajov z reálneho sveta (a my absolútne chceme trénovať náš stroj pomocou údajov z reálneho sveta!). Ako potom môžeme trénovať stroj, aby dokonale predpovedal úroveň spokojnosti zamestnancov? Odpoveď samozrejme je, že nemôžeme. Cieľom ML nie je nikdy robiť „dokonalé“ odhady, pretože ML sa zaoberá doménami, kde nič také neexistuje. Cieľom je vytvoriť odhady, ktoré sú dosť dobré na to, aby boli užitočné.
Trochu to pripomína slávne vyhlásenie britského matematika a profesora štatistiky George E. P. Box že „všetky modely sa mýlia, ale niektoré sú užitočné“.
Cieľom ML nie je nikdy robiť „dokonalé“ odhady, pretože ML sa zaoberá doménami, kde nič také neexistuje. Cieľom je vytvoriť odhady, ktoré sú dosť dobré na to, aby boli užitočné.Strojové učenie vychádza hlavne zo štatistík. Keď napríklad trénujeme náš stroj, aby sa učil, musíme mu dať štatisticky významnú náhodnú vzorku ako údaje o tréningu. Ak tréningová sada nie je náhodná, vystavujeme sa riziku vzorov strojového učenia, ktoré tam vlastne nie sú. A ak je tréningová sada príliš malá (pozri zákon veľkého počtu ), nenaučíme sa dosť a môžeme dokonca dospieť k nepresným záverom. Napríklad pokus o predpovedanie vzorov spokojnosti v celej spoločnosti na základe údajov iba od vrchného manažmentu by bol pravdepodobne náchylný na chyby.
S týmto porozumením dajme nášmu stroju údaje, ktoré sme dostali vyššie, a nechajme ich, aby sa ich naučili. Najprv musíme inicializovať náš prediktor h(x)
s niektorými primeranými hodnotami a
. Teraz náš prediktor vyzerá takto, keď je umiestnený nad našou tréningovou sadou:
Ak požiadame tento prediktor o spokojnosť zamestnanca, ktorý zarobí 60 000 dolárov, predpovedá by hodnotenie 27:
Je zrejmé, že to bol hrozný odhad a že tento stroj toho veľa nevie.
Teraz teda dajme tento prediktor všetko platy z našej školiacej sady a vezmite rozdiely medzi výslednými predpokladanými hodnotami spokojnosti a skutočnými hodnotami spokojnosti zodpovedajúcich zamestnancov. Ak vykonáme trochu matematického čarodejníctva (ktoré v krátkosti popíšem), môžeme s veľmi vysokou istotou vypočítať, že hodnoty 13,12 pre a 0,61 pre
nám dajú lepší prediktor.
A ak tento proces zopakujeme, povedzme 1 500-krát, náš prediktor bude nakoniec vyzerať takto:
Ak v tomto okamihu postup zopakujeme, zistíme to a
sa už nezmení o nijako znateľnú sumu, a preto vidíme, že sa systém zblížil. Ak sme neurobili žiadne chyby, znamená to, že sme našli optimálny prediktor. Ak teda teraz znova požiadame stroj o hodnotenie spokojnosti zamestnanca, ktorý zarobí 60 000 dolárov, predpovie hodnotenie zhruba 60.
Teraz sa niekam dostávame.
Vyššie uvedený príklad je technicky jednoduchý problém jednorozmerná lineárna regresia , ktoré sa v skutočnosti dajú vyriešiť odvodením jednoduchej normálnej rovnice a úplným preskočením tohto „ladiaceho“ procesu. Zvážte však prediktor, ktorý vyzerá takto:
Táto funkcia prijíma vstupy v štyroch dimenziách a má rôzne polynomické výrazy. Odvodenie normálnej rovnice pre túto funkciu je významnou výzvou. Mnoho moderných problémov so strojovým učením vyžaduje tisíce alebo dokonca milióny dimenzií údajov, aby sa dali zostaviť predpovede pomocou stoviek koeficientov. Príklady takýchto zložitých problémov sú predpovede, ako bude vyjadrený genóm organizmu alebo aká bude klíma o päťdesiat rokov.
Mnoho moderných problémov s ML vyžaduje zostavenie predpovedí pomocou stoviek koeficientov tisíce alebo dokonca milióny dimenzií údajov.Našťastie je iteračný prístup systémov ML omnoho odolnejší voči takejto zložitosti. Namiesto použitia hrubej sily systém strojového učenia „cíti svoju cestu“ k odpovedi. Pri veľkých problémoch to funguje oveľa lepšie. To síce neznamená, že ML môže vyriešiť všetky svojvoľne zložité problémy (nemôže), ale vytvára neuveriteľne flexibilný a výkonný nástroj.
Pozrime sa podrobnejšie na to, ako tento iteračný proces funguje. Ako sa uistíme vo vyššie uvedenom príklade a
sú každým krokom lepšie a nie horšie? Odpoveď spočíva v našom „meraní nesprávnosti“, o ktorom sme sa už zmienili, spolu s malým počtom.
Miera nesprávnosti je známa ako nákladová funkcia (a.k.a., stratová funkcia ), . Vstup
predstavuje všetky koeficienty, ktoré používame v našom prediktore. Takže v našom prípade
je naozaj dvojica
a
.
nám dáva matematické meranie toho, aký nesprávny je náš prediktor, keď použije dané hodnoty
a
.
Výber nákladovej funkcie je ďalším dôležitým prvkom programu ML. V rôznych kontextoch môže byť „nesprávne“ znamenať veľmi odlišné veci. V našom príklade spokojnosti zamestnancov je osvedčeným štandardom: funkcia lineárnych najmenších štvorcov :
Pri najmenších štvorcoch stúpa trest za zlý odhad kvadraticky s rozdielom medzi odhadom a správnou odpoveďou, takže pôsobí ako veľmi „prísne“ meranie nesprávnosti. Funkcia nákladov počíta priemernú pokutu za všetky príklady školenia.
Takže teraz vidíme, že našim cieľom je nájsť a
pre náš prediktor
h(x)
také, aby fungovali naše náklady je čo najmenší. Aby sme to dosiahli, vyzývame moc kalkulu.
Zvážte nasledujúce vynesenie nákladovej funkcie pre konkrétny problém so strojovým učením:
Tu vidíme náklady spojené s rôznymi hodnotami a
. Vidíme, že graf má mierne tvarovanú misku. Spodok misy predstavuje najnižšiu cenu, ktorú nám náš prediktor môže dať na základe daných tréningových údajov. Cieľom je „zrolovať sa z kopca“ a nájsť
a
zodpovedajúce tomuto bodu.
To je miesto, kde kalkul prichádza do tohto tutoriálu strojového učenia. Kvôli udržaniu zvládnuteľného vysvetlenia tu nebudem písať rovnice, ale v zásade to, čo robíme, je gradient , čo je dvojica derivátov
(jeden nad
a jeden nad
). Gradient sa bude líšiť pre každú inú hodnotu
a
, a hovorí nám, čo je pre tieto konkrétne „svah kopca“ a najmä „ktorá cesta je dole“
s. Napríklad, keď pripojíme naše súčasné hodnoty
do gradientu, môže nám to povedať, že trochu pridáme k
a trochu odčítať od
nás zavedie v smere nákladovej funkcie - do údolia. Preto trochu pridávame do
, a trochu odčítať od
, a voilà! Dokončili sme jedno kolo nášho algoritmu učenia. Náš aktualizovaný prediktor, h (x) =
+
x, vráti lepšie predpovede ako predtým. Náš stroj je teraz o niečo inteligentnejší.
Tento proces striedania výpočtu aktuálneho gradientu a aktualizácie s z výsledkov je známy ako gradientný zostup .
To sa týka základnej teórie, ktorá je základom väčšiny kontrolovaných systémov strojového učenia. Základné koncepty sa však dajú uplatniť rôznymi spôsobmi, v závislosti od konkrétneho problému.
Pod dohľadom ML sú dve hlavné podkategórie:
Ako sa ukázalo, základná teória strojového učenia je viac-menej rovnaká. Hlavné rozdiely sú v dizajne prediktora h(x)
a návrh nákladovej funkcie .
Naše doterajšie príklady sa zamerali na regresné problémy, poďme sa preto teraz pozrieť na príklad klasifikácie.
Tu sú výsledky štúdie testovania kvality súborov cookie, kde boli všetky príklady školení označené buď ako „dobrý súbor cookie“ (y = 1
) modrou farbou alebo ako „zlý súbor cookie“ (y = 0
) červenou farbou.
V klasifikácii nie je regresný prediktor veľmi užitočný. To, čo zvyčajne chceme, je prediktor, ktorý robí odhady niekde medzi 0 a 1. V klasifikátore kvality súborov cookie by predikcia 1 predstavovala veľmi spoľahlivý odhad, že súbor cookie je dokonalý a úplne lákavý. Predpoveď 0 predstavuje veľkú istotu, že súbor cookie predstavuje pre odvetvie súborov cookie rozpaky. Hodnoty spadajúce do tohto rozsahu predstavujú menšiu istotu, takže môžeme náš systém navrhnúť tak, aby predpoveď 0,6 znamenala „Človeče, to je ťažké volanie, ale idem s áno, ten cookie môžete predať“, zatiaľ čo hodnota presne v stred, pri 0,5, môže predstavovať úplnú neistotu. Nie vždy je dôvera distribuovaná v klasifikátore, ale je to veľmi častý dizajn a funguje na účely našej ilustrácie.
Ukázalo sa, že existuje príjemná funkcia, ktorá toto správanie dobre vystihuje. Volá sa to funkcia sigmoidu , g(z)
, a vyzerá to asi takto:
z
je nejaké vyjadrenie našich vstupov a koeficientov, ako napríklad:
aby sa náš prediktor stal:
Všimnite si, že funkcia sigmoid transformuje náš výstup do rozsahu od 0 do 1.
Logika, ktorá stojí za návrhom nákladovej funkcie, sa tiež líši pri klasifikácii. Opäť sa pýtame „čo to znamená, ak sa domniete, že nie je pravda?“ a tentokrát je veľmi dobrým pravidlom, že ak správny odhad bol 0 a my sme uhádli 1, potom sme sa úplne a úplne mýlili a naopak. Pretože sa nemôžete mýliť viac ako úplne zle, pokuta je v tomto prípade obrovská. Prípadne, ak bol správny odhad 0 a my sme uhádli 0, naša nákladová funkcia by nemala pridávať žiadne náklady vždy, keď k tomu dôjde. Ak bol odhad správny, ale neboli sme si úplne istí (napr. y = 1
, Ale h(x) = 0.8
), malo by to prísť s malými nákladmi, a ak bol náš odhad nesprávny, ale neboli sme si úplne istí (napr. y = 1
ale h(x) = 0.3
), malo by to prísť so značnými nákladmi, ale nie až tak, ako keby sme sa úplne mýlili.
Toto správanie zachytáva funkcia denníka, takže:
Opäť nákladová funkcia poskytuje priemerné náklady na všetky naše príklady školení.
Takže sme tu opísali, ako prediktor h(x)
a nákladová funkcia sa líšia medzi regresiou a klasifikáciou, ale gradientový zostup stále funguje dobre.
Prediktor klasifikácie je možné vizualizovať nakreslením hraničnej čiary; bariéra, kde sa predpoveď mení z „áno“ (predikcia väčšia ako 0,5) na „nie“ (predikcia menšia ako 0,5). Vďaka dobre navrhnutému systému môžu naše údaje súborov cookie generovať hranicu klasifikácie, ktorá vyzerá takto:
Teraz je to stroj, ktorý vie niečo o cookies!
Žiadna diskusia o strojovom učení by nebola úplná bez toho, aby som to aspoň spomenul neurálne siete . Neurónové siete poskytujú nielen mimoriadne výkonný nástroj na riešenie veľmi náročných problémov, ale aj fascinujúce tipy na fungovanie našich vlastných mozgov a zaujímavé možnosti na jeden deň vytvoriť skutočne inteligentné stroje.
Neurónové siete sú vhodné pre modely strojového učenia, kde je počet vstupov obrovský. Výpočtové náklady na riešenie takéhoto problému sú príliš veľké pre typy systémov, o ktorých sme hovorili vyššie. Ako sa však ukazuje, neurónové siete je možné efektívne vyladiť pomocou techník, ktoré sú v zásade nápadne podobné gradientnému zostupu.
Dôkladná diskusia o neurónových sieťach presahuje rámec tohto tutoriálu, ale odporúčam vyskúšať našu predchádzajúci príspevok na tému.
Strojové učenie bez dozoru má zvyčajne za úlohu hľadať vzťahy v dátach. V tomto procese nie sú použité žiadne príklady školení. Namiesto toho dostane systém súbor údajov a jeho úlohou je nájsť v nich vzory a korelácie. Dobrým príkladom je identifikácia uzavretých skupín priateľov v dátach sociálnych sietí.
Algoritmy strojového učenia, ktoré sa na to používajú, sú veľmi odlišné od algoritmov používaných na učenie pod dohľadom a téma si zaslúži vlastný príspevok. Ak však chcete medzitým niečo žuť, mrknite na klastrové algoritmy ako napr k-znamená , a tiež sa pozrieť do zníženie rozmerov systémy ako napr analýza základnej zložky . Náš prior príspevok na veľké dáta rozoberá aj množstvo týchto tém podrobnejšie.
Prebrali sme tu veľa základnej teórie, ktorá je základom oblasti strojového učenia, ale samozrejme, povrch sme poškriabali len ťažko.
Majte na pamäti, že ak chcete skutočne použiť teórie obsiahnuté v tomto úvode na príklady strojového učenia v reálnom živote, je potrebné hlbšie porozumieť témam, o ktorých sa tu diskutuje. V ML existuje veľa jemností a nástrah a mnoho spôsobov, ako sa nechať zviesť z cesty, ktorá sa javí ako dokonale vyladený stroj na premýšľanie. Takmer každá časť základná teória sa dajú hrať donekonečna a ich výsledky sú často fascinujúce. Mnohé prerastú do úplne nových študijných odborov, ktoré sú lepšie prispôsobené konkrétnym problémom.
Je zrejmé, že strojové učenie je neuveriteľne silný nástroj. V nadchádzajúcich rokoch sľubuje pomoc pri riešení niektorých z našich najnaliehavejších problémov a otvorenie úplne nových svetov príležitostí pre dátové vedecké firmy . The dopyt po technikoch strojového učenia bude iba naďalej rásť a ponúka neuveriteľné šance byť súčasťou niečoho veľkého. Dúfam, že zvážite zapojenie sa do akcie!
Tento článok vo veľkej miere čerpá z materiálu, ktorý vyučuje Stanfordský profesor DR. Andrew Ng v jeho bezplatný a otvorený kurz strojového učenia . Kurz zahŕňa všetko, o čom sa pojednáva v tomto článku, do hĺbky a poskytuje veľa praktických rád pre praktizujúcich ML. Tento kurz nemôžem dostatočne odporúčať záujemcom o ďalšie skúmanie tejto fascinujúcej oblasti.
Súvisiace:Hlboké učenie je metóda strojového učenia, ktorá sa spolieha na umelé neurónové siete a umožňuje počítačovým systémom učiť sa príkladom. Vo väčšine prípadov sú algoritmy hlbokého učenia založené na informačných vzoroch nájdených v biologických nervových systémoch.
Ako opísal Arthur Samuel, Machine Learning je „študijný odbor, ktorý dáva počítačom schopnosť učiť sa bez výslovného programovania.“
Umelá inteligencia (AI) je široký pojem používaný na popis systémov, ktoré sú schopné samy prijímať určité rozhodnutia. Machine Learning (ML) je špecifický predmet v širšej aréne umelej inteligencie, ktorý popisuje schopnosť stroja zlepšiť svoju schopnosť precvičením úlohy alebo vystavením veľkým súborom údajov.
Strojové učenie si vyžaduje veľa odhodlania a praxe, aby ste sa naučili, a to kvôli mnohým jemným zložitostiam, ktoré zaisťujú, že sa váš stroj naučí správnu vec a nie nesprávnu. Vynikajúcim online kurzom strojového učenia je kurz Coursera od Andrewa Nga.
Prekonanie je výsledkom prílišného zamerania algoritmu strojového učenia na tréningové údaje, aby nebol dostatočne zovšeobecnený na správne spracovanie nových údajov. Je to príklad stroja, ktorý sa „učí nesprávnej veci“ a stáva sa menej schopný správne interpretovať nové údaje.
Model strojového učenia je súbor predpokladov o základnej povahe údajov, na ktoré je potrebné trénovať. Model sa používa ako základ pre určenie toho, čo by sa algoritmus strojového učenia mal naučiť. Aby bol stroj schopný dosahovať dobré výsledky, je potrebný dobrý model, ktorý umožňuje presné predpoklady o údajoch