💻 본업(컴공생) 이야기/연구 이야기

[약물 추천, AI 논문 정리 #3] 약을 추천하는 AI, 뭘 기준으로 결정할까?

st오리🐥 2025. 3. 26. 15:51
728x90
반응형
SMALL

 

 

 

이전 글들을 통해 <기존 연구들과 한계점> 까지 알아보았습니다!

\

 

  • #1-1: 기존 약물 추천 모델의 한계
  • #1-2: SafeDrug이 등장한 이유와 핵심 아이디어를 소개
  • #2. : 관련한 이전 연구들

 

 

 

 

 

이제는 본격적으로 SafeDrug이 실제로 어떤 문제를 해결하려고 하는지,
그리고 그 문제를 어떻게 수식으로 표현하고 학습하는지 알아볼 차례입니다.

 

논문에서는 약물 추천 문제를 환자의 진료 기록(EHR)과
약물 간 상호작용(DDI) 정보를 기반으로 정의하고 있어요.

오늘은 SafeDrug이 약 조합을 어떻게 예측하며,
부작용(DDI)을 동시에 어떻게 통제하는지 그 핵심 구조를 함께 뜯어보겠습니다!

 

 


 

 

 

 

검정색 글씨는 논문을 1차 번역한 것, 파란 글씨는 내가 조금 더 이해할 수 있도록 문장을 정리한 것.

 

 

 

🧾 전자 건강 기록 (EHR: Electronic Health Records)

 

3 문제 정의

 

전자 건강 기록(EHR) 환자 EHR 데이터는 환자의 포괄적인 의료 기록을 의료 코드(예: 진단, 절차 및 약물)의 종단적 벡터 형식으로 캡처합니다.

 

환자의 의료 기록은 전자 건강 기록(EHR) 형태로 저장되며, 진단 코드, 처치 코드, 약물 코드 같은 것들이 시간순으로 저장되어 있다.
이걸 AI가 벡터(sequence) 형태로 받아들여 학습하게 된다.

 

공식적으로, 환자 j의 EHR는 시퀀스

 

로 표현될 수 있으며, 여기서(Vj)는 환자 j의 총 방문 수입니다.

 

수학적으로 표현하면, 환자 j 는 병원에 총 Vj번 방문했고, 각 방문 기록은 (위의 식) 같은 시퀀스로 구성되어 있다.

 

(Xj)의 i번째 항목은 환자 j의 i번째 방문을 문서화하며,

로 정의됩니다.

 

각 방문은 하나의 벡터로 표현되고, 이 벡터는 진단(d), 처치(p), 약물(m)의 정보를 포함한다.

 

여기서

 

는 각각 다중 핫 진단, 절차 및 약물 벡터입니다.

D, P, M은 각각의 요소 집합이며, | · | 는 기수성 (집합의 항목 갯수) 을 나타냅니다.

 

각 정보는 다중 선택이 가능한 멀티-핫 인코딩 벡터로 표현된다.

더보기

 멀티-핫 벡터 

하나의 벡터에서 여러 위치가 동시에 1이 될 수 있는 인코딩 방식

 

진단 코드 전체가 5개 있다고 해보자. (코드: A, B, C, D, E)

환자 진단: B, D → 벡터로 표현하면?

 
[0, 1, 0, 1, 0]
     ↑     ↑
     B      D
 
  • 1개만 1이 되면 → 원-핫 인코딩 (one-hot)
  • 여러 개가 1이 되면 → 멀티-핫 인코딩 (multi-hot)
    → 약물 처방도 마찬가지. 동시에 3개 약물 처방될 수도 있음.


즉, 여러 개의 진단 코드가 한 번에 포함될 수 있고, 약도 마찬가지이다.
d,p,m 은 각각 진단/처치/약물 전체의 집합을 의미하고, | · |  는 그 개수(차원)를 나타낸다.

 


 

💊 안전한 약물 조합 추천 문제 (Safe Drug Combination Recommendation)


안전한 약물 조합 추천. 우리는 예측에서 약물-약물 상호작용(DDI) 비율을 줄이거나 제어하면서 약물 추천에 초점을 맞춥니다. 

 

이 논문은 약을 단순히 추천하는 게 아니라, 부작용(DDI)을 줄이면서도 효과적인 약 조합을 추천하는 것이 목적이다.

 

우리는 DDI 관계를 나타내기 위해 대칭 이진 인접 행렬

을 사용합니다.

 

어떤 약끼리 부작용을 일으키는지 나타내기 위해, 약물-약물 간 관계를 저장한 대칭 이진 행렬 D를 사용한다.

 

Dij = 1 은 약물 i와 j 간의 상호작용이 보고되었음을 의미하고, Dij = 0 은 안전한 동시 처방을 나타냅니다.

이 논문의 목적은 각 방문에 대해 약물 추천 함수를 학습하는 것입니다.

 

행렬 D에서 값이 1이면 위험한 조합, 0이면 안전한 조합을 의미한다.

결국 이 모델은 “주어진 환자의 상태를 보고 어떤 약 조합이 좋을까?”를 예측하는 함수 f(·) 를 학습하는 게 목표이다.

* f(·)는 그냥 함수 f, 어떤 값이든 넣을 수 있다는 뜻, 아직 인자를 명시하지 않은 함수 표현.

 

즉 f( · ) 로서, 예를 들어 t번째 방문에 대해, 환자의 지금까지의 진단 및 절차 시퀀스

 

그리고 DDI 행렬 (D)를 고려하여 f( · )가 약물 추천을 생성할 수 있도록 합니다.

 

예를 들어 t번째 방문 시, 지금까지의 진단 정보 = d(1), ..., d(t) , 처치 정보 = p(1),...,p(t),

그리고 DDI 행렬 D를 바탕으로 함수 f 가 적절한 약물 벡터 m^(t)를 출력하도록 학습하는 것이다.

 


 

 

이 수식은 모델이 추천한 약물 벡터 m^(t )는 지금까지의 진단/처치 정보의 시퀀스를 입력으로 받아 ,0 또는 1로 구성된 멀티-핫 약물 벡터로 출력된다는 걸 의미한다.


목표 함수는 두 부분으로 구성됩니다.

(i) 진짜 약물 조합 m(t)를 추출하여 m^(t) 에 대한 감독을 제공하고

(ii) 행렬 D를 사용하여  m^(t) 에 대한 비감독 DDI 제약을 도출합니다.

 

학습할 때는 두 가지 목표가 있다.

  1. 실제 정답 약물 벡터 m(t)를 기준으로 정답에 가까운 추천을 하도록 학습하고,
  2. 부작용 위험이 높은 약 조합을 피하도록, DDI 행렬  D 기반 제약을 함께 넣어주는 것이다.

 

이렇게 SafeDrug은

 

“환자의 병력 + DDI 위험” 을 동시에 고려한 약물 추천 문제를 수학적으로 정의하고,
정답 지도(supervised) + DDI 제약(unsupervised) 두 가지 방향으로 학습하게 된다.

 

SafeDrug은 단순히 '어떤 약을 추천할까?'라는 문제를 넘어서,

환자의 병력(EHR)과 약물 간 부작용(DDI)까지 고려하는 AI 모델이다.

논문에서는 이를 수학적으로 정리하기 위해

> 진단/처치 정보를 시퀀스로 정리하고
> 부작용 정보를 담은 행렬 D를 함께 활용하며
> 이를 입력으로 받는 추천 함수 f(⋅)를 학습한다.

결과적으로 모델은 매 방문 시점마다, 정확하면서도 안전한 약 조합을 예측할 수 있게 된다.

 

 

 

내용 정리 필기본


 

 

다음 글에서는, 이 문제를 해결하기 위해 SafeDrug이 사용하는 모델 구조(Architecture)를 자세히 살펴볼게요!

메시지 전파 신경망(MPNN), 지역 인코딩, 그리고 DDI 제어 손실까지 !! 하나씩 해부해보겠습니다 !

728x90
반응형
LIST