Sensitivity analysis知乎

做事要抓主要矛盾
1. 为什么

在复杂事物自身包含的多种矛盾中,每种矛盾所处的地位、对事物发展所起的作用是不同的,总有主次、重要非重要之分,其中必有一种矛盾与其它诸种矛盾相比较而言,处于支配地位,对事物发展起决定作用,这种矛盾就叫做主要矛盾。正是由于,矛盾有主次之分,我们在想问题办事情的方法论上也应当相应地有重点与非重点之分,要善于抓重点、集中力量解决主要矛盾。
2.主次矛盾关系
第一层关系辩证统一。要矛盾就是指其他处于从属地位、对事物发展不起决定作用的矛盾。主要矛盾和次要矛盾相互依存。第二层关系一定条件下相互转化。主要矛盾和次要矛盾的地位不是一成不变的,在一定条件下它们可以相互转化,即主要矛盾在一定条件下转化为次要矛盾,次要矛盾在一定条件下上升为主要矛盾。
3.方法论
主要矛盾和次要矛盾辩证关系的原理要求我们在实践中,要学会区分主要矛盾和次要矛盾,学会区分矛盾的主要方面和次要方面。在分析和解决、处理问题时,既要看到主要矛盾、矛盾的主要方面,坚持重点论,善于抓住重点。又要看到次要矛盾和矛盾的次要方面,坚持两点论,学会全面地看问题,做到两点论和重点论的统一。只看到主要矛盾和矛盾的主要方面,看不到次要矛盾和矛盾的次要方面,就会犯一点论错误。相反,只看到次要矛盾和矛盾的次要方面,看不到主要矛盾和矛盾的主要方面,就会犯均衡论的错误。

敏感性分析(sensitive analysis)
模拟过程中需要先做敏感性分析,找出影响较大的参数,简化问题提高效率又不失准确性。这不就是上述中的做事要抓住主要矛盾,抓住矛盾的主要方面。而问题不同或者说建筑不同,建筑所在地不同等等,主要矛盾和次要矛盾又会进行转化。

下面的视频为使用simlab和jEplus对建筑模拟进行敏感性分析。simlab是一款基于蒙特卡洛方法的敏感性和不确定性分析的软件。jEplus是一款基于EnergyPlus的参数化模拟软件。jEplus的作用是产的生数据,此处换为别的软件都一样,simlab的流程不变啊,具有借鉴意义。如果只是做建筑的敏感性分析,那下面这个视频足够了。

Sensitivity analysis知乎
https://www.zhihu.com/video/1116743477169528832

资源获取:
公众号回复:‘3’。获取Energyplus, jEplus, Simlab, Notepad++, jEplus+EA,eucild.

Sensitivity analysis知乎

在上一节中我们介绍了建模后深度学习可解释性方法之一:隐层分析法,但我们也会发现隐层分析法的一个问题在于,通过端到端训练的隐层很多时候并没有什么特定的含义,多数依赖我们的主观判断。但是深度学习模型中往往只有输入层对我们来说才是有意义的,所以了解深度学习模型的一个更直观的方法是通过研究输入层的变化对结果的影响来判断输入变量或输入样本的重要性,这也是通常所说的敏感性分析方法。

敏感性分析(Sensitivity Analysis)是一类非常重要的,用于定量描述模型输入变量对输出变量的重要性程度的方法,在经济、生态、化学、控制等领域都已经有了非常成熟的应用。假设模型表示为 y=f(x_1,x_2,...,x_n)敏感性分析就是令每个属性在可能的范围变动,研究和预测这些属性的变化对模型输出值的影响程度。我们将影响程度的大小称为该属性的敏感性系数,敏感性系数越大,就说明属性对模型输出的影响越大。一般来讲对于神经网络的敏感性分析方法可以分为变量敏感性分析、样本敏感性分析两种,变量敏感性分析用来检验输入属性变量对模型的影响程度,样本敏感性分析用来研究具体样本对模型的重要程度,也是敏感性分析研究的一个新方向。

变量敏感性分析

神经网络中的变量敏感性分析方法大概有以下几种:基于连接权的敏感性方法,基于偏导的敏感性分析方法、通过改变输入变量观察其影响的方法和与统计方法结合的敏感性分析方法。

基于连接权的敏感性分析方法

基于连接权的方法中比较有代表性的工作是Garson等人1991年在《Interpreting neural network connection weights》提出的方法,这种来自于“远古时期”的智慧相对来说就要简单粗暴一点。输入变量 x_i 对输出变量 y_k 的影响程度为:

Q_{ik} = \frac{\sum_{j=1}^L(w_{ij}v_{jk}g/\sum_{r=1}^Nw_{ij})}{\sum_{i=1}^N\sum_{j=1}^L(w_{ij}v_{jk}g/\sum_{r=1}^Nw_{rj})}

但是由于这种方法中 w_{ij} 的正负性导致我们可能没办法得到真实的敏感性系数,所以后来就对这个公式进行了改造,改为用绝对值来评估影响力。

Q_{ik}' = \frac{\sum_{j=1}^L(|w_{ij}v_{jk}|g/\sum_{r=1}^N|w_{ij}|)}{\sum_{i=1}^N\sum_{j=1}^L(|w_{ij}v_{jk}|g/\sum_{r=1}^N|w_{rj}|)}

下图就通过一个例子描述了Garson方法对变量重要性的评估过程。

Sensitivity analysis知乎
Sensitivity analysis知乎
Sensitivity analysis知乎

当然这种方法存在的问题就不用我多说了,放到一个两个隐层的网络可能还适用,放到深度网络中由于忽略了非线性激活函数误差会一步一步积累,所以慢慢也就被大家抛弃了。

基于统计方法的敏感性分析方法

基于统计方法的敏感性分析方法中一个比较有代表性的工作是Olden等人2002年在Elsevier上发表的《Illuminating the “black box”: a randomization approach for understanding variable contributions in artificial neural networks》,虽然也是来自于“远古时期”的智慧,却是我个人非常欣赏的一个工作,现在看来依然觉得非常牛逼。这个工作的步骤如下:

1. 使用随机初始的权重构建一组神经网络

2. 从中选出预测性能最好的神经网络,记录下该网络的初始权重,计算并记录:

(1) 输入神经元对输出神经值经过某个隐层神经元的连接权重:也就是上面Garson算法图中的 c_{A1}

(2) 全局的连接权重,也就是每个变量输入层到输出层连接权的总和,也就是上面Garson算法图中的 c_1 = c_{A1}+c_{B1}

(3) 根据前面所提到Garson算法计算每个变量的相对重要性

3. 随机打乱输出值( y_{random} )

4. 使用 y_{random} 和初始的随机权重构建一个神经网络

5. 大量重复步骤3和4,每次都记录步骤2中的值

这个方法牛逼的地方在于通过大量的重复采样(bootstrap)使得对神经网络的统计检验成为了可能,随机打乱了输出值使我们能够得到基于给定初始值随机训练网络的权重和重要性分布,这样就可以通过统计检验的方法来(如果pvalue非常小,那么我们可以认为这个值不是随机选的,是显著的),就像下图所示,表示了表面积对生物多样性的影响(三个图分别表示在步骤2中所记录的经过隐层神经元B的连接权、总连接权、相对重要性),在概率分布图中基本P值都比较小,因此可以认为这些影响都是显著的。

Sensitivity analysis知乎
Sensitivity analysis知乎
Sensitivity analysis知乎

基于偏导的敏感性分析方法

基于偏导的敏感性分析方法主要是利用偏导数来评估输入变量对输出的影响,比如Dimoponlos等人在《Use of some sensitivity criteria for choosing networks with good generalization ability》中提出的敏感性方法,除了考虑偏导以外,作者也考虑了曲率(也就是二阶导数)的影响,因为神经网络在激活函数处的非线性导致了虽然导数绝对值较小,但有可能因为曲率较大导致敏感性高的情况,某个变量j的敏感性可以由所有样本在变量j处的导数和曲率乘积的平方和度量:

Sensitivity analysis知乎

基于输入变量扰动的敏感性分析方法

基于输入变量扰动的敏感性分析方法是在前向网络中最为常用的一种敏感性分析方法,可以用于评估变量的重要性从而达到变量筛选的目的,比如Dombi等人提出的平均影响值(MIV,Mean Impact Value)方法就是一种被广泛应用的评估方法,MIV方法的计算过程如下:

  1. 在网络训练终止后,将训练样本P中每一自变量特征在原值的基础上分别加/减10%后成两个训练样本P1和P2
  2. 将P1和P2分别作为仿真样本利用已建成的网络进行仿真,得到两个仿真结果A1和A2
  3. 求出A1和A2的差值,即为变动该自变量后对输出产生的影响变化值
  4. 最后将IV按观测样本数平均得到该自变量对应变量——网络输出的MIV。

按照MIV的绝对值排序即可得到各个自变量对网络输出影响的重要性排序,从而完成变量筛选的目的。

样本敏感性分析

样本敏感性分析中比较有代表性的工作是 Pang Wei Koh 2017年在ICML上发表的

《Understanding Black-box Predictions via Influence Functions》,这篇文章也是去年ICML的best paper,通过影响力函数来理解深度学习黑盒模型的预测效果。什么是影响力函数呢?这个其实就涉及到统计学的相关概念了,大家都知道一般来说我们训练神经网络模型也好还是别的SVM之类的什么模型都是通过SGD等方法训练的,找到一个目标损失函数然后让它不断收敛得到最终的参数。在理想状况下最后收敛的点应该都是导数为0的点,那么我们如何评估某个样本的敏感度呢?有个办法就是将样本做微小的改变 \epsilon ,这样最后收敛的参数也会发生改变,然后得到参数的改变对 \epsilon 的导数就是这个样本的影响力函数。

这里如果假设 L(z_i,\theta) 是每个样本的损失函数,那么总的损失函数可以写成:

Sensitivity analysis知乎

R(\theta) 的二阶偏导矩阵 H_{\hat \theta} 可以写成下面的形式,这里我们假设 H_{\hat \theta} 是正定的,这样可以保证在后续推导中 H_{\hat \theta} 的逆存在

Sensitivity analysis知乎

在这里我们给z样本添加一个微小的扰动 \epsilon ,这个时候可以得到一个新的收敛参数 \hat \theta_{\epsilon,z}

Sensitivity analysis知乎

定义参数的改变量为 \triangle_\epsilon = \hat \theta_{\epsilon,z}-\hat \theta ,则我们要计算的可以表示为:

Sensitivity analysis知乎

由于导数为0的条件可以得到:

Sensitivity analysis知乎

由于当 \epsilon趋近于0,\hat \theta_{\epsilon,z} \rightarrow \hat \theta ,可以应用泰勒展开得到下面的式子

Sensitivity analysis知乎
Sensitivity analysis知乎

由于 \triangle R(\hat \theta)=0 ,只保留 O(\epsilon)

可以得到:

Sensitivity analysis知乎

最后我们可以得到下面的表达式:

Sensitivity analysis知乎

这个也就是影响力函数的表达式,根据这个定义,作者推导出了提升某个训练样本的权重或者对训练样本施加轻微扰动之后对特定测试样本损失函数的影响:

Sensitivity analysis知乎
Sensitivity analysis知乎

当然由于在影响力的计算中涉及到Hessian矩阵的求逆问题,作者也提出了一种简便计算的方法来迅速计算影响力函数的近似值,具体在这里就不介绍了,想了解的可以阅读原文以备参考。

通过影响力函数的计算可以发现,对下图的测试样本7来说,右边的训练样本的存在对该样本的判定是有害的。

Sensitivity analysis知乎

而由于计算出了对训练样本施加轻微扰动之后对特定测试样本损失函数的影响,所以这个方法也可以应用到对抗样本的生成中,只需要在一部分影响力函数较大的样本中添加一些肉眼不可见的扰动,就足以干扰其他样本的判定结果。

Sensitivity analysis知乎

小结

在本节中我们介绍了建模后深度学习可解释性方法之一——敏感性分析方法,敏感性方法的主要用途是衡量变量/样本的重要性,优点是把解释性归于输入特征或样本使得更容易被理解。不过敏感性方法不如隐层分析法的一点在于基本上完全忽视了对隐层结构的研究,在接下来我们将介绍第三类方法:代理/替代模型方法,欢迎继续关注。

关于BIGSCity

北航智慧城市兴趣组BIGSCITY是隶属于北京航空航天大学计算机学院的一个学术研究小组,小组致力于研究机器学习与数据挖掘在城市科学、社会科学等领域的交叉应用技术。BIGSCITY的研究兴趣包括:城市计算,时空数据挖掘,机器学习可解释性,以及AI在交通、健康、金融等领域的应用等。本专栏将介绍BIGSCITY的一些研究成果,不定期更新与课题组研究相关的研究工作介绍,以及介绍与BIGSCITY相关的一切有趣的内容。

关于BIGSCITY的详细情况参见研究组主页:https://www.bigscity.com/

参考文献

[1] Garson G D. Interpreting neural-network connection weights[M]. Miller Freeman, Inc. 1991.

[2] Olden J D, Jackson D A. Illuminating the “black box”: a randomization approach for understanding variable contributions in artificial neural networks[J]. Ecological Modelling, 2002, 154(1–2):135-150.

[3] Dimopoulos Y, Bourret P, Lek S. Use of some sensitivity criteria for choosing networks with good generalization ability[J]. Neural Processing Letters, 1995, 2(6):1-4.

[4] Koh P W, Liang P. Understanding Black-box Predictions via Influence Functions[J]. 2017.