From a298acf1e1e2fed53c5815c650a88aa07c273b51 Mon Sep 17 00:00:00 2001 From: Jakub Pokrywka Date: Sun, 10 Apr 2022 22:39:48 +0200 Subject: [PATCH] add 7 --- cw/07_neuronowe_modele_językowe.ipynb | 152 +++++++++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 cw/07_neuronowe_modele_językowe.ipynb diff --git a/cw/07_neuronowe_modele_językowe.ipynb b/cw/07_neuronowe_modele_językowe.ipynb new file mode 100644 index 0000000..e3c1174 --- /dev/null +++ b/cw/07_neuronowe_modele_językowe.ipynb @@ -0,0 +1,152 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", + "
\n", + "

Modelowanie Języka

\n", + "

7. Model neuronowy ff [ćwiczenia]

\n", + "

Jakub Pokrywka (2022)

\n", + "
\n", + "\n", + "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Instalacja pytorch\n", + "\n", + "https://pytorch.org/get-started/locally/" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Tutorial pytorch\n", + "https://pytorch.org/tutorials/beginner/deep_learning_60min_blitz.html" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Zadanie" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Proszę wykonać tylko jedno zadanie z dwóch!**" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Zadanie 1 (proste)\n", + "\n", + "Wzorując się na materiałach z wykładu stworzyć neuronowy, **bigramowy** model językowy.\n", + "\n", + "Warunki zaliczenia:\n", + "- wynik widoczny na platformie zarówno dla dev i dla test\n", + "- wynik dla dev i test lepszy (niższy) niż 1024.00 (liczone przy pomocy geval)\n", + "- deadline do końca dnia 24.04\n", + "- 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.\n", + "- zadania wykonujemy samodzielnie\n", + "- w nazwie commita podaj nr indeksu\n", + "- w tagach podaj **neural-network** oraz **bigram**!\n", + "- uwaga na specjalne znaki \\\\n w pliku 'in.tsv' oraz pierwsze kolumny pliku in.tsv (które należy usunąć)\n", + "\n", + "Punktacja:\n", + "- podstawa: 60 punktów\n", + "- 40 punktów z najlepszy wynik z 2 grup\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Zadanie 2 (trudniejsze)\n", + "\n", + "Wzorując się na materiałach z wykładu stworzyć neuronowy, **trigramowy** model językowy.\n", + "\n", + "Warunki zaliczenia:\n", + "- wynik widoczny na platformie zarówno dla dev i dla test\n", + "- wynik dla dev i test lepszy (niższy) niż 1024.00 (liczone przy pomocy geval)\n", + "- deadline do końca dnia 24.04\n", + "- 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.\n", + "- zadania wykonujemy samodzielnie\n", + "- w nazwie commita podaj nr indeksu\n", + "- w tagach podaj **neural-network** oraz **trigram**!\n", + "- uwaga na specjalne znaki \\\\n w pliku 'in.tsv' oraz pierwsze kolumny pliku in.tsv (które należy usunąć)\n", + "\n", + "Punktacja:\n", + "- podstawa: 120 punktów\n", + "- 40 punktów z najlepszy wynik z 2 grup\n", + "- 20 punktów za drugi najlepszy wynik z 2 grup" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## W jaki sposób uzyskać lepszy wynik?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Dla lepszych wyników, można trenować model przez kilka epok.\n", + "\n", + "Zgodnie z dobra praktyką w uczeniu maszynowym należy monitorować wynik (tutaj perplexity) na zbiorze deweloperskim w trakcie uczenia.\n", + "\n", + "Kod z wykładu pokazuje jedynie wynik funkcji kosztu na zbiorze trenującym. Dla kompletnego rozwiązania warto zaimplementować monitorowanie kosztu dla zbioru deweloperskiego.\n", + "Przy każdym sprawdzaniu wyniku, należy sprawdzać czy obecny model jest najlepszy i jeżeli jest najlepszy to zapisywać jego stan najlepiej w postaci binarnej (może byc pickle) do pliku\n", + "\n", + "\n", + "Po zakończeniu trenowania należy wybrać model który uzyskuje najmniejszy wynik funkcji kosztu dla zbioru deweloperskiego i użyć go do wygenerowania odpowiedzi dla zbioru testowego." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![alt text](imgs/devsetppl.png)" + ] + } + ], + "metadata": { + "author": "Jakub Pokrywka", + "email": "kubapok@wmi.amu.edu.pl", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "lang": "pl", + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.8.3" + }, + "subtitle": "0.Informacje na temat przedmiotu[ćwiczenia]", + "title": "Ekstrakcja informacji", + "year": "2021" + }, + "nbformat": 4, + "nbformat_minor": 4 +}