“统计物理、神经网络与社会科学读书会”的版本间的差异
(创建页面,内容为“这里是为期一个学期的统计物理、神经网络与社会科学读书会的wiki页面 ==主题:统计物理、神经网络与社会科学读书会== ==…”) |
(没有差异)
|
2020年10月16日 (五) 17:12的版本
这里是为期一个学期的统计物理、神经网络与社会科学读书会的wiki页面
主题:统计物理、神经网络与社会科学读书会
必读材料
张江(jake)的”生命之流“ 系列
- 生命之流(1)——从复杂到生命
- 生命之流(2)——生命自主体简史
- 生命之流(3)——过去与未来在现在相遇
- 生命之流(3)——牛顿力学2.0
- 生命之流(4)——热量中的时间之箭
- 生命之流(5)——连接上帝的纽带-熵
一个有趣的统计力学实验:皮球与PVC管 Prentis, J. J. (2000). Experiments in statistical mechanics. American Journal of Physics, 68(12), 1073-1083. 吴令飞以这篇论文的真实实验为原型使用P5.js代码写的在线模拟
Bejan, A., & Marden, J. H. (2006). Unifying constructal theory for scale effects in running, swimming and flying. Journal of Experimental Biology, 209(2), 238-248.
Statistical Mechanics
第一讲 最可能者生存:热力学与进化论
主要文献:Whitfield, J. (2007). Survival of the likeliest?. PLoS biology, 5(5), e142.
主要内容:一直以来,人们都认为热力学与进化论是对立的:热力学第二定律认为宇宙,作为一个封闭系统,趋于无序。香水会飘散,破镜不能重圆。在这样的背景下,生命和秩序究竟是如何出现并且维持自己的,令人吃惊。本文介绍了一种大胆的猜想:热力学第二定律并不与进化冲突,恰恰是进化的底层原理。在进化中脱颖而出的生命结构,是那些最高效地消耗能量和生产无序性的结构。
备注:这一篇论文,也是十年前集智俱乐部成立的[1]小组阅读的的第一篇论文(随笔)。我们把这篇论文选为第一篇,既是回顾十年前的这场思想激荡并作为我们这个读书会的思考起点之一 —— 文章的想法在今天看来仍然是疯狂的,也希望十年后仍然有人从我们的读书会里收益。
Python 代码:无
领读:章彦博,林意灵
补充:
【from Hcui】:热力学第二定律说的是封闭系统(一个孤立系统的熵不会自发减小),这篇文章说的生命涌现自远离平衡态的耗散系统(非孤立)。按照文章的原意,进化论实际上更偏向于是后者。详细可见 陈式刚. Glansdorff-Prigogine判据与最小熵产生定理[J],物理学报,1980,10:1315-1322。
第二讲 我们生活在最可能的世界中:信息论与统计力学
主要文献:Jaynes, E. T. (1957). Information theory and statistical mechanics. Physical review, 106(4), 620.
主要内容:香农用“熵”(Entropy)表达信息,而这个公式是从玻尔兹曼创造的,用于解释热力学现象的分子行为的数学框架(即统计力学)那里抄过来的——据冯诺依曼说是他推荐香农使用这个公式。那么热力学与统计力学里的熵和信息论的熵究竟是不是一个东西呢?这个公式的借用只是表面现象,还是说有更深刻的原因?Jaynes是最早系统地把信息论和统计力学联系在一起来的,这个联系后面对应着一个大单的猜想:所谓规律,就是那些更可能被观察到的模式,物理世界的规律是在统计意义上问题的,而这种稳定性可以被信息论描述。
Python 代码:
领读:章彦博,林意灵
(吴令飞,马磊)
从统计力学和最大熵的角度理解机器学习:Labeling其实就是围绕quantity of interest来定义像“能量”一样的东西,而机器学习的training就是想要学习到the most likely distribution,which is the consequence of maximum entropy (least information) + "energy" (quantity of interest) constraint.
使用quantity of interest定义了能量,也就定义了Landscape,而在Landscape上游走,并走向吸引子的过程,就是预测。机器学习的任务,就是把Landscape塑造到一个合适的状态(吸引子的分布可以保证高预测率)的过程。这个塑造,有多重策略。比如梯度下降 (back propagation)。
往前传是做预测(让小球滚向吸引子),往回传(让送死的小球报告一下)是学习。
能量的计算如果应用在神经元之间的连边上(对应back propagation),就是在塑造landscape;如果应用在input的微观态跳转上(对应forward,hopfield网络里让一个图片消除噪音,决定每个像素是否激活,在现代神经网络里,决定下一场Hidden neuron是否激活),就是在做预测。
第三讲 智能即形状:Hopfield Network: 一个可以储存知识的热力学系统
主要内容:什么是智能?它是如何被演化出来的?我们如何创造一个可学习的系统,它可以不断地把环境的知识储存到自身内部,展现智能的行为?Hopfield Network是一次伟大的尝试。它是一个网络,用链接结构来储存外界信息。它在知识和能量之间建立联系——把需要记忆的信息对应于一种最低能量的连接结构, 使得知识被储存起来,并且可以在需要的时候重新释放出来。
Python代码 利用python 实现hopfield 网络
领读: 崔浩川,王呈伟
必读材料:
[ https://www.sup.org/books/title/?id=388 March, J. G., Schulz, M., & Zhou, X. (2000).The dynamics of rules: Change in written organizational codes. Stanford University Press.]
Python 代码: https://github.com/kencyke/hopfield-mnist
吴令飞感想
热力学系统天然对应着机器学习,又对应着复杂网络。热力学系统的一个宏观态(能量)对应多个微观态,就好像一个标签(例如手写字体9)对应多种具体图像,因此被利用来做机器/统计学习任务。在Hopfield Network的训练中,我们定义能量时,利用了训练集里我们比较想要的模式的信息 - 例如标签为9的图像集合里,两个位置i和j的像素保持同一个颜色的概率,将会被定义为Hopfield Network里两个对应节点i和j之间的权重T_ij (也就是“fire together, wire together”这个Hebbian Rule),使得我们想要的模式对应着更低的能量。然后我们再使用蒙特卡罗规则驱动系统朝更低的能量状态演化,自然就在叠加了噪音的情况下,大概率地“恢复”中记忆中(低能量)的一个状态。也就是说,我们可以做出这个类比:微观态(microstate) = 手写图像等数据(image)=节点(nodes), 而 宏观态(macrostate)= 分类标签(label) =社区 (community)。一个热力学系统,例如Hopfield Network的学习能力,与它的规模和熵有关,因为系统越大,熵越大,就可以包含越多类型标签,以及在一个标签中包含更多数据 。
Hopfield Network中的阈值,实际上导致网络节点的“抱团”结构,联系紧密的一批节点变成1(变黑),一定就有另外一些一些联系紧密的节点变成0(变白)。这个阈值的设定好像压力,迫使“9”这个形状开始出现。可以想象,阈值越高,“9”就会变得零碎,由一些最密切联系的骨干节点构成,好像水墨画的干墨。阈值越低,“9”就会变得完整,好像水墨画下笔时沾了比较多水,形状比较饱满圆润,而且面积比较大。当阈值是0时整个画面都变黑。
如果Hopfield Network中节点的抱团(也就是“fire together, wire together”这个Hebbian Rule)可以用来储存图片形状的信息,那么,社会网络中人们的抱团又是在储存什么信息呢?这是一个有趣的open question,但是起码确定无疑的是,社会网络的团块结构一定也是像Hopfield Network一样,具有记忆的功能-团块结构不会因为暂时的扰动而改变,具有一定的resilience。
第四讲 学习即变形:Boltzmann Machine,消除信息梯度的三种方式
Hopfield Network的本质是Energy-based learning,把知识储存在链接结构里,以及使用系统能量的概念把来寻找和锁定这个状态。那么,如何来寻找到最低能量(最大熵)的状态呢,有三种方式
1) 蒙特卡洛模拟(MC) 2) Hebbian Rule (fire together, wire together) 3) Backpropagation (梯度回传)
在这篇论文中,Hinton提出并证明了,使用了第二种方法,即Hebbian Rule,就可以令Boltzmann machine最小化模型与数据之间的Kullback–Leibler divergence(又称Information gain)。即最高效地消除“知识梯度”。这篇论文不仅是对一个机器学习模型的描述,更是触及了一些深刻的思考:如果我们可以利用热力学系统来学习,那么真实世界里热力学系统的变形,是不是也在不断学习的后果,我们又怎样把系统学习到的知识提取出来呢?
知识梯度似乎对应着(”最可能者生存“中的)能量/熵梯度,最高效地消除能量梯度的生命体获胜,就像最高效地消除信息梯度的智能体获胜一样。进化是一个热力学事件,智能也是。
Python 代码
领读: 崔浩川,王呈伟
马磊,令飞的讨论笔记:
- [math]\displaystyle{ \frac{\partial{G}}{\partial{w_{ij}}} = -\frac{1}{R}[p_{ij}^{pos}-p_{ij}^{neg}] }[/math]
where:
- [math]\displaystyle{ p_{ij}^{pos} }[/math] is the probability that units i and j are both on when the machine is at equilibrium on the positive phase.
- [math]\displaystyle{ p_{ij}^{neg} }[/math] is the probability that units i and j are both on when the machine is at equilibrium on the negative phase.
- [math]\displaystyle{ R }[/math] denotes the learning rate
假定有三个节点1,2,3,其中1和3是visible nodes, 2是hidden node。[math]\displaystyle{ w_{12}=0.1 }[/math], [math]\displaystyle{ w_{23}=0.9 }[/math],在 negative phase,[math]\displaystyle{ p_{12}^ {neg}=0.08 }[/math](因为有3的影响), 这样在 postiive phase 的时候,要锁定(clamp)住 1 和 3 节点,1节点是 0 (例如表态不脱欧的英国公民),3 节点是 1 (例如表态脱欧的英国公民),这时候可能会有 [math]\displaystyle{ p_{12}^{pos}=0.05 }[/math],这是因为 2 更加倾向于与 3 相同,也就是脱欧的状态,而与 1 的非脱欧状态相反。根据上述公式,这时候 [math]\displaystyle{ w_{12} }[/math] 应该被 update 成 [math]\displaystyle{ w_{12}^'=w_{12}+\delta w_{12} = 0.1 - (0.08-0.05)=0.1-0.03=0.07 }[/math]
原理:通过传播visible nodes的状态,把visible nodes的信息encode到nodes 之间的连边权重上去,使得一旦input的信息消失,它可以被重新恢复出来(例如考虑一个128个节点的网络,其中64个用于输入手写数字”9“,剩下的节点就会传播这个信息并且通过权重来记住这个信息,就像被捏了一把的橡皮泥)。
令飞写Boltzmann Machine Python代码
https://github.com/lingfeiwu/lingfeiwu.github.io/blob/master/BoltzmannMachine.ipynb
第五讲 测量社交网络的能量:基于Q Modularity的网络社区划分:用community构建维度来嵌入个体
主要内容:Q Modularity是Newman提出的用来刻画网络社区结构的明显程度的指标。随机网络Q很低,真实的社交网络往往有着较高的Q。基于前面几讲的内容,我们注意到,Modularity的计算公式——其指导原则是将网络分为两个社区后,社区内部的连边最多,社区彼此间的连边最少——与Hopfield Network的能量函数有着惊人的相似。我们是否可以认为,一个真实的社交网络结构,其实储存着信息,网络结构的演化,就是学习过程。因为大自然的学习是利用“系统要寻找最低能量的状态”实现的,所以Q函数实际上是利用了这一点,借助能量公式来刻画网络的社区结构。
Python代码
张章,贾小双
补充
[from Hcui]:Q Modularity还体现了一个零模型的设计问题。Newman在设计Q时给出来了一个零模型,如果两个结点A,B在同一个社团内部的概率应当比任意一个度为K_A和度为K_B的节点的随机连接概率要高,这个猜测是对应着哈密顿函数里的外场力的作用
第六讲 社会系统的几何:Blau Space:用人口统计学构建欧式空间来嵌入个体
主要内容:发现人以群(social group)分,并且以一个人所属的人群来预测他/她的行动,是传统实证社会学的主要方法论。Blau Space是一个基于简单的欧式几何的模型,它的每一个维度代表一个人口统计学属性:种族、性别、收入、教育、宗教。每一个人都可以被看做是这个高维空间中的一个点。传统实证社会学常用的回归,可以看做是这个空间模型的一个应用。社会学中最重要的假设之一,“Homophily in social networks”,也可以放到这个空间中理解,认为在空间中欧式距离比较近的点更容易建立联系。这个空间模型还提供了为组织社会学提供了重要的思考框架:一个组织,例如工会或者教会,就是这个空间中的一个区域,区域的竞争、演化和生灭刻画了社会组织的演化。
Python 代码
张章,贾小双
第七讲 社会隐秩序:Stochastic block model:用blocks构建维度来嵌入个体
主要内容:Harrison White比较早地提出了block modeling的概念。这个模型认为,一个社交网络中人和人的联系,可以被看做是社会模块(block)之间连接概率的一种实现形式。Block内部的节点之间可以看做是等同的,或者是彼此可以交换的(exchangable, structural equivalent),这样,用m个block构成的mxm个连边概率参数就可以描述有n个人的一个网络。这个思路还隐藏了一个非常有意思的观点,它假设一个block model(类似于统计力学里的宏观态),可以对应许许多具体的网络连边configuration(类似于统计力学里的微观态),这样就把统计力学里“系综”(esemble)的概念引入了社会系统。也为后来的Stochastic block model(SBM)埋下了伏笔。SBM把更多统计物理,特别是基于Ising model的概念引入,来设计更高效的算法,来高效识别大规模社交网络里的block结构。我们在这里可以留几个思考题:Block和community是一种什么关系?Blcok是否可以看做Blau space里的一个区域?当有社交网络中几种不同的tie的时候,如何理解和识别block?
Python代码
领读:章彦博,林意灵
主要内容:DeepWalk模型基于神经语言模型word2vec。后者可以将词表达为一个向量,将词嵌入一个高维欧式空间,并且通过神经网络作为优化算法,快速找到词在这个空间里词最合适的位置,使得预测邻近词变得非常简单(在这个空间中夹角最小)。DeepWalk通过在一个给定的社交网络上做随机游走,模拟出word2vec所需要的输入,将社交网络上的节点嵌入欧式空间,并且勇于预测节点的标签。如果说word2vec的假设是“distributional hypotehsis”,是结构主义的语言学原理,即一个词的意义是它周围的词定义的,那么DeepWalk就是把这个原理搬到了社交网络里,认为一个人的社会角色和功能是周围人定义的。
Python代码
领读: 崔浩川,王呈伟
补充
[from hcui]: 对于DeepWalk,我的理解是利用网络中的信息流来反应人在社会中的位置,图神经模型(Graph Neural Network)更能反应人是周围人的函数这一点
主要内容:如果说前面的文献,例如Blau space和Block modeling,是用人的(人口统计学)属性来理解人际关系,那么从图神经模型(Graph Neural Network)就是反过来,从人际关系中反推人的(人口统计学)属性,或者按照机器学习的语言,叫feature。它和DeepWalk等社交网络的空间嵌入模型最主要的区别是,因为它是监督学习(supervise learning),所以可以针对不同的feature来反推人际关系的强度(图注意力模型),这就给了人的(人口统计学)属性一个“涌现”(emergence)的解释,即,这些属性不是稳定的,它们是一个社交网络在学习和储存环境知识中形成的社会结构的后果。Feature可以理解为一种临时性的知识存储。这种表达,与social construction theory不谋而合,但是却是在computational 的意义上精确定义了这个涌现和社会计算过程,而不是在哲学的意义上空泛地讨论。
Python代码
张章,贾小双