Napisz rekurencyjną sieć neuronową z komórką LSTMA zgadującą kolejne znaki w tekście Pana Tadeusza
Adama Mickiewicza używając bibliotek autograd/numpy.
Opis architektury można znaleźć tutaj.
Scalony tekst 10 ksiąg jest naszym zbiorem treningowym,
11 księga to zbiór walidacyjny,
a 12 księga to zbiór testowy.
Wymagane perplexity na zbiorze testowym to co najwyżej 5,99.
Po każdej epoce powinien zostać wygenerowany tekst (próbka ~200 znaków) na podstawie rozkładu prawdopodobieństw modelu dla prefiksu:
Jam jest Jacek
Proszę również zwizualizować działanie modelu przedstawiając grafiki/statystyki podobne do tych w blogpoście powyżej.
Termin: 30 listopada za 0,50 punktu
Termin: 6 grudnia za 0,25 punktu
Oto parę sugerowanych (albo obowiązujących) rozwiązań implementacyjnych:
-
wszystkie zmienne inicjalizuję szumem z przedziału (-0.1, 0.1);
no poniekąd z jednym wyjątkiem ... bias w forget-gate jest szumem dookoła 1, więc w momencie jego aplikacji dodaję 1
-
learning_rate = 1.0
-
wielkość wektora stanu/pamięci: hidden_size = 200;
pamięć inicjalizujemy zerami.
-
Proszę zaimplementować klasyczny model LSTM.
Zatem bez dodatkowych wizjerów (peepholes).
Każda bramka powinna mieć swojego biasa, a bramka forget powinna mieć biasa przesuniętego na dodatnią stronę.
- embeddings -- patrz poprzedni projekt/li>
-
dropout wewnatrz warstw:
A Theoretically Grounded Application of Dropout in Recurrent Neural Networks by Gal and Gahramani
[arXiv,
poster-pdf]
-
dropout pomiedzy warstwami:
Recurrent Neural Network Regularization by Zaremba et al.
[arXiv]
-
gradient clipping
Uwagi:
-
Pamiętaj o oświadczeniu o samodzielności wykonania rozwiązania.
Proszę je uzupełniać o źrodła wszystkich pomysłów co do architektury bądź rozwiązań implmentacyjnych, które Państwo zastosowali.
-
Zachęcam do zadawania pytań poprzez email lub forum.