Aktualizacje

Jak przebudowaliśmy nasz silnik do rekomendacji zdrowotnych

Author avatar

Agnieszka Górecka

Ostatnia aktualizacja21 sierpnia 2024

Jak przebudowaliśmy nasz silnik do rekomendacji zdrowotnych

Pokazujemy jak przebudowaliśmy nasz silnik związany z komponentem Informacje. Kulisy budowania modeli i podjętych kompromisów, aby móc przedstawić spersonalizowane wskazówki w czasie rzeczywistym.

Od samego początku misja Aidlaba była jasna: zbierać, porządkować i analizować dane zdrowotne, aby pomagać wydłużać ludzkie życie poprzez wykrywanie wzorców, zależności i trendów, które mogą wpływać na długowieczność. Zaczęliśmy od aplikacji mobilnej Aidlab. Po połączeniu z pasem piersiowym Aidlab pozwalała ona rejestrować surowe sygnały, takie jak elektrokardiogram (EKG), i wyznaczać na ich podstawie użyteczne wskaźniki wyższego poziomu. Na przykład z surowego sygnału EKG obliczamy odstępy między kolejnymi uderzeniami serca (odstępy RR). Na ich podstawie wyznaczamy zmienność rytmu serca, czyli HRV — ważny wskaźnik zdrowia układu krążenia i odporności na stres.

Na tym nie poprzestaliśmy. Wprowadziliśmy pojęcie danych obliczanych, które powstają przez łączenie wielu zbiorów danych. Na przykład, aby dokładnie oszacować tempo spalania kalorii, uwzględniamy tętno (wraz z tętnem maksymalnym i spoczynkowym), masę ciała, bieżącą aktywność oraz płeć. Z kolei zdarzenia takie jak kaszel można wykrywać, analizując jednocześnie poziom dźwięku i ruchy klatki piersiowej.

Przykładowe zależności między różnymi rodzajami danych: dane surowe zaznaczono na różowo, dane wyższego poziomu na żółto, a wskaźniki obliczane na niebiesko.

To stworzyło podstawy Aidlab Teams — usługi, która porządkuje i wizualizuje złożone dane w sposób niekiedy zbyt zaawansowany dla aplikacji mobilnych.

Wizualizacja danych

Aidlab Teams

Zbieranie i prezentowanie sygnałów fizjologicznych oraz zdarzeń było ważne. Szybko jednak zrozumieliśmy, że poznanie własnego samopoczucia wymaga czegoś więcej niż śledzenia liczb.

W 2021 roku zaczęliśmy pracę nad silnikiem analitycznym opartym na regułach. Miał pomagać użytkownikom rozumieć dane poprzez proste wnioski dotyczące ich codziennych aktywności i nawyków. Zaprojektowaliśmy go tak, by zarówno informował, jak i motywował — zgodnie z naszą misją wspierania zdrowia.

Aktywność fizyczna jako droga do długowieczności

Przy ograniczonych zasobach i zgodnie z zasadą Pareta wiedzieliśmy, że musimy skupić się na obszarach, które mogą mieć największy wpływ na długowieczność przy rozsądnym nakładzie pracy inżynierskiej. Aktywność fizyczna wyróżniała się pod tym względem: stosunkowo prosta analiza pozwalała wspierać istotne korzyści zdrowotne, a jej znaczenie potwierdzało wiele badań o powtarzalnych wynikach.

Aktywność jest jednym z kluczowych elementów poprawy ogólnego stanu zdrowia. Wzmacnia organizm, zwiększa jego odporność i poprawia wydolność układu krążenia. W rezultacie tętno spoczynkowe spada, co wskazuje na lepszą kondycję serca. Kiedy widzisz bezpośredni wpływ codziennych ćwiczeń na organizm, łatwiej podejmujesz świadome decyzje dotyczące stylu życia.

Analizowaliśmy na przykład średnią dzienną liczbę kroków użytkowników w ostatnich miesiącach i porównywaliśmy ją z wcześniejszymi okresami. Ten prosty trend pozwalał wielu osobom zauważyć istotne zmiany w codziennej rutynie.

Od reguł do spersonalizowanych wniosków

Szybko dostrzegliśmy jednak ograniczenia naszego silnika analitycznego. Aby lepiej rozumieć zdrowie użytkownika, musieliśmy wykrywać bardziej złożone wzorce. Na przykład niska liczba kroków przez siedem kolejnych dni może sugerować chorobę, zmianę codziennych zwyczajów lub spadek motywacji. Ręczne programowanie takich reguł stawało się czasochłonne i podatne na błędy, zwłaszcza gdy trzeba było uwzględnić złożoność indywidualnych zachowań.

Ta praca pokazała nam, że pojedynczy punkt danych nie wystarczy. Potrzebny jest system, który potrafi interpretować wiele czynników jednocześnie, pomaga wyjaśnić zachodzące zmiany i zachęca do działania wtedy, gdy ma to największe znaczenie. Właśnie po to powstało AI Insights.

Sztywne systemy oparte na regułach informują jedynie o tym, co się dzieje. AI Insights wykrywa także subtelne zmiany wskaźników i łączy je z istotnymi czynnikami, takimi jak zmiany codziennych zwyczajów czy wzorców aktywności. Dzięki temu otrzymujesz bardziej przydatne wnioski, które uwzględniają kontekst.

Przykłady wniosków AI Insights

Jeśli zwykle zaczynasz poranek od spaceru do kawiarni, ale ostatnio z niego rezygnujesz, nasz zaktualizowany silnik potrafi wykryć tę zmianę. Może zasugerować, że zmienił się Twój plan dnia lub poziom energii — przyczyną może być stres w pracy, brak snu, a nawet wczesne oznaki wypalenia lub choroby. Dzięki wczesnemu wykrywaniu takich zmian AI Insights może przekazać spersonalizowane sugestie: przypomnieć o krótkim spacerze albo zaplanowaniu przerwy w ciągu dnia. Przypomina to wsparcie trenera zdrowia, który zauważa, kiedy potrzebujesz zachęty, zanim samodzielnie zdasz sobie z tego sprawę.

AI Insights pomaga też wytrwać w postanowieniach. Motywacja to nie tylko wyznaczanie celów, lecz także odpowiednie zachęty do ich realizacji. Delikatne przypomnienie o ruchu czy docenienie osiągniętego etapu pomaga utrzymać motywację i konsekwentnie dążyć do celu.

Jak działa AI Insights

Wykorzystujemy duże modele językowe (LLM) do przetwarzania i interpretacji złożonych danych zdrowotnych w sposób, z którym nasz poprzedni system sobie nie radził. Osoby znające te modele wiedzą jednak, że ich obliczenia bywają niedokładne: modele są podatne na halucynacje i nie zostały zaprojektowane do precyzyjnych zadań liczbowych. Dlatego uzupełniamy system oparty na LLM o obliczenia wykonywane wcześniej.

Czy LLM wie w ogóle, ile liter „r” jest w słowie „raspberry”?

Modele LLM dobrze rozpoznają wzorce w uporządkowanych danych wejściowych. Surowe dane zdrowotne, takie jak EKG czy sygnał dźwiękowy, wymagają wstępnego przetworzenia, zanim trafią do modelu. Wzorce wyłaniające się z tych zbiorów — na przykład zmiany poziomu aktywności lub odchylenia wskaźników zdrowotnych w czasie — przypominają jednak zależności kontekstowe, które LLM potrafią dobrze interpretować. Nie powierzamy więc modelowi LLM przetwarzania surowych danych. Zamiast tego przekazujemy mu uporządkowane, zagregowane dane, w których może interpretować i zestawiać zależności między różnymi wskaźnikami i okresami. Więcej o tym za chwilę.

LLM zapewniają również dużą elastyczność. Interpretowane przez nas dane nie istnieją w próżni: są mocno związane z codziennymi zwyczajami, stylem życia i poziomem stresu. Tradycyjne modele AI często działają osobno, zoptymalizowane pod kątem konkretnych rodzajów danych — sami zetknęliśmy się z tym ograniczeniem. LLM pozwalają nam analizować różnorodne zbiory jednocześnie i uwzględniać szerszy obraz.

Nie powierzamy jednak modelom językowym wszystkich zadań. Zachowaliśmy część wcześniejszego systemu opartego na regułach. Nadal używamy tych samych mechanizmów do pozyskiwania i przetwarzania najistotniejszych danych, w tym niektórych obliczeń wstępnych, które zapewniają dokładność i wiarygodność. Na przykład często wyznaczamy średnie w określonych przedziałach czasu, uwzględniając poziom aktywności użytkownika lub dane z czujników. Następnie porządkujemy tak zagregowane dane i przekazujemy je modelowi LLM.

Uproszczony przebieg procesu wygląda tak:

  1. Przygotowanie danych wyższego poziomu i danych obliczanych na podstawie danych surowych

    Na tym etapie wyodrębniamy informacje najistotniejsze dla dalszej analizy. Surowych danych nie można przekazać bezpośrednio do LLM, ponieważ modele te nie są przeznaczone do przetwarzania nieuporządkowanych danych ani danych z czujników o wysokiej częstotliwości, np. powyżej 1 Hz, takich jak pomiary akcelerometru. Zamiast tego wyznaczamy opisane wcześniej dane wyższego poziomu i dane obliczane, stosując m.in. uśrednianie, filtrowanie i próbkowanie. Część obliczeń wykonujemy bezpośrednio na urządzeniu Aidlab, aby ograniczyć ilość przesyłanych danych. Nie mieliśmy zresztą dużego wyboru — Bluetooth ma swoje ograniczenia. W przypadku dźwięku wyodrębniamy na przykład kluczowe parametry, określane jako sound features, które opisują najważniejsze cechy sygnału.

  2. Agregacja w przedziałach czasu

    Następnie jeszcze bardziej upraszczamy dane, grupując je w różnych przedziałach czasu. Dzięki temu możemy wychwytywać trendy w różnych okresach, na przykład liczbę kroków z ostatniego tygodnia, miesiąca lub roku. Możemy też poświęcić więcej uwagi okresom ćwiczeń fizycznych lub pomiarów kontrolnych wykonywanych za pomocą Aidlaba. Opracowaliśmy również mechanizm decyzyjny, który dostosowuje analizę do zdarzeń dotyczących konkretnego użytkownika, aby dostarczać trafniejsze wnioski i praktyczne wskazówki.

  3. Porządkowanie danych i zapisywanie ich w pamięci podręcznej

    Po agregacji porządkujemy dane i zapisujemy je w z góry określonych formatach. Dzięki temu są dobrze zorganizowane i łatwo przechowywać je w pamięci podręcznej.

  4. Przetwarzanie danych i generowanie wyników

    Na tym etapie dane trafiają do modelu. LLM interpretuje je i generuje wynik w uporządkowanym formacie JSON, zgodnie z określonym schematem. Następnie sprawdzamy wyniki według ustalonych reguł i miar, aby zapewnić wiarygodność wniosków. Wyniki również zapisujemy w pamięci podręcznej i odświeżamy co godzinę. Pozwala to utrzymywać aktualną analizę bez nadmiernego obciążania systemu.

Co daje ta zmiana

Z prostego narzędzia pokazującego pojedyncze dane powstał system, który dostarcza głębszych wniosków dzięki porównaniom między grupami użytkowników. Możemy na przykład pokazać, jak tętno spoczynkowe różni się w zależności od wieku i płci. Użytkownicy mogą dzięki temu zestawić własne wyniki ze średnimi dla szerszej populacji i dowiedzieć się, czy ich tętno spoczynkowe mieści się powyżej, czy poniżej typowego zakresu dla ich grupy demograficznej.

AI Insights jest też dostępne przez Aidlab API, dzięki czemu programiści i badacze mogą włączyć tę funkcję bezpośrednio do swoich aplikacji.

Prywatność Twoich danych

Stale pracujemy nad tym, aby korzystanie z aplikacji było wygodniejsze. Im więcej system się uczy, tym lepiej rozumie, jak się z Tobą komunikować. Z każdą aktualizacją AI Insights staje się sprawniejsze, bardziej intuicyjne i lepiej dopasowane do Twoich potrzeb. Jednocześnie poważnie traktujemy prywatność. Nigdy nie wykorzystujemy danych pozwalających zidentyfikować osobę do celów niezwiązanych z poprawą jakości korzystania z usługi. Niektóre funkcje, takie jak oś czasu, która pomaga dokładnie określić codzienne zwyczaje, wymagają osobnego włączenia. Możesz więc zdecydować, jak wiele informacji chcesz udostępnić.