因果推断深度学习工具箱 - Deep Counterfactual Networks with Propensity-Dropout

(updated in 20210828)

文章名称

Deep Counterfactual Networks with Propensity-Dropout

核心要点

作者把causal inference视作multitask learning的问题,并通过dropout的方式来进行正则化,减少selection bias带来的影响。这种正则化通过估计每一个样本的propensity score,来调整网络的复杂度。本质上类似于propensity weighting的方法,只是更具有神经网络的风格。调整网络复杂度,会在propensity score较低的时候减少过拟合的风险,实现更好的泛化。
文章主要关注CATE(ITE),并且在binary treatment的场景下展开讨论。但是,可以模仿其他的multiple head的神经网络方法,迁移到multiple treatment的场景下。通过,Generalized Propensity Score,可以泛化文中提出的propensity score dropout。

方法细节

问题引入

文章建立在potential outcome框架下,并且需要满足unconfoundness的假设,即。为了需要估计因果效应,比较老的方法采用直接建模的方式,比如,也就是我们常说的single learner(如果两个带有下表就是T-learner)。这种建模方式的弊端是高维的特征会淹没低纬度的干预。
如果采用T-learner,不会存在干预被淹没的问题,也比较灵活,却引入了模型误差带来的因果效应估计的偏差,并且牺牲了统计效率,不能够充分利用样本。

具体做法

为了同时确保灵活性和样本效率,作者把因果推断问题看做多任务学习的问题,不同的counterfactual估计是不同的、却相关的任务。不同的干预意味着不同的任务,任务id和treatment id一一对应。如下图所示,左侧的potential outcome network具有多层共享网络来提升样本效率,因为通过不同treatment的数据共同训练了这些层,提取了共同的因素。而后续单独的输出网络,有保证了灵活性和独立性。相当于在T-learner和S-learner之间做了一个折中,也是很多神经网络处理不同treatment的惯常方式。

Propensity Dropout Network

但是,这样的网络并不能纠正由混淆变量带来的偏差。类似IPW和其他传统的因果推断方法,作者也利用propensity score进行样本权重调节。只不过,调节不是发生在loss的权重上,而是改变网络的复杂程度。在propensity score比较极端(非常接近0或者1)的情况下,利用dropout,使得网络变得简单。在propensity score比较接近0.5的情况下,保持原来网络的复杂程度,这样可以充分利用,在不同干预下,特征分布重合度(overlap)较高的样本。这种权重调节,其实是减少了对具有极端propensity score样本的学习充分程度,是另一种意义上的降权。这样的降权,可以减少对selection bias的过度拟合,提升网络预测在不同counterfactual估计上的泛化能力。
作者定义 , 其中 , 是信息熵。这样当propensity score是0或者1的时候,dropout的值为 ,当propensity score是0.5的时候,dropout的值为 。因此,propensity score更极端的样本具有更大的dropout的概率。
除此之外,通过Monte Carlo Dropout可以得到样本的置信度的点估计,估计步骤如下图。图中, 是各层对应的权重, 是对应的dropout mask向量。通过从Dropout概率的伯努利分布中采样dropout的mask向量,多次估计 ,最终可以得到 的置信区间。
iMonte Carlo Propensity Dropout

整个网络是交替进行训练的,在训练的过程中,share网络会在每一个epoch中被充分训练,而不同干预的输出网络是每隔一个epoch单独训练的,每一个epoch都会采用propensity dropout。整个流程如下图所示,单数epoch左侧的outcome网络没有被训练,而双数epoch时右侧将不会被训练。
alternative training

总的来说,propensity dropout的方法是很有创意的结合了神经网络的dropout和propensity score weighting,同时延续了当时multitask learning的counterfactual估计的主流思路。

代码实现

文中训练的伪代码如下图所示,

training process

具体的pytorch实现可以参见,
https://github.com/Shantanu48114860/Deep-Counterfactual-Networks-with-Propensity-Dropout

首先是DCN网络(作者称没有propensity dropout的网络为deep counterfactual network),可以看到是简单的FFN,不过有两个独立的输出和一些共享层(代码里是2层)。

DCN network structure

DCN的训练是交替训练的,如下图所示,在偶数epoch的时候,训练potential outcome ,奇数的时候训练另一个potential outcome的输出。
DCN network training

之后是propensity score网络,可以看到也是简单的2层FFN,当然可以根据数据采用更复杂的网络结构。


propensity score network

Propensity Score网路的训练是在所有数据集上进行的,训练方法如下图所示。本质就是利用观测样本中treatment的分布,去估计treatment assignment。


propensity score network training

最后来看一下Propensity Dropout的部分。可以看到,首先利用得到的Propensity Score,计算信息熵,然后按照公式得到dropout的概率值,进而得到dropout mask向量。


Propensity Dropout

Propensity Dropout过程中用到的一些工具函数,也都比较简单直接。


util functions

值得注意的是,训练时候的Propensity Score是数据集中处理得到的,实际训练中,可以先通过训练好的propensity score网络得到估计的每个样本的propensity score。

心得体会

利用propensity score在样本粒度调整模型复杂度

个人理解propensity score dropout,是作者把selection bias对counterfactual估计的影响,看做是某种过拟合的产物,是一种保守的反事实估计策略。为了减少混淆变量的影响,放弃了对观测outcome的充分拟合。

Doubly-Robust

虽然作者说同时利用了利用了outcome和propensity score的信息,所以是doubly-robust的。但是,个人认为没有最多只能说是隐式的进行了propensity score weighting,但是并没有进行显示的doubly-robust的建模。

文章引用

[1] https://github.com/Shantanu48114860/Deep-Counterfactual-Networks-with-Propensity-Dropout

你可能感兴趣的:(因果推断深度学习工具箱 - Deep Counterfactual Networks with Propensity-Dropout)