임상시험 프로토콜 문서가 지저분한 의료 텍스트에서 구조화된 지식 그래프로 번역되는 모습으로, 환자 매칭에서 구문을 넘어 논리로 나아간다는 이 글의 핵심 주제를 표현한다.
Artificial IntelligenceHealthcareClinical Trials

하루 80만 달러짜리 오타: 카테터를 헷갈린 AI가 신약 개발을 죽이고 있다

Ashutosh SinghalAshutosh Singhal2026년 2월 4일13 min

화요일 밤이었고, 나는 도무지 이해가 되지 않는 스프레드시트를 응시하고 있었다.

우리는 파일럿을 진행하고 있었다 — 대규모 언어 모델이 종양학 임상시험의 적격 기준에 대비해 환자 기록을 얼마나 잘 선별할 수 있는지 시험하는 것이었다. 프로토콜은 종양학 프로토콜치고는 명료했다: 신규 항응고제와 몇 가지 제외 기준 목록이 있었고, 그중 하나가 "이전 심장 카테터 삽입술"이었다. 심장 카테터 삽입술. 관상동맥 기능을 평가하기 위해 심장의 방(chamber)까지 카테터를 밀어 넣는 것. 심각하고 침습적인 심장 시술이다.

AI는 한 환자를 부적격으로 표시했다. 사유: 심장 카테터 삽입술. 나는 그 환자의 기록을 열어 보았다. 문서화된 시술은 중심정맥 천자였다 — 약물 투여를 위해 경정맥에 삽입한 중심정맥관. 이는 침상에서 이루어지는 혈관 접근 시술이다. 간호사가 중환자실(ICU)에서 하는 것이다. 심장 시술이 아니다. 근처에도 가지 않는다.

그러나 모델은 "카테터"를 보고, "정맥"을 보고, 그 기록이 심장 집중치료실(CCU)에서 작성되었음을 보고는 결론지었다: 같은 것이라고. 그 환자는 사라졌다. 제외되었다. 임상시험 사이트 코디네이터에게 한 번도 노출되지 않았다. 그리고 나를 괴롭힌 것은 이것이다 — 아무도 알아차리지 못했을 것이라는 사실. 시스템은 적격 환자를 조용히 폐기했을 것이고, 임상시험은 한 사람이 부족해졌을 것이며, 등록이 왜 지연되는지 아무도 몰랐을 것이다.

그 순간 나는 더 나은 프롬프트가 임상시험 모집을 고쳐 줄 것이라는 믿음을 버렸다. 문제는 모델의 어휘가 아니다. 문제는 우리가 확률 기계를 논리의 일에 쓰고 있다는 것이다.

왜 제약 파이프라인의 80%가 모집 단계에서 막히는가?

제약 업계에는 어떤 실적 발표 콜에서도 파고들고 싶어 하지 않는 불편한 비밀이 있다: 약 임상시험의 80%가 등록 일정을 맞추지 못한다. 과학이 틀려서가 아니다. 환자가 존재하지 않아서가 아니다. 적격 환자를 찾아 임상시험에 매칭하는 과정이 근본적인 수준에서 망가져 있기 때문이다.

그 고장에 금액을 붙여 보겠다. 터프츠 약물개발연구센터(Tufts Center for the Study of Drug Development)에 따르면, 오늘날 신약 개발이 하루 지연될 때 실적이 우수한 자산의 경우 대략 처방 매출 손실 80만 달러의 비용이 든다. 심혈관 및 혈액학 분야에서는 그 수치가 하루 130만 달러를 넘어선다. 경쟁이 치열한 종양학 신약의 6개월 등록 지연 — 흔하게 일어나는 종류의 지연 — 의 경우, 과학적으로 우수한 치료제를 상업적으로 사장(死藏)시킬 수 있는 수치에 직면하게 된다.

신약 발견의 병목은 더 이상 과학이 아니다. 구문(syntax)이다.

그리고 운영상의 현실은 재무적 현실보다 더 암울하다. 연구 사이트의 37%가 등록 미달이며, 11%는 단 한 명의 환자도 등록하지 못한다. 각 스크리닝 실패 — 서류상으로는 적격으로 보이지만 실제로는 아닌 환자 — 는 약 1,200달러의 비용이 든다. 당신의 AI 도구가 100개의 "매칭"을 생성하는데 그중 5개만이 진짜라면, 당신은 모집을 자동화한 것이 아니다. 당신은 당신 자신의 임상 사이트에 대해 서비스 거부(denial-of-service) 공격을 감행한 것이다.

나는 이 일이 벌어지는 것을 지켜봤다. 우리의 초기 프로토타입에 열광했던 사이트 코디네이터들이 매칭 목록을 아예 무시하기 시작했다. "당신 도구는 쓰레기만 줘요." 한 사람이 통화에서 내게 말했다. 그녀가 틀린 게 아니었다. 그녀는 다시 수작업으로 PDF를 훑어보는 것으로 돌아갔다. Ctrl+F. 업계의 실질적인 최첨단 기술이다.

LLM에 대한 나의 믿음을 깨뜨린 그 카테터

그 화요일 밤의 오류를 더 깊이 들여다보겠다. 대부분의 의료 AI 홍보가 얼버무리고 넘어가는 무언가를 그것이 잘 보여 주기 때문이다.

대규모 언어 모델이 텍스트를 처리할 때, 단어를 벡터 — 고차원 수학 공간의 점 — 로 변환한다. 유사한 맥락에서 나타나는 단어들은 서로 가까이 위치하게 된다. "심장 카테터 삽입술"과 "중심정맥 카테터 삽입술"은 벡터 공간에서 사실상 이웃이다. 둘 다 카테터를 수반한다. 둘 다 혈관계를 수반한다. 둘 다 비슷한 의학 전문 용어에 둘러싸여 임상 기록에 등장한다.

그러나 그것들은 완전히 다른 시술이다. 서로 다른 해부학적 구조를 대상으로 하고, 서로 다른 위험 프로파일과 서로 다른 임상적 함의를 지닌다. 하나는 심장으로 들어간다. 다른 하나는 정맥으로 들어간다. 프로토콜은 첫 번째를 제외했다. 환자는 두 번째를 받았다. 그리고 AI는 그 차이를 구분하지 못했다. 해부학을 이해하지 못하기 때문이다 — AI가 이해하는 것은 단어의 근접성이다.

이것은 예외적인 극단 사례가 아니다. 임상시험 매칭용 AI 모델을 평가한 연구들은 정확히 이 실패 양상을 확인했다: 모델이 심장 카테터 삽입술을 중심정맥 천자와 동일한 것으로 잘못 결론지어 부당한 제외로 이어지는 것 말이다. 이것은 일회성 버그가 아니라 하나의 오류 유형이다.

다음 날 아침 나는 이것을 팀에 가져갔다. 우리 엔지니어 중 한 명 — 뛰어난 친구이고 딥러닝 배경을 가진 — 은 더 나은 파인튜닝으로 고칠 수 있다고 제안했다. 더 많은 의료 학습 데이터. 더 큰 컨텍스트 윈도우. 나는 뒤이어 벌어진 논쟁을 기억한다. 그것이 우리의 기술적 방향 전체를 형성한 논쟁이었기 때문이다. 내 입장은 단순했고, 아마 너무 무뚝뚝하게 말했을 것이다: 빠진 온톨로지를 파인튜닝으로 메울 수는 없다.

LLM은 "심장 카테터 삽입술"이 "중심정맥 카테터 삽입술"과는 의료 시술 트리의 다른 가지에 산다는 것을 모른다. 트리 자체가 없다. 통계적 연관의 안개만 있을 뿐이다. 그리고 아무리 많은 학습 데이터도 의학 온톨로지가 제공하는 경직되고 계층적인 이해를 부여하지 못한다 — 시술 A가 "심장에 대한 시술"의 하위 유형이고 시술 B가 "정맥의 카테터 삽입술"의 하위 유형이며, 이 둘이 범주적으로 별개라는 지식 말이다.

그 논쟁은 우리가 아키텍처를 밑바닥부터 재구축하는 것으로 끝났다.

온톨로지 기반 표현형 분석(phenotyping)이란 무엇이며, 왜 신경 써야 하는가?

SNOMED CT의 Is-A 계층이 "심장 카테터 삽입술"과 "중심정맥 카테터 삽입술"을 완전히 다른 가지로 분리하여, 이 글의 핵심 오류를 즉각 시각적으로 명백하게 만드는 방식을 보여 주는 분기형 트리 다이어그램.

쉬운 말로 설명하자면 이렇다: AI에게 의료 기록을 읽고 그 의미를 추측하라고 요구하는 대신, 우리는 AI가 마주치는 모든 의학 개념을 어떤 결정을 내리기 전에 SNOMED CT — 세계에서 가장 포괄적인 임상 용어 체계 — 의 표준화된 코드로 번역하도록 강제한다.

SNOMED CT는 사전이 아니다. 의학 개념들이 논리적 관계로 연결된 거대한 유향 그래프(directed graph)다. 가장 중요한 것은 Is-A 관계다. "관상동맥 조영술"은 is-a "심장 카테터 삽입술"이고 is-a "심장에 대한 시술"이다. "중심정맥 카테터 삽입술"은 is-a "정맥의 카테터 삽입술"이고 is-a "혈관 카테터의 삽입"이다. 다른 가지. 다른 부모. 다른 의미.

그래서 우리 시스템이 "심장 카테터 삽입술"을 제외하는 프로토콜과 중심정맥관 삽입을 언급한 환자 기록을 마주하면, 문자열이나 벡터를 비교하지 않는다. 온톨로지에게 묻는다: 이 환자의 시술이 제외된 시술의 하위 유형인가? 그래프가 답한다: 아니오. 환자는 적격 상태로 남는다. 결정론적으로. 매번.

우리는 "이 단어들이 비슷해 보이는가?"라고 묻기를 멈추고 "이 개념들이 논리적으로 관련되어 있는가?"라고 묻기 시작했다. 그 하나의 전환이 모든 것을 바꿨다.

이것은 의사가 축약어로 쓸 때도 작동한다. "Heart cath", "angio", "LHC", "central line", "CVC insertion" — SNOMED CT는 이 모든 변형을 특정 개념 ID로 매핑한다. 일단 문자열 대신 개념 ID로 작업하기 시작하면 모호함이 사라진다. 당신은 단어 대 단어가 아니라 의미 대 의미를 매칭하고 있는 것이다.

나는 이 배경에 있는 기술 아키텍처 — SNOMED CT 계층 구조, 편측성(laterality)과 중증도를 위한 후조합(post-coordination), 계산적 표현형(computational phenotype)의 구성 — 에 대해 우리 연구의 인터랙티브 버전에 썼다. 그러나 핵심 통찰은 단순하다: 의료 AI에는 의학 언어의 통계적 모델뿐만 아니라 의학의 지도가 필요하다.

"Unless(다만)"를 어떻게 파싱할 것인가?

키워드 매처가 조절되는 고혈압 환자를 어떻게 잘못 제외하는지와, 의무 논리(deontic logic) 솔버가 조건부 허용을 어떻게 올바르게 평가하여 적격성을 판정하는지를 나란히 비교해 보여 주는 그림.

온톨로지는 무엇(what) — 우리가 어떤 의학 개념에 대해 이야기하고 있는가? — 을 처리한다. 그러나 임상시험 프로토콜에는 일반 AI가 형편없이 처리하는 또 다른 복잡성의 층이 있다: 적격성의 논리.

종양학 임상시험의 실제 제외 기준을 하나 보자:

"고혈압 환자는 제외한다. 다만 안정적인 약물로 최소 3개월간 잘 조절되고 있는 경우는 예외로 한다."

키워드 매처는 "고혈압"을 보고 환자를 제외한다. 불리언 필터는 hypertension = TRUE를 보고 제외한다. 두 방식 모두 고혈압이 있지만 혈압이 수개월간 조절되고 안정적이어서 완벽하게 적격인 환자를 버린다.

이것은 내가 처음 대규모로 마주쳤을 때 나를 살짝 미치게 만들었다. 우리는 2상 및 3상 종양학 프로토콜 묶음에서 적격 기준을 뽑아냈고, 그 대다수가 조건부 제외 — "unless(하지 않는 한)" 절, "except when(다음의 경우를 제외하고)" 절, "6개월 이내"나 "90일 이전에 완료됨" 같은 시간적 의존성 — 를 포함하고 있음을 발견했다. 이것들은 예외적인 극단 사례가 아니다. 표준이다. 그리고 그 하나하나가 조건, 허용, 시간에 대해 추론하지 못하는 시스템에게는 함정이다.

우리는 의무 논리(deontic logic) — 의무, 허용, 금지를 다루는 형식 논리의 한 분야 — 로 눈을 돌렸다. 그것은 규범과 규칙의 논리로, 원래 철학자들이 발전시킨 것이며, 임상시험 기준에 완벽하게 맞아떨어진다. 고혈압이 있는 것은 금지된다 — 다만 당신이 조절되는 혈압과 요구되는 기간 동안 안정적인 약물이라는 허용 조건 또한 충족한다면 예외다. 시스템은 이것을 형식 논리 표현식으로 모델링하고, 환자의 타임라인을 확인하며, 수학적 정밀도로 적격성을 계산한다.

우리가 끊임없이 보는 또 다른 패턴:

"환자는 이전에 화학요법을 받지 않았어야 한다. 다만 그것이 6개월 이상 전에 완료된 신보조요법(neoadjuvant therapy)이었던 경우는 예외로 한다."

AI는 세 가지를 동시에 검증해야 한다: 환자가 화학요법을 받았는가? 그 의도가 신보조요법이었는가? 그리고 그것이 기준일로부터 6개월 이상 전에 끝났는가? 우리는 이를 문헌에서 시간적 앙상블 논리(Temporal Ensemble Logic)라고 부르는 것으로 처리한다 — 시스템이 환자의 임상 이력 타임라인을 구축하고 사건들을 유효한 관찰 윈도우 안에 배치한다.

키워드 검색은 기록에서 "화학요법"을 보고 당황한다. 우리 시스템은 화학요법을 보고, 의도 속성을 확인하고, 시간 차이를 측정하고, 적격성을 올바르게 판정한다.

아무도 요청하지 않았지만 모두에게 필요한 아키텍처

LLM(인식/추출), SNOMED CT 지식 그래프(매핑/명확화), 기호 논리 솔버(결정론적 추론)의 서로 다른 역할을, 그 사이의 명확한 데이터 흐름과 함께 보여 주는 3계층 아키텍처 다이어그램.

투자자와 제약사 임원들에게 우리 접근법을 설명할 때, 나는 이따금 이렇게 말하는 듯한 특정한 표정을 마주한다 — "왜 이걸 이렇게 복잡하게 만드는 거죠? 그냥 GPT를 쓰세요."

개발 착수 약 1년 무렵 나는 한 잠재적 파트너에게서 그 표정을 봤다. 그는 똑똑한 사람이었고 한 CRO의 디지털 혁신 팀을 이끌었으며, 검색 증강 생성을 얹은 잘 설계된 GPT-4 래퍼가 문제를 해결할 것이라고 진심으로 믿었다. "모델은 분기마다 좋아지고 있어요." 그가 내게 말했다. "당신은 이걸 과도하게 설계하고 있어요."

나는 우리 테스트 결과를 꺼냈다. 같은 데이터셋, 같은 적격 기준. 그의 팀의 GPT 래퍼: 실행 간에 정확도가 들쭉날쭉했다 — 말 그대로 같은 환자에 대해 언제 실행하느냐에 따라 다른 답이 나왔다. 감사 추적(audit trail) 없음. 환자가 포함되거나 제외되었는지 그 이유를 설명할 방법 없음. 그리고 기준의 복잡도에 따라 63~87% 정도에서 정점을 찍는 정확도.

우리의 신경-기호(neuro-symbolic) 시스템: 결정론적이고, 재현 가능하며, 95%를 넘는 정확도에, 모든 결정에 대한 완전한 추론 추적을 갖춘다.

FDA는 "AI가 그렇게 생각했다"를 근거로 받아들이지 않는다. 그들은 논리적 증명을 필요로 한다. 그것은 있으면 좋은 것이 아니다 — 임상 연구를 증강하는 도구와 데모 청중을 감동시키는 장난감 사이의 차이다.

구현 세부 사항으로 당신을 익사시키지 않고, 아키텍처가 실제로 어떻게 작동하는지 설명하겠다:

LLM이 읽는다. 그것은 의료 기록의 지저분하고 비정형적인 현실 — 스캔된 PDF, 손으로 쓴 메모, 의사의 서술 — 을 받아들이고, 그것의 유일한 임무는 의학 개체(entity)를 추출하고 정규화하는 것이다. 그것은 "pt complains of chest pain(환자가 흉통을 호소함)"을 읽고 흉통에 대한 SNOMED 개념을 출력한다. 그게 전부다. LLM은 인식 계층이다. 결코 적격성 결정을 내리지 않는다.

지식 그래프가 매핑한다. 추출된 개체는 맥락에 따라 명확화되어 SNOMED CT 개념 ID로 매핑된다. 바이러스로서의 "cold(감기)" 대 온도로서의 "cold(추위)". 그래프 구조가 그 모호함을 해소한다.

논리 솔버가 추론한다. 여기가 실제 적격성 판정이 일어나는 곳이다 — 환자의 구조화된 표현형에 대해 의무 논리 규칙을 적용하는 결정론적 기호 추론기다. 그것은 Is-A 관계를 확인하고, 시간적 지속 기간을 계산하고, 조건부 허용을 평가한다. 같은 입력이 주어지면 언제나 같은 출력을 낸다.

우리는 또한 표준적인 벡터 기반 검색 대신 GraphRAG를 사용한다. 표준 RAG는 단어 유사성에 기반해 문서 청크를 검색한다. GraphRAG는 관계를 탐색한다. 임상시험이 "CYP3A4 효소와 상호작용하는 모든 약물"을 제외하고 환자가 약물 B를 복용 중이라면, 환자의 기록이 "약물 B는 CYP3A4 억제제다"라고 명시적으로 말한 적이 없을 경우 표준 RAG는 그 연결을 놓칠 수 있다. GraphRAG는 안다. 지식 그래프가 그 관계를 담고 있기 때문이다: 약물 B는 CYP3A4를 억제한다. 다중 홉(multi-hop) 추론. 약사는 직관적으로 하지만 텍스트 매칭 시스템은 결코 하지 못할 종류의 연결이다.

아키텍처의 완전한 기술적 분석 — Type 4 신경-기호 통합, 개념 인식 디코딩(concept-aware decoding), FHIR/CDISC 상호운용성 계층 — 을 보려면 우리의 상세 연구 논문을 참고하라.

"하지만 모델이 그냥 더 좋아지지 않을까요?"

사람들은 언제나 이 지점에서 반박한다. 나도 이유를 안다. LLM의 궤적은 진정으로 인상적이다. 몇 달마다 새 모델이 의료 벤치마크에서 더 높은 점수를 낸다. 그러니 왜 기다리지 않겠는가?

왜냐하면 문제는 역량이 아니라 아키텍처이기 때문이다. LLM은 확률적 토큰 예측기다. 그것을 더 크게 만들고 더 많은 의학 텍스트로 학습시키면 더 나은 확률적 토큰 예측기가 된다. 그것을 논리 엔진으로 만들지는 못한다. 결정론을 부여하지 못한다. 감사 추적을 부여하지 못한다. 그리고 FDA와 EMA가 환자 #4,271이 시험 XYZ-003에서 왜 제외되었는지 정확히 알아야 하는 규제 산업에서 "모델이 이것을 가장 가능성 높은 답으로 예측했다"는 용납되지 않는다.

그리고 규모로도 사라지지 않는 프라이버시 문제가 있다. 비정형 환자 기록을 클라우드 기반 모델 API — 심지어 기업용 API — 로 보내는 것은, 아무리 많은 BAA(업무제휴협약)로도 완전히 완화되지 않는 HIPAA 및 GDPR 노출을 만든다. 우리 아키텍처는 환자 데이터를 안전한 엔클레이브(enclave) 내에 유지한다. 기호 추론 계층과 지식 그래프는 로컬에서 실행된다. 신경망 계층은 로컬 오픈소스 모델일 수 있다. 보호 대상 건강 정보(PHI)는 결코 방화벽을 벗어나지 않는다.

그리고 내가 가장 치명적이라고 여기는 재현성 문제가 있다. 같은 환자 기록을 같은 프롬프트로 LLM에 두 번 통과시키면 서로 다른 답이 나올 수 있다. 온도(temperature) 설정을 바꾸고, 컨텍스트 윈도우를 조정하고, 질문을 살짝 바꿔 표현하면 — 다른 결과. 임상시험은 100% 재현 가능한 결정을 요구한다. 규제 체계가 그것을 요구한다. 윤리가 그것을 요구한다.

우리가 잃고 있는 환자들

이 에세이의 대부분을 나는 아키텍처와 경제학에 대해 이야기하는 데 썼지만, 좀 더 정직한 곳에서 끝내고 싶다.

전이성 암, 또는 AML, 또는 희귀 유전 질환을 가진 환자에게 6개월의 등록 지연은 재무 모델의 한 줄 항목이 아니다. 그것은 잠재적으로 치료가 가능한 요법에 접근하느냐 못 하느냐의 차이다. 우리 시스템이 적격 환자를 잘못 제외할 때 — 두 카테터 시술을 혼동했기 때문에, 또는 "unless" 절을 파싱하지 못했기 때문에 — 그 환자는 "죄송합니다, AI가 오류를 냈습니다"라는 알림을 받지 않는다. 그들은 그저 그 임상시험에 대해 전혀 듣지 못한다. 그들의 종양내과 의사는 결코 그 경보를 받지 못한다. 그 자리는 채워지지 않은 채로 남거나 다른 누군가에게 돌아가고, 환자는 표준 치료를 계속 받으며, 어떤 선택지가 존재했다는 것을 결코 알지 못한다.

누군가 나에게 그냥 래퍼 API를 쓰라고 말할 때 내가 떠올리는 것이 바로 그것이다.

우리가 VeriPrajna를 세운 것은, AI가 헬스케어에서 약속하는 것과 실제로 제공하는 것 사이의 간극이 마케팅 문제가 아니라 엔지니어링 문제이기 때문이다. 업계는 옳은 아키텍처(LLM에게 온톨로지와 논리 솔버를 주고 그것이 잘하는 일만 하도록 제약하는 것) 대신 쉬운 아키텍처(그냥 LLM을 던져 넣는 것)를 택했다.

우리는 프롬프트 엔지니어링으로 정밀 의료에 도달하지 못할 것이다. 우리에게는 자신 있게 추측하는 시스템이 아니라 추론하는 시스템이 필요하다.

모집 위기의 치료법은 더 나은 언어 모델이 아니다. 그것은 적격성이 언어의 옷을 입은 논리 문제라는 인식이다. 비정형 텍스트를 벗겨 내고, 그것을 의학 온톨로지로 매핑하고, 형식적 추론을 적용하면, 등록 일정을 놓치는 80%의 임상시험이 갑자기 산업의 필연이라기보다 해결 가능한 문제로 보이기 시작한다.

단어 매칭을 멈춰라. 환자 매칭을 시작하라. 그 차이는 지식 그래프, 논리 솔버, 그리고 래퍼보다 더 어려운 무언가를 기꺼이 구축하려는 의지다.

Related Research

Also Published On