| 第478行: |
第478行: |
| | | | |
| | == 冗余信息计算方法 == | | == 冗余信息计算方法 == |
| − | 首先是在冗余信息计算方法小节提到过的这篇论文给的方法。
| |
| | 以下是一些有代表性的定量方法: | | 以下是一些有代表性的定量方法: |
| | 首先,第一个定义即原论文给出的定义(见冗余信息定义小节)。 | | 首先,第一个定义即原论文给出的定义(见冗余信息定义小节)。 |
| − | | + | === Griffith=== |
| − | Griffith:原论文构建冗余晶格的方式,给定随机变量 X 和 Y,我们记作 ,表示存在一个可测函数 ,使得 几乎必然成立(即以概率1成立)。在这种情况下,我们称 X 在信息上“贫于”Y(informationally poorer),据此可以引入偏序关系。给定随机变量 X 和 Y,我们定义 (称为 X 和 Y 的 join)为在信息上最“贫”的随机变量(即在偏序 ⪯ 下“最小”),使得 且 。类似地,给定随机变量 X 和 Y,我们定义 (称为 X 和 Y 的 meet)为在信息上最“富”的随机变量(即在偏序 ⪰ 下“最大”),使得 。我们也将  称为 X 和 Y 的共同随机变量(common random variable)。共同随机变量的熵即(零误差信息)。对于零误差信息,作者提出了如下的零误差交集信息度量 \I_{\cap}^0(X_1, \ldots, X_n : Y):它是一个随机变量 Q 关于 Y 的最大零误差信息 ,且 Q 是每个预测变量  的函数
| + | 原论文构建冗余晶格的方式,给定随机变量 X 和 Y,我们记作 ,表示存在一个可测函数 ,使得 几乎必然成立(即以概率1成立)。在这种情况下,我们称 X 在信息上“贫于”Y(informationally poorer),据此可以引入偏序关系。给定随机变量 X 和 Y,我们定义 (称为 X 和 Y 的 join)为在信息上最“贫”的随机变量(即在偏序 ⪯ 下“最小”),使得 且 。类似地,给定随机变量 X 和 Y,我们定义 (称为 X 和 Y 的 meet)为在信息上最“富”的随机变量(即在偏序 ⪰ 下“最大”),使得 。我们也将  称为 X 和 Y 的共同随机变量(common random variable)。共同随机变量的熵即(零误差信息)。对于零误差信息,作者提出了如下的零误差交集信息度量 \I_{\cap}^0(X_1, \ldots, X_n : Y):它是一个随机变量 Q 关于 Y 的最大零误差信息 ,且 Q 是每个预测变量  的函数 |
| | \I_{\cap}^0(X_1, \ldots, X_n : Y) \equiv \max_{\Pr(Q|Y)} I^0(Q : Y) \quad \text{subject to} \quad Q \preceq X_i \; \forall i \in \{1, \ldots, n\} | | \I_{\cap}^0(X_1, \ldots, X_n : Y) \equiv \max_{\Pr(Q|Y)} I^0(Q : Y) \quad \text{subject to} \quad Q \preceq X_i \; \forall i \in \{1, \ldots, n\} |
| | 上式可简化为: | | 上式可简化为: |
| 第488行: |
第487行: |
| | 与香浓互信息不同其只适用于零误差通信故要改进以适配互信息的场景因此更改为\I_{\cap}(X_1, \ldots, X_n : Y) = I(X_1 \wedge \cdots \wedge X_n : Y) | | 与香浓互信息不同其只适用于零误差通信故要改进以适配互信息的场景因此更改为\I_{\cap}(X_1, \ldots, X_n : Y) = I(X_1 \wedge \cdots \wedge X_n : Y) |
| | | | |
| − | Aobo:为了给出信息原子的定义,我们构造了一个新的分布,如下所示。给定一个包含源变量 \( S_1, S_2 \) 和目标变量 \( T \) 的系统,其相应的字母表分别为 \( \mathcal{S}_1, \mathcal{S}_2 \) 和 \( \mathcal{T} \),我们定义一个新的随机变量 \( S_1' \) 在 \( \mathcal{S}_1 \) 上,通过其条件联合分布如下:
| + | ===Aobo=== |
| | + | 为了给出信息原子的定义,我们构造了一个新的分布,如下所示。给定一个包含源变量 \( S_1, S_2 \) 和目标变量 \( T \) 的系统,其相应的字母表分别为 \( \mathcal{S}_1, \mathcal{S}_2 \) 和 \( \mathcal{T} \),我们定义一个新的随机变量 \( S_1' \) 在 \( \mathcal{S}_1 \) 上,通过其条件联合分布如下: |
| | \[ | | \[ |
| | \operatorname{Pr}(S_1' = s_1, S_2 = s_2 | T = t) \triangleq \operatorname{Pr}(S_1 = s_1 | T = t) \operatorname{Pr}(S_2 = s_2 | T = t). | | \operatorname{Pr}(S_1' = s_1, S_2 = s_2 | T = t) \triangleq \operatorname{Pr}(S_1 = s_1 | T = t) \operatorname{Pr}(S_2 = s_2 | T = t). |
| 第523行: |
第523行: |
| | 冗余信息(定义4)可以另写为 \(\operatorname{Red}(S_1, S_2 \to T) = I(S_1'; S_2)\)。协同信息(定义5)可以另写为 \(\operatorname{Syn}(S_1, S_2 \to T) = H(T | S_1', S_2) - H(T | S_1, S_2)\)。 | | 冗余信息(定义4)可以另写为 \(\operatorname{Red}(S_1, S_2 \to T) = I(S_1'; S_2)\)。协同信息(定义5)可以另写为 \(\operatorname{Syn}(S_1, S_2 \to T) = H(T | S_1', S_2) - H(T | S_1, S_2)\)。 |
| | | | |
| − | kolchinsky:作者认为只定义冗余信息不能通过包含排除原理推导出剩下的部分信息原子,因我们将“集合”的类比视为某个随机变量 \(A\),它提供了关于目标 \(Y\) 的信息,将“集合大小”的类比视为互信息 \(I(A; Y)\),并假设存在某种排序关系 \(\sqsubset\),类似于集合包含 \(\subseteq\)。给定这样的关系,表达式 \(A \sqsubset B\) 表示随机变量 \(B\) 比 \(A\)“更有信息量”,即 \(A\) 提供的关于 \(Y\) 的信息包含在 \(B\) 提供的关于 \(Y\) 的信息中。我们定义冗余为:
| + | ===kolchinsky=== |
| | + | 作者认为只定义冗余信息不能通过包含排除原理推导出剩下的部分信息原子,因我们将“集合”的类比视为某个随机变量 \(A\),它提供了关于目标 \(Y\) 的信息,将“集合大小”的类比视为互信息 \(I(A; Y)\),并假设存在某种排序关系 \(\sqsubset\),类似于集合包含 \(\subseteq\)。给定这样的关系,表达式 \(A \sqsubset B\) 表示随机变量 \(B\) 比 \(A\)“更有信息量”,即 \(A\) 提供的关于 \(Y\) 的信息包含在 \(B\) 提供的关于 \(Y\) 的信息中。我们定义冗余为: |
| | \[ | | \[ |
| | I_{\cap}(X_1; \ldots; X_n \to Y) := \sup_Q I(Q; Y) \quad \text{使得} \quad \forall i \; Q \sqsubset X_i | | I_{\cap}(X_1; \ldots; X_n \to Y) := \sup_Q I(Q; Y) \quad \text{使得} \quad \forall i \; Q \sqsubset X_i |
| 第533行: |
第534行: |
| | \] | | \] |
| | 因此,联合信息 \(I_{\cup}\) 是任何比所有源都“更有信息量”的随机变量中关于 \(Y\) 的最小信息量。注意 \(I_{\cap}\) 和 \(I_{\cup}\) 依赖于排序关系 \(\sqsubset\) 的选择,而作者认为不同的应用领域有不同的排序定义。 | | 因此,联合信息 \(I_{\cup}\) 是任何比所有源都“更有信息量”的随机变量中关于 \(Y\) 的最小信息量。注意 \(I_{\cap}\) 和 \(I_{\cup}\) 依赖于排序关系 \(\sqsubset\) 的选择,而作者认为不同的应用领域有不同的排序定义。 |
| − | 此外还有其他方法:Barrett:所有先前提出的 PID 在这种高斯情况下都简化为 MMI PID。James:将冗余信息改为了特有信息finn:作者将点对点互信息拆分成了正的信息分量(特异性)负的信息分量(模糊性)。与此对应,冗余格拆分为了特异性格和模糊性格并据此定义了点对点冗余特异性:
| + | ===Barrett=== |
| | + | 所有先前提出的 PID 在这种高斯情况下都简化为 MMI PID |
| | + | ===其他方法=== |
| | + | James:将冗余信息改为了特有信息finn:作者将点对点互信息拆分成了正的信息分量(特异性)负的信息分量(模糊性)。与此对应,冗余格拆分为了特异性格和模糊性格并据此定义了点对点冗余特异性: |
| | 和点对点冗余模糊性:随后,有两种方式组合这两个定义,一种是直接求期望,一种是从点对点特异性和模糊性中减去点对点独特性、冗余性和互补性,得到点对点独特性、冗余性和互补性信息。Ince:基于点wise共同变化不确定度度量冗余信息。Bertschinger:唯一信息定义为可以获得的最小条件相互信息,同时保持输入-输出边际固定。 | | 和点对点冗余模糊性:随后,有两种方式组合这两个定义,一种是直接求期望,一种是从点对点特异性和模糊性中减去点对点独特性、冗余性和互补性,得到点对点独特性、冗余性和互补性信息。Ince:基于点wise共同变化不确定度度量冗余信息。Bertschinger:唯一信息定义为可以获得的最小条件相互信息,同时保持输入-输出边际固定。 |
| | | | |
| − | | + | ===不同方法的比较=== |
| | 我们将几种 PID 度量方式进行比较: | | 我们将几种 PID 度量方式进行比较: |
| | 包括 Barrett 等人提出的 $I_{\cap}^{\text{WB}}$ \cite{Barrett2015}、 | | 包括 Barrett 等人提出的 $I_{\cap}^{\text{WB}}$ \cite{Barrett2015}、 |
| 第563行: |
第567行: |
| | 比如 | | 比如 |
| | | | |
| − | '''信息原子的数值计算'''
| + | ===信息原子的数值计算程序=== |
| | | | |
| | 部分信息分解示例和dit库 | | 部分信息分解示例和dit库 |
| 第739行: |
第743行: |
| | 不出所料,<math>X_1</math>和<math>X_2</math>传达的关于Y的唯一信息是{0:1},这是协同信息。 | | 不出所料,<math>X_1</math>和<math>X_2</math>传达的关于Y的唯一信息是{0:1},这是协同信息。 |
| | | | |
| − | 下面介绍如何用dit库进行一次完整的部分信息分解实验:(详见https://dit.readthedocs.io/en/latest/measures/pid.html)(以Williams & Beer为例)
| + | 下面介绍如何用dit库进行一次完整的部分信息分解实验:(以Williams & Beer为例,只需要更改调用的函数名称即可使用其他PID分解方法,详见https://dit.readthedocs.io/en/latest/measures/pid.html) |
| | | | |
| | 首先在python里导入dit.pit:In [1]: from dit.pid import * | | 首先在python里导入dit.pit:In [1]: from dit.pid import * |
| 第746行: |
第750行: |
| | | | |
| | | | |
| − | 用给出的分布进行PID分解:In [3]: PID_WB(d)
| + | 用给出的分布进行PID分解(更改“PID_"后面角标即可使用其他PID分解方法):In [3]: PID_WB(d) |
| | | | |
| | 输出结果:Out[13]: | | 输出结果:Out[13]: |
| 第765行: |
第769行: |
| | | | |
| | +--------+--------+--------+ | | +--------+--------+--------+ |
| − | 还有专门实现PID计算的pietromarchesi库:https://github.com/pietromarchesi/pidpy
| |
| − |
| |
| − | pidpy 支持任何数量的特征变量,其取值为二进制。对于取值为非二进制整数变量的情况,仅支持三元组。一般来说,一个好的经验法则是确保 n_variables < log2(n_samples / (3*n_labels))。
| |
| − |
| |
| − | 主类 PIDCalculator 可以用形状为 (n_samples, n_variables) 的源头变量数组输入 X 和形状为 (n_samples,) 的标签数组输入y,
| |
| − |
| |
| − | python代码如下:
| |
| − |
| |
| − | from pidpy import PIDCalculator
| |
| − |
| |
| − | pid = PIDCalculator(X, y)
| |
| − |
| |
| − | 然后可以计算信息分解的纯协同性、冗余性和特有性项,以及完整的互信息(以比特为单位)。
| |
| − |
| |
| − | python代码如下
| |
| − |
| |
| − | pid.synergy()
| |
| − |
| |
| − | pid.redundancy()
| |
| − |
| |
| − | pid.unique()
| |
| − |
| |
| − | pid.mutual()
| |
| − |
| |
| − | 还可以使用随机置换的替代品来减少偏差,其中参数 n 指定了要使用的替代品数量。
| |
| − |
| |
| − | python代码如下:
| |
| − |
| |
| − | pid.synergy(debiased = True, n = 50)
| |
| − |
| |
| − | pid.redundancy(debiased = True, n = 50)
| |
| − |
| |
| − | pid.unique(debiased = True, n = 50)
| |
| − |
| |
| − | pid.mutual(debiased = True, n = 50)
| |
| − |
| |
| − | 这些方法返回一个元组,其中包含通过减去替代品的平均值来减少偏差的原始值,以及替代品的标准差。
| |
| − | 最后,可以使用 decomposition 方法作为快捷方式,以获取部分信息分解的完整图景。
| |
| − |
| |
| − | python代码如下:
| |
| − |
| |
| − | synergy, redundancy, unique, mutual = pid.decomposition()
| |
| − |
| |
| − | 要为每个信息论量(计算为替代品中信息论量高于观测值的比例)获取 p 值,可以执行以下python代码:
| |
| − |
| |
| − | decomposition, p_values = pid.decomposition(debiased = True, n = 50,
| |
| − |
| |
| − | return_std_surrogates = False,
| |
| − |
| |
| − | test_significance = True)
| |
| | | | |
| − | 在这种情况下,会额外返回一个元组,其中包含每个项的 p 值。
| + | 另外还有专门实现PID计算的pietromarchesi库:https://github.com/pietromarchesi/pidpy |
| | | | |
| | == PID框架的局限 == | | == PID框架的局限 == |