13 KiB
Uczenie maszynowe i jego wyzwania
Uwaga: my skupiamy się na uczeniu maszynowym na tekstach (i ostatecznie zmierzamy do ekstrakcji z dokumentów tekstowych).
Oznaczenia
- $x$ — wejście (często interpretowane jako wektor $\vec{x}$)
- $y$ — oczekiwane wyjście
- $\hat{y}$ — przewidywane wyjście
- $(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
- $V$ — słownik (zbiór słów/symboli)
- $V^*$ — zbiór wszystkich tekstów (ciągów na $V$)
- $C = \{c_1, c_2, \dots, c_n\}$ — zbiór klas
- $\bar{c}$ - dopełnienie klasy $c$
- $L = \{l_1, l_2, \dots, l_n\}$ — zbiór etykiet/tagów (_labels/tags)
- czasami wymiennie używać będziemy terminów klasa oraz etykieta/tag
- $L^*$ — zbiór wszystkich ciągów etykiet
- $q$ — zapytanie
Rekomendacje książkowe
(Bez aparatu matematycznego! Na przykład do polecenia laikowi.)
- Stanisław Lem, _Summa technologiae, Wydawnictwo Literackie, 1964
- może zacząć od spojrzenia, jak kiedyś sobie to wyobrażano?
- Pedro Domingos, _Naczelny Algorytm. Jak jego odkrycie zmieni nasz świat, Helion, 2016
- 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)
- ... ale bardzo ciekawe spostrzeżenia, dobrze się czyta
- Kai-Fu Lee, _Inteligencja sztuczna, rewolucja prawdziwa, Media Rodzina, 2019.
- ciekawe w kontekście ekonomicznym, szczególnie Chin
Podstawowa idea
Uczenie maszynowe to odwrotność programowania (trochę tak jak $\sqrt{...}$ jest odwrotnością $^2$).
5 epok uczenia maszynowego
I. Systemy regułowe
Systemy regułowe, wyrażenia regularne, systemy eksperckie, programowanie logiczne (Prolog)
Praca człowieka: tworzenie reguł (czasochłonne!)
II. Proste algorytmy uczenia maszynowego (lata 90.)
Naiwny klasyfikator bayesowskie, regresja logistyczna, SVM, XGBoost
Praca człowieka: inżynieria cech, optymalizacja hiperparametrów, unikanie przeuczenia
III. Sieci neuronowe 1 - ucz na _big data (2012-2016)
Sieci feed-forward, splotowe, LSTM; wymagane duże zbiory uczące (w trybie nadzorowanym).
Praca człowieka: specyficzna architektura, przygotowanie dużego zbioru danych
IV. Sieci neuronowe 2 - pretrenuj i dostrajaj (2017-2020)
Sieci konwolucyjne, LSTM (ELMo), Transformer (BERT). Zbiory uczące do uczenia nadzorowanego nie muszą być obszerne.
Praca człowieka: dostrajanie modelu.
V. Sieci neuronowe 3 - pretrenuj i... po po prostu korzystaj (2019-)
Duże wielowarstwowe generatywne modele Transformer (GPT-2/3, T5), uczenie few-, one- i zero-shot.
Praca człowieka: jak sformułować zadanie w języku naturalnym?
Rodzaje uczenia maszynowego
- uczenie nienadzorowane (_unsupervised learning)
- uczenie nadzorowane (_supervised learning)
- predykcja prostej wartości
- klasyfikacja
- klasyfikacja binarna
- klasyfikacja wieloklasowa
- regresja
- klasyfikacja
- ekstrakcja informacji
- zadania _seq2seq
- etykietowanie sekwencji (_sequence labeling)
- tłumaczenie maszynowe (szeroko rozumiane)
- automatyczne streszczanie (sumaryzacja)
- predykcja prostej wartości
Wyzwania uczenia maszynowego
Zbiór danych (_data set) - w uczeniu nadzorowanym po prostu zestaw danych wejściowych i oczekiwanych danych wyjściowych $(X, Y)$. Wyzwanie uczenia maszynowego (_ML challenge) - ustandaryzowany zbiór danych, podzielony na zbiór uczący i zbiory testowe, z określoną metryką ewaluacji.
Zob. listę na stronie https://gonito.net/list-challenges
Uczenie nadzorowane
Klasyfikacja binarna
$$V^* \mapsto \{c,\bar{c}\}$$
Przykłady:
Na platformie Gonito wyzwania (i zgłoszenia) są dostępne jako repozytoria git.
%cd wyk
! git clone --single-branch git://gonito.net/sentiment-by-emoticons
/home/filipg/ext/amu/aitech-eks/wyk Klonowanie do „sentiment-by-emoticons”... remote: Wymienianie obiektów: 29, gotowe.[K remote: Zliczanie obiektów: 100% (29/29), gotowe.[K remote: Kompresowanie obiektów: 100% (25/25), gotowe.[K remote: Razem 29 (delty 5), użyte ponownie 0 (delty 0), paczki użyte ponownie 0 Pobieranie obiektów: 100% (29/29), 155.07 MiB | 2.39 MiB/s, gotowe. Rozwiązywanie delt: 100% (5/5), gotowe.
%cd sentiment-by-emoticons
! ls
/home/filipg/ext/amu/aitech-eks/wyk/sentiment-by-emoticons config.txt dev-0 README.md test-A train
# plik konfiguracyjny
! cat config.txt
--metric LogLoss --metric Accuracy --precision 5 -%
# zbiór uczący, oczywiście z oczekiwanym wyjściem
! ls train
expected.tsv in.tsv.xz meta.tsv.xz
# zbiór deweloperski też ma
! ls dev-0
expected.tsv in.tsv meta.tsv
# a ostateczny zbiór testowy - nie ma (plik jest dostępny tylko dla ewaluatora)
! ls test-A
in.tsv
# W każdym wierszu jest osobny dokument
! xzcat train/in.tsv.xz | paste train/expected.tsv - | head -n 5
1 1) Amor omnia vincit!!!!- miłość wszystko zwycięży!!!! 2) każdy człowiek jest jak kwiat...Więdnieje bez miłości *) 3) Szukaj mnie cierpliwie dzień po dniu... 4) BĄDű DLA INNYCH SŁONECZNYM ZEGAREM, ODMIERZAJ TYLKO SŁONECZNE GODZINY 5) \"... Momenty ze ze snu wyrwana; zas nie wyspana...\" 6) ULEWA JEST MA SIOSTRA , STRUMIEN BRATEM 7) KażdaMiłośMusiPrzejścPrzezPróbęWtedyOkażeSięJejPrawdziwaWartość... 8) Zaplątana w pajęczynę snów.. Lepkie nici marzeń.. Utkane przez noc.. 9) Podobno ludzi lubimy za ich zalety, a kochamy za ich wady.... 10) Pozwól mi pozostać... 11) KIEDYŚ-to juz przeszeszłosc...Trzeba przyzwyczajic sie do-DZISIAJ;/ 12) To MoJa JeSt..NiEdOrOsLa MiLoSć..UpArcIe WiEc...BeDe BrOnIć JeJ... 13) Jeszcze jeden krok , a zgine.. 14) *CoRazBl!ŻejŚw!ęTa* NapisałamListDoŚw.Mikołaja ProszącOTwojąMiłość! 15) JeStEm W TeScO Na UrOdZiNaCh <EMOTICON> <EMOTICON> <EMOTICON> 16) Facet jest jak plemnik,tylko jeden na milion staje się człowiekiem! 17) Jeżeli ktoś komuś coś, ewentualnie nikt nikomu nic, to myślę iż wątpię 18) Samotna wśród ludzi którzy myślą...ONA NIGDY NIE JEST SAMA ! 19) PotrzebaCałegoŻycia, AbyZapomniecOKimś, KtoByłDla NasNaprawdeWażny :&# 20) NieŻałujTegoCoZrobiłeś,KaraPrzyjdzieZCzasem;TymczasemUczSięDobroci... 0 @ Rodzyn "Ech szkoda, że to wersja komercyjna <EMOTICON>" A jaki to problem załatać jądro np. za pomocą RTAI lub skorzystać z preempt_RT? Tylko co ci po tym? @ Mily "Ja chetnie bym przetestowal ten system. Mysle, ze pomimo ze jest on dedykowany do innych zastosowan, bardzo dobrze sprawowal by sie jako system desktopowy. Mam tu na mysli gwarantowane czsy odpowiedzi (muzyka, film, reakcja interface'u graficznego na dzialania uzytkownika)." To nie działa w ten sposób. Zagadnienia systemów czasu rzeczywistego są o wiele bardziej skomplikowane. Zazwyczaj tylko krytyczne aplikacje działają w czasie rzeczywistym. Gdybyś nadał priorytet czasu rzeczywistego wszystkim aplikacjom "zwykłego użytkownika" walczyłyby między sobą o zasoby tak samo jak teraz. O wiele lepiej byłoby gdyby w końcu zaczęto tworzyć aplikacje również z myślą o oszczędności zasobów. @ Macius "8 rdzeni rowna sie 1system, 2desktop, 3muza,4film, 5net, 6 7 8 inne pierdoly ktore dzialaja w czasie rzeczywistym to jest cos." Wybacz, ale uważam to za piekielne marnotrawienie zasobów. Chcesz żeby jeden rdzeń obsługiwał np. tylko muzykę? Przecież to będzie jakieś 5% zasobów współczesnego rdzenia. Wszystko działałoby szybciej gdybyśmy większą uwagę przywiązywali do szybkości działania aplikacji niż jej wizualnych bajerów. 0 Czy u Was też taka brzydka pogoda, która sprawia, że nic się nie chce?<EMOTICON> ale ja na szczęście jakoś chyba na przekór tej jesieni zaczęłam wyplatać... 0 Po spektaklu w teatrze,,KOMEDIA''wracałam obok tej pani samochodem i uśmiechałam się ,ale pani jest faktycznie sztuczna i sztywna....zagrała ,wyszła i ma gdzieś sympatię ludzi...ja już jej nie mam dla tej pani<EMOTICON> 1 a wtedy i ekskomunika niestraszna <EMOTICON> paste: błąd zapisu: Przerwany potok paste: błąd zapisu
Klasyfikacja wieloklasowa
$$V^* \mapsto \{c_1,\dots,c_n\}$$
Regresja
$$V^* \mapsto \mathbb{R}$$
Zadania seq2seq
$$V^* \mapsto Y^*$$
Zadania tłumaczenia maszynowego
$$V^* \mapsto V^*$$
Zadania sequence labeling
$$V^* \mapsto L^*$$