Umelá inteligencia - nám predpovie budúcnosť

30.05 | 19:59 | Žumpa | bedňa

V predchádzajúcich dieloch ste videli:
Umelá inteligencia sa učí počítať
Umelá inteligencia - prvý praktický príklad v rozpoznávaní obrazu
Data augmentation
Vytvorenie datasetu
Prvé kroky k programovaniu
Umelá inteligencia v rozpoznávaní obrazu
Umelá inteligencia nás všetkých zabije

Úvod

Dnes sa definitívne presvedčíme či je tento svet dopredu daný, alebo máme nejakú možnosť ovplyvniť to čo sa okolo nás deje.

Bohužiaľ aj v prvolíniovej fyzike máme veci ako mainstream a veľa vedcov sa bojí z neho vybočiť aby sa nejak nezosmiešnili.

Keď Georges Lemaître prišiel za Albertom Einsteinom tak ten ho vlastne poslal do zádele a povedal mu, že hoci sú jeho výpočty správne, tak jeho fyzika je ohavná.

Bolo to v dobe keď sa "vedelo", že vesmír je statický a večný.

Sám veľký Einstein sa musel časom Lemaîtremu ospravedlniť a zrušil aj vesmírnu konštantu.

Takže dnes "vieme", že vesmír nie je statický a rozpína sa stále rýchlejšie. Podľa týchto pozorovaní, sa vieme pohybovať v čase dozadu a vypočítať čas vzniku vesmíru, čiže Veľkého tresku.

Samozrejme sa vieme teoreticky "pohybovať" v čase aj dopredu a vieme vypočítať čo bude ďalej. Hustota hmoty v celom priestore vesmíru sa bude postupne zmenšovať až sa začnú rozpadávať galaxie, planéty, atómy a nakoniec aj častice hmoty.

Ak by to niekoho zaujímalo, tak ďalej v tejto práci pokračoval George Gamow. Hlavne je okolo toho už slušná matematika, kde je viac menej všetko objasnené.

Takže už dnes vieme budúcnosť všetkého.

Ideme na to

Stiahnem si nejaké hotové dáta z netu. A kde sa taká náhoda odohráva dva krát do týždňa? Áno trafili ste, ideme predpovedať čísla na Loto.

Trošku teórie o našich dátach. Vieme čo bude z celým vesmírom za sto miliárd rokov, ale nikto netuší čo bude za hodinu.

Naše vedomosti by sa dali zobraziť takto:
Keď ideme v grafe zľava, tak vieme predpovedať celý vesmír, ale nevieme aké čísla sa zajtra vylosujú v Lote. Ja som tam označil ~1% miesto kde budeme približne predpovedať vylosované čísla, čiže výsledok bude 1 ku 99. Možno ste sklamaný, ale je to stále lepšie ako 1 ku 15 000 000. Ako som trafil pomer 1 ku 99? Tak trochu zo skúseností koľko dát potrebujeme aby sme sa dopátrali k očakávaným výsledkom.

Zaujímavosti

Aby som nahradil dostatok dát, tak som sa pokúsil na čísla použiť rovnakú techniku ako sa používa na obraz, čiže z nich vytiahneme vlastnosti. Docielime toho vektorizáciou čísiel, alebo sa tomu hovorieva aj "one hot vektor".

Najlepšie to uvidíte na príklade. Pre jednoduchosť si to ukážeme na číslach od 0 do 5.

Nula     = 100000
Jednotka = 010000
Dvojka   = 001000
trojka   = 000100
Štvorka  = 000010
Päťka    = 000001
Takže teraz už vidíte, že sa tabuľka čísiel zobrazí rovnako ako dáta v obraze. Keď som riešil problém ako z tak malého počtu výsledkov cca dvetisíc, dostať nejaký výsledok, tak ma samozrejme napadlo LSTM, LSTM + RepeatVector + TimeDistributed, ale moc sa mi výsledky nepozdávali. Ono to je vidieť počas procesu učenia, keď sa sieť na tie dáta zle učí.

Tak ma napadlo, že s tých čísiel nebudem ťahať náväznosť (LSTM) , ale pokúsim o vytiahnutie vlastnosti. Proste či ten vesmír má, alebo nemá nejaké dopredu dané veci, takže som použil konvolučné vrstvy.

Model siete vyzerá takto:
def model_cnn_3 (max_len, max_value, activation):
	model = Sequential ()
	model.add (Conv2D (32, kernel_size = (3, 3), padding = "valid", strides = (1, 1), activation = activation, input_shape = (max_len, max_value + 1, 1)))
	model.add (Conv2D (64, kernel_size = (3, 3), padding = "valid", strides = (1, 1), activation = activation))
	model.add (Conv2D (128, kernel_size = (3, 3), padding = "valid", strides = (1, 1), activation = activation))
	model.add (Flatten ())
	model.add (Dense (1000, activation = activation))
	model.add (Dense (max_len, activation = activation))

	model.compile (optimizer = Adam (),
				   loss = 'mse',
				   metrics = ['accuracy'])
	return model
Vizualizácia modelu:
Model: "sequential_1"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_1 (Conv2D)            (None, 5, 48, 32)         320       
_________________________________________________________________
conv2d_2 (Conv2D)            (None, 3, 46, 64)         18496     
_________________________________________________________________
conv2d_3 (Conv2D)            (None, 1, 44, 128)        73856     
_________________________________________________________________
flatten_1 (Flatten)          (None, 5632)              0         
_________________________________________________________________
dense_1 (Dense)              (None, 1000)              5633000   
_________________________________________________________________
dense_2 (Dense)              (None, 7)                 7007      
=================================================================
Total params: 5,732,679
Trainable params: 5,732,679
Non-trainable params: 0
_________________________________________________________________
Hotový kód nájdete tu.

Nenájdete tu nič nové, okrem toho, že som modely sieti umiestnil do modulu.
from supermario.model import model_cnn_3

Predpoveď

Takže zo siete vyliezli tieto čísla. Ak som použil len čísla z prvého ťahu:
34 20 27 31 27 13 26
Vidíme tam chybu, že číslo 27 je tam dva krát

a keď som pridal aj druhý ťah, tak predpovedané čísla sú:
19 21 26 34 37 45  9

Záver

Už som vás pár krát prosil údaje z reálneho života. Napríklad u strájárov o dáta z meraní, kde sa CNCéčka pokúšajú dostať na nulovú chybu, alebo hocičoho iného kde sa snažíme prekonováť chyby vesmíru. Uvítál by som, keby sa niekto oprel do dát z Cernu ako ich jednoducho ťahať. Nie žeby som si to nenašiel sám, ale bol by som rád, keby sa niekto na to odhodlal. Mne tiež vedomosti nepadajú z neba a musím pre to niečo spraviť.

Prílohy



    • RE: Umelá inteligencia - nám predpovie budúcnosť 30.05 | 20:55
      Avatar easySolution   Návštevník

      Data z Cern v plnej krase http://opendata.cern.ch/search?page=1&size=20&type=Dataset

      • RE: Umelá inteligencia - nám predpovie budúcnosť 31.05 | 08:56
        Avatar bedňa LegacyIce-antiX  Administrátor

        Čo si tam vyčítal?

        Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
        • RE: Umelá inteligencia - nám predpovie budúcnosť 31.05 | 22:54
          Avatar easySolution   Návštevník

          Ako hladat Higgsov bozon.

          https://nbviewer.jupyter.org/github/atlas-outreach-data-tools/notebooks-collection-opendata/blob/master/13-TeV-examples/cpp/ATLAS_OpenData_13-TeV__analysis_example-cpp_Hyy_channel.ipynb

    • RE: Umelá inteligencia - nám predpovie budúcnosť 30.05 | 21:00
      Avatar mark   Používateľ

      Tiež ma fascinuje, že niektoré javy sú predpovedateľné a niektoré nie sú (alebo nie je známe, že sú predpovedateľné). Keď to zoberiem prakticky, niečo v živote ovplyvniť viem a niečo (možno zdanlivo) absolútne nie a môžem sa aj rozkrájať. Priložil som výstup z TRNG vlastnej výroby. Výstup nie je bielený okrem použitia Von Neumannovho algoritmu. Som naozaj zvedavý, čo v tom nájde umelá inteligencia :)

      • RE: Umelá inteligencia - nám predpovie budúcnosť 31.05 | 09:06
        Avatar bedňa LegacyIce-antiX  Administrátor

        Dalo by sa to použiť, keby si tam žiadny filter nepridával.

        Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
        • RE: Umelá inteligencia - nám predpovie budúcnosť 31.05 | 17:11
          Avatar mark   Používateľ

          Žiaľ bez filtru (Von Neumann extractor) tie dáta už nemám - musel by som ďalšie vyrobiť. A zo skúsenosti tento algoritmus nestačí, ak nie je dosť dobrý generátor. Aj keby som Ti dal dáta zo záznamu teploty v neustále klimatizovanej miestnosti bez okien, zrejme by umelá inteligencia niečo našla v záznamoch, kde sa nevyskytuje poruchová veličina. Napr. vstupujúci človek do miestnosti, odchádzajúci človek z miestnosti, pridané predmety neznámej tepelnej kapacity a pod. Tým chcem povedať, že sledovať len predchádzajúci stav výstupnej veličiny v drvivej väčšine prípadov nebude postačovať na predikciu budúcnosti. Na výsledný stav vplýva väčšinou viac faktorov. Napr. pri dátach z CNC strojov (nemám k takým prístup) zrejme by si prišiel na to, že tepelné ustálenie stroja má vplyv na výsledok. Medzitým sa opotrebováva nástroj, ktorého korekcie zadáva väčšinou obsluha (možno pri výmene, možno raz za zmenu). Korekcie sa merajú napr. na meracích mikroskopoch alebo profil-projektoroch. Okrem iného ani to isté zloženie obrábaného materiálu nezabezpečí tie isté mechanické vlastnosti pri opracovaní napr. obrábaním, ohýbaním ...

          • RE: Umelá inteligencia - nám predpovie budúcnosť 31.05 | 17:32
            Avatar bedňa LegacyIce-antiX  Administrátor

            Pointa je mať tých dát masaker. Vtedy sa zotrú rôzne vplivy ktoré tam človek, alebo niečo iné nejak zanese.

            Tie dáta z Cernu sú dobrá cesta, sú ich tam milióny a povedzme od 100k hore sa dá z tých dát niečo odvodiť.

            Tak keby sa v nich chcelo niekomu prehrabať a popísať ako sa v nich vyznať, to by sme to Loto nabudúce už určite rozbili :-)

            Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
    • RE: Umelá inteligencia - nám predpovie budúcnosť 30.05 | 22:17
      Avatar Miso   Návštevník

      Prečo sú v kóde použité dva datasety loto1.csv a loto2.csv, ktoré sú po načítaní spojené do spoločného poľa data a potom rozdelené na X a Y? Loto1 je trénovacia a loto2 testovacia množina? Alebo je možné priložiť ku kódu pár riadkov ako príklad týchto datasetov?

      • RE: Umelá inteligencia - nám predpovie budúcnosť 31.05 | 08:59
        Avatar bedňa LegacyIce-antiX  Administrátor

        Prihodil som tam download.py, ten ti tie CSVéčka stiahne.

        Táto správa neobsahuje vírus, pretože nepoužívam MS Windows. http://kernelultras.org
    • RE: Umelá inteligencia - nám predpovie budúcnosť 31.05 | 16:31
      Avatar Miso   Návštevník

      Super, diky.

    • RE: Umelá inteligencia - nám predpovie budúcnosť 01.06 | 08:44
      Avatar bedňa LegacyIce-antiX  Administrátor

      Tipované čisla:
      34 20 27 31 27 13 26
      19 21 26 34 37 45 9
      Vyžrebované čísla:
      11 43 2 1 6 45 49
      34 17 30 35 28 4 27

      Ako som písal 1 ku 99 :-D

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