This commit is contained in:
Paweł Skórzewski 2024-05-15 10:41:40 +02:00
parent 4498fb3fa0
commit 1c2f3bf500
11 changed files with 64 additions and 88 deletions

View File

@ -4,19 +4,7 @@
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", "## Modelowanie języka laboratoria\n",
"<div class=\"alert alert-block alert-info\">\n",
"<h1> Modelowanie języka </h1>\n",
"<h2> 0. <i>Informacje na temat przedmiotu</i> [ćwiczenia]</h2> \n",
"</div>\n",
"\n",
"![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Informacje ogólne" "# Informacje ogólne"
] ]
}, },

View File

@ -4,13 +4,9 @@
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", "## Modelowanie języka laboratoria\n",
"<div class=\"alert alert-block alert-info\">\n", "### 28 lutego 2024\n",
"<h2> 1. <i>Kodowanie tekstu</i> [laboratoria]</h2> \n", "# 1. Kodowanie tekstu\n"
"</div>\n",
"\n",
"![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)\n",
"\n"
] ]
}, },
{ {

View File

@ -4,13 +4,9 @@
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", "## Modelowanie języka laboratoria\n",
"<div class=\"alert alert-block alert-info\">\n", "### 6 marca 2024\n",
"<h1> Modelowanie Języka </h1>\n", "# 2. Język"
"<h2> 2. <i>Język</i> [laboratoria]</h2> \n",
"</div>\n",
"\n",
"![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)"
] ]
}, },
{ {

View File

@ -4,8 +4,9 @@
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"<h1> Modelowanie języka </h1>\n", "## Modelowanie języka laboratoria\n",
"<h2> 3. <i>Entropia</i> [ćwiczenia]</h2> " "### 13 marca 2024\n",
"# 3. Entropia"
] ]
}, },
{ {
@ -512,7 +513,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.undefined.undefined" "version": "3.10.12"
}, },
"subtitle": "0.Informacje na temat przedmiotu[ćwiczenia]", "subtitle": "0.Informacje na temat przedmiotu[ćwiczenia]",
"title": "Ekstrakcja informacji", "title": "Ekstrakcja informacji",

View File

@ -4,8 +4,9 @@
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"<h1> Modelowanie języka </h1>\n", "## Modelowanie języka laboratoria\n",
"<h2> 4. <i>Statystyczny model językowy</i> [ćwiczenia]</h2> " "### 20 marca 2024\n",
"# 4. Statystyczny model językowy część 1"
] ]
}, },
{ {

View File

@ -4,8 +4,9 @@
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"<h1> Ekstrakcja informacji </h1>\n", "## Modelowanie języka laboratoria\n",
"<h2> 5. <i>Statystyczny model językowy część 2</i> [ćwiczenia]</h2> " "### 27 marca 2024\n",
"# 4. Statystyczny model językowy część 2"
] ]
}, },
{ {

View File

@ -4,8 +4,9 @@
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"<h1> Modelowanie Języka</h1>\n", "## Modelowanie języka laboratoria\n",
"<h2> 6. Biblioteki do statystycznych modeli językowych [ćwiczenia]</h2> " "### 3 kwietnia 2024\n",
"# 6. Biblioteki do statystycznych modeli językowych"
] ]
}, },
{ {

View File

@ -4,8 +4,9 @@
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"<h1> Modelowanie Języka</h1>\n", "## Modelowanie języka laboratoria\n",
"<h2> 8. <i>Neuronowe modele językowe</i> [ćwiczenia]</h2>" "### 10 kwietnia 2024\n",
"# 7. Neuronowe modele językowe"
] ]
}, },
{ {

View File

@ -4,8 +4,9 @@
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"<h1> Modelowanie Języka</h1>\n", "## Modelowanie języka laboratoria\n",
"<h2> 9. <i>Model neuronowy typu word2vec</i> [ćwiczenia]</h2> " "### 17 kwietnia 2024\n",
"# 8. Model neuronowy typu word2vec "
] ]
}, },
{ {

View File

@ -4,8 +4,9 @@
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"<h1> Modelowanie Języka</h1>\n", "## Modelowanie języka laboratoria\n",
"<h2> 10. <i>Model neuronowy rekurencyjny</i> [ćwiczenia]</h2> " "### 24 kwietnia 2024\n",
"# 9. Model neuronowy rekurencyjny"
] ]
}, },
{ {

View File

@ -4,41 +4,36 @@
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", "## Modelowanie języka laboratoria\n",
"<div class=\"alert alert-block alert-info\">\n", "### 15 maja 2024\n",
"<h1> Modelowanie Języka</h1>\n", "# 10. Regularyzacja modeli neuronowych"
"<h2> 11. <i>Regularyzacja modeli neuronowych</i> [ćwiczenia]</h2> \n",
"<h3> Jakub Pokrywka (2022)</h3>\n",
"</div>\n",
"\n",
"![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)"
] ]
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"## Overfitting modeli" "## Nadmierne dopasowanie (*overfitting*)\n",
]
},
{
"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",
"\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", "\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", "\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", "\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", "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", "\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", "\n",
"## Regularyzacja modelu\n", "## Regularyzacja modelu\n",
"\n", "\n",
"Najbardziej powszechne metody regularyzacji to:\n", "Najbardziej popularne metody regularyzacji sieci neuronowych to:\n",
"\n", "\n",
"- regularyzacja L1\n", "- regularyzacja L1\n",
"- regularyzacja L2\n", "- regularyzacja L2\n",
@ -49,50 +44,44 @@
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"### regularyzacja L1\n", "### Regularyzacja L1 (*lasso*)\n",
"\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", "\n",
"Wtedy funkcja kosztu powinna wyglądać: $L(x) = Error(y,\\bar{y}) + \\lambda \\sum_{i=1}^{N}|w_i|$.\n", "Wtedy funkcja kosztu będzie wyglądać następująco: $L(x) = J(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$."
] ]
}, },
{ {
"cell_type": "markdown", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"## Dropout\n", "### Regularyzacja L2 (*ridge*)\n",
"\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", "cell_type": "markdown",
"metadata": {}, "metadata": {},
"source": [ "source": [
"### Zadanie 1 \n", "### Dropout\n",
"\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", "\n",
"Warunki zaliczenia:\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",
"- 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", "\n",
"Punktacja:\n", "Punktacja: **50 punktów**\n",
"- 50 punktów z najlepszy wynik z 2 grup\n" "\n",
"Deadline: **29 maja 2024** przed zajęciami\n"
] ]
} }
], ],