IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

1. diel - Úvod a motivácia do programovania neurónových sietí v Pythone

Vitajte u prvej lekcie e-learning kurzu venovanom deep learningu, teda strojovému učenia. Naučíte sa tu všetko od čítania dát až po naprogramovaní vlastnej neurónové siete v Pythone. U kurzu počítam s tým, že poznáte aspoň základy Pythone (stačí syntaxe) a viete vytvoriť triedu.

Umelá inteligencia v Pythone - Neurónové siete a deep learning v Pythone

Motivácia

Keďže vstupujeme do veľmi komplexnej problematiky, v dnešnej lekcii si ju podobne uvedieme a povieme si čo všetko tvorba umelej inteligencie v Pythone zahŕňa.

Štandardné vs. učiaci sa algoritmy

Štandardné algoritmy, ktoré nie sú založené na strojovom učení a prácu s dátami, excelujú na úlohách, ktoré možno ľahko definovať. Zoberme si napr. Úlohu "spracovať objednávku v internetovom obchode". Kód takéhoto programu by obsahoval jednoznačné postupy, napr. Uloženie objednávky do databázy, generovanie údajov do faktúry, obsluhu platobnej brány a ďalšie. Tu nie je moc nad čím premýšľať, jediný problém snáď môže byť nájsť v dnešnej dobe schopného programátora :)

Ako definujeme banán?

Definujme však iný typ úlohy, napr. Budeme chcieť zistiť, či je na fotografiu banán. Túto úlohu aj časť textu som si vypožičal z tunajšieho článku Deep learning na 3 riadky. Pokiaľ chcete realistickejšie úlohu, môžete si predstaviť, že namiesto banánu detekujeme zbraň a jedná sa o analýzu obrazu z bezpečnostnej kamery. Ako ale definujeme banán?

Eh ... no ... Môžeme začať s tým, že banán je žltý, má istý tvar, veľkosť a textúru. Ani jedna z týchto vlastností sa pre banánu zakaždým rovnaká a už vôbec nie je "banánovo exkluzívne" (napr. Jablko môže byť tiež žlté). Náš algoritmus sa tak môže ľahko mýliť a označiť za banán napr. Kus žltej záhradnej hadice alebo naopak zlyhať pri analýze zhnědlého alebo natočeného banánu. Myslím, že sme už narazili a to sme ešte ani nezačali. Aj v rozpoznávania číslic, ktorých je len 10 a sú oproti objektom všedného sveta jednoduché, sú klasické algoritmy značne nedokonalé.

Možno vás napadlo opýtať sa, ako to vlastne robí človek, že bezpečne pozná, čo je banán, zbraň, prečíta ŠPZ automobilu a dokáže riešiť ďalšie úlohy, kde štandardné programovacie postupy zlyhávajú. Asi by sme spolu došli k úvahe, že človek sa to naučí z dát, ktorá počas života získa.

Dáta

Vedci teda prišli s nápadom napodobniť ľudské myslenie a softvérovo simulovať sieť neurónov, podobnú tej, ktorú máme v hlave my ľudia, len samozrejme oveľa jednoduchšie. Túto sieť potom možno na základe veľkého množstva dát (v našom príklade pochopte dostatočného počtu fotografií rôznych banánov) vytrénovať tak, aby dokázala s vysokou úspešnosťou banán rozpoznať.

Takúto sieť musíme samozrejme naučiť rozpoznať aj iné objekty, aby sa mohla rozhodnúť medzi banánom a alternatívnym prípadom. Pri použití klasifikátora založeného na konvolučná neurónových sieťach je presnosť a rýchlosť algoritmu dokonca lepšie ako u človeka samotného! Klasifikátor máme na mysli funkčnosť, ktorá dokáže rozpoznať daný objekt a teda ho klasifikovať. To je ale však stále len jedna z úloh, ktoré možno strojovým učením riešiť.

Kedy použiť a nepoužiť neurónovou sieť

Dôležité je si uvedomí, že neurónové siete používame na určité typy úloh a ich výsledok má vždy nejakú pravdepodobnosť, aj keď veľmi vysokú. Ak by sme ich použili na úlohy, ktoré je možné jednoducho definovať, bolo by to zas na škodu. Nevýhodou neuronek všeobecne je potreba veľkého množstva dát a výpočtového výkonu pre učiaci fázu.

Dáta sú všetko

V dnešnej dobe sú dáta silným nástrojom, ak sa s nimi naučíme dobre pracovať, dokážeme prakticky všetko. Poďme si vyzdvihnúť ďalšie 2 úspechy AI (umelej inteligencie, anglicky Artifical inteligencia), tentoraz na poli hier:

  • Tím OpenAI dokázal poraziť tím profesionálnych hráčov v hre DotA 2 (zápas 5v5)
  • Tím DeepMind od Google porazil v hre Go (dosková hra) najlepšieho človeka
DotA 2 - Neurónové siete a deep learning v Pythone

"Stroj" porazil človeka, pretože hral toľko hier sám proti sebe a stále sa zlepšovať, že by to človek neodohral ani za niekoľko životov.

Čo všetko AI vie?

To ale stále nie je všetko, ani zďaleka nie! S AI toho možno robiť naozaj veľa a v mnohých odboroch je s týmito algoritmy spojené veľké množstvo peňazí a pozície analytikov big dáta sú veľmi dobre platené, napr. Vo finančníctve.

Uveďme si tu taký zoznam pojmov, stále sa jedná o malý nástrel toho, čo toto mladé a perspektívne odvetvie všetko umožňuje:

  • Všeobecné Klasifikácia

    predikcia

  • Klasifikácia
  • predikcia
  • Práca s jazykom preklad

    Klasifikácia komentárov - pozitívne, neutrálne, negatívne

    Klasifikácia udalostí vo svete Na tomto môžeme zarobiť ťažké peniaze, ak budeme vedieť X dní vopred, že nejaké akcie pôjdu dole alebo hore :)

    generovanie textu

  • preklad
  • Klasifikácia komentárov - pozitívne, neutrálne, negatívne
  • Klasifikácia udalostí vo svete Na tomto môžeme zarobiť ťažké peniaze, ak budeme vedieť X dní vopred, že nejaké akcie pôjdu dole alebo hore :)
  • Na tomto môžeme zarobiť ťažké peniaze, ak budeme vedieť X dní vopred, že nejaké akcie pôjdu dole alebo hore :)
  • generovanie textu
  • Interakcia s prostredím (napríklad hry) Reinforcement learning Neurónové siete sa učia podobne ako človek, podľa odmeny alebo trestu, príklady úspechov AI v hrách DotA 2 alebo deskovce Go sme si už spomenuli vyššie. odkaz
  • Reinforcement learning Neurónové siete sa učia podobne ako človek, podľa odmeny alebo trestu, príklady úspechov AI v hrách DotA 2 alebo deskovce Go sme si už spomenuli vyššie. odkaz
  • Neurónové siete sa učia podobne ako človek, podľa odmeny alebo trestu, príklady úspechov AI v hrách DotA 2 alebo deskovce Go sme si už spomenuli vyššie. odkaz
  • Práca so zvukom Generovanie hudby a ďalšie
  • Generovanie hudby a ďalšie
  • Práca s obrazom Klasifikácia obrázku

    Detekcia viac objektov na obrázku (+ lokalizácia)

    style Transfer Druh umenia, kde sa snažíme ponechať obsah obrázka a zmeniť štýl (napr. Profilovka nakreslená od Picassa) odkaz

    Deep Dream Druh umenie, vytvoríme "halucinogénne" obrázok, kde sú zobrazené objekty a vlastnosti, ktoré model pozná, Odkaz

    generatívne Model Môžeme vygenerovať unikátny obrázok podobný tým, ktorý chceme. Napr. urobiť z koňa zebru a naopak - Odkaz. Alebo urobiť z letného obrázku zimný.

    Text to Image - Odkaz

    Rozpoznanie osôb podľa tváre

    Detekcia kľúčových bodov na tvári

    Odzeranie z pier

    Urobiť z low res obrázku high res, Odkaz

    odstránenie šumu

    Dokresľovanie obrázkov / rekonštrukcia

  • Klasifikácia obrázku
  • Detekcia viac objektov na obrázku (+ lokalizácia)
  • style Transfer Druh umenia, kde sa snažíme ponechať obsah obrázka a zmeniť štýl (napr. Profilovka nakreslená od Picassa) odkaz
  • Druh umenia, kde sa snažíme ponechať obsah obrázka a zmeniť štýl (napr. Profilovka nakreslená od Picassa) odkaz
  • odkaz
  • Deep Dream Druh umenie, vytvoríme "halucinogénne" obrázok, kde sú zobrazené objekty a vlastnosti, ktoré model pozná, Odkaz
  • Druh umenie, vytvoríme "halucinogénne" obrázok, kde sú zobrazené objekty a vlastnosti, ktoré model pozná, Odkaz
  • generatívne Model Môžeme vygenerovať unikátny obrázok podobný tým, ktorý chceme. Napr. urobiť z koňa zebru a naopak - Odkaz. Alebo urobiť z letného obrázku zimný.

    Text to Image - Odkaz

  • Môžeme vygenerovať unikátny obrázok podobný tým, ktorý chceme. Napr. urobiť z koňa zebru a naopak - Odkaz. Alebo urobiť z letného obrázku zimný.
  • Text to Image - Odkaz
  • Rozpoznanie osôb podľa tváre
  • Detekcia kľúčových bodov na tvári
  • Odzeranie z pier
  • Urobiť z low res obrázku high res, Odkaz
  • odstránenie šumu
  • Dokresľovanie obrázkov / rekonštrukcia

Od každého niečo si tu určite ukážeme, ale najskôr sa musíme ku všetkému postupne dostať. V tomto kurze je (a bude) motivácia extrémne dôležitá, preto sa vás budem snažiť motivovať a čas od času informovať o dianí vo svete AI :) Mne osobne trvalo viac ako 7 mesiacov, než som pochopil princípy a zvládol vytvoriť niečo, čomu som naozaj rozumel.

Čo máme pred sebou

Máme toho naozaj veľa, je kľúčové vybrať si ten správny začiatok a nikam neponáhľať. Kľúčové body, ktoré máme pred sebou, sú:

  • Lineárne a polynomiálnej regresia
  • K-Najbližších susedov (K-Nearest neighbours)
  • Rozhodovací stromy (Decision Trees), Les rozhodovacích stromov (Random forest)
  • K-Means clustering (Rozdelenie dát do K skupín)
  • SVM (Support Vector Machine)
  • Perceptron
  • Multilayer perceptron (Viacvrstvový perceptron)
  • neurónové siete
  • Reinforcement learning (učenie na základe interakcie s prostredím)
  • CNN (Convolutional Neural Network - Konvolučný neurónové siete)
  • RNN (Recurrent Neural Network - Opakujúce sa neurónová sieť)

Je tiež dôležité vedieť o novinkách, preto si občas prečítajte / pozrú niečo na nasledujúcich weboch:

  • Medium
  • Towards Data Science
  • YouTube Two Minute Papers - predstavuje novinky (papers, papier je väčšinou PDF popisujúci spôsoby, architektúru modelu / neurónové siete a výsledky práce - niečo ako seminárne práce na univerzite)
  • Two Minute Papers - predstavuje novinky (papers, papier je väčšinou PDF popisujúci spôsoby, architektúru modelu / neurónové siete a výsledky práce - niečo ako seminárne práce na univerzite)
  • Reddit - súvisiace subreddity (Machine Learning, Data Science, Computer Vision, Deep Learning, ...)

S čím budeme pracovať

Budeme používať pomerne dosť nástrojov, pretože každá činnosť si žiada ten správny. Uveďme si aspoň tie kľúčové, ktoré budú po dobu tohto kurzu náš denný chlieb (samozrejme záleží na činnosti).

  • NumPy - knižnica na pre prácu s N-dimenzionálnymi poli - stavia na nej väčšina knižníc z tohto "odboru"
  • Pandas - knižnica pre prácu s dátami
  • Matplotlib - knižnica pre vizualizáciu
  • Scikit-Learn - knižnica pre strojové učenie - obsahuje už implementované algoritmy
  • OpenCV - knižnica pre prácu s obrazom
  • PyTorch / Tensorflow - framework pre deep learning / neurónové siete Framework budeme používať už z jedného prostého dôvodu a tým je uľahčenie práce, ale tým najdôležitejším dôvodom je optimalizácia. Tieto frameworky sú robené pre obrovské množstvo paralelných výpočtu na Tensor (čo je Tensor sa dozviete až to bude potrebné), teda sú písané v nízkom jazyku ako CUDA (výpočtová framework pre GPU od NVIDIA) a C ++.
  • Framework budeme používať už z jedného prostého dôvodu a tým je uľahčenie práce, ale tým najdôležitejším dôvodom je optimalizácia. Tieto frameworky sú robené pre obrovské množstvo paralelných výpočtu na Tensor (čo je Tensor sa dozviete až to bude potrebné), teda sú písané v nízkom jazyku ako CUDA (výpočtová framework pre GPU od NVIDIA) a C ++.

Pracovať s týmito nástrojmi sa budeme učiť podľa potreby v našich projektoch, po pár lekciách sa vám to dostane pod kožu rovnako ako keď som začínal aj ja sám :)

Inštalácia

Osobne rád používam knižnicu / framework PyTorch (na neurónové siete), ale v produkcii sa väčšinou používa framework Tensorflow od Googlu, ktorý možno bez problémov používať aj na mobile. Vo frameworkoch je rozdiel ako fungujú, ale to nás zatiaľ nemusí trápiť a všetko sa dozviete ďalej v kurze. Až príde čas, bol by som rád, aby ste o frameworku / knižnici, ktorý budeme používať na neurónové siete, rozhodli vy sami :)

Najskôr je potrebné nainštalovať si Python, silne odporúčam distribúciu MiniConda / Anaconda, pretože nikomu neprajem inštalovať OpenCV ručne. MiniConda je podobná distribúcia ako Anaconda, líšia sa v tom, že Anaconda má predinštalovaných asi 150 knižníc pre prácu s dátami (čo si myslím, že je zbytočné).

Po inštalácii Conda distribúcia spustíme Anaconda prompt (Kláves Win a použite vyhľadávanie). Unixákům stačí len otvoriť nový terminál. Cez Anaconda prompt budeme my Windowsáci spúšťať naše skripty.

Ak to niekomu nevyhovuje, môže si Python pridať do PATH a v príkazovom riadku (CMD) použiť príkaz conda init cmd.exe. V novo otvorenom CMD následne použiť conda activate pre aktiváciu prostredie (potom už stačí iba tento príkaz pri spustení CMD).

Ďalej nainštalujeme knižnice, ktoré budeme čoskoro potrebovať (zvyšok doinštalujeme podľa potreby) a to nasledujúcimi príkazy:

  • pip install numpy
  • pip install matplotlib
  • pip install pandas
  • pip install sklearn - knižnica Scikit-Learn

Ak vám príkazy nefungujú, napr. Používate klasickú distribúciu Pythone, použite variantu py -m pip install.

Pokračovať budeme v nasledujúcej lekcii, Neurónové siete v Pythone - Prostredie Jupyter .


 

Všetky články v sekcii
Neurónové siete a deep learning v Pythone
Preskočiť článok
(neodporúčame)
Neurónové siete v Pythone - Prostredie Jupyter
Článok pre vás napísal MQ .
Avatar
Užívateľské hodnotenie:
1 hlasov
Používám hlavně Python a zajímám se o Deep Learning a vše kolem.
Aktivity