Uczysz się deep learningu od gotowych modeli i to cię kosztuje

 


Student przychodzi na konsultacje z projektem, który działa. Dostroił ResNet-50, dołożył kilka warstw na końcu, dostał dziewięćdziesiąt kilka procent i jest zadowolony. Pytam, co robi pierwsza warstwa splotowa. Cisza. Pytam, dlaczego wybrał ResNet, a nie cokolwiek innego. "Bo tak było w tutorialu". Dziś chcę Ci powiedzieć, dlaczego to założenie nie do końca jest dobre.

Czy staliśmy się leniwi?

Nie mam z tym problemu, bo to nie jest lenistwo. To racjonalna reakcja na to, jak dziś wygląda wejście w tę dziedzinę. Pierwszy przykład, na jaki trafia początkujący, to pięć linijek, które ładują wytrenowaną sieć i dają wynik lepszy, niż da cokolwiek napisanego samodzielnie. Trudno się dziwić, że nikt nie wraca potem do splotu liczonego na piechotę.

Rys. 1 Operacja konwolucji

Problem pojawia się, kiedy coś przestaje działać

Model uczy się do wysokiego wyniku i zjeżdża na danych testowych. Strata skacze i nie chce spadać. Wynik wygląda podejrzanie dobrze (aż za dobrze). W żadnej z tych sytuacji nie ma czego dostroić, bo trzeba zrozumieć, co się dzieje w środku, a tego nie nadrobi się w pół godziny przed terminem oddania projektu.

Widzę to po rodzaju pytań, które dostaję. Nie brzmią „dlaczego mój model się nie uczy", bo takie pytanie wymagałoby już jakiejś hipotezy. Brzmią „co mam zmienić". I to jest sedno: przy gotowych modelach uczymy ludzi obsługi narzędzia, a nie myślenia o problemie. Obsługa jest łatwa i z roku na rok coraz łatwiejsza. Myślenie o problemie nie stało się ani trochę łatwiejsze. 

Rys. 2 Błąd Convert_to_one_hot Error

Moim zdaniem to najtrudnuejsza umiejętność w głębokim uczeniu, czyli umiejętność racjonalnego myślenia. Dziś myślą za nas agenty, którzy mogą naprawić dany błąd. Jednak nawet agenty mają swoje ograniczenia, dlatego powinny być one dla nas kołem zapasowym, a nie elementem głównym naszego projektu.

90 minut zajęć to realne ograniczenie 

Muszę uczciwie przyznać jedną rzecz drugiej stronie, bo sama jestem po stronie, która ma ograniczenia. Zajęcia trwają 90 minut. W tym czasie nie zbuduje się sieci od zera, nie wytrenuje jej i nie zdąży omówić wyniku. Osoba, która przez trzy tygodnie implementuje własną sieć na MNIST, zniechęci się, zanim zobaczy cokolwiek ciekawego, a w pracy i tak nigdy nie napisze splotu ręcznie, bo nie ma po co. Transfer learning to nie skrót dla leniwych, to standard branżowy i dobrze, że nim jest. Mój feedback przy projektach niestety może czasami zaboleć, bo nie ma wystarczająco czasu, aby powiedzieć wszystko na zajęciach. 

Klocki Lego mieszczą się w jednych zajęciach

Między pisaniem wszystkiego od zera a wklejaniem pięciu linijek jest ogromna przestrzeń, z której prawie nie korzystamy.

Na klasyfikacji klocków Lego widać to w 90 minut. Zbiór jest mały, klasy oczywiste, a wytrenowana sieć rozpoznaje je od pierwszego podejścia. Jednak dopiero wtedy zaczyna się ciekawa część: wystarczy zmienić tło zdjęć albo oświetlenie, żeby wynik się rozsypał. Student widzi wtedy na własnym projekcie, że model nie nauczył się kształtu klocka, tylko czegoś, co z klockiem miało niewiele wspólnego. Tego nie da się wyjaśnić wykładem, tylko to trzeba zobaczyć.

Podobnie jest z resztą. Nie trzeba implementować całej architektury, żeby raz policzyć splot ręcznie na macierzy 5x5. Nie trzeba pisać własnego optymalizatora, żeby zobaczyć, co robi z uczeniem dziesięciokrotnie za duży współczynnik.

Rys. 3 Klasyfikacja klocków LEGO

Test na zrozumienie: czy umiesz to zepsuć?

Często swoim studentom daję na późniejszych zajęciach popsutą sieć. Ok, czy potrafisz ją naprawić? Albo czy mając idealnie zaprojektowaną architekturę umiesz ją zepsuć?

Jeśli umiesz zepsuć swój model na trzy różne sposoby i przewidzieć, jak każdy z nich się objawi, to rozumiesz, co robisz. Jeśli umiesz tylko naprawiać przez podmienianie parametrów, aż zadziała, to nie rozumiesz i pierwszy niestandardowy problem to obnaży. To samo w drugą stronę. Potrafisz naprawić zepsuty model? Świetnie! Wiesz jak działa sieć i znasz jej ograniczenia.

Dlatego na zajęciach proszę studentów, aby zaczynali od rzeczy, które są za małe, żeby imponować. Nie dlatego, że tęsknię za czasami, gdy wszystko pisało się samemu. Dlatego, że intuicji nie da się zaimportować.









Komentarze

Popularne posty