RNN pagrindai: pradėkite nuo nulio
Suprasite, kaip veikia rekurentiniai tinklai ir kodėl jie tinka laiko eilučių analizei. Pradedantiesiems draugiška pamoka.
Žingsnis po žingsnio nurodymų, kaip sukurti veikiantį RNN modelį. Naudosime TensorFlow ir Keras bibliotekus. Kodas yra paprastas ir suprantamas.
Autorius
Redakcinė Komanda
Parašyta Chrono Predict redakcinės komandos, sutelktos į aiškius, praktiškus vadovus laiko eilučių prognozavimui.
Rekurentiniai neuroniniai tinklai (RNN) yra puikus pasirinkimas, kai reikia analizuoti duomenis, kurie priklauso nuo laiko. Skirtingai nei standartiniai neuroniniai tinklai, RNN turi atmintį — jie gali prisiminti ankstesnius žingsnius ir juos naudoti prognozavimui.
Šiame vadove jūs ne tik supratisite teorijos pagrindus. Jūs iš karto pradėsite kodinti. Pirmą kartą susikūrėte RNN modelį Python? Čia rasite viską, ką jums reikia. Tiesiog sekite mūsų žingsnius ir jūs turėsite veikiantį modelį per 30 minučių.
Pirmiausia jums reikės trijų pagrindinių bibliotekų: TensorFlow, NumPy ir Pandas. TensorFlow yra pagrindinis — čia yra visos RNN funkcijos. NumPy padeda su matematiniu skaičiavimu. Pandas padeda su duomenimis.
Jei dar neturite šių bibliotekų, įdiekite jas naudodami pip. Vienas pip install tensorflow numpy pandas komanda ir viskas atlikta. Tai trunka kelias minutes, priklausomai nuo jūsų interneto greičio.
Svarbūs failai: Jums reikės CSV failo su laiko eilučių duomenimis. Dažniausiai tai finansiniai duomenys arba oro temperatūra. Mūsų pavyzdyje naudojame paprastą duomenų rinkinį su 1000 eilučių.
Dabar pradėkite kurti faktinį RNN modelį. Pradėsite su duomenimis. Jūs turite sukurti "langą" — tai reiškia, kad kiekvienas įvesties pavyzdys bus, pavyzdžiui, paskutinės 30 dienų duomenys. Ir modelis bandys numatyti 31-ą dieną.
Naudokite Keras Sequential modelį. Tai paprasčiausia forma. Pridėkite LSTM sluoksnį — tai yra RNN variantas, kuris atsimena labai gerai. Tada pridėkite Dense sluoksnį rezultatui. Pabaigoje naudokite Adam optimizatorių. Jis veikia labai gerai daugumai pradedančiųjų projektų.
Duomenų paruošimas — Padalinkite duomenis į treniravimo ir testavimo rinkinius (80/20 santykis).
Modelio architektūra — Pridėkite LSTM sluoksnį su 50 neuronų. Tai dažnai naudojamas dydis pradedantiesiems.
Kompiliavimas — Naudokite MSE nuostolį ir Adam optimizatorių. Tai puikus derinys laiko eilučių prognozavimui.
Mokymas — Vykdykite 50 epohų. Kiekviena epocha yra vienas praeigą per visus duomenis.
Kada modelis mokytas, atėjo laikas jį išbandyti. Naudokite testavimo duomenis, kuriuos laikyote atskirai. Modelis niekada jų nematė, todėl tai yra tiesus matas jo gebėjimams.
Dažnai norite žinoti, kaip smarkiai modelis klydo. Naudokite RMSE (šaknies vidutinę kvadratinę klaidą). Tai pasakys jums, kiek nuklydo vidutine prognozė. Jei RMSE yra 2 ir jūs prognozuojate temperatūrą, tai reiškia, kad vidutiniškai klydote apie 2 laipsnius.
Pradiniuose 10 epohų, nuostolis turėtų labai sumažėti. Jei jis nemažėja, problemos gali būti su duomenimis arba architektūra. Nebijokite keisti hiperparametrų — mokymo greičio, sluoksnių skaičiaus arba neuronu skaičiaus.
Baigiamasis žingsnis — naudokite modelį naujiems duomenims prognozuoti. Paruoškite duomenis tokiu pat būdu kaip treniravimo duomenis — tas pats "langas", tas pats normalizavimas. Tada iškvieskite model.predict(). Gausite prognozę.
Norite vizualizuoti rezultatus? Matplotlib yra jūsų draugas. Nubrėžkite faktines reikšmes ir prognozuotas reikšmes toje pačioje diagramoje. Jei linijos arti viena kitos, modelis veikia gerai. Jei yra didelė tarpų, galbūt reikia daugiau duomenų arba kitokios architektūros.
Šis vadovas yra edukacinės medžiagos. Jis skirtas jums supažindinti su RNN modeliais ir jų praktiniu naudojimu. Modelio kokybė priklauso nuo jūsų duomenų, architektūros pasirinkimo ir mokymo procesų. Nereikalaukite tobulos prognozės iš pradžių — realūs duomenys yra sudėtingi ir netikėtini. Nuolat tobulinkite savo modelį ir eksperimentuokite su skirtingomis metodikomis.
Jūs dabar žinote, kaip kurti RNN modelį Python naudodami TensorFlow ir Keras. Jūs supratote duomenų paruošimą, modelio architektūrą, mokymą ir prognozavimą. Tai solidus pamatas. Iš čia galite eiti toliau — pabandyti LSTM, GRU, arba net sudėtingesnes architektūras kaip Attention mehanizmus.
Praktika yra raktas. Paimkite savus duomenis. Kurkite modelius. Eksperimentuokite. Klyskite ir iš to mokykitės. Tai kaip programavimas — žinios ateina iš darymo, ne tik skaitymo. Sėkmės jums!
Tęskite mokymąsi apie laiko eilučių prognozavimą
Suprasite, kaip veikia rekurentiniai tinklai ir kodėl jie tinka laiko eilučių analizei. Pradedantiesiems draugiška pamoka.
Išmoksite skirtumų tarp LSTM ir GRU tinklų. Žinote, kuriuos naudoti savo projektams.
Jūsų modelis neveikia tinkamai? Čia rasite šešis patarimus, kaip sumažinti klaidą ir pagerinti rezultatus.