Od kuchni: model językowy w szpitalu ma wybierać z listy, a nie pisać
Kiedy szpital pyta nas o AI, rozmowa szybko schodzi na to, który model wybrać. W naszych pomiarach ten wybór waży mniej niż dwie inne decyzje: co model dostaje do przeczytania i co mu wolno zrobić. W OpenCare model dostaje mały kawałek danych przygotowany przez kod i wybiera odpowiedź z zamkniętej listy. Tekst piszą kod i człowiek.
Przykład z oddziału. Pielęgniarka kończy dyżur i nagrywa przekazanie: kto gorączkował, komu zmieniono lek, kogo obserwować w nocy. Z nagrania ma powstać notatka w układzie SBAR (sytuacja, tło, ocena, zalecenia). Najprostszy pomysł to oddać całe nagranie modelowi i poprosić o streszczenie. Tak tego nie robimy, a niżej opisujemy dlaczego.
Najpierw kontekst, potem model
OpenCare wie, na jakim oddziale leży pacjent, co ma w historii, jakie ma badania i leki. Zanim cokolwiek trafi do modelu, kod wybiera z tego tylko to, czego potrzeba do danego pytania. Model dostaje zwykle 0,5-2 tys. tokenów (token to mniej więcej fragment słowa), a nie całą dokumentację pacjenta.
Większy kontekst wychodził gorzej na każdym modelu, który mierzyliśmy. Przy notatce lekarskiej sama informacja o profilu oddziału podniosła trafność z 76 do 84 %. Zmiana modelu na lepszy dorzuciła potem 6 punktów. Dobrze przygotowane dane dały więcej niż lepszy model.
Model wybiera, kod pisze
W notatce pielęgniarskiej dzielimy wypowiedź na ponumerowane zdania. Model ich nie przepisuje ani nie streszcza. Wskazuje tylko, gdzie które należy: zdanie 3 do sytuacji, zdanie 5 do zaleceń. Notatkę skleja kod z oryginalnych zdań, więc model nie ma jak niczego przekręcić ani dopisać. Liczby, takie jak saturacja czy wynik NEWS2 (skala wczesnego ostrzegania o pogorszeniu stanu pacjenta, opracowana przez Royal College of Physicians), wyciągają i liczą zwykłe reguły, bez modelu.
Tak samo z kodowaniem rozpoznań według ICD-10. Baza szpitala wyciąga ze słownika krótką listę kandydatów, odfiltrowanych po ważności kodu, płci i wieku pacjenta. Model wybiera numer z tej listy albo odpowiada „brak”. Kod zawsze pochodzi ze słownika, więc model nie poda kodu, którego nie ma. Mierzymy, czy właściwy kod jest w pierwszej trójce propozycji, a wybór zatwierdza lekarz.
Czynności, których model nie może wykonać, odcinamy w kodzie, zanim zapytanie w ogóle do niego trafi. Model nie dostaje możliwości, z której mógłby skorzystać źle.
Dlaczego „podobny” to za mało
Przy ICD-10 zaczynaliśmy od wyszukiwania po podobieństwie znaczenia, popularnego w systemach AI do przeszukiwania dokumentów. Takie wyszukiwanie dobrze znajduje teksty podobne. W kodowaniu podobny kod to zwykle kod sąsiedni, czyli błędny. Dlatego model podaje teraz tylko klucz, po którym baza wyszukuje kandydatów w słowniku. Wyszukiwanie po podobieństwie zostawiamy do luźnego przeszukiwania dokumentów, gdzie „blisko” wystarcza.
Najpierw porządek w słownikach
W medycynie słowniki są gotowe: ICD-10 dla rozpoznań, sekcje SBAR w notatce, słowniki leków. Model pracuje wewnątrz nich. Tam, gdzie słownika nie było, budujemy go sami, a granice kategorii ustawia człowiek na konkretnych przykładach.
Przykład spoza oddziału: w naszym narzędziu do analizy rynku IT szpitali przypisujemy kategorie do 48 tys. części postępowań przetargowych bez modelu, regułami z ustaloną kolejnością sygnałów (nazwa części, opis, przedmiot zamówienia, kod CPV). Każde przypisanie ma pewność i dowód, a przebudowa całości trwa około 15 sekund. Model wchodzi dopiero tam, gdzie reguły nie dają rady. Zanim uporządkowaliśmy kategorie, 86 % rekordów lądowało w „inne”.
Co wyszło w pomiarach modeli
Modele mierzymy na zestawie wzorcowym: przypadki z ustaloną poprawną odpowiedzią, a do ocen tekstowych osobny model w roli sędziego.
Modele trenowane pod medycynę nie wypadły u nas lepiej niż ogólne.
Kompresja modelu, która pozwala uruchomić go na słabszym sprzęcie, kosztuje kilkanaście punktów trafności. Ten sam model trafiał rozpoznania w 57 % przypadków po kompresji do 4 bitów i w 73 % w pełnej precyzji. Szpital, który chce uruchomić model u siebie, ma dwie drogi: więcej mocy obliczeniowej albo krótszy kontekst. Najlepiej obie.
Ten sam model bywa dobry w jednej czynności i ryzykowny w innej. Jeden z testowanych modeli świetnie wyciągał dane z dokumentów, a przy swobodnym przepisywaniu tekstu w kilku procentach przypadków gubił „nie”. W dokumentacji medycznej „podano” i „nie podano” to dwa różne zdarzenia. Dlatego model do każdej czynności wybieramy osobno, pomiarem, a tam, gdzie liczy się każde słowo, model nie pisze.
Jak to wygląda w skrócie
Kod przygotowuje mały kontekst z danych szpitala. Model wybiera z zamkniętej listy albo mówi „brak”. Liczby liczą reguły. Tekst składa kod z oryginału. Człowiek zatwierdza. Modele porównujemy na zestawie wzorcowym, a nie na wrażeniu.
Jeśli w Waszym szpitalu pojawia się pomysł na AI, zacznijmy od pytania, które zadajemy zawsze: którą czynność personelu chcecie odciążyć i po czym poznacie, że odpowiedź modelu jest dobra?