moj-2024/lab/08_Model_neuronowy_typu_word2vec.ipynb
2024-05-29 12:48:08 +02:00

5.1 KiB
Raw Permalink Blame History

Modelowanie języka laboratoria

24 kwietnia 2024

8. Model neuronowy typu word2vec

Zadania

Proszę wykonać zadanie 1 lub zadanie 2 (nie oba naraz).

Zadanie 1

Wzorując się na materiałach z wykładu stworzyć 5-gramowy model neuronowy oparty na jednym ze schematów z wykładu, np.

img

Warunkiem koniecznym jest, żeby przewidywać słowo środkowe, np. Mając tekst ['Ala', 'ma', '[MASK]' 'i', 'psa'] chcemy przewidzieć kontekst środkowego słowa (tutaj '[MASK]')

Warunki zaliczenia:

Uwagi dla wysyłania zadania na Gonito:

  • commitując rozwiązanie proszę również umieścić rozwiązanie w pliku /run.py (czyli na szczycie katalogu). Można przekonwertować jupyter do pliku python przez File → Download as → Python. Rozwiązanie nie musi być w pythonie, może być w innym języku.
  • w nazwie commita podaj nr indeksu
  • w tagach podaj neural-network oraz 5gram

Punktacja:

  • 60 punktów

Jak stworzyć model?

  • warto bazować na kodzie ze wykładu 7 Zanurzenia słów
  • elementy, które na pewno trzeba będzie wykorzystać to: nn.Embedding, nn.Linear, nn.Softmax
  • w odróżnieniu do materiałów z wykładu lepiej nie korzystać z nn.Sequential, tylko wszystki operacje zapisywać w model.forward. Przy użyciu sequential może być problem np. z dodawaniem lub konkatenacją tensorów

W jaki sposób uzyskać lepszy wynik?

  • Po pierwsze proszę stosować sie do rad z poprzednich cwiczeń (trenowanie przez kilka epok i monitorowanie wyniku na zbiorze deweloperskim)
  • dobry start to zawsze zaczęcie od jak najprostszego modelu (czyli 1 warstwa liniowa, zwykłe dodawanie embeddingów słów) i dopiero później go rozbudowywać monitorując wynik. Jest to rada uniwersalna w uczeniu maszynowym.
  • Poza tym warto wypróbować przynajmniej kilka modeli z wykładu. Mając zaimplementowany cały kod dla jednego modelu, wystarczy jedynie delikatnie zmienić architekturę modelu i wytrenować go od nowa. Cała reszta kodu zostaje bez zmian.
  • warto spróbować dodanie np 2 warstw liniowych (lub nawet 3) zamiast jednej warstwy (koniecznie trzeba dodać między nimi funkcję aktywacji, np RELU).
  • poza tym można zmieniać różne parametry (np. wielkość słownika, wielkość warstwy ukrytej, różne funkcje aktywacji)

Zadanie 2

Proszę zrobić parameter Hyperparameter Tuning dla zadania 1

  • wymóg wyniku najlepszego modelu, conajwyżej 6.10
  • wnioski nie muszą być specjalnie rozbudowane, prezentacja może trwać 3-5minut lub dłużej
  • należy wybrać dla siebie metodę hypermarameter tuningu
  • należy stworzyć conajmniej 10 modeli, należy pokazać wyniku dla conajmniej paru
  • oczywiście kod musi być automatyczny (a nie ręcznie zmieniamy paratery), natomiast nie ma wymogu korzystania ze specjalnych bibliotek
  • liczba punktów: 100
  • deadline: 22 maja 2024 przed zajęciami