diff --git a/IUM_00.Organizacyjne.ipynb b/IUM_00.Organizacyjne.ipynb new file mode 100644 index 0000000..55107ff --- /dev/null +++ b/IUM_00.Organizacyjne.ipynb @@ -0,0 +1,166 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# AITech Inżynieria Uczenia Maszynowego\n", + "\n", + "\n", + "## 1. Informacje organizacyjne" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Przedmiot\n", + "- Kod przedmiotu: 06-DIUMUI0\n", + "- Nazwa: Inżynieria Uczenia Maszynowego\n", + "- WMI UAM 2021\n", + "- Sylabus: Sylabus-AITech-InzynieriaUczeniaMaszynowego.pdf" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Prowadzący\n", + "- imię i nazwisko:\tTomasz Ziętkiewicz\n", + "- stopień naukowy:\tmagister inżynier\n", + "- stanowisko:\tdoktorant\n", + "- [Zakład Sztucznej Inteligencji](https://ai.wmi.amu.edu.pl/pl/)\n", + "- email: tomasz.zietkiewicz@amu.edu.pl\n", + "- www: http://tz47965.home.amu.edu.pl/\n", + "- konsultacje: przez MS Teams, po wcześniejszym umówieniu mailowym lub przez chat" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Prowadzący\n", + "### Zainteresowania naukowe\n", + "- Przetwarzanie języka naturalnego\n", + "- Rozpoznawanie mowy\n", + "- Postprocessing wyników rozpoznawania mowy\n", + "- Normalizacja tekstu\n", + "- Korekta błędów systemów rozpoznawania mowy" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Program zajęć\n", + "1. Wprowadzenie\n", + "2. Dane\n", + "3. Ciągła Integracja - Jenkins\n", + "4. Biblioteki ML\n", + "5. Konteneryzacja - Docker\n", + "6. Przygotowanie eksperymentu ML\n", + "7. Jenkins pipeline\n", + "8. Kontrola eksperymentów - Sacred\n", + "9. Kontrola eksperymentów - MLFlow\n", + "10. Kontrola eksperymentów - DVC\n", + "11. Wizualizacja\n", + "12. Finalizacja projektu\n", + "13. Finalizacja projektu\n", + "14. Podsumowanie" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Zasady zaliczenia\n", + "\n", + "W trakcie kolejnych zajęć będą Państwo poznawać różne techniki i narzędzia wspomagające proces rozwoju modeli uczenia maszynowgo.\n", + "\n", + "W wyniku realizacji zadań z poszczególnych zajęć powstaną części składowe potoku uczenia maszynowego (Machine Learning Pipeline), które na końcu zostaną zintegrowane w jedną całość.\n", + "\n", + "\n", + " - Za wykonywanie na bieżąco zadań z poszczególnych zajęć będą przyznawane punkty.\n", + " - Zadania powinny zostać wykonane przez Państwa do końca dnia poprzedzającego następne zajęcia (o ile w zadaniu nie podano inaczej) \n", + " - Zobowiązuję się ocenić zadania najpóźniej do początku następnych zajęć \n", + " (czyli np. zadanie z zajęć 2. musi zostać oddane najpóźniej dzień przed zajęciami 3. a wyniki oceny tego zadania zostaną opublikowane najpóźniej w trakcie zajęć 4.)\n", + " \n", + " - W przypadku braku wykonania zadań w terminie nie zostaną przyznane za nie punkty.\n", + " - W przypadku braku wystawienia przez prowadzącego punktów w terminie, uznaje się przyznanie za zadanie maksymalnej ilości punktów\n", + " - Za wykonanie zadań cząstkowych w terminie można zdobyć 50% całkowitej liczby punktów\n", + " - Za wykonanie finalnego projektu można zdobyć 50% całkowitej liczby punktów\n", + " - Punkty przysługujące za każde zadanie cząstkowe będą podane przy opisie zadania\n", + " \n", + " Przelicznik punktów na oceny:\n", + " \n", + "| Ocena | % całkowitej liczby punktów |\n", + "| --------------------------- | ----------- |\n", + "| bardzo dobry (bdb; 5,0) | >= 90% |\n", + "| dobry plus (+db; 4,5) | >= 80% |\n", + "| dobry (db; 4,0)\t | >= 70% |\n", + "| dostateczny plus (+dst; 3,5)| >= 60% |\n", + "| dostateczny (dst; 3,0) | >= 50% |\n", + "| niedostateczny (ndst; 2,0) | < 50% |" + ] + } + ], + "metadata": { + "celltoolbar": "Slideshow", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "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.5" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": false, + "sideBar": false, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": false, + "toc_window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/IUM_01.Wprowadzenie.ipynb b/IUM_01.Wprowadzenie.ipynb new file mode 100644 index 0000000..991e4e9 --- /dev/null +++ b/IUM_01.Wprowadzenie.ipynb @@ -0,0 +1,246 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### AITech Inżynieria Uczenia Maszynowego\n", + "# 1. Wprowadzenie" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## 1.1 Specyfika rozwoju systemów wykorzystujących uczenie maszynowe\n", + "Od czego zależy wynik działania systemu?\n", + "\n", + "System \"klasyczny\":\n", + " - Kod (algorytm)\n", + " - Środowisko\n", + " - Dane wejściowe\n", + " \n", + "System wykorzystujący uczenie maszynowe:\n", + " - Kod (algorytm) inferencji\n", + " - Środowisko\n", + " - Dane wejściowe\n", + " - Model:\n", + " - Dane trenujące\n", + " - Kod trenujący\n", + " - Architektura\n", + " - Hiperparametry\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "\n", + "Źródło: https://www.reddit.com/r/learnmachinelearning/comments/hkcf4o/traditional_programming_vs_machine_learning/" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## 1.1 Specyfika rozwoju systemów wykorzystujących uczenie maszynowe\n", + "* Trenowanie modeli uczenie maszynowego to \"nauka eksperymentalna\".\n", + "* Nie da się wydedukować optymalnej architektury parametrów i hiperparametrów.\n", + "* Możemy stawiać hipotezy oparte na intuicji, doświadczeniu (własnym lub cudzym) i analogiach i weryfikować je empirycznie - metodą prób i błędów.\n", + "* .. albo wykorzystując [AutoML](https://en.wikipedia.org/wiki/Automated_machine_learning)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## 1.1 Specyfika rozwoju systemów wykorzystujących uczenie maszynowe\n", + "- Więcej zmiennych wpływających na wynik -> trudniejsza kontrola na działaniem\n", + "- Powolna pętla sprzężenia zwrotnego (slow feedback) - trenowanie może zajmować godziny, dni, miesiące...\n", + "- ... i kosztować $.\n", + "- Nie stać nas na błędy wykrywane po dniach obliczeń!\n", + "- Potrzeba stosowania praktyk i narzędzi, które ułatwią kontrolę nad tymi zmiennymi." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## 1.2 Narzędzia\n", + "* Kontrola wersji\n", + "* Systemy ciągłej integracji\n", + "* Konteneryzacja i virtualne środowiska\n", + "* Kontrola eksperymentów\n", + "\n", + " \n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "## 1.2.1 Systemy ciągłej integracji\n", + " - Jenkins
\n", + " - Bamboo
\n", + " - Circle CI
\n", + " - Team City
\n", + " - Gitlab CI
" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "## 1.2.1 Systemy ciągłej integracji\n", + "Systemy takie umożliwiają automatyczne:\n", + " - budowanie\n", + " - testowanie\n", + " - wydawanie \n", + " \n", + "oprogramowania w stabilnym środowisku.\n", + "\n", + "Działają jako aplikacja webowa z graficznym interfejsem, umożliwiająca łatwe zarządzanie i monitorowanie wykonywanych w niej zadań." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "## 1.2.2 Konteneryzacja i virtualne środowiska\n", + " - Docker
\n", + " - Conda
\n", + " - Virtual Env
" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "## 1.2.2 Konteneryzacja i virtualne środowiska\n", + "Konteneryzacja (np. za pomocą Dockera) i wirtualne środowiska (takie jak Conda i ViertualEnv) zapewniają:\n", + "- stabilne\n", + "- odizolowane\n", + "- łatwo konfigurowalne\n", + "środowisko do rozwoju aplikacji." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "## 1.2.3 Narzędzia do kontroli eksperymentów\n", + " - Sacred
\n", + " - DVC
\n", + " - MLFlow
\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "## 1.2.3 Narzędzia do kontroli eksperymentów\n", + "Ułatwiają prowadzenie eksperymentów uczenia maszynowego w sposób:\n", + " - powtarzalny\n", + " - kontrolowany\n", + " - zorganizowany" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Dodatkowe materiały\n", + " - https://www.coursera.org/learn/machine-learning-projects\n", + " - \n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "celltoolbar": "Slideshow", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "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.5" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": false, + "sideBar": false, + "skip_h1_title": false, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": false, + "toc_position": {}, + "toc_section_display": false, + "toc_window_display": false + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/Sylabus-AITech-InzynieriaUczeniaMaszynowego.pdf b/Sylabus-AITech-InzynieriaUczeniaMaszynowego.pdf new file mode 100644 index 0000000..1922d43 Binary files /dev/null and b/Sylabus-AITech-InzynieriaUczeniaMaszynowego.pdf differ