{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Uczenie maszynowe i jego wyzwania\n", "\n", "Uwaga: my skupiamy się na uczeniu maszynowym na tekstach (i ostatecznie zmierzamy do ekstrakcji z dokumentów tekstowych).\n", "\n", "## Oznaczenia\n", "\n", "* $x$ — wejście (często interpretowane jako wektor $\\vec{x}$) \n", "* $y$ — oczekiwane wyjście\n", "* $\\hat{y}$ — przewidywane wyjście\n", "* $(X, Y)$, zbiór wejść $X$ traktujemy jako listę $X = (x_1, \\dots, x_N)$ albo jako macierz, a $Y$ jest na ogół ciągiem liczb albo wektorem\n", "* $V$ — słownik (zbiór słów/symboli)\n", " * $V^*$ — zbiór wszystkich tekstów (ciągów na $V$)\n", "* $C = \\{c_1, c_2, \\dots, c_n\\}$ — zbiór klas\n", " * $\\bar{c}$ - dopełnienie klasy $c$\n", "* $L = \\{l_1, l_2, \\dots, l_n\\}$ — zbiór etykiet/tagów (_labels_/_tags_)\n", " * czasami wymiennie używać będziemy terminów klasa oraz etykieta/tag\n", " * $L^*$ — zbiór wszystkich ciągów etykiet\n", "* $q$ — zapytanie\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Rekomendacje książkowe\n", "\n", "(Bez aparatu matematycznego! Na przykład do polecenia laikowi.)\n", "\n", "* Stanisław Lem, _Summa technologiae_, Wydawnictwo Literackie, 1964\n", " * może zacząć od spojrzenia, jak kiedyś sobie to wyobrażano?\n", "* Pedro Domingos, _Naczelny Algorytm. Jak jego odkrycie zmieni nasz świat_, Helion, 2016\n", " * książka się trochę zestarzała, czas pokazał, że autor nie do końca trafnie przewidział, jak się dalej potoczą losy uczenia maszynowego (sieci neuronowe zdecydowanie wygrały)\n", " * ... ale bardzo ciekawe spostrzeżenia, dobrze się czyta\n", "* Kai-Fu Lee, _Inteligencja sztuczna, rewolucja prawdziwa_, Media Rodzina, 2019.\n", " * ciekawe w kontekście ekonomicznym, szczególnie Chin\n", " \n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Podstawowa idea\n", "\n", "**Uczenie maszynowe to odwrotność programowania** (trochę tak jak $\\sqrt{...}$ jest odwrotnością $^2$)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "![Uczenie maszynowe a programowanie](./uczenie-a-programowanie.png)\n", "\n", "(Na razie trochę upraszczamy - odnosimy się tylko do uczenia nienadzorowanego.)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 5 epok uczenia maszynowego\n", "\n", "### I. Systemy regułowe\n", "\n", "Systemy regułowe, wyrażenia regularne, systemy eksperckie, programowanie logiczne (Prolog)\n", "\n", "Praca człowieka: tworzenie reguł (czasochłonne!)\n", "\n", "### II. Proste algorytmy uczenia maszynowego (lata 90.)\n", "\n", "Naiwny klasyfikator bayesowskie, regresja logistyczna, SVM, XGBoost\n", "\n", "Praca człowieka: inżynieria cech, optymalizacja hiperparametrów, unikanie przeuczenia\n", "\n", "### III. Sieci neuronowe 1 - ucz na _big data_ (2012-2016)\n", "\n", "Sieci feed-forward, splotowe, LSTM; wymagane duże zbiory uczące (w trybie nadzorowanym).\n", "\n", "Praca człowieka: specyficzna architektura, przygotowanie dużego zbioru danych\n", "\n", "### IV. Sieci neuronowe 2 - pretrenuj i dostrajaj (2017-2020)\n", "\n", "Sieci konwolucyjne, LSTM (ELMo), Transformer (BERT). Zbiory uczące do uczenia nadzorowanego nie muszą być obszerne.\n", "\n", "Praca człowieka: dostrajanie modelu.\n", "\n", "### V. Sieci neuronowe 3 - pretrenuj i... po po prostu korzystaj (2019-)\n", "\n", "Duże wielowarstwowe generatywne modele Transformer (GPT-2/3, T5), uczenie few-, one- i zero-shot.\n", "\n", "Praca człowieka: jak sformułować zadanie w języku naturalnym?\n", "\n", "\n", "\n", "\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Rodzaje uczenia maszynowego\n", "\n", "* uczenie nienadzorowane (_unsupervised learning_)\n", "* uczenie nadzorowane (_supervised learning_)\n", " * predykcja prostej wartości\n", " * klasyfikacja\n", " * klasyfikacja binarna\n", " * klasyfikacja wieloklasowa\n", " * regresja\n", " * ekstrakcja informacji \n", " * zadania _seq2seq_\n", " * etykietowanie sekwencji (_sequence labeling_)\n", " * tłumaczenie maszynowe (szeroko rozumiane)\n", " * automatyczne streszczanie (sumaryzacja) \n", " \n", " \n", " \n", " \n", " " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Uczenie maszynowe - widok z góry" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Wyzwania uczenia maszynowego\n", "\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "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.9.2" } }, "nbformat": 4, "nbformat_minor": 4 }