Uczenie maszynowe samopas i dla mas

W ostatnim czasie sporo myślałem nad tym, jak można by wprowadzać ludzi, na przykład, w uczenie maszynowe, skoro ma się stać taką dużą siłą wpływającą na wszystko. Dobrze, żeby nie tylko wiedzieli co się dzieje, ale jeszcze mogli się zaangażować. Jakiego oczekiwać podejścia? ‒ to jest pierwsze pytanie.

Z jednej strony użytkownicy ze spokojem przyjmują w swojej codzienności takie zaawansowane algorytmy, jak rozpoznawanie ich twarzy czy różne wyszukiwacze drogi w mieście i w kraju. Nie jest chyba powszechne roztrząsanie konsekwencji tych rzeczy dla kształtu ich życia, nie mówiąc już o zastanowieniu, jak to wszystko zostało zrobione. A więc poważna i ciekawa złożoność kryłaby się pod niepozorną maską.

„Eigenfaces” (twarze właściwe?): obrazki są reprezentacją macierzy (tablic) liczb. Im większa liczba, tym piksel bielszy. Prawdziwe twarze ze zdjęć można uzyskać przez matematyczną kombinację takich „twarzy właściwych”. Informacje charakterystyczne dla danej osoby mogą być wykorzystane np. do oznaczania na zdjęciach. Zapowiedziano, że iPhone’a X oblokujemy samym spojrzeniem. Źródło obrazu: http://www.shervinemami.info/faceRecognition.html

Z drugiej strony, widzę po sobie, że zbliżenie się zawodowo do rzeczy, o których kiedyś pisałem z entuzjazmem (morfonologia, chatboty, systemy uczące się…) trochę je grzebie w detalach i odczarowuje. Tak jak, powiedzmy, oglądanie obrazu pod lupą nie jest takie samo, jak patrzenie nań z normalnej odległości, chociaż oba sposoby są potrzebne do pewnych celów. Duże przybliżenie nie przemawia do nas tak bezpośrednio i jednocześnie zdradza, jak wszystko jest zrobione, i gdzie są ograniczenia…

Dlatego jestem pod dużym wrażeniem tego, jak specjaliści są często zdolni wyjaśniać swoją pracę prostym językiem (to coś, w czym ten blog powinien mi teoretycznie pomagać). To oczywiście oznaka intelektualnej siły ognia danego człowieka. Ale nawet jeśli wyjaśnimy doskonale na poziomie ogólnym, jak coś działa, pozostaje kwestia użyteczności.

Uczenie maszynowe można ująć z powodzeniem jako wyciąganie wiedzy z danych, automatycznie i za pomocą algorytmu. Sam fakt, że jest to możliwe, robi ogromne wrażenie. Takie znaki milowe jak zwycięstwa AlphaGo nad mistrzem świata i skuteczne rozpoznawanie obiektów (kotów, samochodów…) w grafice na równi dowodzą siły, jaką dysponują nasze maszyny, chociaż dla człowieka te dwie czynności stoją na zupełnie różnych poziomach pod względem trudności.

Ale też mam wrażenie, że w praktyce głębokie sieci, które mają najwięcej osiągnięć, mają też nie tak dużo do obiecania zwykłemu człowiekowi. Nie ma porównania z przełomem, jakim był Internet, oprogramowanie biurowe, czy telefon komórkowy. Nerwosieć może trochę usprawnić polecanie filmów, serwowanie reklam albo segregowanie zdjęć po twarzach osób, ale to nie są rzeczy wielkie. W dodatku wiążą się często z nieprzyjemnym uczuciem bycia obserwowanym. Można już dzisiaj zobaczyć, jakie powinny być najpoważniejsze osiągnięcia sieci: normalna, satysfakcjonująca rozmowa z komputerem (zapewne głosowa z asystentem takim jak Google Now czy Alexa), samosterowny samochód (samoster? pewnie skończymy z jakimś anglicyzmem). Ale tych jeszcze nie widać w życiu codziennym. („Rozmowy” z asystentami elektronicznymi trudno dziś uznać za satysfakcjonujące, w każdym razie).

Czasami system może wyglądać interesująco na schemacie, ale wciąż trudniej się z nim sfotografować niż w epoce heroicznej komputerów. Tutaj metoda tłumaczenia sprawdzana przez zespoły Google Brain i Translate, źródło: https://research.googleblog.com/2016/11/zero-shot-translation-with-googles.html

Poza tym wciąż nie dotykamy ewentualnych zastosowań domowych, to znaczy tego, jak mały Jasio może postawić nerwosieć i ją do czegoś wykorzystać. Odczuwam dużą sympatię do badaczy, którzy starają się do Jasia wyjść, czy przynajmniej prawie do Jasia. W 2007 r. Ryszard Tadeusiewicz wydał książkę o sieciach neuronowych w języku C# z obietnicą, że w książce nie będzie ani jednego wzoru matematycznego. Zrobiła na mnie wrażenie parę lat temu, chociaż z dzisiejszego punktu widzenia pokazuje głównie zabawki i malutkie modele podglądowe. Trudno orzec, na ile tak zaawansowana sieć neuronowa mogłaby posłużyć małym biznesom (np. lekarzom prowadzącym własne gabinety), tak jak autor sugerował.

Inny zasób, jaki mi przychodzi do głowy, to znany i polecany wszystkim nowicjuszom darmowy bezpłatny Machine Learning na Courserze, opracowany przez Andrew Ng. Tutaj trzeba troszkę umieć programować, ale wierzę, że dobrnięcie gdzieś do połowy kursu już uzbraja Jasia w możliwość dokonania czegoś własnego na prywatnej maszynie. Ng jest też wzorem, jeśli chodzi o staranie się, by nie przytłoczyć, nie zniechęcić i zmotywować kursanta, żeby się poddawać.

Uczenie maszynowe ma też pewną słabość w porównaniu z dawną rewolucją komputerów osobistych, słabość, o jakiej się zwykle nie mówi. Kto trochę pogrzebał przy programowaniu domowej maszyny liczącej, czy to za wczesnych Jagiellonów na maszynach z językiem BASIC obok/zamiast systemu operacyjnego, czy to w nieco nowszych czasach z kompilatorem/interpreterem dowolnego języka, mógł szybko dojść do poziomu zabawy: tworzyć programiki, które na nikim innym nie zrobiłyby wrażenia, ale coś robiły i to było fascynujące. Choćby miałoby to być wypisywanie (niby-)śmiesznych tekstów do konsoli, gdy użytkownik coś tam wciskał na klawiaturze.

Nie będę wchodził w lamenty, że pokolenie ekranów dotykowych tego nie ma, o nie. Rzecz w tym, że z uczenia maszynowego, jako takiego, trudno wykrzesać zabawę w majsterkowanie. Młody adept może co najwyżej dostać gotowy zbiór danych z poradą, jakiego i jak użyć algorytmu i wtedy wiadomo, że mu wyjdzie to a to. Zejście z tej ścieżki prowadzi prawie zawsze donikąd.

W mniejszym stopniu tę zmianę widać także na nieco wyższym poziomie wtajemniczenia. Współczesne uczenie maszynowe stawia osobę odpowiedzialną w pozycji operatora, rzeczoznawcy, specjalisty (co odbija użycie po angielsku słowa practitioner, czy to machine learning czy data science), który wie, jak poprzestawiać wajchy i na ile zakręcić gałkami, ale nie jest już architektem, przynajmniej tak jak programista aplikacji. Dlatego w sumie rozumiem ludzi, nawet na wczesnym etapie kariery w przetwarzaniu języka, którzy nie chcą mieć nic wspólnego z nerwosieciami i pragną dalej rzemieślniczo wypieszczać systemy regułowe. Faktem jest, że trochę decyzji i kodowania wchodzi w eksperymenty sztucznointeligentne, ale do inżynierii oprogramowania zwykle daleko.

Satysfakcja z pracy płynie z innych źródeł. Bardziej przypomina to, co biolog zrobiłby z preparatem, a fizyk z modelem. Poddajemy wirtualną „materię” (dane) różnym próbom i doświadczeniom, powoli opracowując taką procedurę, która przynosi wynik godny uwagi.

Rok 2016: Lee Sedol (z prawej) zmusza do rezygnacji AlphaGo (z tyłu). Jedyna z pięciu partii w meczu, którą wygrał człowiek. Bardzo długo go uchodziło za grę, która jest dla komputerów za trudna, z powodu liczby możliwych scenariuszy do rozważenia. Potrzeba było zmiany paradygmatu sztucznej inteligencji.

Wydaje mi się, że można wyciągnąć nowe wnioski z owej zmiany tego, jak pracują ludzie teoretycznie wciąż będący dla szerokiego społeczeństwa „informatykami” (razem z tymi nieszczęsnymi a potrzebnymi duszami zmagającymi się z serwisowaniem produkcji Apple czy Microsoftu). Mieliśmy ostatnio epokę programisty, który spędza ileś tygodni i miesięcy za biurkiem, żeby w końcu powstał Program. System uczący się nie tyle potrzebuje, jako warunku wstępnego, maszynerii kodu, ile masy danych.

To dość podstawowa wiedza, że nawet kiepski algorytm może pokazać pazur, jeżeli ma dużo dobrych danych, a nie sprawdza się to w sytuacji odwrotnej (dobry algorytm, kiepskie dane)*. Dlatego osoba odpowiadająca za uczenie komputerów staje się jedną z osób w zespole zbudowanym wokół danych.

W nauce i biznesie takie zespoły zgromadzone wokół sprawy do podania maszynie będą stawać się coraz częstsze. (Ma to subtelny posmak starego science-fiction, jeśli ktoś pożera(ł) powieści Lema). Pytanie, na ile da się taki model roznieść szerzej. Jaś programista mógł uderzać samemu, Jaś badacz danych potrzebuje brygady zainteresowanych zbieraczy. Wiele zależy od tego, na ile młodsze pokolenie będzie skłonne do działania intelektualnie i w grupie. Tu znów nie będę się uciekał do komunałów i pozostawię pytanie otwarte.

Jedno, czego jestem pewien, to że jeszcze wiemy bardzo niewiele o możliwych zastosowaniach głębokich sieci neuronowych oraz może nowych postępów, jakie tutaj nadejdą. Jesteśmy na etapie otrzaskiwania się z technologią. Będą ją oglądać ludzie świeży, inżynierowie, naukowcy, przedsiębiorcy, a i inni będą mieć sporo czasu na przemyślenia. Mam nadzieję, że fosa przewagi technologicznej wielkich firm nad społeczeństwem nie będzie się wiele powiększać. Dziś wygląda ona stosunkowo płytko: oprogramowanie jest otwarte, podstawowa wiedza i dokumentacja dostępna za darmo, moc obliczeniowa tania. Moglibyśmy być w znacznie gorszej sytuacji.

Oczywiście najważniejsze są dane, i to one są naprawdę cenne, drogie i strzeżone. Ale gdybyśmy chociaż znaleźli wolę i pomysły, żeby wprowadzić proste, własne uczenie maszynowe do gospodarstw domowych, byłaby to wielka rzecz.


Także wysuwam to jako możliwość i punkt do przemyślenia. Jeśli chodzi o niniejszy blog, podpinam go w końcu pod swoją główną domenę. Widać jasno, że rozwój Przenicy przestał być głównym zmartwieniem, choć jakiś czas temu dorzuciłem tam parę nieudokumentowanych funkcji. Będę teraz sobie pozwalał pisać o wszelkich rzeczach językowych i technicznych. Może nawet czasem całkiem hermetycznych programistycznych, kto wie, ale wtedy jakoś je oznaczę w tytule. Jednak chciałbym przede wszystkim wykształcić się w komunikacji o swojej pracy w sposób prosty i jasny. Będzie z tym trochę zmagań, ale powinny być warte trudu.

(Poza tym przechodzimy na HTTPS (zielona kłódka koło paska adresu w przeglądarce). Dzięki temu macie rozsądną pewność, że to moja strona, a nie wydmuszka do wykradania haseł. Jeżeli jakiś właściciel własnej strony z jakichś powodów nie słyszał o Let’s Encrypt (które udostępnia protokół HTTPS za darmo), niech pędzi je sobie zamontować. W okolicach początku przyszłego roku przeglądarki zaczną panikować na stronach przesyłających się przez zwykłe HTTP.

* Spory wpływ na wytworzenie tej opinii miał np. artykuł Banko i Brill 2001, Scaling to Very Very Large Corpora for Natural Language Disambiguation.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *