概念网络上的高效学习方式

对于一个的集合\(L=\left\{1,2,\cdots, i, \cdots, \right\}\)中每个个体的学习,如果给定了每一个学习对象的难度\(\vec{C}=\left\{c_{i}\right\}\)和价值\(\vec{V}=\left\{v_{i}\right\}\),我们的学习顺序\(\vec{S}=\left[s_{1}, s_{2}, \cdots, \right]^{T}\)的问题是这样定义的:

  1. 给定\(\vec{S}\)之后在第\(m\)步的累计成本为
  2. \begin{align}
    C\left(\vec{S}, m\right) = \sum_{j=1}^{m} C_{s_{j}}
    \end{align}

  3. 给定\(\vec{S}\)之后在第\(m\)步的累计价值为
  4. \begin{align}
    V\left(\vec{S}, m\right) = \sum_{j=1}^{m} V_{s_{j}}
    \end{align}

我们希望某种意义上——例如在学习过程中的任何一步或者都某个具体的第M步——成本最小,价值最大。

如果这些个体之间相互没有联系,则我们没有特别好的巧妙的办法,就是一个简单的优化问题。例如,我们可以先考虑两种极限:成本完全一样或者价值完全一样的情况。例如,前者,这个时候对于任何的\(\vec{S}\),\(C\left(\vec{S}, m\right)\propto m\),我们只能考虑优化\(V\left(\vec{S}, m\right)\)。于是我们发现,按照价值的递减顺序,也就是选择价值大的来先学就好。这时候能够保证在任何一步\(V\left(\vec{S}, m\right)\)都是最大的。更一般的成本函数和价值函数,应该,运筹学之类的学科也有答案了。如果没有,也无所谓,交给运筹学去解决好了。

更重要的问题是,一旦个体之间有联系,会如何?也就是说,一旦一个字\(j\)的学习难度会随着相联系的字\(i\)的学习状态(是否已经被学习到)而改变,这个时候,如何解决上面的优化问题。

那,我们先来看学习成本会如何变化。本质上,这个变化机制当然应该来源于实际学习过程。这里,我们先给出一个描述框架和大概描述。

我们认为,概念之间的逻辑关系,可以做为关联的客观表现。以汉字为例,汉字之间通过结构关系相互联系,这一点是客观的(尽管繁体字和简体字在汉字之间是如何从结构上联系起来的这一点上不一样。先考虑例如仅仅简体字)。例如:木——林——森,人——从——众,水——冰——淼,(木,一)——本,(人,本)——体。当然,这个客观的结构联系是否就能代表逻辑联系,是有待讨论的。也就是说,在汉字集合上,存在着一个逻辑关系网络,网络的每一条边代表上面举例中的一个字\(i\)(更简单的字,处在更底层)成为另一个字\(j\)(更复杂的字,处在更上层)的一部分这样的结构关系\(A=\left(a^{i}_{j}\right)_{N\times N}\)(这个矩阵的标记采用的是投入产出习惯的符号,从\(i\)投入到\(j\)。)。这个结构关系上面叠加了一层逻辑关系。这个逻辑关系可以用来改变学习成本。再次强调,这仅仅是一个理想模型。记每一个概念的当前状态——学到或者没有学到——为\(\vec{K}\left(t\right)\)或者每一个概念\(i\)的状态\(k_{i}\left(t\right)=\pm 1\)。例如,我们可以定义每一个字在当前时刻的学习成本为一个由网络结构和网络上各个顶点的当前时刻的状态决定的函数\(c_{i}=c_{i}\left(A,\vec{K}\left(t\right)\right)\),而\(\vec{K}\left(t\right)\)实际上是学习顺序\(\vec{S}\)的函数。于是,学习成本\(C\)和学习成果\(V\)都是学习顺序\(\vec{S}\)的函数。当然,这个函数由于有网络关系,比完全没有联系的情况要复杂。但是,给定网络\(A\),那么\(C\left(\vec{S}, m; A\right)\)和\(V\left(\vec{S}, m; A\right)\)就是完全确定的函数,就可以讨论优化问题。下面给出一种我们使用过的成本决定机制。

      
  1. 认识下层字\(j\),以一定的概率降低上层字\(i\)的学习成本,\(\omega^{j, \left(\uparrow\right)}_{i} \),和结构矩阵的元素\(a^{j}_{i}\)有关。原则上可以不遵循结构矩阵,来自于其他实证关系。做为一个简化模型,我们可以假设\(\omega^{j, \left(\uparrow\right)}_{i} = 0 \mbox{或者} a^{j}_{i}\)。更复杂的需要考虑理据性。
  2. 认识上层字\(j\),以一定的概率降低下层字\(i\)的学习成本\(\omega^{j, \left(\downarrow\right)}_{i} \),和结构矩阵的元素\(a^{i}_{j}\)有关。原则上可以不遵循结构矩阵,来自于其他实证关系。做为一个简化模型,我们可以假设\(\omega^{j, \left(\downarrow\right)}_{i} = 0\)。更复杂的需要考虑理据性。
  3. 有了这个改变学习成本的概率,我们再来看学习成本改变的值。采用递归定义:
  4. \begin{align}
    c_{i}\left(t\right) = \left(1-k_{i}\right) \cdot \left[\Pi_{u}\left(1-k_{u}\omega^{u,\left(\downarrow\right)}_{i}\right)a^{i}_{u}\right]\cdot \left\{1+\sum_{d}\left(1-k_{d}\omega^{d\left(\uparrow\right)}_{i}\right) \cdot \left[1+\left(1-k_{d}\right)c_{d}\left(t\right)\right]a^{d}_{i}\right\}.
    \end{align}

第一项的含义是,如果字\(i\)本身是学习过的,也就是\(k_{i}=1\),则\(c_{i}\left(t\right)=0\)。第二项的含义是,每一个字\(i\)上层字\(u\)如果学习过,则会成比例地降低字\(i\)的学习成本。第三项表示字\(i\)的学习成本包含三项——整体组合成本(按照单位一算),有几个子结构,每一个子结构如果不认得的话成本的累计。同时,如果下层的字学习过,则整体上会按照降低成本的几率再次降低子结构的成本(那时候子结构自己已经认得了,没有学习成本了)。由于采用了递归定义,整个网络不能有循环。其次,递归的每次都是从当前需要算成本的开始,然后往下计算——递归表达式中仅仅出现了往下的顶点的学习成本。

我们在Efficient learning strategy of Chinese characters based on network approach中的成本更新机制实际上就是上面的一般表达是的简化模型:
\begin{align}
c_{i}\left(t\right) = \left(1-k_{i}\right) \cdot \left\{1+\sum_{d}\left[1+\left(1-k_{d}\right)c_{d}\left(t\right)\right]a^{d}_{i}\right\}.
\end{align}
就算在这个简化机制下,我们也没有精确求解开这个优化问题。而是,基于对问题的理解,提出了一种近似算法:顶点权分配算法——后来我们发现实际上是一种广义投入产出分析计算。

现在,我们有了一个结构网络\(A\),两个这个网络上的逻辑关系\(\Omega^{\left(\downarrow\right)}, \Omega^{\left(\uparrow\right)}\),有一个学习顺序\(\vec{S}\),一个依赖于学习顺序的成本更新机制\(M\left(\vec{S}\right)\left|\right._{\vec{C}\left(t-1\right)\rightarrow \vec{C}\left(t\right)}\),以及初始条件\(\vec{C}\left(0\right)\)。还有一个价值变量\(\vec{V}\left(t\right)\),或者更复杂一点一个可能依赖于学习顺序的价值更新机制——这里当做价值不更新。

问:什么样的学习顺序\(\vec{S}\),会使得整个学习过程、在这个过程中的某个时间点m、或者在某个时间点m之前的过程中的学习效率最高——例如用平均每个字的学习成本来衡量。也可以为了学习到给定学习对象集合\(T=\left\{t_{1}, t_{2}, \cdots\right\}\)里面的所有的字的整体成本。

忽悠报告:网络改变世界

除了分享实际研究工作,整个领域的方向感也是值得分享的。最近打算做一个比较忽悠的报告,或者说,企图促进这个领域发展的报告。当然,背后有其他研究者的还有我们自己的工作,不过,具体工作都跳过不讲了。还没有做过这样的报告呢。整理在这里。其中的概念地图,近期,由于学校“网络升级”不能访问。

NetworkMain

标题:网络改变世界
报告人:吴金闪
摘要:网络不过就是把一个系统描述成一个集合的元素(顶点)和元素之间的关系(边)。有的时候甚至关系都被简化为有还是没有。为什么这样一个简单的简化的描述能够有这么强的生命力呢?其中一个原因是网络的重要思想:顶点的内涵(性质、地位和作用)由这个顶点的连边决定,以及连边的顶点的连边决定。我把前者——内涵由连接决定——称为几何性,把后者——依赖于直接和间接联系的综合——称为网络效益。在这个报告中,我将讨论几何性和网络效益如何帮助我们改变和提高对经济学、科学计量学、概念的教和学、知识的管理等各个学科的理解。最后,我将呼吁大家协作来做一个“知识高速公路”项目,从根本上改变教和学,学的更轻松更好,保留和释放创造力,做全新的融合研究、学习、知识、产品、需求的没有边界的科学,让这个世界变得更美丽。

从共现到结构

考虑一个概念网络,其中的顶点是概念,连边是概念之间的逻辑关系。假设连边的存在就保证了两个连在一起的概念以一定的概率共现。于是,我们得到结构矩阵(\Omega)。

定义总和关系矩阵(\Sigma),
\begin{align}
\Sigma = \Omega + \Omega^{2}+\cdots = \frac{1}{1-\Omega} – 1.
\end{align}
于是,
\begin{align}
\Omega = 1-\frac{1}{1+\Sigma}.
\end{align}

然后,我们考虑以下的问题:如果这个网络没有提供给我们,但是,我们获得了一个来自于实证数据的共现矩阵,那么这个共现矩阵就是(\Omega)还是(\Sigma)?

换一种具体过程的语言:假设有一个传染病直接接触传播网络(\Omega),然后,我们同样定义总和接触传播网络(\Sigma),问从实际传染过程可以测得一个同时发病矩阵,这个矩阵是是(\Omega)还是(\Sigma)?

类似的问题还可以是:概念(汉字)之间的内在联系导致的同时被理解和学习——结构矩阵,和,概念(汉字)之间表现出来的可以直接检测出来的同时被认识理解——同识矩阵,之间的关系;pacs代码之间的表现出来的可观察的共现——共现矩阵,和,pacs代码所代表的领域和主题之间的逻辑关系——结构矩阵;英文(或者中文)词之间表观共现和内在逻辑关系。

假如,这个矩阵是(\Sigma),那么,我们就有了一个从观测共现矩阵来计算直接结构矩阵(\Omega)的方法。

可能的应用情景:

  1. 找一个汉字在同一句话里面共现的矩阵,尝试一下,看看算出来的直接共现,是不是代表了意义上的联系。
  2. 找一个汉字同被认的矩阵,尝试一下,看看算出来的直接被认,是不是代表了汉字结构和意义上的联系。
  3. 找一个物理概念同被认的矩阵——例如通过调查问卷来访问被试是否听说过某个概念或者同时在一遍文献中出现,尝试一下,看看算出来的直接被认,是不是代表了物理概念意义上的联系。如果这个能够做成功——需要对比同被认或者共现矩阵给出的信息和处理以后的直接关系矩阵给出的信息,例如集团结构,成功指后者跟概念逻辑关系有很好的联系,那么相当于我们能够从文献中概念的共现或者普通人对概念的同认之中,提取出来概念之间的逻辑关系
  4. 模拟一个传染病传播过程,计算出来任意两点之间的同染病几率,然后计算这个直接联系矩阵,看看是不是反映网络连接。
  5. 找股票关联性的矩阵,尝试一下,看看算出来的直接关系,是不是代表了股票之间的某种有意义的联系。

一个问题:
有的时候,需要计算出来(\Omega^2)以后删除对角元素,然后再计算(\Omega \left(\Omega^2-D_{\Omega^2}\right)),也就是重复剔除自己到自己的传递效益。
[\Sigma=\left(\Omega-D_{1}\right) + \left(\left(\Omega-D_{1}\right)^2-D_{2}\right) + \left(\left(\Omega-D_{1}\right)\left(\left(\Omega-D_{1}\right)^2-D_{2}\right)-D_{3}\right) + \cdots,]
其中,(D_{j})是对第(j)项的简写记号。这个计算有没有简单的实现方式?例如,是否还能够表述成为某种取和形式。反过来,从(\Sigma)计算(\Omega)的时候那些对角元素的如何剔除?是不是一定条件下,当(\Sigma)没有对角元的时候,(\Omega)自然就不会有对角元?原则上,如果求出来的(\Omega)非负就确实是这样的。什么条件下(\Omega)非负呢?

参考文献:小思找出来一篇用同样的思路和方法来讨论同样的问题的文章——Network deconvolution as a general method to distinguish direct dependencies in networks。这个工作讨论了如何从观察到的网络连接矩阵(\Sigma)得到直接关系矩阵(\Omega),问题和公式都是一样的。不过,文章仅仅考虑了能够对角化的矩阵。具体计算的例子用了几个实际网络和几个编出来的网络。在具体系统的应用价值上,在更一般的矩阵的计算上,在对角元的处理上,还是有值得进一步研究的地方。如果要做,做一下这个文章的跟踪,然后,选择上面的一个具体应用问题,再解决一下对角元去掉的问题,还是很有意思的。

一个进一步的问题的解释:为什么(在什么情形下)需要剔除对角元?

考虑一个传染病传播的问题,我们可以分步来考虑。
一步就能传染上的
[p\left(1_{j}, t+1|1_{i},t\right) = p\left(1_{j}|1_{i}\right) =\Omega^{i}{j}]
两步就能传染上的
\begin{align}
p\left(1
{j}, t+2|1_{i},t\right) & = &\sum_{k} p\left(1_{j}, t+2|1_{k}, t+1\right) p\left(1_{k}, t+1|1_{i}, t\right) \notag \
& = & \sum_{k\neq i, j} p\left(1_{j}, t+2|1_{k}, t+1\right) p\left(1_{k}, t+1|1_{i}, t\right) \notag \
& + & p\left(1_{j}, t+2|1_{j}, t+1\right) p\left(1_{j}, t+1|1_{i}, t\right) \notag \
& + & p\left(1_{j}, t+2|1_{i}, t+1\right) p\left(1_{i}, t+1|1_{i}, t\right) \notag \
& = & \sum_{k\neq i, j} \Omega^{k}{j}\Omega^{i}{k} + \Omega^{j}{j}\Omega^{i}{j} + \Omega^{i}{j}\Omega^{i}{i}
\end{align}
以及其他更多步的计算。

如果这个计算直接求和,我们就得到上面的(\Sigma)计算(\Omega)的公式。

但是,我们看到,如果中间某一步出现了对角元(p\left(1_{j}|1_{j}\right)\neq 0),那么,我们得到的第二步之中就包含了第一步的贡献,而且这个贡献不是简单地把第一步的概率包含进来,也就是重复计算——除非出现了(j)顶点被治愈之后再次通过周围顶点的传染而得病,然后再一次感染周围其他顶点的情况(也就是说,是否要去掉对角元,还需要具体问题具体分析)。于是,对角元部分在某些情况下要每次矩阵相乘之后都去掉。

有两种定义矩阵(\Omega)对角元的办法,取做(1),或者取做(0)。我们先来看前者。
\begin{align}
p\left(1_{j}, t+2|1_{i},t\right) = \sum_{k\neq i, j} \Omega^{k}{j}\Omega^{i}{k} + \Omega^{j}{j}\Omega^{i}{j} + \Omega^{i}{j}\Omega^{i}{i} = \sum_{k\neq i, j} \Omega^{k}{j}\Omega^{i}{k} + \Omega^{i}{j} + \Omega^{i}{j}.
\end{align}
出现了两次(\Omega^{i}{j}),不能简单看做“对角元是(1)的(\Omega)矩阵的平方等于对角元是(0)的(\Omega)矩阵的平方加上(\Omega)矩阵”。再来看对角元等于(0)的形式,
\begin{align}
p\left(1
{j}, t+2|1_{i},t\right) = \sum_{k\neq i, j} \Omega^{k}{j}\Omega^{i}{k} + \Omega^{j}{j}\Omega^{i}{j} + \Omega^{i}{j}\Omega^{i}{i} = \sum_{k\neq i, j} \Omega^{k}{j}\Omega^{i}{k}.
\end{align}
因此,计算总和概率的时候,还需要把( \Omega^{i}_{j})再加回去。

同样的情况会出现在更高阶的概率——它们也要通过矩阵相乘来计算——上。于是,不管哪一种对角元取值方式,如何不重复计算对角元的贡献,又能够把各阶概率相叠加,是一个非平庸的技术问题。

当然,如果我们有这样的计算上的结果,那么这个问题也就成了一个简单的问题:任何一个能够表达成(\Sigma=\Omega + \Omega^2 + \cdots )(其中(\Omega)的元素非负)并且不含有对角元的(\Sigma),通过计算(\Omega = 1-\frac{1}{1+\Sigma})得到的(\Omega)必然也不含有对角元。道理上来说是对的,因为(\Omega)的元素非负,因此只有某一项出现了对角元,这个对角元肯定会被待到最后的(\Sigma)中。用具体例子算出来看看。不是随便找一个(\Simga)都满足这样的要求的。

在传染病上的应用

现在我们把上面的从共现到结构的一般框架用来讨论传染病问题,企图从观测到的同病数据来得到个体之间的感染概率,并且进而得到底层网络。考虑到对角元的问题,我们先讨论有向无环网络。

先来看从(\Omega)到(\Sigma)的思路。为简单计,所有个体之间的传染概率,只要相互接触,就是(p)。考虑一个有向无环图1->2->3。于是,
\begin{align}
\Omega = \left[\begin{array}0 & p & 0 \ 0 & 0 & p \0 & 0 & 0\end{array}\right]
\end{align}
代表一步就能传播到其他顶点的概率。接着,两步的传染概率就是
\begin{align}
\Omega^{2} = \left[\begin{array}0 & 0 & p^2 \ 0 & 0 & 0 \0 & 0 & 0\end{array}\right].
\end{align}
三步以及以上都是(0)。因此,
\begin{align}
\Sigma = \left[\begin{array}0 & p & p^2 \ 0 & 0 & p \0 & 0 & 0\end{array}\right],
\end{align}
非常简单。

现在我们看看从什么样的实际数据中,可以得到这样的(\Sigma)。一旦找到了这样的实际系统,也就是得到了(\Sigma)的实证数据值,那么,(\Omega)也就得到了。这个就是反过来从(\Sigma)得到(\Omega)的思路。

(\Omega)的元素是
\begin{align}
\Omega^{i}{j} = p\left(I{j}|I_{i}\right) = \frac{p\left(I_{i},I_{j}\right)}{p\left(I_{i}\right)},
\end{align}
于是,我们猜测,只要从实际传播过过程中获得大量样本,然后计算这个样本里面的(\frac{p\left(I_{i},I_{j}\right)}{p\left(I_{i}\right)}),自然就包含了上面的直接效果(\Omega^{i}_{j})和间接效果。

下面,我们来验证一下这个猜想。我们把这个三顶点有向无环网络上的传染病传播分解成几种情形:初始没有染病顶点的情况(1种),初始染病顶点仅仅只有一个的情况(3种),初始两个的情况(3种),以及初始三个的情况(1种)。

边的PageRank值,多层网络传播问题、PageRank以及投入产出分析,还有PageRank k-core项目

最近,由于找到了科学学的三层网络数据关系数学模型:作者、文章、概念(主题),在思考如何利用这个数学模型来描述之前前人已经提出和解决的问题(这里就是换一个描述方式),提出还没有解决的问题(这里需要新的分析技术),以及新的问题(这里问题和技术都需要用好这个三层网络数学模型)。有了几个可以试试的想法。

第一,作者姓名识别、作者主领域识别是一个科学学的基础问题。大量后续研究依赖于这个问题的解决。通常的有首字母加上姓的简单粗暴识别方式,考虑合作关系,考虑引文关系,考虑机构名称,考虑主工作领域等多个方向,计算分析的技术也有多样。大多数在一个维度上做研究,例如考虑如何把合作关系用来改进简单粗暴识别,或者考虑多个维度,例如同时考虑合作者和引文关系,然后想办法把两个考虑的因素结合起来。这些分开维度又合起来的研究,基本上都是相当于把三层网络投影到其中的一层上来做分析,基本上没有直接在多层网络上作研究的。

现在,我们在三层网络模型的基础上提出来,先把每一篇文章的每一个作者(同时,也带着机构标记)看做独立的作者,然后通过在三层网络上的传播算法来计算作者的相似性的方式来合并作者。传播过程的理念当然还是:主题相近的姓名相近的科学家是同一个人的可能性比较高,合作者相近的姓名相近的科学家是同一个人的可能性比较高。这些理念都不奇怪。关键是,现在在这个三层网络上,通过文章的引用关系(也可以通过合作关系来传播主题,还可以跟之前的研究工作类似单纯地考虑合作者或者引用的效果而不是通过传播主题标记的方法)可以把作者的主题标记扩大和传播起来,然后可以通过主题的相似性来合并作者(当然,需要考虑姓名和机构)。

一石二鸟,也体现多层网络模型直接计算不投影的特点。至于是不是问题解决更好了,就看结果了。

第二,考虑间接效益的k-core定义。k-core相比较度k来说,好处就是一定程度上,通过迭代消去的过程,考虑了非局域信息,也就是间接效益。考虑到这个特点,我在思考把k-core的定义修改成不是依靠k的值来消去,而是依靠PageRank值(迭代的每一次都计算每个顶点的PageRank值,然后小于某个阈值的顶点都去掉)。具体来说,每一步计算,
[ p = p M]
其中(M)就是当前剩下的网络的邻接矩阵(W)对应的概率转移矩阵。然后,设定
[p^{*} = \frac{k_{c}}{\sum_{W}},]
其中(\sum_{W})是矩阵(W)的所有元素之和。

这个定义显然和k-core有联系,守恒网络((W^{i}=W_{i}))直接回到通常k-core定义——迭代删除总强度小于某个(k_{c})的顶点。但是,一般情况下,由于考虑了间接效益,应该是不一样的。因此,第一个这个方面的工作就可以是对比这两个k-core,然后,找一个动力学过程来和两个k-core的结果来对比,就像Stanley在nature physics的工作一样。顺便,Stanely的这个工作里面(M(k_{s}, k))图很有说服力。第二个这个方面的工作就是把通常的k-core和PR k-core推广到多层网络上去来解决具体问题。例如,讨论一下核心科学家、文章和概念的选择的问题。

第三,把单层网络的PageRank和投入产出分析推广到多层。由于投入产出分析不要求所流动的物质的一致性——我们区分了(X^{i})和(X_{i}),例如都是钱、能量、点击注意时间等,在多层网络上可能后者更加具有一般意义。

其中,多层网络PageRank的问题可以有两个层次:第一,把原来单层网络上的定义放到由边和顶点都成的等价的二部分图上来做同样的传播计算,看看是否得到的结果一致。如果一致,那么这个计算的额外好处就是得到了边的PR值。这个已经是有意义的结果。第二,把PageRank直接做在真的多层网络中,来解决多层网络中的多种个体的重要性度量的问题。这个问题从技术上和所回答的问题上,都和前一项关于k-core的研究有关。

广义投入产出分析和细节投入产出分析

希望解决的根本问题:

  1. 产业部门之间的相互关系1。如果我们希望某个产业部门的总产出(包含中间消耗)或者是净产出(不包含中间消耗,只计算直接消费)有一个单位的增加,我们需要增加的各个其他产业部门的总投入或者净投入(不包含通过中间生产过程得到的投入)是多少。例如,在包含最终消费和劳动力的开放系统的投入产出中,这个问题就是:为了得到最终消费的某一个产品的一个单位的增加,需要劳动力部门在各个产业上增加多少投入。在封闭系统中,这个问题如何回答还不知道。
  2. 产业部门之间的相互关系2。如果我们减少某个产业部门的总投入(包含中间投入)或者是净投入(不包含中间投入,只计算直接投入)一个单位,各个其他产业部门的净产出(不包含通过投入给中间生产过程的部分)和总产出是多少。例如,在包含最终消费和劳动力的开放系统的投入产出中,这个问题就是:减少劳动力部门在某个产业上的投入一个单位,所有产品的总产量和净产量如何变化。
  3. 产业部门之间的相互关系3。如果我们希望在整个系统中去掉某个产业部门,整个系统中受影响最大的部门是哪一个?
  4. 产业部门的影响力度量。哪一个产业部门对整个系统最重要?

这些问题可以通过投入产出矩阵(总投入与总投入之间的关系或者总产出与总产出之间的关系),也可以通过概率转移矩阵(总投入与总产出之间的关系,或者总产出与总投入之间的关系)来讨论。数学手段不一样,包含的信息应该是一样的。

所有的投入产出分析从这里开始:给定一个产业部门的集合\(\left\{j=1,\cdots,N\right\}\),每一个部门之间的投入产出绝对量\(\left\{x^{i}_{j}\right\}\),表示部门\(i\)投入到部门\(j\)的产品\(i\)的数量。这里产品和部门相互认同。我们会讨论部门和产品有区别的更加细节的投入产出分析。

我们可以定义:

  1. 反向投入产出矩阵
    \[B^{i}_{j}=\frac{x^{i}_{j}}{X^{j}},\hspace{2cm} (1)\]
    其中\(X^{i}=\sum_{j=1}^{N}x^{i}_{j}\)。于是,我们有
    \[\sum_{j=1}^{N}B^{i}_{j}X^{j}=X^{i}\Longrightarrow B^{a}_{b}X^{b}=X^{a},\hspace{2cm} (2)\]
    从这里我们看出来,\(B\)的右本征向量是平庸的,就是\(X^{a}\)。

    如果我们在取和中去掉其中的某一个部门\(k\),则
    \[\sum_{j\neq k}B^{i}_{j}X^{j}+x^{i}_{k}=X^{i}\Longrightarrow B^{\left(-k\right)}X^{\left(-k\right)}+Y_{\left(k\right)} = X^{\left(-k\right)}. \]
    于是,
    \[X^{\left(-k\right)} = \left(1-B^{\left(-k\right)}\right)^{-1}Y_{\left(k\right)}, \hspace{2cm} (12)\]
    并且
    \[X^{k} = \sum_{j\neq k}B^{k}_{j}X^{\left(-k\right),j}+x^{k}_{k}. \]
    这里的方程(12)就是Loentief投入产出的核心公式。在那里,通常把部门\(k\)取作最终需求部门\(N\)。这个表达式可以用来回答预期\(k\)部门的产能有一个单位的增加的情况下,系统的其他部门的产能如何变化。在这个条件下,我们能够计算出来所有的\(\Delta x^{i}_{j}\)于是也就得到了所有的\(\Delta X_{j}\),所有部门的需要的投入的增量。这样,我们就相当于回答了:如果需要增加\(k\)部门的一个单位净产出,需要的各部门的总投入是多少。如果我们还能够知道初期额外投入的多少就更好了,也就是去掉中间生产过程产生的投入。有可能把\(F\)和\(B\)合起来可以解决这个问题。

  2. 正向投入产出矩阵
    \[F^{i}_{j}=\frac{x^{i}_{j}}{X_{i}},\hspace{2cm} (3)\]
    其中\(X_{i}=\sum_{j=1}^{N}x^{j}_{i}\)。相应地,我们有
    \[\sum_{j=1}^{N}X_{i}F^{i}_{j}=X_{j}\Longrightarrow X_{a}F^{a}_{b}=X_{b},\hspace{2cm} (4)\]
    从这里我们看出来,\(F\)的左本征向量是平庸的,就是\(X_{a}\)。
  3. 正向概率转移矩阵
    \[MF^{i}_{j}=\frac{x^{i}_{j}}{X_{j}}.\hspace{2cm} (5)\]
    如果我们还是照着上面的方式企图写出本征向量的形式,我们有
    \[\sum_{j=1}^{N}MF^{i}_{j}X_{j}=X^{i}.\hspace{2cm} (6)\]
    这个是矢量和对偶矢量之间的关系,而不是同类型的矢量之间的关系。把一个投入向量变成一个产出向量。同时,我们发现这个矩阵的左右本征矢量可能都不是平庸的。
  4. 反向概率转移矩阵
    \[MB^{i}_{j}=\frac{x^{i}_{j}}{X^{i}}.\hspace{2cm} (7)\]
    如果我们还是照着上面的方式企图写出本征向量的形式,我们有
    \[\sum_{i=1}^{N}X^{i}MB^{i}_{j}=X_{j}.\hspace{2cm} (8)\]
    它把一个产出向量变成一个投入向量。同时,我们发现这个矩阵的左右本征矢量可能都不是平庸的。

有了这四个定义,我们可以问\(B\)的左本征矢量、\(F\)的右本征矢量、\(MF\)和\(MB\)的左右本征矢量有什么含义,我们还可以讨论如何把平庸的关系(2)和(4)变得有用。由于概率转移矩阵的特点,在这里我们仅仅讨论最大本征值,也就是\(1\)所对应的本征向量。
\[\tilde{P}B=\tilde{P}\Longrightarrow \sum_{i}\tilde{P}_{i}\frac{x^{i}_{j}}{X^{j}} = \tilde{P}_{j} \Longrightarrow \sum_{i}X^{i}\tilde{P}_{i}\frac{x^{i}_{j}}{X^{i}} = X^{j}\tilde{P}_{j} \Longrightarrow P_{a} MB^{a}_{b} = P_{b}. (9)\]
于是\(B\)的左本征矢量与\(MB\)的左本征矢量是一样的(差一个常数)。同理可以把\(F\)的右本征矢量与\(MF\)的右本征矢量联系起来。

现在我们来看\(MB\)的右本征矢,假设为\(W\),则
\[\sum_{j}\frac{x^{i}_{j}}{X^{i}}W^{j} = W^{i} \Longrightarrow \sum_{j}x^{i}_{j}W^{j} = X^{i}W^{i} \Longrightarrow W^{j} = 1. \]
于是,我们发现\(MB\)的右本征矢是平庸的。同理,\(MF\)的左本征矢也是平庸的。

总结一下:四种归一化方法定义了矩阵\(B,F,MB,MF\),其中\(B\)的右本征矢和\(MB\)的右本征矢是平庸的、\(F\)的左本征矢和\(MF\)的左本征矢是平庸的,\(B\)的左本征矢和\(MB\)的左本征矢认同,\(F\)的右本征矢和\(MF\)的右本征矢认同。

也就是说,对于通常的投入产出分析矩阵,如果我们计算本征矢量而不是线性方程(参考投入产出矩阵分析的主要思想小结),那么这个本征矢量和稳定概率分布是一个东西(差一个常数),而后者是PageRank算法的基础。

这个时候,我们再来考虑去掉一行一列的本征向量的含义就比较清楚了。以这个为基础,我们可以讨论两个产业部门的关系,以及每一个产业部门的重要性衡量。

细节的投入产出分析,也就是考虑到产品之间的配比的投入产出分析(举例来说,一斤面粉和半斤水生产一斤面包和半斤脏水,如果需要增加面包产量一斤,实际上就意味着增加脏水半斤。这个面包和脏水之间不是简单的投入产出关系,而是共同生产关系。这个关系没有被通常的投入产出考虑进来),需要考虑两个矩阵\({L_{\alpha}}^{j}\)和\(R_{\alpha,j}\),分别表示发生一次工艺\(\alpha\)的生产需要和产生\(j\)产品的数量。如果我们知道这个时间内每一个生产部门的生产的次数\(V^{\alpha}\),那么我们就可以计算总需求和总产出分别为,
\[X^{j}=\sum_{\alpha}L_{\alpha}^{j}V^{\alpha}, \hspace{2cm} (10)\]
为产品\(j\)投入到所有产业的总和。
\[X_{j}=\sum_{\alpha}R_{\alpha,j}V^{\alpha}, \hspace{2cm} (11)\]
为所有产业生产出来的产品\(j\)总和。

当假设一个产业部门只生产一样产品的时候,\(R_{\alpha,j}=\delta_{\alpha,j}\),于是\(X_{j}=V^{\alpha}\),于是,公式(10)成为
\[X^{j}=\sum_{i}L_{i}^{j}X_{i}. \hspace{2cm} (13)\]
这个时候,可以看出来,\(L\)与\(MF\)相当。对于这个生产过程,可以存在多种理解。例如,给定投入向量\(X^{a}\),我们希望得到最优的产出向量。例如,我们要求投入向量实际上来自于产出向量。例如,给定总价格和投入资金,我们希望得到最优的产出值。所有的这些问题都可以用这个\(L\)和\(R\)的数学模型来描述。

对于一个封闭系统(总投入等于总产出),则
\[\sum_{\alpha}L_{\alpha}^{j}V^{\alpha} = \sum_{\alpha}R_{\alpha,j}V^{\alpha} \Longrightarrow \sum_{\alpha}\left(L_{\alpha}^{j}-R_{\alpha,j}\right)V^{\alpha}=0 , \hspace{2cm} (14)\]
对于一个开放系统系统(总投入不等于总产出,但是外界输出已知),则
\[\sum_{\alpha}\left(L_{\alpha}^{j} – R_{\alpha,j}\right)V^{\alpha} = b^{j}. \hspace{2cm} (15)\]
这两个方程意味着,为了满足外界的需求,各个部门的生产频率是受约束的(如果能够完全确定下来就更好了。通常做不到,因为方程不是方的)。

回到化学反应网络的层次,\(L\)和\(R\)被合起来称为化学反应系数矩阵\(S\),相当于把\(L\)当作负的\(R\)当作正的,一起叫做\(S\)。这个时候系统的行为完全由如下微分方程描述,
\[\frac{d}{dt} X_{i} = \sum_{r=1}^{M} \kappa^{r}\Pi_{j=1}^{N} \left(X_{j}\right)^{\frac{\left|S_{r}^{j}\right| – S_{r}^{j}}{2}}S_{r}^{i}, \hspace{2cm} (16)\]
其中\(\kappa^{r}\)是化学反应速率常数(外生变量)。联系两个公式,我们发现,实际上,相当于
\[ \kappa^{r}\Pi_{j=1}^{N} \left(X_{j}\right)^{\frac{\left|S_{r}^{j}\right| – S_{r}^{j}}{2}} = V^{r}.\hspace{2cm} (17)\]

这也就是说,尽管整个化学反应是由外生变量系数矩阵\(S\)和外生变量反应速率矢量\(\kappa\)所决定的一个系统,但是,一定程度上说,例如优化进化的结果使得系统出于平衡的封闭系统状态或者外界输出一定的开放系统的状态(还可以有其他的约束和优化目标,例如经济学的最大利润目标),速率矢量\(\kappa\)也是,一个由\(S\)(加上\(b\)在开放系统中)决定的,适合这个\(S\)的满足一些额外约束和最大化某些额外目标的,参数。

于是,整个问题的研究可以走两条路:第一,在外生变量\(\kappa\)完全已知的情况下,用公式(16)讨论时间演化的过程和演化的结果;第二,通过\(S\)(按照公式(14)加上其他约束)来确定\(V\)从而也确定\(\kappa\),接着得到\(X\)。前者就是化学反应网络和微分方程的方式。后者被称为化学反应网络和流平衡分析(Flux Balanced Analysis)。

在第一个数学模型中(暂时忽略\(b\)的问题,当作封闭系统),研究某个物种多了少了对其他的影响非常简单,只要放到微分方程中去演化一下得到一个定态末状态就行了。但是,这样就需要\(\kappa\)这一外生变量。

在第二个数学模型中,对于某个化学反应(产业部门)的重要性就比较容易讨论,例如\(S\)中去掉某一个列(反应角标\(r\)),然后就可以讨论这个时候的\(V\),并且进而得到这个时候的\(X\)。但是,如何讨论某一个\(X_j\)对一个\(X_k\)的影响呢?

可以考虑这样:在满足约束(例如\(X_j\)最大值约束)的情况下,在同样的\(S\)的情况下,使得某个类似的目标最大的这样的\(V\),然后从\(V\)得到\(X\),来得到\(X_j\)对\(X_k\)的影响。

可以尝试。由于这个流平衡分析与化学反应、基因网络联系更紧密,可以考虑,先用这样的体系做例子,来发展方法,然后,回到经济学和科学计量学。

2014年复杂系统暑期学校报告