Umelá inteligencia sa učí počítať
V minulom zápisku sme zistili, že sa neurónová sieť vie naučiť rozhodovať čo je a čo nie je naša mama. Teraz sa na neurónové siete pozrieme "matematickejšie".
Tieto zápisky strieľam úplne od pása a sám netuším čo bude v ďalšom, alebo aj v tomtom zápisku.Úvod
Tak trochu sa vrátime k zápisku "Je tento svet dopredu daný? Je vôbec možnosť ovplyvniť to čo sa deje?"Na začiatok sa pokúsime overiť, či sa umelé neuróny naozaj dokážu natočiť podľa dát. Takže do neurónovej siete nasypeme čísla, vždy dve čísla spočítame a ukážeme jej výsledok a uvidíme či sa naučí počítať aj ona. Samozrejme si overíme či dokáže spočítaj aj páry, alebo čísla ktoré nevidela.
Krok stranou ⏯
Aby sme si umelú inteligenciu mohli vyskúšať aj na starom počítači, tak si ju môžeme spustiť cez prehliadač na nejakom vzdialenom servery. Existujú platené služby, ale poznám aj jednu neplatenú mno je to od Google a to Colab. Ako poznáme Google od NSA, všetko sledujú, tak bacha ;-)Priamy link na colab s notebookom https://colab.research.google.com/drive/1nqx5VVVxcG0JfBUOdJELhEpq_ggO-7QL
Kód
Ak si chceme kód vyskúšať lokálne, naklonujeme si hotový kód:git clone https://github.com/bedna-KU/Keras---addition-of-two-numbers.gitVstúpime do projektu:
cd Keras---addition-of-two-numbersV súbore main.py nájdeme klasický pythonový script a v súbore Keras_addition_of_two_numbers.ipynb Jupyter Notebook, ktorý som spomínal vyššie.
Nainštalujeme si závislosti:
python3 -m pip install -r requirements.txtPozrieme sa do kódu main.py.
Vo funkcií create_triples (count, max) si vygenerujeme trojice: jedno číslo, druhé číslo a ich súčet.
Funkcie normalize (value, max) a denormalize (value, max) nám prevedú čísla na čísla v rozmedzí 0 až 1 a späť.
Funkcia model_create (). Nám vytvorí doprednú neuronovú sieť (Feedforward neural network).
Funkcia model_train (model) Spustí učenie sa siete.
Funkcia save_model (m, filename) uloží natrénový model s váhami.
Podľa premennej load_model_status sa spustí učenie, alebo sa nahrajú už naučené váhy.
V riadku testresult = model.predict (x2, verbose = 0)
prebieha predikcia.
A na záver zobrazenie výsledku:
print ('Count Number1 Number2 Total Right Error') for i in range (len (testresult)): number1 = denormalize (x2[i][0], MAX_VALUE_TEST) number2 = denormalize (x2[i][1], MAX_VALUE_TEST) total = denormalize (testresult[i][0], MAX_VALUE_TEST) print ('{:4d}. {:12.3f} + {:12.3f} = {:12.3f} === {:12.3f} {:12.3f}'.format ( i + 1, number1, number2, total, number1 + number2, abs(total - (number1 + number2))) )
Hranie sa s neurónovou sieťou
V nastavení parametrov máme zvolenú aktivačnú funkciu linear, ale môžeme vyskúšať hocijakú inú a sledovať ako dobre, alebo horšie sa sieť učí. Tu je popis aj s obrázkami.Ďalej si môžeme vyskúšať ako moc bude sieť chybovať, keď testovacie dáta budú omnoho väčšie ako na ktorých sa sieť učila. Sieť učíme na číslach v rozmedzí od 0 do 500:
MAX_VALUE_TRAIN = 500a môžeme vyskúšať ako spočíta desať krát vyššie čísla:
MAX_VALUE_TEST = 5000
Ďalej môžeme namiesto sčítavania:
result.append (sum (numbers[n]))použiť inú matematickú operáciu a sledovať ako sa sieť učí:
result.append (numbers[0][n] * numbers[1][n])Hrajte sa a spoznávajte. Môžete napríklad zmeniť v PARAMETERS zmeniť počet opakovaní EPOCHS = 50 učenia sa. Môžete zmeniť počet vrstiev v modele, šírku vrstiev a čo vás len napadne.
Záver
Dnes sme sa presvedčili, že sa neurónová sieť dokáže naučiť na hocijaké dáta a dokáže spoľahlivo predpovedať aj výsledky dát ktoré nikdy nevidela.Nabudúce by som chcel, aby sme si skúsili, či sa nám podarí vidieť do budúcnosti na nejakom datasete z reálneho sveta. Netvrdím, že ma predtým nenapadne niečo zaujímavešie, tak sa necháme všetci prekvapiť ako to dopadne :)
Niektoré teórie tvrdia, že neexistuje nesprávne rozhodnutie, pretože nech sa rozhodneme hocijako, veci dopadnú to tak ako mali.
Poznáme to aj z fyziky.
Prílohy
Pre pridávanie komentárov sa musíte prihlásiť.
Dnes sme sa presvedčili, že sa neurónová sieť dokáže naučiť na hocijaké dáta a dokáže spoľahlivo predpovedať aj výsledky dát ktoré nikdy nevidela
Celkom by ma zaujimalo ako dokaze predpovedat vyvoj kurzu na burze :) Datasety sa volne povaluju na nete.
Nemam na to skill aby som si to namodelo al sam.
LETS BE RICH :)
S tým som zrovna včera začal.
Tak teraz by to chcelo tie dáta sledovať a urobiť po uplynutí predpovedaného času výpočet korelácie predpovede s realitou. Som zvedavý, na koľko to bude sedieť.
Je to prvý pokus a preto to určite sedieť nebude. Je tam veľa možností ako na to. Musím si toho ešte dosť naštudovať.
super, moc sa tesim. Dakujem.
V podstate by ani nemusela byt predpoved na dni ci tyzdne. Stacila by kludne predpoved na najblizsiu hodinu, popripade aj minuty.
Budú ďalšie blogy o AI, ale vždy na to musím dostať chuť :)
Počítam že napíšem ďalší tak za dva dni, podľa mňa bude zaujímavý aj pre neprogramátorov, zatiaľ ho mám v hlave. Mno bojujem sám so sebou a aj keď začnem písať, neviem kde skončím :)
A čo sa týka predpovedania na burze, tak nejaký funkčný program nebude skôr ako za mesiac. Niežeby som tu nemohol dnes hodiť zápisok na túto tému, ale stál by za prd, akých je plný net. Potrebujem to poriadne otestovať a zas študovanie všelijakých teórií a to chce zas čas. Toto je dosť ťažká téma a potreboval by som k tomu nejakého profi odborníka na obchodovanie čo momentálne nemám. Prinajhoršom sa mi ani nič nepodarí, tak potom tu hodím, kde som sa dostal.
Určite tu za ten čas pribudnú zápisky o tom čo viem, alebo aspoň mám o tom šajna.