Ucz się i idź na staż, by zmieniać świat! - Dariusz Kucharski (Comarch)

MZ | 18-04-2018 | 14:40:10

Dlaczego warto stale poszerzać swoją wiedzę, pracując w branży technologicznej? Po co korzysta się z deep learning, uczenia maszynowego w działach Research and Development?

O swojej pracy opowiada w wywiadzie Dariusz Kucharski - doktorant, algorytmik w Comarch, były stażysta, a Comarch zaprasza do udziału w rekrutacji na wakacyjne staże IT – został ostatni tydzień, by się zgłosić!

Jak to się stało, że zdecydowałeś się na staż w Comarch?

Darek: Na staż do Comarchu dostałem się 3 lata temu. Pomyślałem wtedy, że nie warto rozmieniać się na drobne, ale od razu iść w kierunku zawodu, by jeszcze na studiach zajmować się tym, co mnie naprawdę pasjonuje.

Podczas stażu realizowałeś bardzo ważny projekt...

Studia informatyczne i inżynieria biomedyczna, które ukończyłem, popchnęły mnie w stronę Comarchu, bo tu mogę w praktyce wykorzystać wiedzę z obu kierunków. Wybrałem profil embedded i dołączyłem do zespołu, który pracował nad rozwiązaniami dla branży medycznej. Moje zadanie było związane z algorytmami. Na stażu w Comarch uczestnicy dostają zadanie, które pozwala im zrozumieć cały proces wytwarzania oprogramowania. Ja zajmowałem się analizą detekcji upadku dla urządzenia szpitalnego. Algorytm miał za zadanie wyłapać moment, w którym pacjent podłączony do sprzętu upada, co z kolei może oznaczać zasłabnięcie lub omdlenie. Bardzo cieszyłem się z faktu, że dostałem się akurat do Comarch Healthcare, bo ten sektor bardzo mocno łączy informatykę z medycyną. To są projekty, dzięki którym ratuje się ludzkie życie.

Ale teraz pracujesz przy innym projekcie?

Comarch to bardzo duża firma z dużą liczbą zespołów i projektów, w których korzysta się z naprawdę szerokiego wachlarza języków programowania i technologii – od niskopoziomowych do wysokopoziomowych. Każdy znajdzie coś interesującego dla siebie. To nie problem, żeby przejść do projektu, który pasuje do Ciebie bardziej. Obecnie zajmuję się algorytmem, który analizuje pracę serca na podstawie sygnału EKG i pozwala na wykrywanie zaburzenia migotania przedsionków. Sądzi się, że ten brak synchronizacji w pracy przedsionków może przyczyniać się do udaru. Mój zespół zajmuje się przetwarzaniem sygnałów, do analizy których wykorzystujemy klasyczne metody uczenia maszynowego, jak również tzw. deep learning.

Jak wygląda proces powstawania algorytmów?

Na razie proces się jeszcze klaruje. Wcześniej wykorzystywaliśmy przy naszych pracach SCRUM. Natomiast nie do końca sprawdził się on w naszym przypadku. Przy tej metodologii zadania do zrobienia mają być mierzalne w czasie. Natomiast przy pracach badawczo-rozwojowych (R&D, Research and Development) ciężko oszacować np. w jakim czasie osiągniemy określoną skuteczność, czy pojawią się jakieś sytuacje, czynniki opóźniające proces, nowe zmienne, które wpłyną na naszą pracę. W tego typu projektach zdecydowanie lepiej sprawdza się nam KANBAN, który koncentruje się bardziej na dostarczaniu części produktu. Nasza praca jest bardzo twórcza – próbujemy różnych technologii, podejść, które pozwalają na osiągnięcie lepszej skuteczności.

To była odpowiedź ze strony metodologicznej. A jak wygląda samo powstanie algorytmów?

Do przetwarzania sygnałów stosujemy dwa podejścia - jeden z kolegów robi to bardziej klasycznie, analizując sygnały, próbuje znaleźć te ich matematyczne cechy, które z użyciem prostego klasyfikatora byłyby w stanie najlepiej rozróżnić sygnały ze względu na zaburzenia. Natomiast druga część zespołu korzysta z deep learning. To podejście – w odróżnieniu od klasycznego – polega na tym, że cały sygnał wrzuca się na sieć neuronową, a następnie próbuje się dobrać architekturę w taki sposób, aby dało się wyciągnąć z sygnału cechy opisujące i odróżniające zaburzenia.

Skąd nazwa “deep learning”?

W przypadku sieci neuronowych kiedyś pracowało się na dwóch warstwach, w których neurony z danej warstwy były połączone ze wszystkimi neuronami z warstwy kolejnej, tzw. fully-connected. Przy deep-learningu najczęściej korzysta się z wielowarstwowych, głębokich sieci konwolucyjnych, które umożliwiają lokalną ekstrakcję cech. Oczywiście jest to duże uproszczenie, bo nic nie stoi na przeszkodzie w zastosowaniu głębokich sieci z warstwami typu fully-connected, jednak sieci konwolucyjne obecnie są najbardziej popularnym narzędziem.

Korzystacie z uczenia maszynowego przy waszym projekcie. Do czego to jest potrzebne?

Machine learning bardzo przyspiesza naszą pracę. Rozpoczynając projekt, w pierwszej kolejności zapoznajemy się z teoretycznymi podstawami tematu, którym mamy się zająć. Na początku prac nad detekcją migotania przedsionków konsultowaliśmy z lekarzami różne fragmenty sygnału EKG, w których takie zjawisko występowało. Wszystko po to, by prawidłowo wyróżniać charakterystyczne cechy świadczące o pojawieniu się zaburzenia. Dzięki temu mogliśmy uczyć również nasze modele. Dodatkowa wiedza nieraz pozwala lepiej dopasować architekturę oraz wejście sieci neuronowej. Fakt, że wiemy, na jakich elementach sygnału się skupić, pozwala znacznie przyspieszyć prace. Sieć nie musi sama "odkrywać" pewnych rzeczy, kiedy są wcześniej wskazane. Następnym krokiem jest proces prototypowania modelu, no a ten może trwać w nieskończoność - zawsze znajdzie się coś, co można ulepszyć, a to daje kolejne promile w poprawie skuteczności. Promile! Bo im bliżej 100% skuteczności, tym te przyrosty są mniejsze. Dlatego dany projekt uznajemy za ukończony, kiedy postęp jest już niewielki.

Jaki język programowania musi znać algorytmik?

Przy modelowaniu algorytmów korzystam z Pythona. To jest ciekawy, uniwersalny język i warto się go uczyć. Sprawdza się zarówno przy tworzeniu aplikacji webowych, jak i do przetwarzania sygnałów, uczenia maszynowego, można w nim tworzyć też skrypty narzędziowe. To świetny język, bo ma ogrom narzędzi i bibliotek, dzięki temu prototypowanie w nim jest relatywnie szybkie. Natomiast w zespole mamy kolegę, który przepisuje ukończone projekty do C++, bo choć ten język jest o wiele bardziej skomplikowany, to zapewnia szybkie przetwarzanie danych. Z drugiej strony przygotowanie kodu od razu w C++ znacznie wydłużyłoby cały proces powstawania algorytmu.

Twój przykład pokazuje, że dobrze mieć kontakt z uczelnią – jesteś doktorantem. Dlaczego warto się kształcić?

Studia pierwszego i drugiego stopnia bardzo kształtują – jest to czas, w którym można się dowiedzieć, co by się chciało robić. Uczelnia daje mocne podstawy, strukturyzuje wiedzę, uczy stylu pisania kodu w języku oprogramowania. Z mojego punktu widzenia jako doktoranta, warto mieć kontakt z uczelnią, naukowcami, którzy mają ogromną wiedzę, a z którymi można skonsultować niektóre kwestie związane z działką Research and Development. Stałe pogłębianie swojej wiedzy to nieodłączny element pracy w branży technologicznej, bo ta nieustannie się zmienia. Wymusza to bycie na bieżąco, żeby nie pozostać w tyle. Moim zdaniem, praca związana z szeroko pojętą sztuczną inteligencją będzie mieć coraz większy udział w rynku IT, a inżynier specjalizujący się w uczeniu maszynowym będzie równie pożądany przez pracodawców, co dzisiaj programista aplikacji biznesowych.

Jaką radę miałbyś dla tych osób, które dopiero rozpoczynają przygodę z programowaniem?

Ważne, by wybrać sobie technologię, którą warto "drążyć" do samego końca, aby być w niej solidnym. Jak już poznasz jeden język dogłębnie, to zrozumienie kolejnej technologii nie jest problemem. Ważne, by być specjalistą w danej dziedzinie. Studenci często myślą, że jak raz wybierze się daną technologię, to już nie będzie od niej odwrotu. Oczywiście, tak nie jest. Przejście np. z Javy do .NETa nie jest problemem, bo ważniejsze jest podejście do programowania, do tworzenia aplikacji - na pewnym stopniu architektura jest niezależna od technologii.

Dziękujemy za wywiad!

Comarch zaprasza na wakacyjne staże IT. W tym roku do wyboru są następujące profile: staż programistyczny, telekomunikacja, inżynier systemowy, embedded, a także UX/UI.

Rekrutacja trwa do 25 kwietnia 2018 roku!

Zobacz szczegóły: staz.comarch.pl

Zobacz także

Daj się zaskoczyć! Poniżej wylosowałem dla Ciebie pięć wpisów z całego archiwum bloga:

Komentarze

Disqus
Facebook
Pasja informatyki