深度学习如何引入先验知识(临床医生的诊断经验)

深度学习的问题

在使用传统的深度学习网络对病灶进行分割时,如,FCNN, U-Net, Dense U-Net等,网络均只考虑了本身图像上的信息,让网络本身通过大量的图像与label的对应关系,进行深度学习模型的训练。这一系列过程中没有任何人工的干预以及人为的先验信息。当数据量十分巨大时,这种做法往往能够取得非常好的分割效果,但当数据量相对较小时,如很多医学影像数据往往只有几十张精准标注的图像,引入医生本身的解剖学信息往往能够取得更好的分割效果。但问题的难点在于如何将医生的临床知识进行量化表示,并与深度学习的分割相结合。Zheng等人(Anatomically Constrained Deep Learning for Automating Dental CBCT Segmentation and Lesion Detection )在牙齿的CT图像上,在的Dense U-Net基础上,考虑引入了解剖学的知识——病灶部位附近不会有background,materials不会直接连接骨头。其具体方法以及训练过程下面进行详细阐述。


优化问题

在深度学习分割网络中,我们的优化的目标函数通常为如下形式:
( 1 / N ) ∑ ( x , y ) ∈ D l L ( y , p θ ( y ∣ x ) ) (1 / N) \sum_{(\mathbf{x}, \mathbf{y}) \in D_{l}} \mathcal{L}\left(\mathbf{y}, p_{\theta}(\mathbf{y} \mid \mathbf{x})\right) (1/N)(x,y)DlL(y,pθ(yx))

其中 D l D_l Dl为训练集, p θ p_{\theta} pθ为深度学习模型, x \mathbf{x} x为原图, y \mathbf{y} y是原图对应的label,两者均为向量,向量的长度为图像像素点的个数。而文章在这里考虑了一个新的得分函数, f ( y ) f(y) f(y),得分越高表示越符合解剖学的先验知识。为了更好的适用于一组图像,这里考虑了平均意义下的得分函数,也就是对其添加了期望,期望是关于 p θ p_{\theta} pθ的条件分布下的。此时,目标优化问题变为了:
min ⁡ θ { 1 N ∑ ( x , y ) ∈ D l L ( y , p θ ( y ∣ x ) ) − α 1 N ∑ x ∈ D l E p θ ( y ∣ x ) ( f ( y ) ) } \min _{\theta}\left\{ \frac{1}{N} \sum_{(\mathbf{x}, \mathbf{y}) \in D_{l}} \mathcal{L}\left(\mathbf{y}, p_{\theta}(\mathbf{y} \mid \mathbf{x})\right)- \alpha \frac{1}{N} \sum_{\mathbf{x} \in D_{l}} E_{p_{\theta}(\mathbf{y} \mid \mathbf{x})}(f(\mathbf{y})) \right\} θminN1(x,y)DlL(y,pθ(yx))αN1xDlEpθ(yx)(f(y))

这里的 α \alpha α为tuning parameter。但到这里会发现,上述的目标函数根本无法计算,原因是 p θ p_{\theta} pθ的维度过高,为像素点个数,因此对应的期望就无法进行求解。文章在这里考虑使用了变分推断的方法,用一个 q q q 函数来近似 p θ p_{\theta} pθ,根据标准的变分推断理论,只需使得两者之间的KL散度尽可能小,这里补充一下KL散度的定义:

  • KL散度(Kullback-Leibler divergence,简称KLD),在讯息系统中称为相对熵(relative entropy),在连续时间序列中称为随机性(randomness),在统计模型推断中称为讯息增益(information gain)。也称讯息散度(information divergence)。
  • KL散度是两个概率分布 P P P Q Q Q差别的非对称性的度量,其通常用来度量使用基于 Q Q Q的分布来编码服从 P P P的分布的样本所需的额外的平均比特数。典型情况下, P P P表示数据的真实分布, Q Q Q表示数据的理论分布、估计的模型分布、或 P P P的近似分布。

对于离散随机变量,其概率分布P 和 Q的KL散度可按下式定义为
D K L ( P ∥ Q ) = − ∑ i P ( i ) ln ⁡ Q ( i ) P ( i ) . D_{\mathrm {KL} }(P\|Q)=-\sum _{i}P(i)\ln {\frac {Q(i)}{P(i)}}. DKL(PQ)=iP(i)lnP(i)Q(i).
等价于
D K L ( P ∥ Q ) = ∑ i P ( i ) ln ⁡ P ( i ) Q ( i ) D_{\mathrm {KL} }(P\|Q)=\sum _{i}P(i)\ln {\frac {P(i)}{Q(i)}} DKL(PQ)=i

### 结合先验知识深度学习方法及应用 #### 方法概述 将先验信息深度学习相结合是一种有效的方法,能够提升模型性能并减少训练所需的数据量。这种方法通常涉及利用领域专家的知识或统计规律来增强神经网络的学习能力。例如,在贝叶斯网络中,可以通过概率图模型引入因果关系作为先验约束[^1]。 此外,还可以通过构建物理引导项的方式融入领域知识。这些引导项可以由单调性关系、变量合理值范围或其他形式的经验法则组成,并借助数学变换嵌入到损失函数之中[^2]。 对于特定的任务和数据类型,则可以选择适合该场景下的归纳偏置结构。比如当处理图像分类问题时,可采用卷积层作为特征提取器;而在最终预测阶段则可能搭配多层感知机(MLP)加Softmax的设计方案[^3]。 #### 实现方式 以下是几种常见的实现途径: - **正则化技术** 正则化是防止过拟合并加入外部信息的一种手段。L1/L2范数惩罚就是典型例子之一,它们鼓励权重稀疏或者平滑分布从而反映某种假设偏好。 - **架构设计调整** 针对不同模态的信息源定制专门化的子模块组合而成复杂体系结构也是常见做法。像时间序列分析里常使用的循环单元(LSTM/GRU),其内部机制本身就暗含了顺序依赖性的预设条件。 - **初始化策略优化** 合理设定参数初值有助于加速收敛过程以及提高泛化效果。这一步骤同样允许注入专业知识指导初始状态选取依据实际需求制定相应规则。 下面给出一段简单的Python代码演示如何定义一个带有自定义初始化逻辑的基础全连接层类: ```python import torch.nn as nn from torch import Tensor class CustomLinear(nn.Module): def __init__(self, input_dim: int, output_dim: int, prior_mean=0., prior_stddev=1.) -> None: super(CustomLinear, self).__init__() # Initialize weights based on given priors w_init = (torch.randn(output_dim, input_dim)*prior_stddev)+prior_mean self.weight = nn.Parameter(w_init) b_init = torch.zeros(output_dim) self.bias = nn.Parameter(b_init) def forward(self, x:Tensor)->Tensor: return F.linear(x,self.weight ,self.bias ) ``` 此片段展示了创建线性映射操作的同时考虑到了高斯型随机扰动的影响因素,体现了理论驱动实践的思想理念。 --- #### 应用案例分享 上述提到的技术已被广泛应用于多个行业当中: - 在医疗影像诊断方面,医生积累多年的临床观察成果被转化为算法中的硬编码规则或者是软提示信号辅助判断病变区域; - 自然语言理解任务上,词典语义关联度测量结果可以直接影响注意力分配比例计算公式构成部分; - 物联网传感器数据分析过程中,设备运行特性曲线趋势变化模式往往成为异常检测环节的重要参考指标。 综上所述,融合先验知识进入深度学习框架不仅可行而且必要,它使得机器更加贴近真实世界运作规律,进而取得更优解表现水平。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值