RNN pagrindai: pradėkite nuo nulio
Suprasite, kaip veikia rekurentiniai tinklai ir kodėl jie tinka laiko eilučių analizei.
Supraskite pagrindinius skirtumus tarp LSTM ir GRU tinklų. Žinokite, kuriuos naudoti savo projektams ir kaip jie gerina prognozavimo tikslumą.
Redakcinė Komanda
Parašyta Chrono Predict redakcinės komandos, sutelktos į aiškius, praktiškus vadovus laiko eilučių prognozavimui.
Standartiniai rekurentiniai tinklai (RNN) turi didelę problemą — jie greitai "pamiršta" ankstesnius duomenis. Tai vadinama vanishing gradient problema. Kai treniruojate tinklą su ilgomis laiko sekomis, gradientai mažėja tiek, kad tinklas nustoja mokytis. LSTM ir GRU architektūros išsprendžia šią problemą.
LSTM (Long Short-Term Memory) buvo sukurta 1997 metais, o GRU (Gated Recurrent Unit) atsirado vėliau — 2014 metais. Šiandien šios architektūros dominuoja laiko eilučių prognozavime, kalbos apdorojime ir kitose srityse, kuriose reikia seklinės analizės.
LSTM ląstelė turi tris "vartus" — tai specialūs mechanizmai, kurie kontroliuoja informacijos srautą. Šie vartai yra sigmoido ir tanh aktivacijos funkcijos, kurios nusprendžia, kurią informaciją laikyti ir kurią atmesti.
Nusprendžia, kurią ankstesnę informaciją iš ląstelės būsenos "pamiršti". Svarbu ilgoms sekoms — tinklas gali atmesti nesvarią praeitį.
Kontroliuoja, kurie nauji duomenys iš dabartinio žingsnio bus įtraukti į ląstelės būseną. Leidžia tinklui pasirinkti svarbią informaciją.
Nusprendžia, kokią ląstelės būsenos informaciją išduoti kaip išvestį. Tai nukreipia informaciją kitoms ląstelėms ir tinklo sluoksniams.
LSTM ląstelės turi 4 kartus daugiau parametrų nei standartinės RNN ląstelės. Tai reiškia daugiau skaičiavimų, bet žymiai geresni rezultatai su ilgomis laiko sekomis — iki 100+ žingsnių atgal.
GRU yra LSTM-ąja į gamtą žingsnis. Kyprą 2014 metais, Jie rado, kad jei sujungtume LSTM vartus, gautume paprastesnę, bet veiksmingą architektūrą. GRU turi tik 2 vartus — atnaujinimo ir nustatymo vartus.
GRU naudoja 2-3 kartus mažiau parametrų nei LSTM. Tai reiškia greitesnį mokymo laiką ir mažiau skaičiavimų. Nuostabu — GRU dažnai veikia taip pat gerai kaip LSTM mažesnėse duomenų bazėse ir greitesnėms sekoms.
Tai dažnai iškyla klausimas: "Kurią naudoti savo projektui?" Atsakymas nėra paprastas — priklauso nuo jūsų duomenų ir užduoties. Štai kai kurie pagrindiniai kriterijai.
Realybėje, LSTM ir GRU veikia labai panašiai daugeliui praktinių problemų. Kai kuriose studijose GRU net nusikalnus LSTM mažose duomenų bazėse, nes yra mažiau tarpusavyje susiję ir mažiau pagal
GRU yra 20-30% greitesnis dėl mažiau parametrų. LSTM reikalauja daugiau skaičiavimo, ypač GPU naudojant.
Dažnai labai panašūs rezultatai. LSTM gali turėti 1-3% pranašumą labai ilgose sekmose, bet GRU kartais lygus arba geresnis.
GRU sunaudoja 30% mažiau atminties. Tai svarbu mobilių ir embedded sistemų projektuose.
GRU greičiau konverguoja su mažomis duomenų bazėmis. LSTM reikalauja daugiau pavyzdžių, kad pasirodytų pranašumas.
Geriausias patarimas: Pradėkite nuo GRU. Jei rezultatai nepatenkinti arba turite didelę duomenų bazę, perjunkite į LSTM. Daugeliu atvejų jūs to nereikalingas.
Šis vadovas yra edukacinis išteklius, skirtas pagrindinių LSTM ir GRU koncepcijų supratimui. Faktinės projekto realizacijos rezultatai gali skirtis priklausomai nuo jūsų duomenų, hiperparametrų ir naudojamos infrastruktūros. Šias architektūras naudokite kaip pradžią — eksperimentuokite, testuokite ir pritaikykite savo specifinėms problemoms.
LSTM ir GRU yra mūsų darbas laiko eilučių prognozavimui. LSTM turi daugiau galios dideliems projektams, o GRU yra praktiškesnis pasirinkimas daugumai. Skirtumas tarp jų yra architektūrinis — jei jūs nesuprantate vartų mekanizmo, pradėkite su GRU ir palaipsui pažinkite LSTM.
Kitas žingsnis? Apžvelgite mūsų praktinį vadovą apie pirmąjį RNN modelį Python ir pradėkite rašyti kodą. Teorija be praktikos yra bevaisė.
Suprasite, kaip veikia rekurentiniai tinklai ir kodėl jie tinka laiko eilučių analizei.
Žingsnis po žingsnio nurodymų, kaip sukurti veikiantį RNN modelį. Naudosime TensorFlow ir Keras.
Jūsų modelis neveikia tinkamai? Čia rasite šešis patarimus, kaip sumažinti klaidą ir pagerinti tikslumą.