- View
Význam veľkého množstva údajov v strojovom učení
V oblasti strojového učenia (ML) sa údaje často označujú ako "palivo", ktoré poháňa algoritmy a modely. Účinnosť a presnosť systémov strojového učenia vo veľkej miere závisí od dostupnosti veľkého množstva vysokokvalitných údajov. Táto časť zdôrazňuje význam údajov v ML, predstavuje koncept programovania založeného na údajoch a vysvetľuje základné pojmy, ako sú množiny údajov, inštancie, atribúty, vstupné premenné a modely.
Úloha dát v strojovom učení
Údaje slúžia ako základ, na ktorom sú postavené modely strojového učenia. Bez dostatočného množstva údajov sa algoritmy strojového učenia nedokážu naučiť vzorce alebo efektívne predpovedať. Dôležitosť veľkých súborov údajov možno zhrnúť do nasledujúcich bodov:
- Učenie sa z príkladov: Strojové učenie je v podstate o učení sa z príkladov. Veľké množiny údajov poskytujú rôznorodú škálu inštancií, ktoré pomáhajú algoritmom identifikovať vzory a vzťahy v rámci údajov.
- Vylepšená presnosť: Modely trénované na väčších súboroch údajov majú tendenciu lepšie zovšeobecňovať na neviditeľné údaje, čo vedie k lepšej presnosti predpovedí. To je obzvlášť dôležité v aplikáciách, ako je diagnostika zdravotnej starostlivosti alebo finančné prognózy, kde je presnosť životne dôležitá.
- Robustnosť: Dobre zaoblený súbor údajov, ktorý zahŕňa rôzne scenáre, umožňuje modelom efektívnejšie zvládať okrajové prípady a anomálie. Táto robustnosť je nevyhnutná pre aplikácie v reálnom svete, kde môžu byť údaje hlučné alebo neúplné.
- Reprezentácia funkcií: Veľké súbory údajov umožňujú extrakciu zmysluplných funkcií, ktoré môžu výrazne zvýšiť výkon modelu. S väčším počtom údajov sa algoritmy môžu naučiť zložité reprezentácie, ktoré zachytávajú základné trendy.
- Zmiernenie nadmerného prispôsobenia: Značné množstvo trénovacích údajov pomáha predchádzať nadmernému prispôsobeniu, keď sa model učí šum namiesto základnej distribúcie. Väčší súbor údajov poskytuje lepšiu aproximáciu skutočnej distribúcie údajov.
Programovanie založené na údajoch
Programovanie založené na údajoch je prístup, ktorý zdôrazňuje použitie údajov ako primárnej hnacej sily pre rozhodovanie a vývoj algoritmov. V tejto paradigme sa programátori zameriavajú na zhromažďovanie, analýzu a využívanie údajov na informovanie o svojich kódovacích postupoch, namiesto toho, aby sa spoliehali len na vopred definované pravidlá alebo logiku.
Prečo potrebujeme programovanie založené na údajoch
- Prispôsobivosť: Programovanie založené na údajoch umožňuje systémom prispôsobiť sa meniacim sa podmienkam neustálym učením sa z nových vstupov údajov.
- Vylepšené rozhodovanie: Využitím veľkých súborov údajov môžu vývojári vytvárať informovanejšie algoritmy, ktoré vedú k lepším výsledkom.
- Automatizácia: Prístupy založené na údajoch uľahčujú automatizáciu tým, že umožňujú strojom učiť sa z historických údajov a vytvárať predpovede bez ľudského zásahu.
- Škálovateľnosť: Keď je k dispozícii viac údajov, systémy môžu škálovať svoje možnosti bez toho, aby vyžadovali výrazné zmeny v základnej architektúre.
Základné pojmy strojového učenia
1. Súbor údajov
Množina údajov je štruktúrovaná kolekcia údajov používaných na trénovanie modelov strojového učenia. Pozostáva z viacerých inštancií (údajových bodov) usporiadaných do riadkov a stĺpcov, kde každý stĺpec predstavuje atribút alebo funkciu.
2. Inštancia
Inštancia odkazuje na jeden záznam alebo pozorovanie v rámci množiny údajov. Každá inštancia obsahuje hodnoty pre rôzne atribúty, ktoré popisujú jej vlastnosti.
3. Atribút
Atribúty sú jednotlivé premenné alebo vlastnosti, ktoré popisujú inštanciu v množine údajov. Môžu byť číselné (napr. vek, plat) alebo kategorické (napr. pohlavie, farba). Atribúty sú kľúčové pre definovanie vstupného priestoru pre algoritmy strojového učenia.
4. Vstupné premenné
Vstupné premenné sú špecifické atribúty používané ako prediktory v modeli strojového učenia. Tieto premenné poskytujú potrebné informácie pre model na učenie sa vzorov a predpovede o výstupných premenných (cieľoch).
5. Výstupné premenné
Výstupné premenné sú cieľové hodnoty, ktoré sa model snaží predpovedať na základe vstupných premenných. Napríklad v modeli predpovede cien nehnuteľností na bývanie môžu vstupné premenné zahŕňať štvorcový záber a umiestnenie, zatiaľ čo výstupnou premennou by bola odhadovaná cena.
Koncept modelu
V strojovom učení je model definovaný ako matematická reprezentácia, ktorá mapuje dané vstupné premenné na výstupné premenné na základe naučených vzorov z trénovacích údajov. Tento proces zahŕňa:
- Trénovanie: Počas trénovania sa model učí z označených inštancií v množine údajov úpravou parametrov tak, aby sa minimalizovali chyby predikcie.
- Mapovanie: Po natrénovaní môže model prevziať nové vstupné premenné a generovať zodpovedajúce výstupné predpovede na základe naučených mapovaní.
- Vyhodnotenie: Výkon modelu sa vyhodnocuje pomocou metrík, ako je presnosť, presnosť, vyvolanie a skóre F1 v overovacích alebo testovacích množinách údajov.
Význam veľkého množstva vhodných údajov v strojovom učení nemožno preceňovať; Je nevyhnutný pre trénovanie efektívnych modelov schopných robiť presné predpovede v reálnych aplikáciách. Programovanie založené na údajoch sa javí ako životne dôležitá metodika, ktorá využíva toto množstvo údajov na informovanie o vývoji algoritmov a rozhodovacích procesoch. Pochopenie základných pojmov, ako sú súbory údajov, inštancie, atribúty, vstupné premenné, výstupné premenné a modely, vytvára základy pre ďalšie skúmanie techník strojového učenia a ich aplikácií v rôznych oblastiach. Keďže naďalej využívame silu údajov v strojovom učení, je nevyhnutné uprednostniť postupy zberu a správy kvalitných údajov, aby sme zabezpečili robustné a spoľahlivé výsledky v systémoch AI.
Tento príbeh začneme hlavolamom. Pokúste sa z čísel, ktoré máte v ľavom stĺpci (budeme ich nazývať vstupy), vyvodiť záver, ako súvisia s číslami v pravom stĺpci (budeme ich nazývať výstupy).
|
vstupy |
výstupy |
|---|---|
|
1 , 9, 5, 4 |
19 |
|
3 , 8, 11 |
22 |
|
6 , 7, 9, 2, 2 |
26 |
|
2 , 3, 6 |
11 |
Predpokladáme, že táto úloha vám veľmi neprekážala a že už v druhom alebo treťom riadku tabuľky ste prišli s myšlienkou, že čísla v druhom stĺpci, teda výstupe, predstavujú súčet čísel, ktoré sú v ľavom stĺpci, teda pri vstupe. Pre túto úlohu tiež viete, ako napísať algoritmus (a prižmúrením očí!), ktorý vás dovedie k riešeniu. Napríklad, V programovacom jazyku Python môžeme vypočítať súčet prvkov poľa [1, 9, 5, 4] tak, že najprv deklarujeme nulový súčet a potom pridávame jeden prvok po druhom, kým nedosiahneme koniec poľa:
numbers = [1, 9, 5, 4]
sum = 0
for element in numbers:
sum = sum + element
(Vstavaná funkcia súčtu to pre nás vypočíta rýchlo a v skutočnosti ju používame častejšie.)
Teraz si vyskúšajte ďalšiu hlavolamu, v ktorej musíte zistiť, ako sú vstupy a výstupy prepojené. Vstupy sú teraz fotografie zvierat a výstupy sú čísla 0 alebo 1.
|
vstupy |
výstupy |
|
|
1 |
|
|
0 |
|
|
0 |
|
|
1 |
|
|
0 |
Som si istý, že tu máte veľa nápadov. A je veľmi možné, že všetky sú platné! Keďže však tie sú vedľa fotografií mačiek a nuly sú vedľa ostatných fotografií zvierat, chceli sme, aby ste dospeli k záveru, že ide o úlohu, pri ktorej musíte rozpoznať, či je na fotografii mačka alebo nie. Ak je na vstupe fotografia mačky, na výstupe je 1 a naopak, ak na vstupe nie je fotografia mačky, na výstupe je 0. O niečo neskôr uvidíte, že táto úloha sa nazýva binárna klasifikačná úloha a je veľmi bežná v oblasti strojového učenia.
Je možné vytvoriť algoritmus na vyriešenie tohto problému? Budete súhlasiť s tým, že je pre nás dôležité vedieť rozlíšiť, čo je na fotografiách, pretože tak môžeme uľahčiť ich vyhľadávanie a analýzu. Môžete skúsiť vytvoriť zoznam desiatok pravidiel, aby ste zistili, či je na obrázku mačka alebo nie. Nezabudnite zvážiť pozadie, osvetlenie, uhol záberu a skutočnosť, že existuje viac ako 50 rôznych druhov mačiek.
V skutočnosti existuje veľa takýchto problémov, v ktorých aj keď sa veľmi snažíme (pomenujeme 1000 pravidiel!), nie sme schopní napísať algoritmy, ktoré by ich presne vyriešili. Niektoré ďalšie príklady sú preklad z jedného jazyka do druhého a označovanie tvárí na fotografiách. Súhlasíte s tým, že tieto úlohy sú pre nás dôležité aj preto, že nám umožňujú porozumieť obsahu napísanému v jazyku, ktorým nehovoríme, alebo zlepšiť bezpečnosť. Preto takéto problémy popisujeme pomocou datasetov, párov vstupov a očakávaných výstupov a riešime ich technikami programovania založenými na dátach. V prípade úlohy rozpoznávania mačiek (a akýchkoľvek iných objektov) je možné usporiadať vhodný súbor údajov podobne ako náš, s obrázkami na vstupoch a hodnotami 0 alebo 1 na výstupe. V prípade prekladateľskej úlohy to môžu byť dvojice viet v oboch jazykoch, zatiaľ čo v prípade úlohy označovania tváre to môžu byť dvojice obrázkov, jeden bez označených tvárí ako vstup a druhý s označenými tvárami ako výstupom. Tu je príklad.
|
vstupy |
výstupy |
|
|
|
Súbory údajov, ktoré môžeme použiť na opis problémov, je možné vytvárať každodennými činnosťami. Napríklad po vyšetrení pacienta v elektronickom zdravotnom zázname lekár zaznamená informácie o pacientovi, ako je vek, pohlavie, symptómy, alergie na lieky (všetky tieto hodnoty sú vstupy) a kód zodpovedajúci jeho diagnóze (výstup). Podobne na letiskách sú pre každý let známe informácie ako čas odletu, letecká spoločnosť, typ lietadla atď. (všetky tieto hodnoty sú vstupy) a informácie o tom, či daný let meškal alebo nie (výstup).
Súbory údajov je možné vytvoriť aj špeciálne na vyriešenie konkrétnej úlohy. Napríklad súbor údajov, ktorý sme použili na identifikáciu mačiek, mohol vytvoriť tím dobrovoľníkov, ktorí sa pozreli na obrázky, ktoré sme mali, a postupovali podľa našich pokynov, napríklad ak je na obrázku mačka, napíšte 1, inak napíšte 0, zadajte 1 alebo 0 do výstupného stĺpca. Napríklad pre doménové súbory údajov, ktoré rozpoznávajú zmeny v röntgenových lúčoch, by bolo potrebné najať lekárskych odborníkov, ktorí majú príslušné zručnosti a znalosti na rozhodovanie. O niečo neskôr sa dozviete viac o tom, ako sa vytvárajú množiny údajov.
Pravdepodobne sa pýtate: ale ako sa naučíme súvislosť medzi vstupom a výstupom v súbore údajov? Tak ako existuje oblasť, ktorá sa zaoberá vývojom klasických programovacích algoritmov a analýzou ich vlastností, existuje aj oblasť, ktorá sa zaoberá vývojom algoritmov riadených dátami a skúmaním ich vlastností. Toto sa nazýva strojové učenie. Strojové učenie je jadrom všetkých moderných oblastí umelej inteligencie, pretože úzko súvisí s dátami a spôsobmi odvodzovania poznatkov z údajov. V ďalšej lekcii strojové učenie odpovie na otázku, ktorá vás zaujíma.
Je dôležité zdôrazniť, že existujú aj iné oblasti, ktoré sa zaoberajú údajmi. Medzi nimi je určite najstaršia štatistika, odvetvie matematiky, ktoré sa zaoberá zberom údajov, ich popisom a analýzou, ako aj vyvozovaním záverov z údajov. Štatistické techniky sú jadrom mnohých algoritmov strojového učenia. Data Science je disciplína, ktorá vznikla ako výsledok neschopnosti jednotlivých disciplín odpovedať na mnohé zaujímavé otázky. Každá spoločnosť sa napríklad stretáva s otázkou, ako zlepšiť svoje služby. Za týmto účelom môže spoločnosť analyzovať komentáre používateľov na sociálnych sieťach alebo predajných stránkach. Na spracovanie komentárov je potrebné ich zhromaždiť na jednom mieste a uložiť do databázy, potom ich usporiadať, napríklad oddeliť pozitívne a negatívne komentáre, a potom každý z týchto súborov jemnejšie analyzovať, aby sa určilo, čo používatelia hodnotia ako negatívne alebo pozitívne, napríklad konkrétny model produktu alebo nejakú funkcionalitu. Tieto informácie by sa mali zdieľať s vedením spoločnosti, aby sa mohli rozhodnúť, čo ďalej. Odpoveď na úvodnú otázku, ako si všimnete, je dlhá a vyžaduje si znalosti a prácu s nástrojmi na sťahovanie obsahu z webu (tzv. scrapery), prácu s databázami, spracovanie prirodzeného jazyka, ako aj techniky zobrazovania údajov, ktoré by boli pre odborníkov v danej oblasti najinformatívnejšie. V tomto a ďalších príkladoch aplikácií dátovej vedy je strojové učenie nepostrádateľnou súčasťou znalostnej cesty.
Predtým, ako pôjdeme ďalej, zhrňme, ako vyzerá riešenie problémov s klasickým programovaním a programovaním založeným na údajoch.
Keď riešime problém pomocou klasických programovacích techník, napríklad nájdeme najväčší prvok v postupnosti čísel, najprv sa zamyslíme nad problémom a priestorovými a časovými obmedzeniami, ktoré máme, potom navrhneme algoritmus na jeho vyriešenie (napríklad zlúčenie triedenia) a potom ho naprogramujeme v programovacom jazyku a kód uložíme. Presnosť implementácie kontrolujeme na niekoľkých náhodných záznamoch, kým sa neuistíme, že všetko funguje presne tak, ako očakávame. Keď potrebujeme zoradiť nový reťazec, môžeme použiť program, ktorý sme napísali, spustiť ho a získať vhodné riešenie.
Keď sa spoliehame na programovanie založené na údajoch, máme spočiatku len údaje, napríklad tisíce párov vstupov a výstupov. Opäť je múdre najprv premýšľať o probléme. Robíme to teraz tak, že sa zoznámime s množinou údajov. To sa deje pomocou techník prieskumnej analýzy, o ktorých budeme diskutovať neskôr v kurze a ktoré nám môžu poskytnúť predstavu o tom, akú formu hľadať riešenie. Potom, namiesto toho, aby sme vymysleli algoritmus na vyriešenie problému, navrhneme algoritmus, aby sme sa naučili, ako problém vyriešiť. To by znamenalo, že ak sa potrebujeme naučiť súvislosť medzi vstupom a výstupom a zmeniť súbor údajov, tento algoritmus môže opäť nájsť najlepšie spojenie medzi nimi. Spojenie, ktoré existuje medzi vstupom a výstupom, závisí od údajov (nie je statické!) a preto sa ho musíme naučiť, a nehovoríme to priamo. Keď navrhujeme a programujeme takýto algoritmus, musíme použiť údaje, aby sme zistili, ako dobre funguje. Ak nie sme spokojní s výsledkami, musíme urobiť krok späť a opraviť algoritmus alebo sa vrátiť na úplný začiatok a skontrolovať, či v údajoch nie je ešte niečo, čo môže byť dôležité pre riešenie problému. Na rozdiel od klasického programovania je táto iterativnosť veľmi prítomná v programovaní riadenom dátami.






