Page 419 - 《软件学报》2026年第3期
P. 419
1382 软件学报 2026 年第 37 卷第 3 期
i t−1
t
t
t
i
t
T
其中, u = [Ξ(C )⊕Ξ(C )]W ∈ R dim , σ 表示 Sigmoid 激活函数, D = {u : m } 可以视为一个向量化的可索引字典,
d p 1 1
)
[
(
t
t−1
t
t
1
t
t
t
1
D = [u ;...;u ] 代表键值对中的键向量, D = m ;...;m t−1 ] 表示值向量, 当 t = 1 时, D 不存在. σ D u ·D 可表示
k v k v
t
为通过计算问诊注意力从字典 D 的药物向量中生成历史药物分布的过程. 通过这种方式, 我们能够在患者的历史
健康记录和当前病状的基础上, 推荐出最相关的药物组合.
2.5 药物表征
t
t ˆ H 进行整合, 这里采用了直
为了预测患者的药物治疗方案, 首先将获得的患者综合健康表征 ˆ P 和结构化嵌入
接的拼接操作, 以获得一个全面的表征, 包含了患者的健康状况信息, 还反映了患者与可能治疗方案之间的关联
性. 接着, 本文将整合后的表征作为解码网络的输入, 具体数学公式表示如下:
t
t
t
ˆ y = Decoder([ ˆ P ⊕ ˆ H ]) (19)
其中, Decoder : R (d p +d h ) → R |M| 表示由一层全连接神经网络构成的解码器, ˆ y 表示最终的药物治疗向量. 在实际应
t
δ. 只有
用中, 通常不会为患者推荐所有可能的药物, 而是会选择那些得分较高的药物. 为此, 我们引入了一个阈值
当某种药物的得分大于这个阈值时, 才会将这种药物纳入推荐的药物列表. 这样, 就得到了一个包含了一系列药物
t
的多热向量 C , 具体如下:
t { t t }
ˆ C = ˆy | ˆy > δ,1 ⩽ i ⩽ |M| (20)
i i
其中, ˆ C 中的每个元素都对应一种药物, 其值表示了这种药物是否被推荐. 如果某种药物的得分大于阈值 δ, 那么
t
ˆ C 中相应位置的元素会被标记为 1, 否则被标记为 0. 医生便可以根据这一结果列表, 综合考虑患者的具体病情
t
在
和个体差异, 为患者定制最为适宜的药物组合方案进行治疗.
2.6 模型训练和推理
在训练阶段, 所有可学习的参数都会被优化以最小化损失函数. 在推理阶段, 模型的工作流程与训练时相同,
即接收输入数据并通过网络结构产生输出结果. SSMD 通过综合损失进行端到端训练, 这意味着从输入到输出的
整个处理流程都在一个统一的框架内被学习和优化.
本文将药物组合推荐视为一项多标签二元分类任务. 每种药物的预测被视为一个单独的子问题, 采用二元交
叉熵损失作为目标的一部分. 此外, 本研究还根据经验采用了多标签合页损失以确保真实标签的得分与其他标签
相比保持明显的优势, 从而使结果更加稳健. 二元交叉熵损失的计算公式如下:
|M|
∑ ( ) ( )
t
t
t
L B = − m logˆy + 1−m log 1− ˆy t (21)
i i
i=1
t
t
其中, m 表示真实的多标签药物向量, ˆ y 表示预测的药物推荐向量. 多标签合页损失的计算公式如下:
i
|M| |M|
1 ∑∑ ( [ ] [ ] )
t
t
t
L M = max 0,1− ˆy ˆ C + ˆy j (22)
|M| i
j=1 i=1
[ ]
t
t
其中, ˆ y [i] 表示第 次问诊时向量第 行的值, ˆ y ˆ C t i 表示第 t 次问诊时由预测标签集 ˆ C 索引的第 行预测标签. 最
i
t
i
t
i
后本文构建的总损失函数表示为:
(23)
L overall = L B +αL M +βL C
其中, α 和 β 是用于平衡不同损失的权重参数. 通过优化 L overall 可以得到整个模型. 模型的优化如算法 1 所示.
算法 1. SSMD 模型学习过程.
输入: 训练集 T , 超参数 α,β 和 DDI 矩阵 A d ;
( )
t−1
t
t
输出: Rec m ,d , p |Θ ; /*预测函数*/
1. for X in /*迭代*/
T
}
{ t−1 t t V
2. m ,d , p ← X; /*构建训练样本*/
t=1

