From 1c2f3bf500ce311e94983d1add6511a60e9c89af Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Sk=C3=B3rzewski?= Date: Wed, 15 May 2024 10:41:40 +0200 Subject: [PATCH] Lab. 10 --- lab/00_Informacje_na_temat_przedmiotu.ipynb | 14 +--- lab/01_Kodowanie_tekstu.ipynb | 10 +-- lab/02_Język.ipynb | 10 +-- lab/03_Entropia.ipynb | 7 +- lab/04_Statystyczny_model_językowy.ipynb | 5 +- ...tystyczny_model_językowy_część_2.ipynb | 5 +- lab/06_Biblioteki_stat_LM.ipynb | 5 +- lab/07_Neuronowe_modele_językowe.ipynb | 5 +- lab/08_Model_neuronowy_typu_word2vec.ipynb | 5 +- lab/09_Model_neuronowy_rekurencyjny.ipynb | 5 +- lab/10_Regularyzacja_modeli_neuronowych.ipynb | 81 ++++++++----------- 11 files changed, 64 insertions(+), 88 deletions(-) diff --git a/lab/00_Informacje_na_temat_przedmiotu.ipynb b/lab/00_Informacje_na_temat_przedmiotu.ipynb index d86136a..b69e1f1 100644 --- a/lab/00_Informacje_na_temat_przedmiotu.ipynb +++ b/lab/00_Informacje_na_temat_przedmiotu.ipynb @@ -4,19 +4,7 @@ "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", - "

0. Informacje na temat przedmiotu [ćwiczenia]

\n", - "
\n", - "\n", - "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ + "## Modelowanie języka – laboratoria\n", "# Informacje ogólne" ] }, diff --git a/lab/01_Kodowanie_tekstu.ipynb b/lab/01_Kodowanie_tekstu.ipynb index 3d13eb9..8a548aa 100644 --- a/lab/01_Kodowanie_tekstu.ipynb +++ b/lab/01_Kodowanie_tekstu.ipynb @@ -4,13 +4,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", - "
\n", - "

1. Kodowanie tekstu [laboratoria]

\n", - "
\n", - "\n", - "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)\n", - "\n" + "## Modelowanie języka – laboratoria\n", + "### 28 lutego 2024\n", + "# 1. Kodowanie tekstu\n" ] }, { diff --git a/lab/02_Język.ipynb b/lab/02_Język.ipynb index c45dfa6..dac6bcf 100644 --- a/lab/02_Język.ipynb +++ b/lab/02_Język.ipynb @@ -4,13 +4,9 @@ "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", - "

2. Język [laboratoria]

\n", - "
\n", - "\n", - "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + "## Modelowanie języka – laboratoria\n", + "### 6 marca 2024\n", + "# 2. Język" ] }, { diff --git a/lab/03_Entropia.ipynb b/lab/03_Entropia.ipynb index 7eaa37e..c5eeeb7 100644 --- a/lab/03_Entropia.ipynb +++ b/lab/03_Entropia.ipynb @@ -4,8 +4,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

Modelowanie języka

\n", - "

3. Entropia [ćwiczenia]

" + "## Modelowanie języka – laboratoria\n", + "### 13 marca 2024\n", + "# 3. Entropia" ] }, { @@ -512,7 +513,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.undefined.undefined" + "version": "3.10.12" }, "subtitle": "0.Informacje na temat przedmiotu[ćwiczenia]", "title": "Ekstrakcja informacji", diff --git a/lab/04_Statystyczny_model_językowy.ipynb b/lab/04_Statystyczny_model_językowy.ipynb index 39edd65..702805b 100644 --- a/lab/04_Statystyczny_model_językowy.ipynb +++ b/lab/04_Statystyczny_model_językowy.ipynb @@ -4,8 +4,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

Modelowanie języka

\n", - "

4. Statystyczny model językowy [ćwiczenia]

" + "## Modelowanie języka – laboratoria\n", + "### 20 marca 2024\n", + "# 4. Statystyczny model językowy – część 1" ] }, { diff --git a/lab/05_Statystyczny_model_językowy_część_2.ipynb b/lab/05_Statystyczny_model_językowy_część_2.ipynb index 2a51546..bfcd214 100644 --- a/lab/05_Statystyczny_model_językowy_część_2.ipynb +++ b/lab/05_Statystyczny_model_językowy_część_2.ipynb @@ -4,8 +4,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

Ekstrakcja informacji

\n", - "

5. Statystyczny model językowy część 2 [ćwiczenia]

" + "## Modelowanie języka – laboratoria\n", + "### 27 marca 2024\n", + "# 4. Statystyczny model językowy – część 2" ] }, { diff --git a/lab/06_Biblioteki_stat_LM.ipynb b/lab/06_Biblioteki_stat_LM.ipynb index 9e151b4..95bf702 100644 --- a/lab/06_Biblioteki_stat_LM.ipynb +++ b/lab/06_Biblioteki_stat_LM.ipynb @@ -4,8 +4,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

Modelowanie Języka

\n", - "

6. Biblioteki do statystycznych modeli językowych [ćwiczenia]

" + "## Modelowanie języka – laboratoria\n", + "### 3 kwietnia 2024\n", + "# 6. Biblioteki do statystycznych modeli językowych" ] }, { diff --git a/lab/07_Neuronowe_modele_językowe.ipynb b/lab/07_Neuronowe_modele_językowe.ipynb index 0aadea5..d5ce825 100644 --- a/lab/07_Neuronowe_modele_językowe.ipynb +++ b/lab/07_Neuronowe_modele_językowe.ipynb @@ -4,8 +4,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

Modelowanie Języka

\n", - "

8. Neuronowe modele językowe [ćwiczenia]

" + "## Modelowanie języka – laboratoria\n", + "### 10 kwietnia 2024\n", + "# 7. Neuronowe modele językowe" ] }, { diff --git a/lab/08_Model_neuronowy_typu_word2vec.ipynb b/lab/08_Model_neuronowy_typu_word2vec.ipynb index 59a0d91..a68d49e 100644 --- a/lab/08_Model_neuronowy_typu_word2vec.ipynb +++ b/lab/08_Model_neuronowy_typu_word2vec.ipynb @@ -4,8 +4,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

Modelowanie Języka

\n", - "

9. Model neuronowy typu word2vec [ćwiczenia]

" + "## Modelowanie języka – laboratoria\n", + "### 17 kwietnia 2024\n", + "# 8. Model neuronowy typu word2vec " ] }, { diff --git a/lab/09_Model_neuronowy_rekurencyjny.ipynb b/lab/09_Model_neuronowy_rekurencyjny.ipynb index 9332fe7..097d06c 100644 --- a/lab/09_Model_neuronowy_rekurencyjny.ipynb +++ b/lab/09_Model_neuronowy_rekurencyjny.ipynb @@ -4,8 +4,9 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "

Modelowanie Języka

\n", - "

10. Model neuronowy rekurencyjny [ćwiczenia]

" + "## Modelowanie języka – laboratoria\n", + "### 24 kwietnia 2024\n", + "# 9. Model neuronowy rekurencyjny" ] }, { diff --git a/lab/10_Regularyzacja_modeli_neuronowych.ipynb b/lab/10_Regularyzacja_modeli_neuronowych.ipynb index 5ffa351..2f46f5c 100644 --- a/lab/10_Regularyzacja_modeli_neuronowych.ipynb +++ b/lab/10_Regularyzacja_modeli_neuronowych.ipynb @@ -4,41 +4,36 @@ "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", - "

11. Regularyzacja modeli neuronowych [ćwiczenia]

\n", - "

Jakub Pokrywka (2022)

\n", - "
\n", - "\n", - "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" + "## Modelowanie języka – laboratoria\n", + "### 15 maja 2024\n", + "# 10. Regularyzacja modeli neuronowych" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Overfitting modeli" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Trenując model uczenia maszynowego zależy nam, aby model miał dobrą zdolność predykcji. Zdolności predykcyjne powinny być wysokie na jakichkolwiek danych, a nie wyłącznie na tych, na których model się uczył. \n", + "## Nadmierne dopasowanie (*overfitting*)\n", "\n", + "Gdy uczymy model uczenia maszynowego, zależy nam, aby model miał dobrą zdolność predykcji. Zdolności predykcyjne powinny być wysokie na jakichkolwiek danych, a nie wyłącznie na tych, na których model się uczył. \n", "\n", - "Zjawiskiem overfittingu modeli nazywamy nadmierne dopasowanie modelu do zbioru trenującego. Skutkuje to tym, że model świetnie działa na zbiorze trenującym, ale źle dla innych danych, na których się nie uczył.\n", + "Zjawiskiem overfittingu modeli nazywamy nadmierne dopasowanie modelu do zbioru uczącego. Skutkuje to tym, że model świetnie działa na zbiorze uczącym, ale źle dla innych danych, na których się nie uczył.\n", "\n", - "Overfitting modelu łatwo sprawdzić jako różnicę w metrykach między zbiorem trenującym a zbiorem deweloperskim/testowym. Nim większa jest ta różnica, tym większy overfitting modelu.\n", + "Overfitting modelu łatwo sprawdzić jako różnicę w metrykach między zbiorem uczącym a zbiorem walidacyjnym/testowym. Im większa jest ta różnica, tym większy overfitting modelu.\n", "\n", "Zazwyczaj overfitting będzie występował do pewnego stopnia. Nie należy się tym przejmować. Najważniejsze jest, aby model miał jak najlepszy wynik metryki na zbiorze deweloperskim/testowym. Nawet kosztem overfittingu.\n", "\n", - "Aby zmniejszyć overfitting (a tym samym zwiększyć wyniki modelu na zbiorze deweloperskim/testowym), korzysta się z metod regularyzacji.\n", + "Aby zmniejszyć overfitting (a tym samym zwiększyć wyniki modelu na zbiorze deweloperskim/testowym), korzysta się z metod regularyzacji." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ "\n", "## Regularyzacja modelu\n", "\n", - "Najbardziej powszechne metody regularyzacji to:\n", + "Najbardziej popularne metody regularyzacji sieci neuronowych to:\n", "\n", "- regularyzacja L1\n", "- regularyzacja L2\n", @@ -49,50 +44,44 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "### regularyzacja L1\n", + "### Regularyzacja L1 (*lasso*)\n", "\n", - "Czynnik regularyzacyjny to $\\lambda \\sum_{i=1}^{N}|w_i|$, gdzie $0<\\lambda$ to parametr, a $w_i$ to parametry modelu.\n", + "Czynnik regularyzacyjny to $\\lambda \\sum_{i=1}^{N}|w_i|$, gdzie $0<\\lambda$ to współczynnik regularyzacji, a $w_i$ to parametry modelu.\n", "\n", - "Wtedy funkcja kosztu powinna wyglądać: $L(x) = Error(y,\\bar{y}) + \\lambda \\sum_{i=1}^{N}|w_i|$.\n", - "\n", - "\n", - "### regularyzacja L2\n", - "\n", - "\n", - "Czynnik regularyzacyjny to $\\lambda \\sum_{i=1}^{N}(w_i)^2$, gdzie $0<\\lambda$ to parametr, a $w_i$ to parametry modelu.\n", - "\n", - "Wtedy funkcja kosztu powinna wyglądać: $L(x) = Error(y,\\bar{y}) + \\lambda \\sum_{i=1}^{N}(w_i)^2$." + "Wtedy funkcja kosztu będzie wyglądać następująco: $L(x) = J(y,\\bar{y}) + \\lambda \\sum_{i=1}^{N}|w_i|$.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Dropout\n", + "### Regularyzacja L2 (*ridge*)\n", "\n", - "Dropout to technika polegająca na losowym wygaszania wyjściu z neuronów (przyjmowanie wartości $0$) podczas treningu. Prawpodopobieństwo ignorowania to parametr $p$. Podczas inferencji nie wygasza sie wyjścia, natomiast wszystkie wartości przemnaża się przez $1-p$." + "Czynnik regularyzacyjny to $\\lambda \\sum_{i=1}^{N}(w_i)^2$, gdzie $0<\\lambda$ to współczynnik regularyzacji, a $w_i$ to parametry modelu.\n", + "\n", + "Wtedy funkcja kosztu będzie wyglądać następująco: $L(x) = J(y,\\bar{y}) + \\lambda \\sum_{i=1}^{N}(w_i)^2$." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Zadanie 1 \n", + "### Dropout\n", "\n", - "Wzorując się na poprzednich zajęciach zaimplementować powyższe metody reguluryzacji i zgłosić na gonito.\n", + "Dropout to technika regularyzacji sieci neuronowych polegająca na losowym wygaszaniu wyjścia z neuronów (przyjmowanie wartości $0$) podczas uczenia sieci. Dropout parametryzowany jest przez *prawpodopobieństwo ignorowania* (parametr $p$). Podczas inferencji nie wygasza się wyjścia, natomiast wszystkie wartości przemnaża się przez $1-p$." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Zadanie\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", + "Wzorując się na zadaniach z poprzednich zajęć, zaimplementuj powyższe metody regularyzacji w rozwiązaniu zadania *Challenging America word gap prediction* (https://gonito.csi.wmi.amu.edu.pl/challenge/challenging-america-word-gap-prediction).\n", "\n", - "Punktacja:\n", - "- 50 punktów z najlepszy wynik z 2 grup\n" + "Punktacja: **50 punktów**\n", + "\n", + "Deadline: **29 maja 2024** przed zajęciami\n" ] } ],