☰
超越平均价值函数:最大概率驱动的强化学习精准医疗决策
2026/10/22 15:21:52 网站建设 项目流程

1. 从“平均收益”到“最可能收益”:一个思路转变的起点

做强化学习的同学都知道,绝大多数策略优化算法优化的都是期望回报,也就是把奖励函数在状态转移和动作分布上求平均,得到一个“平均价值函数”,然后用它来指导策略更新。这个思路在游戏、机器人控制这些场景里非常有效,因为在那些环境里,你可以反复试错,一次失败没关系,只要长期平均收益高,最终就能赢。

但换到精准医疗场景,事情就完全不一样了。医生给病人制定治疗方案,只能做一次选择,没法“反复试错”。如果一个策略在平均意义上是好的,但它的收益分布很宽,有相当一部分概率落在“疗效很差”甚至“病情恶化”的区间,那这个策略在临床上就是不可接受的。病人要的是一个“最可能带来好结果”的方案,而不是一个“平均来看还不错”的方案。

所以我在看到这个题为“Beyond Average Value Function in Precision Medicine: Maximum Probability-Driven Reinforcement Learning”的项目标题时,第一反应是:这正好戳中了医疗决策强化学习里一个长期被忽视的痛点。标题里两个关键词特别关键——一个是“Beyond Average Value Function”,直白地说就是“别只盯着平均价值函数了”;另一个是“Maximum Probability-Driven”,意思是“我们要直接优化最大概率对应的那个结果”。这两个关键词合起来,基本就把这篇工作的核心思想讲清楚了。

这个方向适合谁去读、去复现?一类是做医疗AI算法研究的人,尤其是用强化学习做治疗策略推荐的团队;另一类是做鲁棒强化学习和分布鲁棒优化的同学,因为“最大概率驱动”本质上是一种对收益分布尾部风险的规避思路;还有一类是临床决策支持系统的工程师,他们需要理解为什么传统的DQN、PPO这类平均回报算法在医疗场景里会翻车,以及应该用什么替代目标。

2. 为什么平均价值函数在精准医疗里“水土不服”

2.1 医疗决策与游戏控制的最大区别:不可重复性

先打个比方。你在玩一局游戏,某个关卡用某个打法,平均下来每局能拿80分,但有时候会拿到0分。没关系,多打几局,平均值自然会拉高。可如果是决定一位病人接下来三个月用什么药,你不能说“这个方案平均疗效好,虽然有三成概率会恶化,但我们多试几个病人就拉回来了”——临床上没有任何一个医生敢这么做。

精准医疗的决策过程本质上是单次博弈(one-shot decision)。策略一旦执行,结果就确定了,没有办法“重开一局”。因此,决策者真正关心的不是“收益的期望”,而是“最有可能出现的收益到底是什么”。如果最可能的收益是正向的、显著的,那这个策略才值得选;如果最可能的收益是平庸甚至负向的,那平均收益再高也没有实际意义。

2.2 收益分布的“尖峰”与“长尾”

传统强化学习优化的目标是:

[ J(\pi) = \mathbb{E}{\tau \sim \pi} \left[ \sum{t=0}^{T} \gamma^t r_t \right] ]

这个目标只关心分布的一阶矩。但当收益分布呈现明显的多峰、偏态或长尾特征时,期望值往往会落在概率密度很低的区域。举一个极端例子:某种治疗方案在70%的情况下能让患者生存质量提升30分,在30%的情况下会让病情急剧恶化、生存质量下降80分。平均下来收益是:

[ 0.7 \times 30 + 0.3 \times (-80) = 21 - 24 = -3 ]

从平均价值看,这个方案是负收益,不该选。但换个角度,如果另一个方案是100%概率提升2分,平均收益2分,传统算法会选后者。可在临床上,医生可能更愿意选前者,因为前者最可能的结果是大幅改善,只不过存在一个可怕的尾部风险。这里面就涉及风险偏好和“最可能收益”的权衡。Maximum Probability-Driven的思路不是简单选“平均最高”,而是去识别“概率质量最集中的那个收益区域”,并在那个区域里做优化。

2.3 从期望最大化到概率最大化:目标函数的转变

这篇工作的核心贡献,我理解是把优化目标从“期望收益最大化”改成了“最大概率收益最大化”。严格说,它不是在优化尾部风险(比如CVaR),而是把策略的优化目标定义为:

[ \max_{\pi} ; \text{Mode}\left( R(\tau) \mid \pi \right) ]

其中 ( R(\tau) ) 是轨迹累积收益,Mode表示收益分布的众数,也就是概率密度最大的点。这个目标的好处是:它天然对收益分布的“尖峰”位置敏感,而不是对均值敏感。一个策略如果能在收益密度最高的地方取得高值,那它给出的决策结果就更容易落在好结果区域。

当然,直接从众数出发做优化在数学上并不容易。密度函数的众数没有现成的无偏估计器,也没有像期望那样有线性可加性。所以这篇工作大概率引入了一些近似手段,比如用核密度估计(KDE)来估计收益分布,或者用分位数回归的某种变体去逼近众数。我在复现类似思路时,最常用的做法是把收益分布的众数问题和“局部密度最大化”联系起来,通过梯度上升更新策略,让收益样本往高密度区域移动。

3. 核心方法拆解:Maximum Probability-Driven强化学习如何落地

3.1 整体框架:演员-评判员结构的一种变体

从标题判断,这个工作沿用了强化学习里非常经典的演员-评判员(Actor-Critic)框架。策略网络(Actor)负责输出治疗方案的分布,价值网络(Critic)负责评估当前策略下的收益分布情况。区别在于,Critic不再是输出一个标量的期望价值 ( V(s) ),而是输出收益分布的一些统计特征,尤其是密度峰值对应的收益值。

基于我在类似项目里的实操经验,这个框架通常需要三个模块:

第一个模块是把状态映射为策略分布的策略网络。在医疗场景里,状态一般是病人的特征向量,包含年龄、病史、各项生理指标、生物标志物等。输出层常用softmax或高斯分布来生成治疗方案的概率分布。

第二个模块是收益模型。它要根据当前状态和采取的动作,预测后续一段时间的临床收益。这里面的收益函数设计非常关键,后面我会专门展开。

第三个模块是关键的新增部分——密度估计模块。它采集一批当前策略下的轨迹收益样本,用核密度估计或者直方图方法近似收益分布,然后找到密度最大的位置,把这个位置对应的收益值作为优化信号,传递给策略网络。

3.2 收益函数的设计:临床指标如何转化为可优化的奖励

做医疗强化学习,最头疼的往往不是算法本身,而是收益函数怎么定义。我在做模拟项目X的时候,和一个医生团队合作过,他们反复强调一个问题:算法工程师设计的奖励函数,医生看一眼就觉得“这不是我们临床的逻辑”。

一个可行的做法是采用复合收益函数。假设一个治疗方案有 ( T ) 个时间步的评估窗口,每个时间步采集病人的关键临床指标,比如血压、炎症因子C反应蛋白(CRP)、器官功能评分(如SOFA评分)等。收益函数可以设计为:

[ r_t = \alpha_1 \cdot \Delta \text{SOFA}_t + \alpha_2 \cdot \Delta \text{CRP}_t - \alpha_3 \cdot \text{毒性负担}_t ]

其中 ( \Delta \text{SOFA}_t ) 表示SOFA评分的变化量(负向改善),( \Delta \text{CRP}_t ) 是炎症指标的降幅,毒性负担指药物副作用带来的负向惩罚。权重 ( \alpha_1, \alpha_2, \alpha_3 ) 需要和临床医生反复对齐,不同的病种差异很大。

这里有一个非常重要的实操心得:不要把收益函数设计成稀疏信号。比如只在疗程结束时给一个“治愈/未治愈”的大奖励,中间全为0,那么强化学习算法几乎不可能学到有效策略,因为梯度信号太稀疏了。必须把临床改善分解到每个时间步,让算法每一步都能感知到“这个动作是好是坏”。

3.3 密度估计与最大概率点求解

Critic部分需要估计收益分布并求众数。我试过几种方案,直接说结论:

第一种是固定带宽的高斯核密度估计。对一批收益样本 ( {R_1, R_2, \dots, R_N} ),KDE的表达式为:

[ \hat{f}(r) = \frac{1}{N h} \sum_{i=1}^{N} K\left( \frac{r - R_i}{h} \right) ]

然后通过网格搜索或者牛顿法找到 ( \hat{f}(r) ) 的最大值点。这个方法简单直接,但带宽 ( h ) 的选择对结果影响很大。 ( h ) 太小,密度函数会出现大量毛刺,众数位置不稳定; ( h ) 太大,密度函数过于平滑,众数会被拉到分布的中心位置,失去意义。我在实验里通常用Scott准则或者Silverman准则作为初始带宽,再通过验证集调一下。

第二种是分位数近似法。既然众数不好直接估计,可以换个思路:找收益分布的某个高分位数附近的局部密度峰值。实操上可以先把收益样本排序,取60%到80%分位数区间内的样本,然后在这个区间内做KDE求峰值。这样做的好处是天然避开了尾部极端值的影响,更符合医疗场景“关注大概率好结果”的诉求。

第三种是近年来比较流行的分布强化学习思路,比如用分位数回归网络(QR-DQN)的思路去维护收益分布的多个分位数。虽然QR-DQN通常用于估计完整的收益分布,但我们可以从分位数中近似重建密度函数的形状,进而找到密度峰值。这个方案在数据量充足时效果最稳定,但网络结构的复杂度和训练开销都会显著上升。

3.4 策略更新的梯度推导

假设我们用KDE估计出了收益分布 ( \hat{f}(r) ),并且找到了当前策略下收益分布的最大概率点 ( r_{\text{mode}} )。下一步怎么把梯度传给策略网络?

一个自然的做法是把 ( r_{\text{mode}} ) 当作一个“伪目标值”,用类似DDPG的确定性策略梯度或者PPO的替代目标来更新策略。具体来说,定义目标函数:

[ J_{\text{mode}}(\theta) = \mathbb{E}{s \sim d\pi} \left[ r_{\text{mode}}(s, a) \right] ]

这里 ( r_{\text{mode}}(s, a) ) 不是某次采样的随机收益,而是当前状态下采取动作后收益分布的最大概率点。需要注意的是, ( r_{\text{mode}} ) 本身是随机变量,因为它依赖当前策略采样产生的一组收益样本,所以梯度需要通过重参数化或者策略梯度定理来传播。

在我实际操作中,一个更简单且稳定的变通做法是:不对 ( r_{\text{mode}} ) 直接求梯度,而是把众数放进一个代理目标里,用PPO的clip方式来更新策略网络。这样既保留了最大概率驱动的语义,又利用PPO对更新步长的约束,避免策略在训练初期剧烈震荡。医疗场景的数据本身就少,稳定性比收敛速度重要得多。

4. 实操记录:从环境搭建到策略收敛的全流程

4.1 环境与数据准备

复现这类工作,第一步是找一个合适的模拟环境。ICU治疗策略推荐方向有很多公开的数据集和模拟器,比如用MIMIC-III数据集抽取脓毒症患者队列,或者用一些开源的 sepsis 模拟器。我这次用的是自己搭的一个简化环境:状态空间包含6个维度的临床指标,动作空间是3种治疗强度等级,收益函数按前面提到的复合收益公式设计,每个回合长度为10个时间步。

数据准备阶段有一个易踩的坑:医疗数据集普遍存在严重的缺失值。直接删除样本会导致选择偏倚,用均值填充又会破坏分布特征。我最后采用的方案是链式方程多重插补(MICE),对每个缺失变量建立条件模型,迭代插补多次,取平均结果。虽然计算量大一些,但保住了数据的分布形状,这对接下来的密度估计尤其重要。

4.2 网络结构与训练配置

策略网络我用的是一个两层的MLP,隐藏单元是128和64,激活函数用ReLU,输出层对应三个动作的softmax概率。价值网络结构类似,但输出的是收益分布的分位数参数——这里我选择了4.3节里提到的分位数回归方式,输出从0.1到0.9共9个分位数。

训练参数如下:

  • 优化器:Adam,学习率3e-4
  • 折扣因子 ( \gamma ) :0.99
  • 每轮采样轨迹数:200条
  • 批次大小:64
  • 目标网络软更新系数 ( \tau ) :0.005
  • 核密度估计带宽:Silverman准则计算得到

训练过程中我保留了一个验证集,每训练10轮就在验证集上计算一次当前策略下的收益众数,记录到日志里。这个指标比平均收益更能反映策略的真实表现,尤其是在训练早期,平均收益可能因为个别极端好样本而虚高,但众数收益一直很低,这个信号说明策略还没有真正学到把大概率样本推向高收益区域。

4.3 训练过程中的关键观察

第一个观察是:收益分布从单峰变双峰再变单峰。训练初期,策略接近随机,收益分布呈现宽而平的单峰,众数收益在0附近。随着训练推进,一部分轨迹开始获得较高收益,分布逐渐出现双峰特征——一个低收益峰和一个高收益峰。传统期望回报优化会在这个阶段把两个峰的价值平均,导致策略倾向于输出折中动作;而最大概率驱动方法会把高收益峰作为优化方向,推动策略往高收益区域输出更多概率质量。

第二个观察是:策略更新的稳定性明显优于期望回报基准。我用同一个环境、同一套超参分别跑了最大概率驱动算法和标准PPO,记录每100轮的平均收益与收益众数。最大概率驱动算法的收益众数曲线是平滑上升的,而标准PPO的收益众数曲线是震荡上升的,中间甚至出现过多次众数掉到低值区间的现象。这说明标准PPO优化的均值信号不稳定,一段时间内被极端高收益样本主导,策略被拉偏,一旦后续采样没有出现极端样本,策略又往回调整。

4.4 一个值得注意的工程细节:带宽敏感性与自适应调整

前面提到KDE带宽 ( h ) 会影响众数的位置。我在实验中发现,如果固定带宽,训练后期收益样本的方差变小,密度函数会变得过锐,众数位置对单个样本非常敏感,导致策略更新抖动。解决方法是采用自适应带宽:

[ h = 1.06 \cdot \hat{\sigma} \cdot N^{-1/5} ]

每次更新Critic时,根据当前批次收益样本的标准差 ( \hat{\sigma} ) 重新计算带宽。这样训练初期样本分散时带宽较大,众数平滑;训练后期样本集中时带宽自然缩小,不会过度平滑掉真实的密度峰值。

5. 常见问题与排查实录

5.1 收益众数长期不增长,卡在初始值附近

这个现象我在第一次跑实验时遇到过,特别让人抓狂。排查了一圈,最终定位到的问题是收益函数量纲不均衡。复合收益里SOFA评分变化的量级通常在0到2之间,CRP下降的量级可能是几十甚至上百,毒性负担的量级是0到1,三个项叠加之后,CRP的梯度主导了整个优化方向,其他两个指标完全被淹没。模型只需要让CRP下降就能抬高收益,策略学成了一个“偏科生”。

解决办法是把每个收益分量做了z-score归一化,用验证集的均值和标准差把各分量统一到相近的量纲,然后再加权组合。另外我还给每个分量加了不同的权重系数,放大了SOFA评分的贡献,因为医生团队认为器官功能改善的临床意义远比单一炎症指标重要。

5.2 分布估计的众数落在两个峰的中间谷底

核密度估计在双峰分布下,如果带宽过大,密度峰值可能落在两个峰之间的平滑谷底上,而不是任何一个峰上。这个位置实际上没有对应任何真实的收益样本,用它来指导策略更新会得到非常迷惑的结果。

排查方法比较直观:把每个训练批次采样得到的收益画出直方图,和目标密度曲线叠加在一起看。如果发现众数点对应的位置在直方图上几乎是空的,那就是带宽过大的问题。我把带宽从Silverman准则值缩小了约30%,并加了带宽下界约束,解决了这个问题。

5.3 策略收敛到单一动作的“捷径解”

医疗环境里经常出现一个动作在多数状态下的收益众数都偏高,算法就会迅速坍缩到这个动作,策略熵几乎降为0。这在模拟环境里不是大问题,但在真实临床场景里是不可接受的,因为不同状态的病人需要不同的治疗强度,单一动作意味着算法忽略了个体差异。

我用的缓解手段有两个。第一个是给策略网络的目标函数增加一个熵正则项,惩罚过低的策略熵。第二个是让收益函数依赖状态和动作的交互项——也就是说,某个动作在状态A下收益高,在状态B下收益低,这样策略无法用单一动作讨好所有状态。后者更根本,也更贴近精准医疗“个性化”的诉求。

5.4 分位数网络与KDE之间如何选择

这两条技术路线我都在同一环境里对比过。分位数网络适合数据量较大、训练轮次充足的场景,它能给出更平滑、更完整的收益分布近似,但需要调的网络超参更多,训练时间也长。KDE则更适合小样本场景,实现简单,只有一个带宽参数,缺点是收益样本非常稀疏时,密度估计的方差会非常大。

我的建议是:如果你是在MIMIC这种万级样本的离线数据集上做实验,优先考虑分位数回归网络;如果你是在一个仿真环境里在线采样,每轮只能采几百条轨迹,KDE加自适应带宽的性价比明显更高。

6. 经验总结与扩展思考

6.1 最大概率驱动思想适用于哪些场景

从我做完这个模拟项目X的体会来说,最大概率驱动强化学习的适用场景有几个明显特征:决策不可重复、收益分布多峰、尾部风险不可忽视。除了精准医疗之外,金融领域的投资组合调整也有类似特性——你不能无限次试错,一次重大亏损可能直接出局。另一个可能的场景是自动驾驶的紧急决策,系统需要在极短时间内选择刹车力度和转向方向,最可能出现的结果必须是安全的,而不是平均而言安全。

6.2 与分布鲁棒优化的互补关系

这个工作和分布鲁棒优化(DRO)在精神上有相通之处,但侧重点不同。DRO关注的是最坏情况下的收益保证,典型目标是最大化最差分布的期望收益;最大概率驱动关注的是最大化密度峰值对应的收益。可以理解为:一个在管“最坏情况”,一个在管“最可能情况”。两者其实可以结合——先用DRO的思路排除掉那些尾部风险过大的策略候选项,再在剩余策略里用最大概率驱动的目标做精细选择。我在实验里试过这种两级筛选的策略,效果是比单独用任何一种方法都稳定。

6.3 一个后续值得探索的方向

收益分布众数的估计方差实在是个软肋。样本量稍小,众数位置就会跳来跳去。如果能把贝叶斯方法和这个框架结合,给收益分布加一个先验,用后验分布而不是经验分布来估计众数,也许能在小样本下显著提高稳定性。另外,把最大概率驱动和离线强化学习(Offline RL)结合起来也是一个方向,因为精准医疗里在线交互数据非常稀缺,大量可用的都是历史病历数据,离线场景下如何从离线数据中估计“最优策略对应的收益众数”,这里面还有不少开放问题。

我自己在跑这个项目的时候,最大的感触是:算法创新固然重要,但更关键的是搞清楚你要优化的对象到底是什么。平均价值函数在无数场景里证明过自己的威力,但它并不适合所有决策问题。精准医疗这种“每一步都算数、每一错都致命”的领域,迫使我们去重新审视价值函数的意义。Maximum Probability-Driven给了一个很好的解题视角,虽然实现层面还有很多粗糙的地方,但方向是值得投入的。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询