Machine Learning nie taki straszny

Zainspirowany artykułem postanowiłem przetestować czy programista, który nie miał do czynienia z ML może sam zbudować i wytrenować sieć neuronową. 

Zacząłem od pobrania biblioteki Deep Java Library (DJL). Zdecydowałem się zbudować sieć neuronową rozpoznającą obrazy 10 typów obiektów z użyciem zbioru danych CIFAR-10 bazując na tutorialu opisującym zbudowanie sieci rozpoznającej cyfry z użyciem zbioru danych MNIST. W mojej ocenie tutorial był napisany z myślą o osobach zapoznanych z uczeniem maszynowym a miejscami wydawał się być niedopracowany – końcówki rozdziałów artykułu sprawiały wrażenie urwanych, niedokończonych, fragmentom brakowało istotnych detali. Mimo tego tutorial udało się jednak wykorzystać do utworzenia sieci posiłkując się przykładami z repozytorium github DJL.

machine learning

Wykorzystany w sieci zbiór danych CIFAR-10, który jest jednym ze zbiorów danych wbudowanych w bibliotekę DJL zawiera 60000 kolorowych obrazów 32×32 przedstawiających jeden z dziesięciu możliwych typów obiektów (psy, koty, samochody, statki etc.). O ile trenowanie sieci neuronowej z użyciem takiego zestawu danych nie zajmuje dużo czasu, gdy jest wykorzystana do tego np. dedykowana farma serwerów, to potrafi to zająć dłuższą chwilę gdy jest to wykonywane na jednej maszynie np. przez programistę przeprowadzającego lokalne testy lub uczącego się ML. Wykonanie 10 iteracji uczenia się (zwanymi epochami – jeden epoch reprezentuje jedną iterację po całym zbiorze danych wykorzystanym do uczenia) potrwało 10 minut. Biorąc pod uwagę to, że 10 epochów to jest stosunkowo mała liczba iteracji, eksperymentowanie ze zmianami wewnętrznej struktury sieci neuronowej może być czasochłonne dla początkującego programisty ML. 

Po utworzeniu sieci i jej wytrenowaniu nastąpił czas na testowanie. Zastosowana struktura sieci była prawie identyczna do struktury zastosowanej w tutorialu do rozpoznawania cyfr. Mimo relatywnie prostej struktury sieci, przy jej testowaniu widać było, że jest ona w stanie rozpoznać używane obrazki. O ile prawdopodobnie celność i struktura nie są akceptowalne z punktu widzenia osób dobrze zapoznanych z budowaniem sieci neuronowych, to z punktu widzenia programisty tworzącego swoją pierwszą sieć neuronową eksperyment można uznać za sukces.

machine learning

Udostępnij ten artykuł:

Podobne artykuły