Danych nigdy nie jest za dużo. O tym, jak algorytm rozpoznaje EKG

Dzisiejsza medycyna chętnie korzysta z rozwiązań w postaci algorytmów, które zdarza się, że ratują życie. Jak powstają tego typu projekty i w jaki sposób realizują swoje zadania? O to zapytaliśmy Marcina Wiśniewskiego, Head of Data Science Healthcare Team w Comarch, który do zespołu poszukuje stażystów gotowych na pracę z machine learningiem i analizą danych. Więcej na temat staży dowiecie się tutaj.

Co ma wpływ na szybkość rozpoznania EKG?

Jeśli chodzi o rozpoznawanie EKG przez lekarzy, to duży wpływ ma oczywiście doświadczenie osoby czytającej wynik. Nie należy jednak bagatelizować narzędzi, którymi się posługuje. Gdy mamy do przejrzenia sygnał składający się z 12 kanałów o długości 24 godzin, kluczowe jest oprogramowanie, na jakim pracuje lekarz. W przypadku algorytmów natomiast, ważne jest to, jak zostały one napisane i na jakiej maszynie się wykonują. Rozpoznawanie zaburzeń w sygnale EKG to wykonanie szeregu czasem bardzo skomplikowanych operacji.

Dlatego bardzo istotne jest również to, jak te algorytmy zostały zaimplementowane, ponieważ te same z nich można napisać w bardziej lub mniej optymalny sposób. Niekiedy przyspieszenie wykonania może być kilkunasto- lub kilkudziesięciokrotne! Ważny jest też sprzęt, na którym takie algorytmy mają się wykonać. Chcąc wykorzystywać algorytmy sztucznej inteligencji dla dużej liczby pacjentów, zmuszeni jesteśmy do używania kart graficznych. Przyspieszenie algorytmu na takiej karcie w porównaniu do wykonania na zwykłym procesorze sięga kilkudziesięciu lub czasem kilkuset razy.

Wyniki badań z różnych ośrodków badawczych, laboratoriów mają różną jakość? Przeszkadza to w analizie?

Mamy to szczęście, że w obecnych czasach sygnały cyfrowe w tego typu badaniach to standard. Natomiast jakość opisu danych jest bardzo istotna z punktu widzenia uczenia maszynowego. My jednak, w sporej części, pracujemy na ogólnodostępnych bazach zawierających opisane dane. Każdy przykład jest opisany i zweryfikowany przez kilku lekarzy, co w dużym stopniu eliminuje błędne dane wejściowe. Jest to taki standard dla pracy z sygnałami EKG. Te bazy są też konieczne do weryfikacji algorytmów przy certyfikacji wyrobów medycznych analizujących elektroencefalografy. Współpracujemy w tym celu z lekarzami z naszej placówki (iMED24) oraz, przy okazji różnych projektów, z lekarzami z zewnętrznych klinik. Opisy sygnałów pochodzące z takiej współpracy są na całkiem wysokim poziomie. Zdarzały się jednak przypadki, że algorytmy miały odmienne zdanie niż lekarze i po późniejszej weryfikacji okazało się, że to właśnie one miały rację!

W jaki sposób pozyskujecie i rozumiecie dane o “poprawnym działaniu” człowieka? Ludzie są różni: dla jednego normą będzie jeden rytm serca, dla drugiego inny.

Jeszcze niedawno staraliśmy się zrozumieć, w jaki sposób lekarze rozróżniają dane zaburzenie od zapisu zdrowego pacjenta. W tym momencie może to zrobić za nas maszyna. Niestety nie ma nic za darmo, do takiej pracy niezbędne są bardzo duże zbiory danych, czas oraz zasoby sprzętowe. Algorytmy są w stanie same wyłapać różnice tylko na podstawie opisanych danych, dlatego tak ważna jest ich jakość i ilość. Pracujemy na dziesiątkach milionów przykładów (zebranych z kilku tysięcy pacjentów), więc proces uczenia trwa czasami kilka/kilkanaście dni. Oczywiście, nie zawsze mamy taką możliwość. Niekiedy nie mamy tylu danych, wtedy do akcji wkracza nasza inteligencja i sami staramy się wyszukać takie miary, które najlepiej opisują dane zaburzenie. Wtedy też pomocne są konsultacje z lekarzami. Nie znaczy to, że nie ma tam algorytmów uczących. Mając takie miary, które opisują dane zaburzenie, decyzję podejmują algorytmy uczenia maszynowego. Nie są one jednak już tak bardzo skomplikowane, jak głębokie sieci neuronowe, dosyć mocno kojarzone współcześnie właśnie z AI.

Czym jest kształt bicia serca, jakie jego czynniki wnoszą istotne informacje? Jak można je interpretować?

Kształt bicia serca to taki trochę kolokwializm. Dokładnie chodzi o kształt zespołu załamków w zapisie EKG. Każde uderzenie serca w takim zapisie to zespół załamków. Zazwyczaj to P, Q, R, S, T.

Źródło: Wikipedia „Zespół QRS

Czasem zapis EKG o dobrej jakości pozwala dostrzec dodatkowy załamek U. Każdy załamek to odpowiednia faza uderzenia serca. Za pomocą tych załamków można zweryfikować czy serce pracuje poprawnie, czy jest jednak w jakimś stopniu zaburzone.

Jak jest klasyfikowany sygnał? Czy jest to metoda deterministyczna, czy też oparta o sztuczną inteligencję?

Nasze algorytmy są deterministyczne, to znaczy, że to samo wejście da tą samą odpowiedź. Jednak ta odpowiedź jest otrzymywana m.in. poprzez algorytmy AI/ML.

W jaki sposób, od strony technicznej, wykonujecie analizę? Zaczynacie od krawędziowania?

Posiadamy algorytmy do wykrywania zespołów QRS (uderzeń serca), oceny jakości sygnału i do detekcji różnych zaburzeń serca (m.in. wykrywanie patologicznego kształtu zespołu QRS oraz detekcji migotania przedsionków).

Jednym z czynników, które algorytm bierze pod uwagę, jest rytm bicia serca. Jaki procent dokładności takiej analizy jesteście w stanie zapewnić?

Mogę powiedzieć, że na jednej z baz służących do weryfikacji przy procesie certyfikacji, skuteczność sięga u nas powyżej 99% poprawnych rozpoznań.

Jak określacie skuteczność algorytmów? Czy to jakaś popularna metoda, czy też macie swoją autorską? Jak wypadacie na tym polu na tle konkurencji?

W zależności od problemu konieczne jest ustalenie miary, dzięki której będziemy porównywali swoje modele. Najlepiej, gdy jest to jedna liczba, gdyż łatwiej ją ustawić w rankingu. Dla algorytmów do EKG ważna jest czułość i pozytywne przewidywanie. Czułość to informacja, jaki procent spośród wszystkich prawdziwych zaburzeń wykrył nasz algorytm, pozytywne przewidywanie natomiast to informacja, ile spośród zgłoszonych przez algorytm zaburzeń to prawdziwe odstępstwa od normy. Są to dwie liczby, więc czasem jest kłopot z ich porównaniem, dlatego pomocna w tym jest miara F1, która jest średnią harmoniczną powyższych.

Wyniku skuteczności działania algorytmów nie da się osiągnąć tradycyjnymi metodami?

Trzeba zrozumieć, że określenie AI aktualnie jest mocno kojarzone z sieciami neuronowymi, ale to myślenie nie do końca poprawne. Przyznaję jednak, że głębokie sieci neuronowe pozwoliły przeskoczyć nam pewną barierę skuteczności, której nie mogliśmy przejść innymi metodami.

Warto podkreślić, że głębokie sieci neuronowe (kojarzone z AI) to nie jest narzędzie, które działa cuda. Tak jak napisałem wcześniej, muszą zaistnieć pewne okoliczności, żeby w ogóle myśleć o rozbudowanych modelach uczenia maszynowego. Przede wszystkim konieczna jest spora ilość danych. Inaczej nic z tego nie będzie! Jeśli tych danych nie mamy, to lepszym rozwiązaniem będą inne metody uczenia maszynowego.

Siła produktu tkwi w algorytmach czy w urządzeniu rejestrującym?

Siła produktu tkwi w systemie. Algorytmy będą bezużyteczne, jeżeli dostaną sygnał złej jakości. Koledzy projektujący urządzenie, ale też i cały system, zrobili kawał dobrej roboty, żeby to wszystko działało sprawnie!

Jakie problemy podczas tworzenia algorytmów np. do pracy nad analizą EKG, są najbardziej odczuwalne?

Najczęściej jest zbyt mało danych. Ich nigdy nie jest za dużo, a już w szczególności tych dotyczących różnych zaburzeń. Sam proces opisu danych przez lekarzy jest czasochłonny i kosztowny, więc niestety nie możemy poprosić ich o opisanie np. 10 tys. pacjentów, bo to są koszta i czas. Drugim problemem są zasoby sprzętowe. Szczęśliwie u nas w sektorze mamy bardzo dobre maszyny, ale sama technologia jest jeszcze na takim poziomie, że uczenie trwa np. kilka dni. Musimy też mieć na uwadze ograniczenia sprzętowe, takie jak pamięć RAM na GPU i tak pisać kod, aby mógł wykonać się na tym sprzęcie, który mamy.

Jak wygląda przygotowanie danych, z których algorytm “się uczy”?

Proces ten musi być bardzo przemyślany, gdyż ma on kluczowy wpływ na dalsze wyniki. Nieprzemyślane przetworzenie takich danych może spowodować, że sieci neuronowe, mówiąc w języku branżowym, „eksplodują” podczas uczenia lub ich uczenie zaniknie, dając niezadowalający efekt. Powiedziałbym, że to zadanie jest na równi ważne z samym projektowaniem sieci neuronowych, a jeśli mówimy o starszych algorytmach uczenia maszynowego, to zadanie zdecydowanie dominujące w trakcie tworzenia modelu.  

W jakim stopniu te dane wymagają czyszczenia?

W naszym przypadku nie jest to duży procent danych, jednak czasem trzeba zweryfikować, czy zapisy nie posiadają „zerowego” sygnału, przez co nie są za bardzo zaszumione.

Przygotowanie zbiorów do uczenia i testowania to duży problem?

Gdy mamy już przetworzony cały zbiór danych, to selekcja na zbiór uczący, testowy i walidacyjny nie jest już wielkim problemem. Aczkolwiek trzeba mieć na uwadze liczebność klas (zaburzeń), czy reprezentacje poszczególnych baz.

Jaka jest proporcja czasu przygotowania danych w stosunku do pozostałych etapów projektu?

Ten konkretny etap stanowi bardzo duży procent naszej pracy. W przypadku algorytmów wymagających bardziej skomplikowanych ekstrakcji cech jest to główna praca podczas tworzenia modelu. Głębokie sieci neuronowe dają tę przewagę, że taka ekstrakcja cech dzieje się automatycznie, co nie znaczy, że ten etap możemy pominąć. Wciąż jest on ważny (kluczowy) przy tworzeniu modeli.

Na ile duże są dane i czy pozwalają na analizę sygnału w czasie rzeczywistym?

Aktualnie nie mamy takich wymagań, aby algorytmy działały w czasie rzeczywistym. Ważniejsza jest dla nas skuteczność rozpoznawania. W tym momencie rozwijamy taki produkt, w którym nasza analiza wykonuje się w chmurze, a nie na urządzeniu. Dlatego nie skupiamy się na aż takiej optymalizacji czasowej.

Opowiedz proszę o zespole stojącym za tym projektem. Z ilu osób się składa?

W tym momencie mamy zespół ośmioosobowy, podzielony na grupy projektowe, implementacyjne i zapewniające narzędzia, i opiekujące się serwerami. Podział jest płynny i taki trochę nieformalny. Mamy bardzo mocne kompetencje, czego dowodzi fakt, że w zespole mamy dwie osoby z tytułem doktora inżyniera oraz dwie osoby robiące doktoraty. Pozostałe osoby w zespole to również świetni fachowcy w swojej dziedzinie!

Jakich narzędzi używacie w pracy?

Do projektowania głównie Python i Matlab. W przypadku produktyzacji ponownie Python i dodatkowo C++. Do nich dochodzą różne biblioteki i toolboxy potrzebne do budowania sieci neuronowych (np. TensorFlow, numpy itp.), jak i do przetwarzania sygnałów (Matlab DSP Toolbox).

Często jest tak, że wchodząc w nową branżę, wiele rzeczy nas zaskakuje. Co zaskoczyło Ciebie, kiedy pierwszy raz wszedłeś w branżę AI?

W moim przypadku to nie było tak, że “nagle” wszedłem w branżę AI. Tak naprawdę to zacząłem się tym interesować już na studiach kilka lat temu, a swoją wiedzę dosyć znacznie poszerzyłem w trakcie prac nad moim doktoratem i zaraz po jego zakończeniu. Ciekawym zjawiskiem był efekt boomu medialnego po opublikowaniu pierwszych artykułów na temat głębokich sieci neuronowych, które (w końcu) pobiły inne algorytmy w zadaniu rozpoznawania obiektów na zdjęciach. Nagle sieci dostały „drugie życie” i stały się synonimem AI, mimo że wcześniej ustępowały innym algorytmom. Postęp technologiczny dał im jednak drugą szansę w dziedzinie uczenia maszynowego i sieci neuronowe to w pełni wykorzystały (no dobra, ludzie to wykorzystali!).

Jak byłeś przygotowany do pracy ze sztuczną inteligencją? Jakie umiejętności posiadałeś?

Moją pracę z automatycznym rozpoznawaniem zaburzeń zacząłem od wykorzystania algorytmów Cyfrowego Przetwarzania Sygnałów (DSP). Miałem świetnego promotora mojej pracy magisterskiej, a później rozprawy doktorskiej. Prof. dr hab. inż. Tomasz P. Zieliński jest wybitnym specjalistą w tej dziedzinie, a ja miałem to szczęście się od niego uczyć. Pierwsze moje prace nad takimi systemami bardziej skupiały się na przetwarzaniu sygnałów niż na samych klasyfikatorach. Kolejną osobą, która „otworzyła mi oczy” na świat uczenia maszynowego, jest prof. dr hab. inż. Witold Dzwinel. Pokazał mi – mówiąc w dużym skrócie – że część rzeczy, które robię ręcznie, może zrobić algorytm. Od tego zaczęła się moja przygoda z uczeniem maszynowym.

Dziś do zespołu szukasz stażystów i pracowników. Dla kogo to będzie idealne zajęcie?

Poszukujemy przede wszystkim osób, które chcą się rozwijać w kierunku sztucznej inteligencji. Osób zafascynowanych możliwościami, które stawia przed nami ta rozwijająca się w niesamowitym tempie technologia. Studentów, dla których zajęcia na uczelni związane z uczeniem maszynowym nie są kolejnymi zajęciami „do zaliczenia”. Bardzo przydatną cechą charakteru w tej dziedzinie IT jest ciekawość, upór i cierpliwość. Na tym stanowisku świetnie odnajdą się nie tylko studenci informatyki, ale też np. matematyki stosowanej — AI to przede wszystkim algorytmy, więc pasja do liczenia będzie tu wielkim atutem!

Czy wiedza np. medyczna, telekomunikacyjna, finansowa jest konieczna w tej pracy?

Nie. Zdecydowanie ważniejszy jest dla nas otwarty umysł i wiedza matematyczna lub wiedza z dziedziny uczenia maszynowego. Jesteśmy jednocześnie świadomi, że wielu naszych potencjalnych stażystów nigdy do czynienia z technologiami AI/ML nie miała. Tak więc spokojnie – wszystkich najważniejszych w tej dziedzinie aspektów nauczymy Was już na stażu!

Jaką wiedzę dotyczącą algorytmów uczenia maszynowego powinni posiadać kandydaci?

Tak jak wspomniałem, nie jest ona wymogiem koniecznym, ale mile widziana byłaby wiedza ogólna dotycząca procesów tworzenia modeli machine learning oraz algorytmów uczących. Zwłaszcza ta druga ułatwia w sposób znaczny późniejszą pracę.

Czego dowiedzą się stażyści?

Przede wszystkim od samego początku trwania stażu zostaną oni włączeni w realny projekt, co pozwoli im wykorzystać zdobytą na studiach wiedzę w praktyce! Udział w stażu na pewno pomoże im też w rozwoju wiedzy teoretycznej, którą będą mogli wykorzystać później na studiach. Ale, co najważniejsze, przekonają się, czy rozwój w kierunku AI/ML to jest rzeczywiście to, co interesuje ich najbardziej.

Jeżeli chcesz przekonać się, jakie praktyczne zastosowania w naszej rzeczywistości ma już dziś sztuczna inteligencja i uczenie maszynowa  oraz chcesz rozpocząć swoją karierę w branży IT- nie zwlekaj! Aplikuj na nasz staż AI/Ml do 23 kwietnia!


Marcin Wiśniewski. Head of Data Science Healthcare Team w Comarch. Zawodowo jestem kierownikiem zespołu zajmującego się rozwojem algorytmów AI w dziedzinie medycyny (Healthcare). W Comarch pracuję od ponad 6 lat. W 2014 otrzymałem tytuł doktora inżyniera za pracę na temat wykrywania zaburzeń astmatycznych w badaniu cyfrowym stetoskopem. Wolny czas lubię spędzać z moją rodziną. Moją pasją jest rower, a raczej rowery. Jeżdżę głównie na rowerze MTB, ale od tego sezonu odkrywam też zalety jazdy na szosie.

Zdjęcie główne artykułu pochodzi z unsplash.com.

Patronujemy

 
 
Polecamy
DevOps to must have każdej firmy. Historia Pawła Kubicy