מסמך פרוטוקול של ניסוי קליני מתורגם מטקסט רפואי מבולגן לגרף ידע מובנה, המייצג את הנושא המרכזי של המאמר — מעבר מתחביר ללוגיקה בהתאמת מטופלים.
Artificial IntelligenceHealthcareClinical Trials

הטעות שעולה 800,000 דולר ביום: איך צנתר אחד שה-AI בלבל הורג את גילוי התרופות

Ashutosh SinghalAshutosh Singhal4 בפברואר 202613 min

זה היה ליל שלישי, ואני בהיתי בגיליון אלקטרוני שלא היה בו שום היגיון.

הרצנו פיילוט — בדקנו עד כמה טוב מודל שפה גדול מסוגל לסנן רשומות מטופלים מול קריטריוני הזכאות של ניסוי אונקולוגי. הפרוטוקול היה פשוט יחסית, כפי שפרוטוקולים אונקולוגיים הולכים: נוגד קרישה חדשני עם רשימת קריטריוני הדרה, שאחד מהם היה "צנתור לב קודם". צנתור של הלב. צנתר המושחל אל תוך חדרי הלב כדי להעריך את התפקוד הכלילי. פרוצדורה לבבית פולשנית ורצינית.

ה-AI סימן מטופל כלא-זכאי. הסיבה: צנתור לב. שלפתי את רשומת המטופל. הפרוצדורה המתועדת הייתה ניקור ורידי מרכזי — קו מרכזי שהוחדר לווריד הצוואר לצורך מתן תרופות. זוהי פרוצדורת גישה כלי-דמית שנעשית ליד המיטה. אחיות מבצעות אותה ביחידה לטיפול נמרץ. זו אינה פרוצדורה לבבית. היא אפילו לא קרובה לזה.

אבל המודל ראה "צנתר", ראה "ורידי", ראה שההערה נכתבה ביחידה לטיפול לב, והסיק: אותו דבר. המטופל נעלם. הודר. מעולם לא הוצג בפני רכזת האתר. וזה מה שרדף אותי — אף אחד לא היה שם לב. המערכת הייתה משליכה בשקט מטופל זכאי, והניסוי היה קצר באדם אחד, ואף אחד לא היה יודע מדוע הגיוס מפגר.

זה היה הרגע שבו הפסקתי להאמין שפרומפטים טובים יותר יתקנו את גיוס המשתתפים לניסויים קליניים. הבעיה אינה אוצר המילים של המודל. הבעיה היא שאנחנו משתמשים במכונת הסתברות כדי לעשות את עבודתה של הלוגיקה.

מדוע 80% מצנרת המוצרים של תעשיית התרופות נתקעים בגיוס?

לתעשיית התרופות יש סוד מלוכלך שאף שיחת רווחים לא אוהבת להתעכב עליו: בערך 80% מהניסויים הקליניים אינם עומדים בלוחות הזמנים של הגיוס. לא משום שהמדע שגוי. לא משום שאין מטופלים. אלא משום שתהליך איתור המטופלים הזכאים והתאמתם לניסויים שבור ברמה היסודית.

הרשו לי לתת נתון כספי לשבירות הזו. על פי מרכז טאפטס לחקר פיתוח תרופות, יום עיכוב יחיד בפיתוח תרופה עולה כיום בערך 800,000 דולר במכירות מרשמים אבודות עבור נכס בעל ביצועים גבוהים. בקרדיולוגיה ובהמטולוגיה, המספר הזה מטפס מעבר ל-1.3 מיליון דולר ליום. עבור עיכוב של חצי שנה בגיוס לתרופה אונקולוגית תחרותית — מסוג העיכוב שקורה באופן שגרתי — אתם מסתכלים על מספר שיכול להפוך תרפיה עדיפה מדעית למתה מסחרית כבר בהגעתה.

צוואר הבקבוק בגילוי תרופות כבר אינו המדע. זהו התחביר.

והמציאות התפעולית אף קודרת יותר מהמציאות הכספית. 37% מאתרי המחקר מגייסים מתחת לרף, ו-11% אינם מצליחים לגייס ולו מטופל אחד. כל כישלון סינון — מטופל שנראה זכאי על הנייר אך אינו — עולה כ-1,200 דולר. כאשר כלי ה-AI שלכם מייצר 100 "התאמות" ורק 5 מהן אמיתיות, לא אוטומטתם את הגיוס. שיגרתם התקפת מניעת שירות על אתרי המחקר הקליניים שלכם עצמכם.

ראיתי את זה קורה. רכזי אתרים שהתלהבו מהאבות-טיפוס המוקדמים שלנו התחילו להתעלם מרשימות ההתאמות לחלוטין. "הכלי שלך נותן לי זבל", אמרה לי אחת בשיחת טלפון. היא לא טעתה. היא חזרה לסרוק ידנית קובצי PDF. Ctrl+F. חוד החנית האמיתי של התעשייה.

הצנתר ששבר את אמונתי במודלי שפה גדולים

הרשו לי להעמיק בשגיאת ליל שלישי ההוא, משום שהיא ממחישה משהו שרוב מצגות ה-AI-בבריאות מעגלות פינות סביבו.

כאשר מודל שפה גדול מעבד טקסט, הוא ממיר מילים לווקטורים — נקודות במרחב מתמטי רב-ממדי. מילים המופיעות בהקשרים דומים מסתיימות זו ליד זו. "צנתור לב" ו"צנתור ורידי מרכזי" הן, במרחב הווקטורי, כמעט שכנות. שתיהן כרוכות בצנתרים. שתיהן כרוכות במערכת כלי-הדם. שתיהן מופיעות ברשומות קליניות מוקפות בז'רגון רפואי דומה.

אבל הן פרוצדורות שונות לחלוטין המכוונות למבנים אנטומיים שונים עם פרופילי סיכון שונים והשלכות קליניות שונות. אחת נכנסת אל תוך הלב. השנייה נכנסת אל תוך וריד. הפרוטוקול הדיר את הראשונה. למטופל הייתה השנייה. וה-AI לא הצליח להבחין בהבדל משום שהוא אינו מבין אנטומיה — הוא מבין קרבת מילים.

זה אינו מקרה קצה. מחקרים המעריכים מודלי AI להתאמת ניסויים זיהו בדיוק את מצב הכשל הזה: מודלים המסיקים בטעות שצנתור לב זהה לניקור ורידי מרכזי, מה שמוביל להדרה שגויה. זהו סוג של שגיאה, לא באג חד-פעמי.

הבאתי את זה לצוות שלי בבוקר שלמחרת. אחד המהנדסים שלנו — בחור מבריק, עם רקע בלמידה עמוקה — הציע שנוכל לתקן זאת בכיוונון עדין טוב יותר. יותר נתוני אימון רפואיים. חלונות הקשר גדולים יותר. אני זוכר את הוויכוח שבא לאחר מכן, משום שהוא היה הוויכוח שעיצב את כל הכיוון הטכני שלנו. עמדתי הייתה פשוטה, ואמרתי אותה כנראה בבוטות רבה מדי: אי אפשר לצאת מתוך אונטולוגיה חסרה באמצעות כיוונון עדין.

מודל שפה גדול אינו יודע ש"צנתור לב" חי על ענף אחר של עץ הפרוצדורות הרפואיות מ"צנתור ורידי מרכזי". אין לו עץ. יש לו ערפל של אסוציאציות סטטיסטיות. ושום כמות של נתוני אימון לא תעניק לו את ההבנה הנוקשה וההיררכית שאונטולוגיה רפואית מספקת — הידע שפרוצדורה A היא תת-סוג של "פרוצדורה בלב" בעוד פרוצדורה B היא תת-סוג של "צנתור של וריד", ושאלה נבדלות באופן קטגורי.

הוויכוח הזה הסתיים בכך שבנינו מחדש את הארכיטקטורה שלנו מהיסוד.

מהו פנוטיפינג מונחה-אונטולוגיה, ומדוע כדאי לכם לשים לב?

תרשים עץ מסתעף המראה כיצד היררכיית ה-Is-A של SNOMED CT מפרידה בין "צנתור לב" ל"צנתור ורידי מרכזי" לענפים שונים לחלוטין, מה שהופך את השגיאה המרכזית של המאמר לגלויה מיידית ויזואלית.

הנה הרעיון בשפה פשוטה: במקום לבקש מ-AI לקרוא רשומות רפואיות ולנחש מה הן אומרות, אנחנו מכריחים את ה-AI לתרגם כל מושג רפואי שהוא נתקל בו לקוד סטנדרטי מתוך SNOMED CT — מערכת הטרמינולוגיה הקלינית המקיפה ביותר בעולם — לפני שהוא מקבל החלטות כלשהן.

SNOMED CT אינו מילון. זהו גרף מכוון עצום שבו מושגים רפואיים מחוברים באמצעות יחסים לוגיים. החשוב שבהם הוא יחס ה-Is-A. "אנגיוגרפיה כלילית" is-a "צנתור לב" is-a "פרוצדורה בלב". "צנתור ורידי מרכזי" is-a "צנתור של וריד" is-a "החדרת צנתר כלי-דמי". ענפים שונים. הורים שונים. משמעות שונה.

אז כאשר המערכת שלנו נתקלת בפרוטוקול המדיר "צנתור לב" וברשומת מטופל המזכירה החדרת קו מרכזי, היא אינה משווה מחרוזות או ווקטורים. היא שואלת את האונטולוגיה: האם הפרוצדורה של מטופל זה היא תת-סוג של הפרוצדורה המודרת? הגרף עונה לא. המטופל נשאר זכאי. באופן דטרמיניסטי. בכל פעם.

הפסקנו לשאול "האם המילים האלה נראות דומות?" והתחלנו לשאול "האם המושגים האלה קשורים לוגית?" השינוי היחיד הזה שינה הכול.

זה עובד גם כאשר רופאים כותבים בקיצור. "צנתור לב", "אנגיו", "LHC", "קו מרכזי", "החדרת CVC" — SNOMED CT ממפה את כל הווריאנטים האלה למזהי מושג ספציפיים. ברגע שאתם פועלים על מזהי מושג במקום על מחרוזות, העמימות נעלמת. אתם מתאימים משמעות למשמעות, לא מילה למילה.

כתבתי על הארכיטקטורה הטכנית שמאחורי זה — היררכיות SNOMED CT, הפוסט-קואורדינציה עבור צדדיות וחומרה, בניית פנוטיפים חישוביים — בגרסה האינטראקטיבית של המחקר שלנו. אבל התובנה המרכזית פשוטה: AI רפואי זקוק למפה של הרפואה, לא רק למודל סטטיסטי של השפה הרפואית.

כיצד מנתחים את המילה "אלא אם"?

השוואה זה-לצד-זה המראה כיצד מתאם מילות מפתח מדיר בטעות מטופל עם יתר לחץ דם מבוקר, לעומת האופן שבו פותר לוגיקה דאונטית מעריך נכונה את ההיתר המותנה וקובע זכאות.

האונטולוגיה מטפלת במה — על אילו מושגים רפואיים אנחנו מדברים? אבל לפרוטוקולים של ניסויים קליניים יש שכבת מורכבות נוספת ש-AI גנרי מטפל בה באופן איום: הלוגיקה של הזכאות.

הנה קריטריון הדרה אמיתי מניסוי אונקולוגי:

"הדירו מטופלים עם יתר לחץ דם, אלא אם הוא מבוקר היטב על תרופה יציבה במשך 3 חודשים לפחות."

מתאם מילות מפתח רואה "יתר לחץ דם" ומדיר את המטופל. מסנן בוליאני רואה יתר לחץ דם = TRUE ומדיר. שתי הגישות משליכות מטופל שיש לו יתר לחץ דם אך הוא זכאי לחלוטין משום שלחץ הדם שלו היה מבוקר ויציב במשך חודשים.

זה שיגע אותי קצת כשנתקלתי בזה לראשונה בקנה מידה גדול. שלפנו את קריטריוני הזכאות ממנה של פרוטוקולים אונקולוגיים משלב II ו-III וגילינו שרובם הכילו הדרות מותנות — סעיפי "אלא אם", סעיפי "למעט כאשר", תלויות זמניות כמו "בתוך 6 חודשים" או "הושלם יותר מ-90 יום לפני כן". אלה אינם מקרי קצה. הם הנורמה. וכל אחד ואחד מהם הוא מלכודת עבור מערכות שאינן יכולות להסיק לגבי תנאים, היתרים וזמן.

פנינו ללוגיקה דאונטית — ענף של לוגיקה פורמלית העוסק בחובות, היתרים ואיסורים. זוהי הלוגיקה של נורמות וכללים, שפותחה במקור על ידי פילוסופים, והיא ממופה בצורה מושלמת על קריטריונים של ניסויים קליניים. יתר לחץ דם הוא אסור — אלא אם אתם גם עומדים בתנאי ההיתר של לחץ דם מבוקר ותרופה יציבה למשך פרק הזמן הנדרש. המערכת מדגמנת זאת כביטוי לוגי פורמלי, בודקת את ציר הזמן של המטופל, ומחשבת זכאות בדיוק מתמטי.

עוד תבנית שאנחנו רואים כל הזמן:

"מטופלים לא צריכים לקבל כימותרפיה קודמת, אלא אם הייתה זו טיפול ניאואדג'ובנטי שהושלם לפני יותר מ-6 חודשים."

ה-AI חייב לוודא בו-זמנית שלושה דברים: האם המטופל קיבל כימותרפיה? האם כוונתה הייתה ניאואדג'ובנטית? והאם היא הסתיימה יותר משישה חודשים לפני תאריך ההתייחסות? אנחנו מטפלים בזה במה שהספרות מכנה לוגיקת אנסמבל זמנית (Temporal Ensemble Logic) — המערכת בונה ציר זמן של ההיסטוריה הקלינית של המטופל וממקמת אירועים בתוך חלונות תצפית תקפים.

חיפוש מילות מפתח רואה "כימותרפיה" ברשומה ונכנס לפאניקה. המערכת שלנו רואה כימותרפיה, בודקת את מאפיין הכוונה, מודדת את הפרש הזמן, וקובעת נכונה זכאות.

הארכיטקטורה שאיש לא ביקש (אבל כולם צריכים)

תרשים ארכיטקטורה תלת-שכבתי המראה את התפקידים הנבדלים של מודל השפה הגדול (תפיסה/חילוץ), גרף הידע SNOMED CT (מיפוי/פירוק עמימות), ופותר הלוגיקה הסמלי (הסקה דטרמיניסטית), עם זרימת נתונים ברורה ביניהם.

כאשר אני מתאר את הגישה שלנו למשקיעים ולמנהלי חברות תרופות, אני לפעמים מקבל מבט מסוים — המבט שאומר "למה אתה עושה את זה כל כך מסובך? פשוט תשתמש ב-GPT."

קיבלתי את המבט הזה משותף פוטנציאלי בערך שנה לתוך הפיתוח שלנו. הוא היה בחור חכם, ניהל את צוות החדשנות הדיגיטלית של CRO, והוא באמת האמין שעטיפת GPT-4 עם פרומפט טוב וקצת retrieval-augmented generation מוברגת עליה תפתור את הבעיה. "המודלים משתפרים בכל רבעון", אמר לי. "אתה מהנדס-יתר את זה."

שלפתי את תוצאות הבדיקות שלנו. אותו מערך נתונים, אותם קריטריוני זכאות. עטיפת ה-GPT של הצוות שלו: דיוק משתנה בין הרצות — פשוטו כמשמעו תשובות שונות על אותו מטופל בהתאם למתי שהרצת אותה. שום מסלול ביקורת. שום דרך להסביר מדוע מטופל נכלל או הודר. ודיוק שהגיע לתקרה של סביב 63-87% בהתאם למורכבות הקריטריונים.

המערכת הנוירו-סימבולית שלנו: דטרמיניסטית, ניתנת לשחזור, דיוק מעל 95%, עם עקבת הסקה מלאה עבור כל החלטה.

ה-FDA אינו מקבל את "ה-AI חשב כך" כנימוק. הם צריכים הוכחה לוגית. זה אינו "נחמד שיש" — זה ההבדל בין כלי שמעצים מחקר קליני לבין צעצוע שמרשים קהלי הדגמות.

הנה כיצד הארכיטקטורה עובדת בפועל, בלי להטביע אתכם בפרטי מימוש:

מודל השפה הגדול קורא. הוא קולט את המציאות המבולגנת והלא-מובנית של רשומות רפואיות — קובצי PDF סרוקים, הערות בכתב יד, נרטיבים של רופאים — ותפקידו היחיד הוא לחלץ ישויות רפואיות ולנרמל אותן. הוא קורא "מטופל מתלונן על כאב בחזה" ומוציא את מושג ה-SNOMED עבור כאב בחזה. זהו. מודל השפה הגדול הוא שכבת התפיסה. הוא לעולם אינו מקבל החלטת זכאות.

גרף הידע ממפה. ישויות שחולצו ממופות למזהי מושג של SNOMED CT, כשהעמימות שלהן מפורקת לפי הקשר. "Cold" הנגיף לעומת "cold" הטמפרטורה. מבנה הגרף פותר את העמימות.

פותר הלוגיקה מסיק. כאן מתרחשת קביעת הזכאות בפועל — מנוע הסקה סמלי דטרמיניסטי המיישם כללי לוגיקה דאונטית מול הפנוטיפ המובנה של המטופל. הוא בודק יחסי Is-A, מחשב משכי זמן, ומעריך היתרים מותנים. בהינתן אותם קלטים, הוא תמיד מייצר את אותו פלט.

אנחנו גם משתמשים בGraphRAG במקום ב-retrieval מבוסס-ווקטורים סטנדרטי. RAG סטנדרטי מאחזר מקטעי מסמכים על בסיס דמיון מילים. GraphRAG חוצה יחסים. אם ניסוי מדיר "כל תרופה המקיימת אינטראקציה עם אנזימי CYP3A4" ומטופל נוטל את תרופה B, RAG סטנדרטי עלול לפספס את הקשר אם רשומת המטופל מעולם אינה אומרת במפורש "תרופה B היא מעכב CYP3A4". GraphRAG יודע, משום שגרף הידע מכיל את היחס: תרופה B מעכבת CYP3A4. הסקה רב-קפיצתית. סוג הקשר שרוקח יוצר באופן אינטואיטיבי אך מערכת התאמת-טקסט לעולם לא הייתה יוצרת.

לפירוק הטכני המלא של הארכיטקטורה — האינטגרציה הנוירו-סימבולית מסוג Type 4, פענוח מודע-מושגים, שכבת האינטראופרביליות של FHIR/CDISC — ראו את מאמר המחקר המפורט שלנו.

"אבל האם המודלים פשוט לא ישתפרו?"

אנשים תמיד מתנגדים לנקודה הזו, ואני מבין מדוע. המסלול של מודלי השפה הגדולים מרשים באמת. כל כמה חודשים, מודל חדש מקבל ציון גבוה יותר במבחני ביצוע רפואיים. אז למה לא לחכות?

משום שהבעיה אינה יכולת — היא ארכיטקטורה. מודל שפה גדול הוא חזאי טוקנים הסתברותי. הפיכתו לגדול יותר ואימונו על יותר טקסט רפואי הופכים אותו לחזאי טוקנים הסתברותי טוב יותר. זה אינו הופך אותו למנוע לוגיקה. זה אינו מעניק לו דטרמיניזם. זה אינו מעניק לו מסלול ביקורת. ובתעשייה מפוקחת שבה ה-FDA וה-EMA צריכים לדעת בדיוק מדוע מטופל מס' 4,271 הודר מניסוי XYZ-003, "המודל חזה שזו התשובה הסבירה ביותר" אינו מקובל.

יש גם את בעיית הפרטיות שאינה נעלמת עם קנה המידה. שליחת רשומות מטופלים לא-מובנות לממשקי API של מודלים מבוססי-ענן — אפילו ארגוניים — יוצרת חשיפה ל-HIPAA ול-GDPR ששום כמות של הסכמי BAA אינה ממתנת במלואה. הארכיטקטורה שלנו שומרת את נתוני המטופלים בתוך מובלעות מאובטחות. שכבת ההסקה הסמלית וגרף הידע רצים מקומית. השכבה הנוירונית יכולה להיות מודל קוד-פתוח מקומי. מידע בריאותי מוגן לעולם אינו עוזב את חומת האש.

ואז יש את בעיית יכולת השחזור שאני מוצא הכי מרשיעה. הריצו את אותה רשומת מטופל דרך מודל שפה גדול פעמיים עם אותו פרומפט, ותוכלו לקבל תשובות שונות. שנו את הגדרת הטמפרטורה, כווננו את חלון ההקשר, נסחו מחדש את השאלה מעט — תוצאה שונה. ניסויים קליניים דורשים החלטות הניתנות לשחזור ב-100%. המסגרת הרגולטורית מחייבת זאת. האתיקה מחייבת זאת.

המטופלים שאנחנו מאבדים

ביליתי את רוב המסה הזה בדיבור על ארכיטקטורה וכלכלה, אבל אני רוצה לסיים במקום כן יותר.

עבור מטופלים עם סרטן גרורתי, או AML, או הפרעה גנטית נדירה, עיכוב גיוס של חצי שנה אינו סעיף בשורת מודל פיננסי. זהו ההבדל בין גישה לתרפיה בעלת פוטנציאל מרפא לבין היעדרה. כאשר המערכת שלנו מדירה בטעות מטופל זכאי — משום שהיא בלבלה בין שתי פרוצדורות צנתר, או משום שלא הצליחה לנתח סעיף "אלא אם" — אותו מטופל אינו מקבל התראה האומרת "מצטערים, ה-AI עשה שגיאה". הם פשוט לעולם אינם שומעים על הניסוי. האונקולוג שלהם לעולם אינו מקבל את ההתראה. המקום נותר בלתי מאויש, או שהוא הולך למישהו אחר, והמטופל ממשיך בסטנדרט הטיפול, מבלי לדעת שאפשרות התקיימה.

זה מה שאני חושב עליו כשמישהו אומר לי פשוט להשתמש בממשק API של עטיפה.

בנינו את VeriPrajna משום שהפער בין מה ש-AI מבטיח בבריאות לבין מה שהוא מספק בפועל אינו בעיה שיווקית — זו בעיה הנדסית. התעשייה בחרה בארכיטקטורה הקלה (זרוק עליה מודל שפה גדול) במקום בארכיטקטורה הנכונה (תן למודל השפה הגדול אונטולוגיה ופותר לוגיקה והגבל אותו לעשות רק את מה שהוא טוב בו).

אנחנו לא הולכים להנדס-פרומפט את דרכנו לרפואה מדויקת. אנחנו צריכים מערכות שמסיקות, לא מערכות שמנחשות בביטחון.

המרפא למשבר הגיוס אינו מודלי שפה טובים יותר. זוהי ההכרה בכך שזכאות היא בעיה לוגית הלבושה בתחפושת שפה. קלפו את הטקסט הלא-מובנה, מפו אותו לאונטולוגיה רפואית, יישמו הסקה פורמלית, ולפתע 80% מהניסויים שמחמיצים את לוחות הזמנים של הגיוס מתחילים להיראות כבעיה הניתנת לפתרון ולא כבלתי-נמנעות תעשייתית.

הפסיקו להתאים מילים. התחילו להתאים מטופלים. ההבדל הוא גרף ידע, פותר לוגיקה, והנכונות לבנות משהו קשה יותר מעטיפה.

Related Research

Also Published On