W kategorii Bez kategorii

Uczenie maszynowe od lat jest nieodzownie związane z przewidywaniem przyszłości. Prognozowanie wartości różnych zjawisk za pomocą komputerów jest arcyciekawe, a wyniki tych prognoz mogą czasami zmienić świat. To samo tyczy się również nietrafionych prognoz, które równie mocno mogą na niego wpłynąć. Magazyn PCWorld opublikował w artykule „The 7 Worst Tech Predictions of All Time” parę najmniej trafionych przepowiedni w kontekście technologii cyfrowych. Jednym z takich przewidywań jest teza sformułowana całkiem niedawno (1977 r.) przez Kena Olsena, prezesa nieistniejącej dziś firmy DEC, w której twierdzi że: „Nie ma powodu, aby ktokolwiek chciał posiadać komputer w domu”. Dziś nie musimy nikomu udowadniać, jak bardzo mylił się Pan Olsen. Nikt dziś również nie pamięta o firmie DEC, która w tamtych czasach działa w prawie każdej dziedzinie rozwiązań informatycznych.

W ostatnim czasie coraz bardziej popularne stało się prognozowanie za pomocą sieci neuronowych (uczenie głębokie), które dzięki chmurze obliczeniowej, przetwarzaniu rozproszonemu, dostępnej dużej ilości danych oraz mocy obliczeniowej stało się skuteczniejsze niż kiedykolwiek. Sieci neuronowe występują w wielu konfiguracjach i znajdują zastosowanie w coraz to nowych zagadnieniach. Jedną z nich jest Rekurencyjna Sieć Neuronowa (ang. Recurrent Neural Network) w skrócie RNN, która świeci swoje triumfy w obszarze analizy tekstu. Taka sieć znajduje zastosowanie np. jako asystent podczas wprowadzanie tekstu na telefonie, podpowiadając nam kolejną literę lub najbardziej pasujący wyraz na podstawie tego co już wpisaliśmy.

Ale co by było, gdybyśmy naszą sieć najpierw „nakarmili” np. tekstem „Pana Tadeusza” albo fragmentem Trylogii Sienkiewicza, a później „zapytali” ją nie tylko o kolejny znak czy wyraz, ale pozwolili na nieco dłuższą wypowiedź? Zobaczcie sami… W tym celu posłużymy się implementacją sieci RNN autorstwa Dr Andreja Karpathego z Uniwersytetu w Stanfordzie.

Cała treść Pana Tadeusza zajmuje niecałe 500 kB w pliku tekstowym. Dr Karpathy w swoim artykule twierdzi, że zbiór poniżej 1 MB należy traktować jako bardzo mały i jakość nauki na takim zbiorze może dać mizerne efekty. Mimo wszystko spróbujemy. Nauka naszej sieci trwała 50 epok, a w praktyce zajęło to około 30 min. Po tym czasie mogliśmy sprawdzić, jak nasza sieć radzi sobie z trzynastozgłoskowcem. Dla lepszego ukierunkowania działania sieci, posłużyliśmy się nieśmiertelnymi słowami „Litwo, ojczyzno moja” jako danymi wejściowymi. Poniżej zamieszczam krótki fragment dalszej części naszej Epopei Narodowej:

    Litwo, ojczyzno moja, gospodarny…
Biegłby było do Polokaję, potem kochało trawa,
A zarzmone widując: jak śnier nie jest mnie.
Ale jeździł nigdy nie noczęła moja dwoje?
Podkomorzy jak przy mniego z mora ostatnich?
O to wpestatku ni ogromne Byłubasta,
Już stryjem: człewna o głów Litwa bratem Polak;
Tylko: ja strzelcie porwał trudy się panneju?
 
    Wojski — rzekł: «Dostaność Hrabie, pan kręci,
Ja słońce ona bronią, drodę i rówować
Chle mi tam bradę od!
Olu ma dosą, w tu lista w pękucz,
Bo bręcił łągi szczyl!» — «Mościa Hrabii — —
Zwijszyli iż w tej piarsca Sokoła — Nowa drogę
Le wzięła — Panie Telafo! szlachta nie wiedzię…
W naszego, to otwardy o to ani mami tula,
Tu rozpotewur, astroncuj uszcze zamku stary!«

    «Niesprosim osłonione, a przed obranneju.
Broni, jak podtószkoży niedzie do sobie!
«Brak, w kędy Gerwazego! — krzyknie Co gości przyszę!»
Tadeusz, jestą zarazu, jak była jak śniegi.
Młod słyszyć, co czy tym łynnym zgodnęli wielką,
Czy lęką odbiewał Sędzia. Mialki u radkich,
Kwpaściając i rzucawszy pogódź zdliwszej gości,
I muzyku, strusząc został sej powratał promie,
Ruszyli, sercisem, on mnie stary zwała zwypłyzać,
Częściej dwojej równie płota, długim powstanie
Ispoczęła i rzuciła; ale pośręcenie,
Idąc kory piskoczu kraje wydzieniony,
W dzieszył strzelcikcia wskrzczolonych gutewyki*
Spod rysski: munie, że było mówić w górze.
(...)     

Widać, że naszej sieci jeszcze „trochę” brakuje do stylu Mistrza Adama.

Przyjrzyjmy się teraz, co by się stało, gdybyśmy użyli dłuższego zbioru treningowego? „Potop” Henryka Sienkiewicza wydaje się być dobrym zbiorem wejściowym. 2.5 MB w pliku tekstowym powinno skuteczniej nauczyć naszą sieć pisania prozą. Tym razem 50 epok nauki zajęło naszej sieci ponad 24 godziny. Czy Henryk Sienkiewicz powstydziłby się takiej kontynuacji? Zobaczcie sami:

Był na żmudzi ród możny Billewiczów i
naprzód tą straszliwiej. Domniejszy nie przyjmie mi i żołnierz oblegnie. Wielki
mi strach śmierć nie mogł i nie wiem, że jeno chwycili jako rękój pokoje
się tylko znowu biegliwsza prosić. Dopiero ani każdy gwałty mogłem
w koronnie złożono, jak łomili, które późnym by im zbiegli. Na czele
się gwiek kłoni, nie mogą to jako wiecz, co to szczęść bez spełnienia tego u
nim pod oblężonym ani on za bardzo! Kto się, jeno nam nadsrodzon? -
Bo więc poddają je cichy we mnie, która tłum bliskie! - Tak jest?
Lecz z wiary pójdzie ścigam, skoczała po ojczyźnie, aż oni
skądżeli, którego dóż w tej chwili
chcieli się już skoczyć z patrzeci jakoby czerwoną
z powodu. I mówił konie. Na szablach nie uraźnie się w kawalerskim
i kazała poszczęściwszy i wieszali się przy gromu rabiczek.
Dlaczego jeszcze za nie przykryci na znaleźć, jaka wasza miłość...
Szwedzi naplasta z Taurogów znajda zasługi, żeby nie z
Lauda wymknął, to ja takich łamią rasów za Rocha?
- Słyszałem. - Oczy śmiałe
śmierci! Gdybym go więcej, więc waćpan uniesienie
podłogę dodał zaniechłyczny. I drudzy było przy znaku
przeprawie, a wyciągnęli z wtedy dobokaniem niezdyłanymi szczerze usztymi
Od ortylieństwo poniewierana.  W zbyt drzwi nie
trafili, że księży tylko już wiem, kto się poluje, i póki i chłop,
a jeśli nie mógł słyszał i tu ukazywał się odwołać, a Bogusław nie
wypalił ramiony zaczerniały. - Może żadnej pułkowników upać nie przerzeć. Mogą
i było, że moje króla była potrzeby. - Nie wołaj,
musiałeś w skok do pierwszej przykiezemkopie! Prawda za żołnierzy podziękuje -
bom twarz chłopi swoje doludzkiej straży, co jeździe sobie zgadował czy na
przykrzyk zbawoł, że nie samy Kmicic wstrzymać. - Sam zagniotą,
zamyślił, wszyscy uchronisz... Panie Kmicic. Bo jakiej naścierniona
można obycoją w przerażeniu w Tyficinu. - Nie chcą waść, sam na dawnym
male Kmicicem wie! - powtórzył pan. - Pokrzyknąłem - mówił żywo
Radziwił. - Mości panowie, ale rozpaczy jeno oddał jakoby i mówim, choć
wolentarz, gdyby mnie Jan Kazimierz podstanie, jacy wolno ten ostatni wówczas
aż cofać się le stodoby japowiak, prawie jej
jak ginął zębami na łaskę; ubnistel już trupów, bo wreszcie już oddali i
po wasy była się za nieraz panem Michalą w szwedzkim czołem przeszedł. Jeze mek
Michał, który wyczynił się, parę poczekał ludnika, więc i króla
my do nich krzyki obryże, a co gdy
miał na tropniić owe wszystko, jeno złocisto, dzieńm
zalczała, drgowało i poczęli zimnością, gdy zaś za czym leżał krzyk
przyszła na obecnego deliwancję, którego zaladły ruszyli tysiące wąż
ciemnej Podporoczach, jeszcze już dokładniej go okorownim dla
jakiegoś permowały sama. I dajcie jutro, to wszystko które nie ma
będzie poświęcić zapomnieć, jakobyś a przy
pola, panna, panie Chrystusa ksiądz Grodemas! Żywy Kiemlicz. Twojnie
zwycięstwo jeszcze zatrzymano tak, że pan Wołodyjowski całą
młodzie wyciągnął jak jakiś rereteczcy, jakie trzebo do
(...)

Można śmiało powiedzieć, że nasza sieć jeszcze trochę … „bełkocze”…

Trochę ciekawsze wyniki uzyskał Adam Geitgey, który w swoim artykule pt. „Using Machine Learning to generate Super Mario Maker levels” w ramach eksperymentów z sieciami RNN wygenerował kolejne, „działające” poziomy do klasycznej gry „Mario Brothers”.

Dociekliwych odsyłam również do oryginalnego artykułu Dr Andreja Karpathego pt. „The Unreasonable Effectiveness of Recurrent Neural Networks„, który był inspiracją do moich eksperymentów z sieciami neuronowymi.