MIT提出:介绍贝叶斯深度学习在医疗监护学习调查中的应用:http://wanghao.in/paper/CSUR20_BDL.pdfBayesianDeepLearningGithubRepo:https://github.com/js05212/BayesianDeepLearning-Survey/blob/master/README.md让我告诉你我们在AjobonNatureMedicine上发表的内容,这是我在麻省理工期间所做的最有趣的工作之一。希望这篇帖子能贡献一个数据点,让大家看到机器学习(尤其是贝叶斯深度学习,或称贝叶斯深度学习)在医疗监控(HealthMonitoring)中的应用。1.应用场景简单的说(科幻小说),我们做的系统可以通过感应屋内的wifi信号检测患者是否听从医嘱,按时使用胰岛素笔(InsulinPen)或定量吸入器(Inhaler).治疗自己的医疗工具。由于此类医疗工具的使用有点复杂(例如,胰岛素笔有8个步骤,而定量吸入器有6个步骤),患者在使用时经常会出错。我们的系统还可以自动检测患者是否错过了一步,或者是有哪一步没有到位。我们称此应用程序为“药物自我管理,或MSA”。具体使用场景如下图所示。胰岛素笔和计量吸入器的使用步骤见下图。2.连续时间域中的概率推理熟悉机器学习的同学可能已经发现,这个问题其实是一个比较复杂的概率推理问题:1.不同的步骤持续时间长短不同,如图1中的步骤1。上面4a(Step1)‘拿起工具’一般只有4秒左右,第6步(Step6)‘药压’一般持续12秒左右。因此,可以认为不同步骤的持续时间遵循不同的概率分布。如下所示。而我们的模型需要整合这些先验知识。2.不同步骤之间的空白时间也有长有短(如上图绿色中间的白色区域)。3.患者经常忘记其中的一些关键步骤。例如,对于胰岛素笔(如上图所示),患者经常忘记的步骤是第2步“加载药筒”和第4步“灌注胰岛素笔”。那么这个时候,我们可以把胰岛素笔的整个流程画成一个有限状态机如下图所示。图中从第1步开始的两条“50%”路径表示患者有一半的(先前)概率忘记第2步并直接进入第3步。而这也是我们的模型需要整合的先验知识。3.Bayesiandeeplearning(深度学习与概率推理的结合)从技术角度来说,在这项工作中,我们将底层的FMCWradarPerception和顶层的Continuous-timeBayesNetReasoning结合起来,做了一个BayesianDeepLearning。该模型用于推断慢性病患者是否使用胰岛素笔和吸入器等医疗工具在不接触的情况下按时治疗自己,并检测自动特定使用步骤的异常情况。整个系统的流程图如下。其中有两个链接模型。第一个模型是一个深度神经网络,用于处理类似Wifi的信号(底层FMCW雷达信号)。对应上图中Stage1(阶段1)和Stage2(阶段2)的合并。这个深度模型的输入是:很多帧(frame)长达几分钟的雷达信号(见上图第一行);而他的输出是:每一帧属于不同步骤的概率(见上图2中的Stage),也就是说,如果用药过程包含6个步骤,那么每一帧的输出将是一个6-维向量,而这6个维数的和将永远等于1。第二个模型对应上图中的阶段3(Stage3),它是基于Stage的原始概率得分(RawProbabilityScore)2,再结合我们前面提到的“连续时域概率推理”,进一步进行概率外推,从而输出最终的预测(见上图最后一行)。这两个模型其中一个是深度模块(也叫感知模块),负责处理高维信号,另一个是概率推理模块(也叫任务模块),负责任务相关概率推断。这两个模块可以端到端地协同工作。我们称之为贝叶斯深度学习。有兴趣的同学请看贝叶斯深度学习概览:http://wanghao.in/paper/CSUR20_BDL.pdf4.DeepLearningvsBayesianDeepLearning那么问题来了,这里为什么需要第二种模型的联动?为什么直接使用第一种模型不能解决问题呢?这是因为第一个模型作为深度神经网络,只负责对每一帧给出独立的概率预测,并不能结合帧的前后部分进行推理。这样做的后果就是它直接输出的逐帧预测往往是不合理的。例如,它可能会输出这样的预测:患者前0.1秒仍在步骤3使用设备,接下来的0.1秒直接跳回到步骤1,接下来的0.1秒在步骤4。一个正常的人显然无法完成这样的动作序列。因此,第二个模型的作用是将我们在连续时间域的先验知识(前面“连续时间域中的概率推理”一章提到的三个方面)整合到模型中,进行端到端的(端到端)推理以获得最终预测。这整个结合了概率推理和深度学习的框架,我们称之为贝叶斯深度学习。这样做的好处是双重的。第一个方面是大大提高模型的准确性和鲁棒性。由于概率推理的存在,模型会根据几分钟的整个动作序列来判断患者是否在使用医疗用药工具,这不仅自动纠正了第一个模型的一些错误预测,而且使整个系统大大受无关噪声的影响。减少。第二个方面是为模型提供可解释性。正如@kkhenry所说,在医疗相关的应用中,可解释性是极其重要的,因为它关系到AI系统的用户(医生等医疗从业者)能否相信你模型的预测。在概率推理部分,我们可以给出每一步预测的概率,以及模型预测与先验知识的偏离程度,从而提供解释。例如,模型可以给出“这个病人在上午9点使用了医疗工具,但用错了”的结论,并解释“这是因为模型有95%的把握他/她跳过了第2步。医生可以根据模型提供的解释,决定是否进一步核对患者的具体数据,并提醒患者。如下所示。5.技术细节中如何结合两个模型的预测关于Output,每一帧都会有2个预测(Prediction)。第一个预测来自第一个模型(深度学习模型)给出的帧级预测。这个很简单,可以理解为神经网络对输出进行Softmax操作后得到的各种类型的概率。.第二个预测来自第二个模型(概率推理模型)。它来自于一个作为先验(Prior)的随机过程,具体来说,它是一个连续的时域点过程(PointProcess)和一个马尔可夫链(Markovchain)的组合。点过程负责对每一步的长度进行建模(比如Step2),马尔可夫链负责对步骤之间的过渡进行建模(比如执行完Step1之后,有一半的概率会进行Step2)执行,并且有另一半的概率会去Step3)。这里有趣的一点是,如果我们只使用一般的点过程,比如泊松过程,是没有办法很好地对每一步的长度进行建模的。这是因为泊松过程假设每一步的长度是一个指数分布(ExponentialDistribution),一旦指数分布的期望值(均值)确定了(例如a),它的方差也就确定了(等于一个^2)。因此,它不像高斯分布(GaussianDistribution)那样灵活,可以自由描述一个分布的期望值和方差。所以在这里我们有了一个想法,用高斯分布代替泊松过程的指数分布,高斯分布用作我们模型的先验之一。每一步持续时间的高斯分布的期望值和方差不同,可以直接从训练数据中估计出来。因此,我们直接结合第一个模型(深度学习模型)的预测分数和第二个模型提供的先验分数,加入近似动态规划算法进行联动(联合或端到端)概率推理得到最后的预测。下图展示了我们的模型预测(AIPrediction)和人工标注(HumanAnnotation)的一些对比。前三个示例(a、b、c)是三个不同的患者使用胰岛素笔,总共有8个步骤。接下来的3个示例是3个不同的患者使用MDI,总共有6个步骤。可以看出我们的模型最终的预测是非常准确的,不会出现物理上不可能的预测。6.写在最后,整篇文章算是介绍,讲机器学习(更具体地说,贝叶斯深度学习)及其在医疗中的应用。最后,感谢赵总邀请我加入团队,共同完成这项工作。刚进麻省理工的时候,我就想着把贝叶斯深度学习应用到医疗上。我说我会用深度模块(也就是感知模块)来建模无线信号,用概率模块(也就是任务模块)来做医疗相关的任务。概率推断。没想到,终于成真了。可以说,念念不忘必有回响:)插图来自Icons8的MariaShukshina
