Rozpoznawanie zaburzeń psychicznych z wykorzystaniem sztucznej inteligencji

Logo serwisu MindMatch

Autorki: Zofia Smoleń i Patrycja Machno

Do 70% pacjentów porzuca psychoterapię przed jej zakończeniem (Garfield 1994). Dlaczego? Większość jako przyczynę wskazuje nieodpowiedniego terapeutę, który nie rozumie ich problemu, albo nie ma doświadczenia w jego leczeniu. Wydaje się zatem, że kluczem do rozwiązania problemu osób odchodzących z terapii byłoby systematyczne dopasowywanie terapeutów (doświadczeniem, specjalnością) do pacjentów biorąc pod uwagę konkretne problemy tych ostatnich. Jednak, aby pacjent dowiedział się jaki jest jego problem i jakiego terapeuty ma szukać, musi najpierw pójść do terapeuty. Powstaje pytanie: czy ten element można w jakimś wymiarze zautomatyzować.

W artykule poniżej opisujemy naszą (udaną, nieskromnie dodając) próbę budowy chatbota rozpoznającego zaburzenia psychiczne oraz dopasowującego psychologów, psychiatrów, psychoterapeutów, pedagogów czy seksuologów, którzy się najlepiej znają na leczeniu tych zaburzeń. Mechanizm ten nie wyklucza omyłek i przekierowania przez człowieka do innego specjalisty, gdyby wskazanie bota okazało się chybione. Ale istotnie przyspiesza proces wyboru specjalisty, odciążając personel ludzki na tym etapie wstępnej preselekcji.

Chatbota można przetestować tu.

 


W tekście przedstawiono narzędzie, które ma być odpowiedzią na potrzeby związane trudnościami w wyborze specjalisty zajmującego się problemami psychicznymi. Należy podkreślić, że nie jest to zweryfikowany test diagnostyczny o naukowo potwierdzonej skuteczności. Fundamentalnym założeniem tego narzędzia jest to, że ma wspomóc w doborze profesjonalnego terapeuty, a nie terapeutę zastąpić. Użycie go nie powinno zastąpić ani opóźnić wizyty u specjalisty psychiatry lub psychologa dla osób, które czują, że z jakiegokolwiek powodu jej potrzebują. Np.: Studencki Ośrodek Wsparcia i Adaptacji SOWA.


 

Jak automatycznie rozpoznawać zaburzenia psychiczne?

Stworzono już wiele rozwiązań (zazwyczaj formularzy wielokrotnego wyboru) automatycznie diagnozujących zaburzenia psychiczne. Zazwyczaj koncentrują się one na jednym lub kilku zaburzeniach psychicznych, żadne z nich nie sprawdza objawów dla każdego możliwego zaburzenia psychicznego.

Dlaczego? Taki formularz musiałby pytać o każdy objaw każdego z tych zaburzeń. Przeskanowanie całości samopoczucia pacjenta i sklasyfikowanie objawów pod kątem wszystkich potencjalnych zaburzeń wymagałoby bardzo długiego formularza. Typowy użytkownik nie miałby cierpliwości wypełnić nawet 10% wszystkich pytań. Co więcej, zaburzenia psychiczne (mimo, że w większości są sklasyfikowane po objawach, a nie przyczynach), rzadko kiedy mają unikalne obawy. Przykładowo, część objawów schizofrenii jest przypisywana też depresji, a część schizoidalnemu zaburzeniu osobowości. Wszystko to tylko utrudnia właściwą klasyfikację.

Mimo to, psychiatrzy znaleźli sposób na postawienie diagnozy po rozmowie z pacjentami, bez zanudzenia ich milionem pytań, na które odpowiedź brzmi najczęściej „nie”. Ich sekret polega na zadawaniu pytań otwartych: „Jak się pani czuje?”, „Co tu pana sprowadza?” itd. Pacjent odpowiada skupiając się na objawach, które mu lub jej najbardziej przeszkadzają. Nikt nie musi poruszać nieistotnych objawów chorób, które pacjenta nie dotyczą. Na podstawie tych symptomów, u psychiatry lub psychologa kiełkuje hipoteza dotycząca problemu pacjenta. Aby ją potwierdzić zadaje pytania pogłębiające, albo pyta o inne objawy lub tło pacjenta. Na koniec, po potwierdzeniu swojej początkowej hipotezy, jest w stanie postawić diagnozę.

 

Zatem jak stworzyć algorytm imitujący psychiatrę?

Kluczem do algorytmu, który mógłby trafnie i jednocześnie wygodnie diagnozować zaburzenia psychiczne jest oparcie go na analizie tekstu. Analiza odpowiedzi otwartych długo była poza naszym zasięgiem. Ale staje się coraz bardziej wykonalna od czasu rozwoju Natural Language Processing (dużego działu badań nad sztuczną inteligencją, koncentrującego się na przetwarzaniu tekstu), a w szczególności klasyfikacji tekstu. W tym artykule przedstawiamy podejście, które wybrałyśmy, tworząc chatbota imitującego psychiatrę. Nasz chatbot psychiatryczny ocenia prawdopodobieństwo występowania zaburzeń psychicznych i ich źródeł, a następnie dopasowuje psychologów, psychoterapeutów lub psychiatrów, którzy mają najlepsze doświadczenie w tym obszarze.

 

Wybór modelu klasyfikacji tekstu

Zazwyczaj przy budowie algorytmu opartego sztucznej inteligencji pojawia się pytanie: trenować swój model, czy wykorzystać jeden z istniejących „gotowców”, czyli wytrenowanych już przez kogoś modeli. Czym jest trenowanie modelu?  Załóżmy, że chcemy zbudować bardzo prosty model, który przewiduje typ lasu na podstawie typu gleby na której rośnie. Wybieramy zatem architekturę modelu (może być to znana pewnie większości czytelników regresja liniowa, lasy losowe, czy sieci neuronowe), dajemy jej typ gleby i każemy tak z niej przewidywać typ lasu aby błąd tych przewidywań był jak najniższy. Ten etap dopasowywania sposobu przewidywania jest właśnie trenowaniem.

Zatem trenować czy nie trenować? Na ogół to zależy od skomplikowania zadania. Jeśli mamy wystarczająco dużo danych do trenowania, a model jest prosty, czyli na przykład przewiduje właśnie typ lasu na podstawie danych w formie tabeli – wtedy opłaca się na ogół wytrenować model samemu. Dzięki temu będzie dokładniejszy, a trenowanie nie zajmie dużo czasu. Jeśli jednak chcemy zbudować chatbota takiego jak ChatGPT (czyli de facto przewidywać słowa, które mają się pojawić po napisanej komendzie), może nam zabraknąć zarówno danych jak i mocy obliczeniowej i czasu aby od zera wytrenować konieczny model. Wtedy na ogół stosuje się „gotowce”. Gotowce były trenowane na innych danych, ale po lekkim dostosowaniu mogą się bardzo przydać. Przykładowo: jeśli chcemy zbudować model rozróżniający Fiata 500 od Porsche Carrera, możemy wykorzystać „gotowiec” rozpoznający samochody na zdjęciach i go „dotrenować” na posiadanych danych. Dzięki temu nie spędzimy długich godzin na zbieraniu i ręcznym klasyfikowaniu terabajtów zdjęć koniecznych aby model rozpoznawał cokolwiek – ale zbierzemy tyle ile możemy aby ulepszyć już w miarę działający model.

Ze względu na nasze ograniczone zasoby, model musiał być łatwy do zbudowania. W praktyce oznaczało to wykorzystanie gotowego, wytrenowanego modelu. Aby wytrenować jakikolwiek model klasyfikacji tekstu musiałybyśmy zebrać potężną ilość danych – najlepiej sklasyfikowanych na zaburzenia psychiczne opisów kondycji psychicznej pacjenta. Zatem wybór był jeden: zero-shot classification. Zero-shot classification to określenie na przetrenowane uprzednio modele przeznaczone do klasyfikowania kategorii, których nie widziały na etapie trenowania (tak jakby w nasz model przewidywania lasu dostał tylko jodły i dęby na etapie trenowania, a potem potrafił też przewidzieć czy w lesie rosną świerki) . Praktycznie nie wymagają żadnych dodatkowych danych – wystarczy im tylko tekst do klasyfikacji (w naszym przypadku, to co napisze chatbotowi pacjent) i klasy (w naszym przypadku choroby i zaburzenia psychiczne) (Pushp and Srivastava 2017).

 

Wybór etykiet kandydujących

Jak wyżej wytłumaczyłyśmy, zero-shot classification to uprzednio wytrenowane modele, które mają umiejętność klasyfikowania tekstu na niewidziane przy trenowaniu klasy (na przykład przewidywanie świerków na podstawie modelu wytrenowanego tylko na jodłach i dębach). Osiągają to wykorzystując ich podobieństwo klas do tych, na których były pierwotnie trenowane (Pushp and Srivastava 2017). Dlatego przy wyborze klas kluczowe było, aby były to powszechnie znane słowa, najlepiej nawet widziane podczas trenowania modelu. Testowałyśmy różne rozwiązania, zaczynając od klinicznych nazw zaburzeń, następnie bardziej opisowych aliasów dla zaburzeń i ostatecznie samych objawów zgrupowanych potem w zaburzenia. Poniżej prezentujemy nasz proces myślowy.

  1. Na początku po prostu przypisałyśmy klasom oficjalne nazwy najpopularniejszych zaburzeń psychicznych. Jednak zupełnie nie zdało to egzaminu ponieważ algorytm nie był w stanie odpowiednio powiązać skrótów takich jak ADHD, czy PTSD z widzianym na etapie trenowania słowami – zatem nigdy nie przewidywał zaburzeń o podobnych nazwach (nawet gdy powinien). Ich pełne rozwinięcia zaś były zbyt długie dla algorytmu, aby odpowiednio je rozumiał.
  2. Następnym krokiem było zastąpienie naukowych nazw zaburzeń bardziej opisowymi nazwami, takimi jak „nadaktywność” dla ADHD czy „trauma” dla PTSD. Po tej zmianie osiągnęłyśmy obiektywnie lepszą wydajność, ponieważ model był w stanie przewidzieć zaburzenia, które wcześniej były poza jego quasi-zrozumieniem.
  3. Ostatecznie zdecydowałyśmy się na używanie tylko bardzo zrozumiałych i różnicujących objawów zaburzeń psychicznych (smutek, urojenia, stres itd) jako etykiet, a następnie grupowanie ich w zaburzenia. Wprowadziłyśmy więc kolejną warstwę, w której zbieramy przewidywania z fazy zero-shot classification i używamy algorytmu uczenia maszynowego (Machine Learning) aby pogrupować je w zaburzenia psychiczne.

 

Budowanie modelu grupowania symptomów

Przez model grupowania symptomów rozumiemy model, który przyjmuje dane tabelaryczne, gdzie kolumnami są objawy przewidziane na etapie klasyfikacji tekstu, a wartościami prawdopodobieństwo występowania tych objawów i przewiduje prawdopodobieństwo występowania zaburzeń psychicznych. Wykorzystałyśmy zwykły algorytm uczenia maszynowego XGBoost (Chen and Guestrin 2016). Do trenowania go użyłyśmy danych, które zebrałyśmy od już zdiagnozowanych pacjentów za pomocą tej ankiety psychologicznej. Ostatecznie, po uwzględnieniu tego dodatkowego etapu, cały algorytm diagnozy wygląda tak: dane wejściowe → zero-shot classification wykrywające objawy w tekście → przewidywanie chorób na podstawie symptomów za pomocą klasyfikacji XGBoost → dane wyjściowe.

 

Fine-tuning (dostrajanie modelu)

Jak już zbudowałyśmy model, pozostało go tylko ulepszać. Dla zero-shot classification oznaczało to dodatkowe trenowanie modelu, dla XGBoost dopasowanie parametrów. Dotrenowałyśmy więc model zero-shot classification, na pytaniach zadawanych przez pacjentów na forach psychologicznych. Parametry w algorytmie XGBoost dopasowałyśmy wykorzystując GridSearch, czyli metodę, która pozwala na szybkie sprawdzenie efektywności modelu dla różnych kombinacji parametrów (Liashchynskyi 2019). Poprawiło to dokładność wyników generowanych przez model.

 

Wydajność i uwagi końcowe

Chatbot zazwyczaj daje odpowiedzi, które mają sens, tj. przewiduje zaburzenia, które logicznie wynikają z wypowiedzi, którą otrzymał. Ma też wady, nad którymi będziemy jeszcze pracować np. ma tendencję do zbyt częstego przewidywania zaburzeń osobowości typu borderline i niełatwo jest go skłonić do przewidzenia ADHD. Najprawdopodobniej wynika to z faktu, że ich symptomy były odpowiednio nadreprezentowane lub niedoreprezentowane w danych na których model był trenowany.

Zdecydowałyśmy się dać jasne instrukcje dla użytkownika, aby chatbot dostawał informacje, z których może wyciągnąć najwięcej użytecznych wniosków.

  1. Wypowiedź musi mieć minimum 60 i powinno mieć do 300 znaków. Przy zbyt małej ilości informacji, algorytm generował nieco losowe wyniki, często nadinterpretowując podane objawy. Z drugiej strony, zbyt wiele szczegółów w długiej odpowiedzi rozpraszało chatbota tak, że pomijał istotne informacje.
  2. Użytkownikowi zaleca się skupienie się na emocjach lub zachowaniu i wspomnienie o wyzwalaczach emocji. Algorytm przewiduje symptomy, które zazwyczaj są silnie związane z emocjami.

W przyszłości planujemy, zrobić z tego narzędzia prawdziwy chatbot, pozwalając na pytania pogłębiające ze strony „bota psychiatry” i dodając więcej pytania dotyczące tła pacjenta (dzieciństwo, rodzicielstwo itp). Dzięki temu trafność predykcji chatbota wzrośnie, jako że będzie mógł „potwierdzać” swoje hipotezy tak, jak psychiatrzy podczas diagnozowania. O wszelkich zmianach będziemy informować na stronie MindMatch.pl – zachęcamy do śledzenia. Sam chatbot jest dostępny tu.

Kontakt do autorek:

patrycja.machno@student.uj.edu.pl 

zofia.smolen@polytechnique.edu 

 


W tekście przedstawiono narzędzie, które ma być odpowiedzią na potrzeby związane trudnościami w wyborze specjalisty zajmującego się problemami psychicznymi. Należy podkreślić, że nie jest to zweryfikowany test diagnostyczny o naukowo potwierdzonej skuteczności. Fundamentalnym założeniem tego narzędzia jest to, że ma wspomóc w doborze profesjonalnego terapeuty, a nie terapeutę zastąpić. Użycie go nie powinno zastąpić ani opóźnić wizyty u specjalisty psychiatry lub psychologa dla osób, które czują, że z jakiegokolwiek powodu jej potrzebują.

***

Dla osób w kryzysie szukających pomocy:

Studencki Ośrodek Wsparcia i Adaptacji SOWA

(+48) 606 406 158

https://sowa.uj.edu.pl


Blog Zdrowia Publicznego, red. M. Zabdyr-Jamróz, Instytut Zdrowia Publicznego UJ CM, Kraków: 6 września 2023


Źródła:

  1. “Research on client variables in psychotherapy. In: Bergin AE, Garfield SL, editors. Handbook of psychotherapy and behavior change.” ;Garfield SL. ;New York: Wiley; 1994. pp. 190–228.
  2. “Train Once, Test Anywhere: Zero-Shot Learning for Text Classification”; Pushpankar Kumar Pushp and Muktabh Mayank Srivastava; CoRR 2017
    “XGBoost: A Scalable Tree Boosting System”; Tianqi Chen and Carlos Guestrin; CoRR 2016
  3. “Grid Search, Random Search, Genetic Algorithm: A Big Comparison for NAS”; Petro Liashchynskyi and Pavlo Liashchynskyi; CoRR 2019

Powrót