Uczymy AI przewidywać kursy krypto: Część pierwsza, zacznijmy od nauki dodawania
Trochę się pospieszyłem z poprzednim wpisem. Doszedłem do wniosku, że to kiepski pomysł - zaczynanie od końca i analiza wsteczna... Choć jak mówi przysłowie:
Analiza wsteczna - zawsze skuteczna
To jednak nie w tym wypadku. Ponieważ chcę się czegoś nauczyć, zrozumieć działanie. A tamten kod był zbyt rozbudowany. Ciężko było zrozumieć, skąd bierze się wynik końcowy. Więc ani tego poprawić nie można, a co gorsza nawet tym nie da się sterować. Trzeba bawić się w debug itd...
Podzieliłem więc zagadnienie na trzy części.

Część pierwsza: Nauka sieci neuronowej dodawania.
Celem ćwiczenia jest nauczenie AI dodawania liczb całkowitych od 1 do 1000 oraz sprawdzenie jak jej to poszło.
Kod można pobrać i zmodyfikować, sprawdzić...
https://github.com/fatmusicpl/voters.github.io/blob/master/neural_network.html
Albo uruchomić:
https://fatmusicpl.github.io/voters.github.io/neural_network.html
Fragmenty kodu na które warto zwrócić uwagę:
- generowanie danych treningowych, 10 000 par liczb od 1 - 1000:
function generateData(numSamples)
- normalizowanie i denormalizowanie danych, okazuje się że algorytmy najlepiej sobie radzą z liczbami od -1 do 1:
function normalizeData(data, max)
function denormalizeData(data, max)
- tworzenie sieci neuronowej, w kolejnych częściach napiszę odrobinę więcej:
function createModel()
- trenowanie modelu, też opiszę w kolejnych częściach, albo właściwie teraz:
epochs: 20 - liczba epok, ilość przejść przez dane treningowe, im więcej tym lepiej, ale dłużej się uczy
batchSize: 16 - liczba elementów w paczce, im mniejsza paczka tym lepiej, ale uczenie jest dłuższe, ponieważ w każdej epoce trzeba sprawdzić wszystkie dane treningowe.
async function trainModel(model, inputs, outputs)
- testowanie modelu
function testModel(model, num1, num2)
- pary danych testowych, celowo dodane liczny spoza zakresu na którym model był trenowany:
[100, 200],[345, 678],[999, 1],[500, 500],[1, 1],[1, 2],[3, 4],[250, 250],[1, 1],[1, 2],[2, 3],[1000, 2000],[1500, 2500],[2500, 2500],[5000, 5000],[1, -1],[1, -2],[10, -2],[25, -2]
Wynik działania skryptu:

Warto zauważyć, że jest problem z małymi liczbami, a z dużymi nawet wykraczającymi poza zakres model sobie radzi, problem jest też z liczbami ujemnymi, ale ich nie uczyliśmy.
Jak ktoś na poważnie myśli o AI, to ta część jest najważniejsza. Ponieważ tu uczymy się sterować modelem i jego testować. Im więcej danych tym trudniej analizować co od czego zależy. Tu z łatwością każdy parametr można zmienić i obserwować, jak jego zmiana wpłynie na końcowe wyniki.
W kolejnej części nauczymy sieć neuronową analizować (przewidywać) dane na osi X/Y, zakładając że oś X to czas, a Y to cena. Co już nas zbliży do faktycznej nauki przewidywania faktycznych cen kryptowalut w czasie.
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
:) super ciekawe eksperymenty , czekam na kolejne