Umelá inteligencia sa učí počítať

03.05 | 18:39 | Žumpa | bedňa

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.git
Vstúpime do projektu:
cd Keras---addition-of-two-numbers
V 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.txt
Pozrieme 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 = 500
a 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



    • RE: Umelá inteligencia sa učí počítať 05.05 | 09:47
      Avatar easySolution   Návštevník

      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 :)

      • RE: Umelá inteligencia sa učí počítať 05.05 | 09:49
        Avatar bedňa LegacyIce-antiX  Administrátor

        S tým som zrovna včera začal.

        Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
        • RE: Umelá inteligencia sa učí počítať 05.05 | 11:29
          Avatar Livan Manjaro, Arch, všetko s XFCE  Používateľ

          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ť.

          • RE: Umelá inteligencia sa učí počítať 05.05 | 20:40
            Avatar bedňa LegacyIce-antiX  Administrátor

            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ť.

            Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
        • RE: Umelá inteligencia sa učí počítať 06.05 | 19:36
          Avatar easySolution   Návštevník

          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.

          • RE: Umelá inteligencia sa učí počítať 06.05 | 19:58
            Avatar bedňa LegacyIce-antiX  Administrátor

            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.

            Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org