이전 글들을 통해 논문 소개와 '서론' 까지 읽어보았습니다!
구성은 아래와 같았어요.
- #1-1: 기존 약물 추천 모델의 한계
- #1-2: SafeDrug이 등장한 이유와 핵심 아이디어를 소개
2025.03.22 - [💻 본업(컴공생) 이야기/연구 이야기] - [약물 추천, AI 논문 정리 #1-1] 기존 모델의 한계와 SafeDrug의 등장 배경
[약물 추천, AI 논문 정리 #1-1] 기존 모델의 한계와 SafeDrug의 등장 배경
https://real-st-ory.tistory.com/35 의료 AI의 핵심, '약물 추천'이란 무엇인가?"병원에서 받은 약, 누가 골랐을까?" 병원에 가면 우리는 진단을 받고, 바로 처방전을 받는다.그런데 그 약은 누가, 어떤 기
real-st-ory.tistory.com
2025.03.22 - [💻 본업(컴공생) 이야기/연구 이야기] - [약물 추천, AI 논문 정리 #1-2] SafeDrug의 핵심 아이디어 정리
[약물 추천, AI 논문 정리 #1-2] SafeDrug의 핵심 아이디어 정리
https://real-st-ory.tistory.com/36 [약물 추천, AI 논문 정리 #1-1] 기존 모델의 한계와 SafeDrug의 등장 배경https://real-st-ory.tistory.com/35 의료 AI의 핵심, '약물 추천'이란 무엇인가?"병원에서 받은 약, 누가 골
real-st-ory.tistory.com
SafeDrug이라는 모델이 등장한 배경과,그 핵심 아이디어를 살펴보고 나니, 문득 이런 질문이 떠오르지 않으셨나요?
“그럼 이전에는 어떤 모델들이 있었고, 왜 부족했을까?”
이번 글에서는 약물 추천 AI 기술의 흐름을 정리해보려 해요.
LEAP, RETAIN, GAMENet 등 과거의 대표적인 모델들을 살펴보며,
SafeDrug이 등장하기까지 어떤 고민과 한계들이 있었는지 함께 따라가 볼게요!
참고로 이번 글의 요약은 맨 아래에 적어두었습니다 !!
검정색 글씨는 논문을 1차 번역한 것, 파란 글씨는 내가 조금 더 이해할 수 있도록 문장을 정리한 것.
2.관련 연구
2.1약물 추천
기존의 약물 추천 알고리즘은 인스턴스 기반 및 종단적 추천 방법으로 분류할 수 있습니다.
기존의 약물 추천 알고리즘은 크게 두 가지로 나눌 수 있다.
ㅡ
① 인스턴스 기반 : 현재 상태만 보는 방법
② 종단적 추천 방법 : 시간에 따라 쌓인 기록을 반영하는 방법
인스턴스 기반 접근법은 환자의 현재 건강 상태에 초점을 맞춥니다.
예를 들어, LEAP [Zhang et al., 2017]는 현재 만남에서 기능 정보를 추출하고 다중 인스턴스 다중 레이블 약물 추천 설정을 채택합니다.
인스턴스 기반 접근법은 환자가 병원에 온 '지금 순간'의 상태만 보고 약을 추천한다.
예를 들어, LEAP 라는 모델은 '지금' 병원에 온 환자의 데이터를 분석해서,
여러 개의 약을 동시에 추천하는 다중 레이블 추천 방식을 사용한다.
1. 용어 정리
인스턴스(Instance) | 모델이 한 번에 처리하는 입력 단위 (예: 하나의 환자 기록) |
다중 인스턴스(Multi-Instance) | 한 명의 환자에 대해 여러 개의 상태나 시점 정보가 묶음으로 입력됨 (예: 입원 중 여러 날짜의 데이터) |
레이블(Label) | 모델이 예측해야 할 출력 정보 (예: 어떤 약물을 처방할지) |
다중 레이블(Multi-Label) | 하나의 인스턴스가 여러 개의 정답(레이블) 을 가질 수 있음 (예: 한 환자에게 3개의 약물을 동시에 처방하는 경우) |
2. 다중 인스턴스 다중 레이블 약물 추천 설정이란? 💊
약물 추천 문제에서 현실적인 복잡성을 반영한 머신러닝 설정이다.
즉, 한 명의 환자가 입원 기간 동안 여러 시간대(=다중 인스턴스)의 임상 데이터를 가지고 있고,
각 시점에서 복수의 약물(=다중 레이블) 이 동시에 처방될 수 있다는 점을 반영한다.
예)
- 환자 A는 병원에 5일 입원함
- 하루에 한 번씩 데이터가 수집됨 → 총 5개의 인스턴스
- 각 날마다 처방된 약물이 3개 이상일 수 있음 → 다중 레이블
따라서, 환자 A는:
[입원 1일차] → [약물1, 약물3, 약물5] [입원 2일차] → [약물2, 약물4] ...
이런 식으로 데이터를 가지게 됨.

3. 왜 이런 설정이 필요할까?
실제 임상 환경에서는,
- 한 환자에게 여러 약물이 동시에 처방
- 환자의 상태가 시간에 따라 변함
- 모델이 한 시점이 아닌 여러 시점의 데이터를 통합해 판단할 필요 있음
그래서 기존의 단순한 "하나의 입력 → 하나의 정답" 형태의 모델로는
이런 복잡한 의료 데이터를 잘 처리할 수 없기 때문에
다중 인스턴스(MI) + 다중 레이블(ML) 설정이 필요하게 된 것! 🚑💊
4. 학습 구조
- input: 하나의 환자에 대해 여러 시점의 정보 (ex: vital signs, lab tests 등)
- output: 그 환자에게 동시에 처방될 수 있는 약물들의 목록
- 모델은 이 모든 입력들을 종합해, 약물들의 존재 여부를 각각 예측해야 함 (multi-label classification)
종단적 접근법은 임상 기록 내의 시간적 의존성을 활용하기 위해 제안되었습니다 [Choi et al., 2016a; Xiao et al., 2018].
이들 중 RETAIN [Choi et al., 2016b]은 시간 역행 주의를 적용한 두 단계 RNN을 사용하여 종단적 정보를 모델링합니다.
반면, 종단적 접근법은 환자의 병원 기록(임상 기록)이 시간에 따라 어떻게 변화해왔는지를 분석하는 것에 초점을 두었다.
RETAIN 모델은 과거 기록을 거꾸로 보면서 중요도(attention)를 계산하는 RNN 구조를 사용한다.
이를 통해 환자의 진료 기록 중 어떤 부분이 약 처방에 중요한지를 학습할 수 있게 된다.
GAMENet [Shang et al., 2019]는 메모리 신경망을 채택하고 역사적 약물 정보를 참조로 저장하여 추가 예측을 위한 기반을 마련합니다.
GAMENet 이라는 모델은, 메모리 네트워크를 사용하여 환자가 이전에 복용했던 약 정보들을 기억해두고
다음에 어떤 약을 추천할지 결정하는 것에 도움을 준다.
🔍 여기까지 요약 🔍
① 인스턴스 기반 추천 (Instance-based Recommendation)
"현재 상태만 보고 판단하는 방식"
▶ 정의: 각 시점의 정보를 독립적으로 보고, 해당 시점의 상태만 기반으로 약물을 추천한다.
▶ 특징:
1) 과거 정보나 추세를 고려하지 않음
2) 각 시점을 하나의 독립적인 인스턴스로 간주함
▶ 예시:
Day 3에 혈당 수치가 높고 고혈압 증상이 있다면,
→ 이 하루의 데이터만 보고 당뇨약 + 고혈압약을 추천함 (과거 변화는 고려하지 않음)
② 종단적 추천 방법 (Longitudinal Recommendation)
"시간에 따라 누적된 변화를 반영하여 추천하는 방식"
▶ 정의: 이전 시점부터 현재까지의 시간 흐름에 따른 환자 상태 변화를 고려해서 약물을 추천한다.
▶ 특징:
1) 시계열 정보를 활용함 (예: 증상 악화 속도, 과거 반응 등)
2) 모델이 질병의 진행 경로를 파악하여 보다 정교한 예측 가능
▶ 예시:
Day 1~3까지 혈압이 점점 오르고, 혈당도 서서히 상승 중이라면
→ 이 변화의 패턴을 기반으로 질병 진행을 예측하고 약물 조합을 추천함 (예방적 처방도 가능)
⚖️ 차이 요약 비교
항목 ① 인스턴스 기반 ② 종단적 방법 보는 시점 현재 시점만 과거 ~ 현재까지 누적 데이터 구조 독립적 인스턴스 시계열 (시간 흐름) 장점 계산 간단, 속도 빠름 맥락 반영, 정밀함 단점 예측 정밀도 낮음 복잡하고 데이터 요구가 큼 적용 예시 응급 상황 약물 추천 만성질환 관리, 장기 처방 설계
이러한 방법들은 최종 약물 조합을 다중 레이블 이진 분류 [Choi et al., 2016b; Shang et al., 2019; Shang et al., 2018] 또는 순차적 의사결정 [Zhang et al., 2017]으로 모델링합니다.
이런 모델들은 약물 추천을 두 가지 방식 중 하나로 처리한다.
① 동시에 여러 약을 선택하는 다중 레이블 이진 분류
② 약을 하나씩 순서대로 고르는 순차적 의사결정
초기 성공에도 불구하고 이러한 기존 작업들은 여전히 다음과 같은 한계가 있습니다.
약물 분자 구조와 같은 다른 중요한 데이터는 약물 추천을 보강하는 데 도움이 될 수 있으나 기존 모델에서는 활용되지 않았습니다.
또한, 기존 작업들은 DDI를 부적절하게 모델링하며, 소프트 혹은 간접 제약을 통해 다룹니다.
이 논문은 약물의 분자 구조를 활용하고 DDI를 효과적으로 모델링하는 DDI 조절 약물 추천 모델을 제안합니다.
이러한 방법들이 성능적으로는 괜찮았지만, 여전히 해결하지 못한 한계들이 있었다.
약물추천에 있어서 분자구조를 보는 것은 매우 유용하지만, 기존 모델은 분자구조가 아닌 환자의 상태만 보고 약을 추천했기 때문에 약 자체의 특성을 반영하지 못했다는 한계가 있었다.
또한, 기존 작업들은 약물 간 부작용(DDI)도 명확하게 다루지 않고, 간접적 제약으로 처리했기 때문에 위험한 조합을 추천할 가능성이 충분했다.
따라서 이 논문은, 약물의 분자구조를 분석하여 활용하고, DDI를 명시적으로 통제할 수 있는 DDI 조절 약물 추천모델인 SsfeDrug 모델을 제안한다.
2.2 분자 표현
분자 그래프 표현은 약물 구조와 효능 및 안전성과 같은 특성 간의 연관 때문에 여전히 중요한 주제입니다.
초기에는 분자 설명자 [Mauri et al., 2006]와 약물 지문 [Rogers and Hahn, 2010; Duvenaud et al., 2015]이 약물 분자를 표현하는 데 일반적으로 사용되었습니다.
약물의 분자구조를 그래프 형태로 표현하는 방법은, 약의 효과나 부작용과 같은 특성에 직접적인 관련이 있기 때문에 여전히 중요한 연구주제이다. 초기에는 약물을 표현할 때, 설명자(descriptor)나 지문(fingerprint)과 같은 고정된 방식으로 구조를 요약했다.
"설명자(descriptor)"와 "지문자(fingerprint)"는 분자 구조를 컴퓨터가 이해할 수 있도록 표현한 방식이다.
둘 다 분자 구조를 수치화해서 머신러닝 모델에 입력할 수 있도록 해 주는데, 표현 방식에 차이가 있다.
1. 분자 설명자 (Molecular Descriptor)
- 분자의 물리화학적 특성을 수치로 요약한 값.
- 사람이 정의한 규칙에 따라 계산된 수치들이고, 주로 통계, 화학 지식을 기반으로 함.
💡 예시:
- 분자의 무게
- 극성 (Polarity)
- 수소 결합 수
- 친수성/소수성 정도
- 원자 수, 결합 수 등
즉, 분자를 전체적으로 보고 "이런 성질을 가진 분자구나!"라고 요약한 숫자 정보들이다.
2. 약물 지문자 (Molecular Fingerprint)
- 분자 내의 특정 구조 패턴이나 조각(substructure)이 있는지를 0과 1로 표현한 이진 벡터이다.
- 주로 길이가 고정된 벡터로 구성되고, 각 자리(비트)는 특정 구조의 존재 유무를 의미해.
💡 예시:
- 256개의 자리로 구성된 벡터
- 38번째 비트가 1이면 “벤젠 고리 있음”
- 104번째 비트가 1이면 “아민기(NH2) 있음”
일종의 화학적 구조의 바코드처럼 생각하면 쉽다. 특정 구조가 있으면 1, 없으면 0!
🔍 차이점 요약
구분 | 설명자 (Descriptor) | 지문자 (Fingerprint) |
의미 | 물리/화학적 특성 요약 | 구조 패턴의 존재 여부 |
형태 | 연속적인 수치 (float) | 이진 벡터 (0/1) |
예시 | 분자량, 극성, 녹는점 | 벤젠 고리, 아민기 등 |
🧬 벤젠 고리 (Benzene ring)란?
- 육각형 형태로 연결된 탄소 6개와 수소 원자들로 이루어진 고리 구조
- 약물, 향료, 염료 등 다양한 화합물에 들어가는 매우 흔한 기본 구조
- 방향족 고리(aromatic ring)의 대표적인 예

🧪 아민기 (Amino group)란?
- -NH₂ 로 표현되는 질소(N)와 수소(H)로 구성된 작용기
- 단백질, 신경전달물질, DNA 등 생체분자에 핵심적으로 포함
- 기본적인 염기성(amino base) 특성을 가짐
H
|
H–N–
즉, 예전 모델들은 이런 방식으로 사람이 정의한 정보를 써서 약물 구조를 표현했기 때문에
약물 간 유사성이나 특성을 자동으로 학습하지 못한다는 한계가 있었다.
지금은 GNN(Graph Neural Network) 등을 활용해 분자 구조 자체를 학습해서 표현하는 방식이 점점 보편화되고 있다.
GNN으로 분자 구조를 표현하는 방식
📌 핵심 아이디어
약물 분자를 그래프(graph) 로 본다.
노드(node): 원자 (atom)
엣지(edge): 화학 결합 (bond)
이 그래프를 GNN에 넣으면, GNN이 약물 전체의 구조적 특징을 자동으로 학습할 수 있다.
즉, 사람이 직접 정한 특성 없이, 모델이 스스로 약물의 구조를 이해하고 표현한다는 점이 포인트!
최근 몇 년 동안 딥 러닝 모델이 개발되어 분자 표현을 배우고 분자 하위 구조(연결된 원자 집합)를 모델링합니다.
예를 들어, [Huang et al., 2020b]는 SMILES 문자열에서 순차적 패턴 마이닝 방법을 개발하고 약물 쌍을 해당 부분 문자열 표현의 집합으로 모델링했습니다.
최근에는 딥러닝을 활용해서 분자표현을 배워, 약물의 구조를 직접 학습하는 모델들이 생겼고, 그 안에서 원자들이 어떻게 연결되어 있는지(분자 하위 구조)도 모델링할 수 있게 되었다.
예를들어 Huang 등의 연구에서는 SMILES 라는 화학구조를 문자열처럼 보고 분석해서, 그 안에서 자주 등장하는 중요한 부분 (패턴) 을 뽑아, 약물들을 그 조각들의 집합으로 표현하였다. 그리고 이렇게 표현된 집합들을 모델링에 활용하였다.
SMILES (스마일스)
- 약물 분자의 구조를 문자로 표현한 것.
- 예를 들어, 물(H₂O)은 분자 그림 대신 "O"
에탄올(C₂H₅OH)은 "CCO" 로 표현할 수 있다. - 컴퓨터가 다루기 쉽게 분자 구조를 문자열(string) 로 바꾼 방식이다.
순차적 패턴 마이닝 (Sequential Pattern Mining)
- 여러 개의 문자열에서 자주 나오는 부분 문자열을 찾는 기술.
- 예: ABCDEF, ABCGHI, ABCJKL 이 세 개가 있으면
👉 "ABC"는 공통적으로 자주 나오는 패턴이라고 볼 수 있다!
또한, [Huang et al., 2020a]는 그래프 기반 신경망 모델을 사용하여 분자 그래프를 직접 모델링하는 것을 제안했습니다.
이 논문에서는 [Huang et al., 2020a]에서 영감을 받아, SafeDrug가 추천 중에 분자의 전역 및 지역 정보를 모두 캡처하도록 제안합니다.
또 다른 연구인 Huang et al., 2020a 는 약물 구조를 그래프로 보고, 그래프 신경망 (GNN) 을 이용해 약물 자체를 직접 분석하여 분자그래프를 직접 모델링하는 방법을 제안했다.
Safe Drug 논문은 이 아이디어를 받아들여서, 약물 전체 구조와 하위구조를 둘 다 잘 학습할 수 있도록 하였다.
📚 SafeDrug 논문 요약: 관련 연구 정리
🔍 2.1 약물 추천 분야의 기존 접근 방식
약물 추천 알고리즘은 크게 두 가지 방식으로 나뉜다 :
✅ 1. 인스턴스 기반 접근법
> 환자의 현재 상태(진료 시점 정보)만 고려함
> 예: LEAP 모델은 지금 병원에 온 환자의 증상만 보고 약 추천
> 특징: 빠르지만, 개인화가 부족함
✅ 2. 종단적 접근법
> 환자의 과거 진료 기록의 흐름(시간 의존성)을 반영함
>> 예:RETAIN: 과거 진료를 역순으로 돌아보며 중요한 시점에 주목 (attention 기반 RNN)
>> GAMENet: 메모리에 과거 약물 정보를 저장해두고 참조함
> 특징: 더 개인화된 추천 가능, 하지만 계산량이 많음
❗ 공통적인 한계점
약물의 분자 구조 정보는 고려되지 않음 약물 간 상호작용(DDI)도 명확하게 통제되지 않고, 그냥 소프트하게 처리됨
📌 그래서 SafeDrug은 약물의 구조와 DDI를 명시적으로 반영하는 새로운 모델을 제안한다.
🧬 2.2 분자 표현 (Molecular Representation)
🧪 기존 방식
> 예전에는 설명자(descriptors), 약물 지문(fingerprints) 등 정형화된 표현 사용
> 예: [Rogers and Hahn, 2010], [Duvenaud et al., 2015]
> 한계: 사람이 정의한 특성만 사용 → 유연성이 떨어짐
🤖 최근 딥러닝 기반 분자 표현
> SMILES 문자열에서 패턴을 찾아내는 모델 (ex. [Huang et al., 2020b])
> 그래프 신경망(GNN)을 이용해 분자 구조를 직접 학습하는 모델 (ex. [Huang et al., 2020a])
💡 SafeDrug의 전략
> 위 연구들에 영감을 받아, SafeDrug은 약물의 전체 구조(전역)와 하위 구조(지역)를 모두 학습
> 전역은 MPNN, 지역은 substructure-level 인코딩으로 처리
✅ 즉, SafeDrug은 약물의 본질을 분자 구조 수준에서부터 깊이 이해하고, 위험한 조합(DDI)도 함께 통제하는 "정밀하고 안전한 약물 추천 모델"이다.
지금까지 약물 추천 AI 기술이 어떻게 발전해왔는지,
그리고 SafeDrug이 어떤 점에서 기존 연구들과 차별화되는지 살펴봤습니다!!
그렇다면 SafeDrug은 정확히 어떤 문제를 해결하려는 걸까요?
다음 글에서는 논문에서 정의하는 문제 설정(problem formulation)을 중심으로,
SafeDrug이 약물 조합 추천을 어떻게 바라보고 있는지를 차근히 풀어보겠습니다.

'💻 본업(컴공생) 이야기 > 연구 이야기' 카테고리의 다른 글
[약물 추천, AI 논문 정리 #3] 약을 추천하는 AI, 뭘 기준으로 결정할까? (0) | 2025.03.26 |
---|---|
[약물 추천, AI 논문 정리 #1-2] SafeDrug의 핵심 아이디어 정리 (0) | 2025.03.22 |
[약물 추천, AI 논문 정리 #1-1] 기존 모델의 한계와 SafeDrug의 등장 배경 (6) | 2025.03.22 |
의료 AI의 핵심, '약물 추천'이란 무엇인가? (2) | 2025.03.21 |