Hackathon Machine Learning w STX Next
Piątek, godzina 22:12. Środek zimy, na dworze mróz. O tej porze część ludzi grzeje się pod ciepłym kocem z herbatą stojącą na stole obok, inni wolą siedzieć w przytulnym barze, sącząc niespiesznie piwo. W siedzibie STX-a słychać okrzyki przeplatane ze śmiechem i gromkimi brawami. Panie i Panowie, pierwszy STX-owy hackathon związany z Machine Learning trwa na dobre!
Schodzę do piwnicy naszego biura. Jako pierwsze w oczy rzucają mi się do połowy puste pudełka po pizzy, chaotycznie rozstawione krzesła, pod sufitem błyska dioda włączonego rzutnika. Wchodzę na górę. Drzwi do pokojów projektowych otwarte. Słychać stłumione głosy, czasem śmiech, głośne pomstowanie i „dlaczego to znowu nie działa?!”. Co kilka minut ktoś szura butem o podłogę, słychać energiczne kroki. A później cisza. Atmosfera tak napięta, że można by ją kroić nożem. Zabawa jednak trwa w najlepsze, a planowany od dawna hackathon wchodzi w decydującą fazę.
Hackathon jest pojęciem dobrze znanym w środowisku IT. Zwyczajowo wydarzenie odbywa się w krótkim czasie na przestrzeni dnia lub weekendu. Jego uczestnicy wytężają swoje umysły, by w jak najbardziej efektywny sposób dojść do rozwiązania narzuconego problemu.
Stworzenie aplikacji jest efektem zmagań uczestników, jednak nie jedyną ideą hackathonu. Chodzi również o to, by sprawdzić swoje umiejętności, a także mieć okazję do nabycia nowych. Ten ostatni motyw przyświecał idei Hackathonu Machine Learning w STX Next, który zorganizowaliśmy w Poznaniu w pierwszy piątek marca i był jednym z elementów przygotowawczych do wdrożenia nowych technologii w STX-ie.
W przygotowaniu do wyścigu
– Naszym celem było zainteresowanie ludzi tematem związanym z Machine Learning- komentuje Radek, jeden z organizatorów hackathonu – W tym celu przygotowaliśmy ćwiczenie polegające na napisaniu algorytmu, który byłby w stanie nauczyć się grać w prostą grę akcji. Gra polegała na sterowaniu latającym pojazdem w taki sposób, żeby pokonał planszę w jak najkrótszym czasie, omijając przy tym przeszkody, które powodowały jego spowolnienie – dodaje. – Żeby umożliwić uczestnikom skupienie się tylko na samym zagadnieniu związanym z ML stworzyliśmy grę przeglądarkową (przy pomocy frameworku Phaser, która umożliwiałaby zbieranie danych i sterowanie pojazdem z poziomu kodu w Pythonie w prosty sposób. Uczestnicy mieli dowolność co do użytych narzędzi – niektórzy korzystali z biblioteki scikit-learn, inni wybieral bibliotekę Keras. Na końcu wytrenowane modele wszystkich zespołów zostały skonfrontowane ze sobą w wyścigu na jednej planszy – uzupełnia Radek.
W szranki stanęło 6 drużyn. W finałowej rozgrywce każdy z zespołów miał za zadanie wystawić swój stateczek przeciwko innym drużynom. Pojazd, który jako pierwszy przekroczył metę planszy, zwyciężył.
W drużynie siła
Z dużą radością obserwowałam poczynania poszczególnych zespołów. Dla mnie, jako obserwatora zmagań, największą radość sprawiało patrzenie na efekty: statek samodzielne poruszał się po planszy i dzielnie pokonywał przeszkody. Każdy z zespołów miał swój pomysł na rozwiązanie problemu. Jedni przygotowywali zawiłe algorytmy na tablicach, inni w milczeniu raz za razem testowali swój kod. Trzeba jednak przyznać, że każdy z tych zespołów działał drużynowo. Wszystkie pomysły były analizowane wspólnie, bez względu na to, czy miały szansę powodzenia czy też nie.
Finalnie zwyciężył zespół o wdzięcznej nazwie „Not A-Team”, który wykazał się wyjątkową pomysłowością. – Użyliśmy klearn.neural_network.MLPClassifier z dwoma ukrytymi layerami po 30 węzłów – komentował na świeżo jeden z członków zwycięskiego zespołu, Robert. – Przewagę nad innymi zespołami dało nam dodanie parametru: odległość przebyta przez gracza w ciągu ostatnich 1.5 sekund, co pozwoliło helikopterowi szybko reagować na przeszkody, które wymagały cofania oraz informowało go, kiedy mógł spokojnie lecieć na pełnych obrotach. Dodatkowo z puli uczenia wyeliminowaliśmy 20% najgorszych przelotów – uzupełnił Robert.
Wygrana o włos
Choć zwycięzca mógł być tylko jeden, zespół “Not-A-Team” wygrał dosłownie o włos. Zaraz za nim uplasowała się druga ekipa o wdzięcznej nazwie Janusze ML. Co stało za ich sukcesem? – Wykorzystaliśmy bibliotekę keras do stworzenia wielowarstwowej sieci neuronowej. Jako wejście algorytmu podawaliśmy 17 parametrów, gdzie 11 z nich to odczyty z sensorów, prędkość pozioma oraz pionowa, a 4 pozostałe określały zmianę pozycji w odstępach co 100 klatek – opowiada Damian, jeden z uczestników rywalizacji. – Dodatkowo, surowe dane wejściowe podczas uczenia były agregowane w grupy po 5 rekordów i obliczana średnia wartość atrybutów. Jako wyjście naszego algorytmu dostawaliśmy prawdopodobieństwo z jakim wciśnięty powinien być każdy z klawiszy kierunkowych – dodaje.
Na trzecim miejscu uplasował się zespół “T-1000”. – Naszego samodzielnego pilota stworzyliśmy wykorzystując MLPClassifier – komentuje Paulina. – Użyliśmy domyślnego perceptronu wielowarstwowego z dwustoma neuronami. Co było największym wyzwaniem podczas implementacji? – Myślę, że nauczenie algorytmu radzenia sobie ze ślepymi zaułkami. Udało nam się to częściowo rozwiązać poprzez analizę aktualnej pozycji oraz reagowanie na brak ruchu. Braliśmy pod uwagę 120 kroków w tył. Nasz algorytm dobrze spełnił swoje zadanie głównie dzięki temu, że przygotowaliśmy bardzo dużą a jednocześnie wysokiej jakości bazę danych, na której mógł się uczyć – uzupełnia Paulina.
Pierwszy hackathon związany z Machine Learning okazał się być niemałym sukcesem. Nawet teraz, po kilku dniach, wciąż wzbudza emocje wśród uczestników oraz obserwatorów.
Pozornie, pomysł spędzenia piątkowego wieczoru w piwnicy poznańskiego oddziału STX Next mógł wydawać się mało zajmujący, jednak był świetną okazją do nauki, a także dobrą rozrywką na piątkowy wieczór. Jako osoba nietechniczna przyznam, że miałam niesamowitą frajdę wynikającą z obserwacji naszych specjalistów w akcji. Był to kolejny krok przy zgłębianiu tematyki sztucznej inteligencji. Idąc za ciosem, planujemy kolejne edycje hackathonu w czterech pozostałych lokalizacjach STX Next.
Zobacz nasze video z wydarzenia!