Uczymy AI przewidywać kursy krypto: Część druga, uczymy przewidywania funkcji liniowej

in voilk •  3 months ago

    W poprzedniej części nauczyliśmy nasz model sieci neuronowej dodawania liczb od 1 do 1000. Wiemy też jak sprawdzić czy wyniki są dobre, jak nim sterować... Przejdźmy więc do kolejnego kroku

    Część druga: Uczymy przewidywania funkcji liniowej.

    Celem ćwiczenia jest nauczenie naszego modelu, rozpoznawania ukrytej funkcji. Tylko ważne jest by tą funkcję dobrze ukryć, skoro naszym celem jest przewidywanie kursów kryptowalut. Bo przyjmuję założenie, że w kursach są takie funkcje ukryte. Ale właśnie, liczba mnoga ukryte są różne funkcje, zmieniające się w czasie oraz zaburzają ją częste zdarzenia losowe.

    Więc nasza funkcja liniowa będzie wyglądała tak

    • oś X - czas
    • os Y - cena
    • okres od dnia 0 do dnia 70 cena spada o 1%
    • okres od dnia 71 do dnia 100 cena wzrasta 1%
    • wprowadzamy ukrycie losowy wzrost/spadek ceny o 5%

    Jak w poprzedniej części kod można pobrać, zapisać, przeanalizować, zmodyfikować i uruchomić:
    https://github.com/fatmusicpl/voters.github.io/blob/master/neural_network2.html

    Albo tylko go uruchomić w swojej przeglądarce:
    https://fatmusicpl.github.io/voters.github.io/neural_network2.html

    Przejdźmy zatem do nowych rzeczy w kodzie:

    1. Budowanie danych:

      function generateData() {
      for (; day < 71; day++ ){ currentPrice /= 1 + (0.01 + (Math.random() - 0.5) * 0.1);}
      for (; 70 < day && day < 101; day++) { currentPrice *= 1 + (0.01 + (Math.random() - 0.5) * 0.1);}
      }

      Jako dane wejściowe, używamy cen z dni od 0 do 100, właściwie od 1, bo talice zaczynają się od zera i pierwszy element ma klucz 0.
      Jako daną wyjściową, którą model ma wyznaczyć jest ostatni element tablicy.

      inputs.push(prices.slice(0, 100));
      outputs.push(prices[100])

    2. Budowanie modelu i dodawanie warstw neuronów - to podobno jest istotne, by badać zagadnienie głębiej, dodawać więcej wag:
      function createModel()

      // Warstwa ukryta (100 dni)
      model.add(tf.layers.dense({ units: 64, activation: 'relu', inputShape: [100] }));
      // Dodatkowe warstwy ukryte
      model.add(tf.layers.dense({ units: 128, activation: 'relu' })); // Warstwa ukryta 1
      model.add(tf.layers.dense({ units: 64, activation: 'relu' })); // Warstwa ukryta 2
      model.add(tf.layers.dense({ units: 32, activation: 'relu' })); // Warstwa ukryta 3
      model.add(tf.layers.dense({ units: 1, activation: 'linear' })); // Warstwa wyjściowa

    To raczej tyle z istotnych dla działania sieci neuronowej. Dodałem jeszcze rysowanie wykresu. Który powinien wyglądać mniej więcej w taki sposób, za każdym razem będzie inny ponieważ podczas generowania wprowadzamy losowe zakłócenia, by utrudnić sieci znalezienie wzoru:


    Cena do dnia 70 spada, od 70 rośnie.

    Jest też możliwość konfiguracji modelu:

    To w sumie tyle wystarczy kliknąć przycisk Rozpocznij trening i jak sieć się nauczy, przycisk Przetestuj model. 😀

    Dziękuję osobom wspierającym, fajnie że ktoś to czyta 😀 Mam nadzieję że dzięki temu nawet jak ktoś nie umie w programowanie, to czegoś się dowie. Że sztuczna inteligencja (właściwie uczenie maszynowe) to tylko narzędzie, którego można nauczyć się używać. Tak jak internet, nikt nie zaprzecza że internet zmienił świat. Kwestią dyskusyjną jest czy na lepsze. Ale moim zdaniem, tak. Choć są bardzo duże minusy, albo zagrożenia. Ale to kwestia już na osobny artykuł.


    ---=== reklama ===---


    pivx.promo - Kranik PIVX, fajna moneta pod PoS
    Honeygain - Udostępnianie sieci oraz content delivery, za nagrody
    Grass - Udostępnianie sieci za nagrody w kryptowalucie Solana (SOL)
    AutoFaucet - Kranik z bardzo dużym wyborem monet
    Final Autoclaim - Kranik z bardzo dużym wyborem monet
    FaucetCrypto - Kranik z dużym wyborem moet i możliwośćią wypłaty BTC bezpośrednio na portfel
    Vie Faucet - Jeden z większych kraników

      Authors get paid when people like you upvote their post.
      If you enjoyed what you read here, create your account today and start earning FREE VOILK!