From 4498fb3fa0c0f0cd3fe27a30e698ef4eedfe041d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Sk=C3=B3rzewski?= Date: Wed, 15 May 2024 10:24:23 +0200 Subject: [PATCH] =?UTF-8?q?Uporz=C4=85dkowanie=20materia=C5=82=C3=B3w=20do?= =?UTF-8?q?=20laboratori=C3=B3w?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ... => 04_Statystyczny_model_językowy.ipynb} | 0 ...ystyczny_model_językowy_część_2.ipynb} | 0 lab/10_Regularyzacja_modeli_neuronowych.ipynb | 126 ++++++++++++++++++ 3 files changed, 126 insertions(+) rename lab/{04_statystyczny_model_językowy.ipynb => 04_Statystyczny_model_językowy.ipynb} (100%) rename lab/{05_statystyczny_model_językowy_część_2.ipynb => 05_Statystyczny_model_językowy_część_2.ipynb} (100%) create mode 100644 lab/10_Regularyzacja_modeli_neuronowych.ipynb diff --git a/lab/04_statystyczny_model_językowy.ipynb b/lab/04_Statystyczny_model_językowy.ipynb similarity index 100% rename from lab/04_statystyczny_model_językowy.ipynb rename to lab/04_Statystyczny_model_językowy.ipynb diff --git a/lab/05_statystyczny_model_językowy_część_2.ipynb b/lab/05_Statystyczny_model_językowy_część_2.ipynb similarity index 100% rename from lab/05_statystyczny_model_językowy_część_2.ipynb rename to lab/05_Statystyczny_model_językowy_część_2.ipynb diff --git a/lab/10_Regularyzacja_modeli_neuronowych.ipynb b/lab/10_Regularyzacja_modeli_neuronowych.ipynb new file mode 100644 index 0000000..5ffa351 --- /dev/null +++ b/lab/10_Regularyzacja_modeli_neuronowych.ipynb @@ -0,0 +1,126 @@ +{ + "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", + "

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)" + ] + }, + { + "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", + "\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", + "\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", + "\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", + "\n", + "## Regularyzacja modelu\n", + "\n", + "Najbardziej powszechne metody regularyzacji to:\n", + "\n", + "- regularyzacja L1\n", + "- regularyzacja L2\n", + "- dropout" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### regularyzacja L1\n", + "\n", + "Czynnik regularyzacyjny to $\\lambda \\sum_{i=1}^{N}|w_i|$, 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|$.\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", + "metadata": {}, + "source": [ + "## Dropout\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$." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Zadanie 1 \n", + "\n", + "Wzorując się na poprzednich zajęciach zaimplementować powyższe metody reguluryzacji i zgłosić na gonito.\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", + "- 50 punktów z najlepszy wynik z 2 grup\n" + ] + } + ], + "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 +}