Czwarty etap naszej podróży przez świat Auréliena Gérona to moment, w którym - szczerze mówiąc - kończą się proste kalkulacje, a zaczyna prawdziwa inżynierska poezja. Przechodzimy do głębokiego uczenia (*deep learning*). O ile wcześniejsze algorytmy przypominały solidne, rzemieślnicze narzędzia, o tyle Keras i TensorFlow to już budowa wielopoziomowych katedr z danych. W trzecim wydaniu książki „Uczenie maszynowe z użyciem Scikit-Learn, Keras i TensorFlow” Géron poświęca temu obszarowi ogromną uwagę, wprowadzając nas w świat, gdzie sieci neuronowe przestają być tylko teorią z lat 40., a stają się fundamentem współczesnego AI.

Od perceptronu do modelu funkcyjnego

Można się zastanawiać, dlaczego to wszystko jest tak fascynujące. Chyba chodzi o tę niemal biologiczną inspirację. Zaczynamy od prostego perceptronu, który jest taką cyfrową komórką nerwową, by po chwili budować gęste sieci wielowarstwowe. W Kerasie, który jest częścią ekosystemu TensorFlow, budowanie takich struktur jest wręcz niebezpiecznie łatwe. Masz API sekwencyjne dla prostych spraw i API funkcyjne, gdy Twoja sieć zaczyna przypominać skomplikowany schemat hydrauliczny z wieloma wejściami i wyjściami.
 

Swoją drogą, zabawne jest to, jak bardzo zmieniło się podejście do trenowania tych molochów. Kiedyś „wrzucało się” dane i czekało na cud. Dziś mamy warstwy preprocessingu bezpośrednio w modelu, co sprawia, że cały proces jest znacznie bardziej… elegancki? Tak, to chyba dobre słowo.
 

Dylematy optymalizacji i Keras Tuner

Tu jednak pojawia się haczyk. Im potężniejszy model, tym więcej suwaków, którymi musisz kręcić. Liczba warstw, liczba neuronów, tempo uczenia - to wszystko hiperparametry, które potrafią spędzić sen z powiek. Szczerze mówiąc, próba ręcznego ustawienia tego wszystkiego to prosta droga do frustracji. Na szczęście trzecie wydanie książki wprowadza nas w świat Keras Tuner.
 

To narzędzie to taki mały pomocnik, który zamiast Ciebie testuje różne konfiguracje. Masz do wyboru:
 

  • RandomSearch: czyli rzucanie rzutkami w tarczę z nadzieją na trafienie w dziesiątkę.
  • Hyperband: bardziej wyrafinowana metoda, która szybko eliminuje „słabe” pomysły.
  • Optymalizacja bayesowska: to już wyższa szkoła jazdy, gdzie algorytm uczy się na własnych błędach podczas szukania ideału.
     

Wydaje mi się, że to właśnie tutaj oddzielamy hobbystów od profesjonalistów. Profesjonalista wie, że nie musi zgadywać - ma od tego automaty.
 

Walka z duchem w maszynie, czyli overfitting

Głębokie sieci mają jedną, dość irytującą cechę: są niesamowicie zdolne, ale i strasznie leniwe. Jeśli dasz im zbyt dużą swobodę, po prostu nauczą się Twoich danych na pamięć. To ten nieszczęsny overfitting, o którym pewnie już słyszałeś, ale w świecie deep learningu przybiera on monstrualne rozmiary.
 

Aby nad tym zapanować, Géron proponuje nam cały arsenał technik regularyzacji. Mamy więc dropout, czyli celowe „wyłączanie” części neuronów podczas nauki, co zmusza sieć do większej samodzielności. Są też kary L1 i L2, a także technika *max-norm* 1. To trochę jak surowy trener, który nie pozwala zawodnikowi iść na łatwiznę.
 

Z drugiej strony, mamy nowinki, które wywróciły stolik w ostatnich latach. Modele typu Transformer czy generatywne sieci DDPM to już nie tylko rozpoznawanie obrazków, to próba zrozumienia kontekstu i tworzenia czegoś zupełnie nowego. Czasem można odnieść wrażenie, że te sieci zaczynają mieć własną „intuicję”, choć to oczywiście tylko bardzo zaawansowana statystyka.
 

Czy to już magia?

Patrząc na to, jak ewoluowały biblioteki Keras i TensorFlow, trudno nie odczuć pewnego rodzaju pokory. To, co jeszcze kilka lat temu wymagało doktoratu z matematyki, dziś zamyka się w kilkunastu liniach kodu w Pythonie. Ale - i to jest to wielkie „ale” - im łatwiej coś zbudować, tym łatwiej zbudować coś całkowicie błędnego.
 

Szczerze mówiąc, największym wyzwaniem w pracy z głębokim uczeniem nie jest samo napisanie kodu. Jest nim zrozumienie, co dzieje się pod maską, gdy Twoja strata (*loss*) zamiast spadać, zaczyna dziko oscylować. To momenty, w których wracasz do książki Gerona, drapiesz się po głowie i zdajesz sobie sprawę, że pominąłeś jeden drobny szczegół w optymalizatorze.
 

Ciekawe, czy kiedykolwiek dojdziemy do momentu, w którym sieci neuronowe będą projektować same siebie bez żadnego nadzoru? Patrząc na Keras Tuner, wydaje się, że jesteśmy już bliżej niż dalej, choć miejmy nadzieję, że ludzka intuicja wciąż będzie miała tu coś do powiedzenia.
 

A Wy? Mieliście już ten moment, w którym Wasza pierwsza sieć neuronowa w końcu „zaskoczyła” i zaczęła dawać sensowne wyniki? To uczucie jest… no, prawie jak magia. Choć w kolejnym odcinku zejdziemy nieco bardziej na ziemię, zajmując się wizją komputerową i NLP, gdzie te sieci naprawdę pokazują pazury.