尽管复杂性科学一直在追求一大类终极问题的答案,如生命的起源、复杂性的起源等。但其实它的发展完全是研究方法驱动的。例如在计算机出现之前,人们是用哲学思辨和数学方程来研究复杂系统;到了90年代,圣塔菲学派兴起,多主体仿真、复杂自适应系统方法席卷了各个研究领域;2000年以后,复杂网络崛起,小世界和无标度以及各式各样的网络分析渗透到了复杂性研究的各个角落;到了2010年以后,基于大数据的复杂性研究和计算社会科学(computational social science)开始兴起。那么,站在2016年的末端展望未来,下一波的热潮将会是什么呢?有没有可能是引领工业界革命的深度学习技术呢?
实际上,将深度学习技术引入复杂性科学研究已经有了大量的研究案例。例如,最近Science上发表了一篇“用遥感和卫星数据结合来预测贫困”的研究就是一个很好的典范【1】。来自斯坦福大学的一个团队利用深度学习技术成功预测了非洲地区的贫困,这一研究不仅解决了困扰了社会学家们数十年的大问题,而且也打开了深度学习方法渗透进社会复杂性研究的一个新窗口。
用深度学习预测贫困
用深度学习和遥感数据预测非洲贫困的Science文章(左),以及同期刊登的评述文章
问题的背景是这样的:非洲的贫困问题长期得不到解决,这并不是因为缺乏来自发达地区的资助,而是因为没有精确的贫困数据。这就使得对非洲的大量投资没有达到需要救助的地区,而全部落入了富人和贪官的腰包里,从而导致了更大规模的贫富差距。于是,人们想到了利用卫星拍摄到的夜光数据来预测地区的贫困,因为越富有的地区,通常夜间灯光的亮度也越高。
但是,这个结论反过来却不成立,并不是说越贫穷的地区灯光越暗。事实上,研究人员从一片黑色区域中完全区分不出无人居住的沙漠,还是贫困得连灯都用不起的村庄。怎么办呢?
图1 复杂的训练管道,上面的流程为输入一块区域的卫星遥感数据,来预测同一区域的夜光明亮度,从而训练一个卷积神经网络以获得遥感数据中的特征。下图所示为:将卷积神经网络进行迁移,再配合上少量的贫困调查数据作为标签,训练一个普通的神经网络。最终卷积神经网络+普通网络就可以根据输入图片来预测地区贫困。摘自:文献2
斯坦福的这个研究团队巧妙地将另一种高精度、高质量的卫星遥感图像数据训练一个深度卷积神经网络(Convoluational Neural Network, CNN),以预测同区域的夜光数值大小。但这样做的目标并不真的为了预测夜光,而是为了提取遥感图像数据中的特征(例如街道、屋顶等)。然后,再利用这些特征作为输入,以及少数采样点的贫困调查数据作为标签,一起来训练一个普通的神经网络。最终,喂给这个网络一张街景地图,它就可以高精度地预测该地区的贫困程度。就这样,这个组使用了非常先进的迁移学习技术,以及复杂的机器学习训练管道(pipeline),对局部贫困程度进行了较高精度的预估(如图1)。
深度学习与多主体建模
多主体建模是复杂系统一种非常普遍而有效的研究方式。我们将系统理解为大量个体遵循简单的相互作用规则而形成的整体。例如,当我们分析人群的集体行为时,可以对每一个个体人建立模型,并假设它们都遵循极其简单的相互作用规则(如社会力模型【3】)。然后,我们在计算机中再造这群人的计算机仿真程序,从而模拟出人群的运动轨迹。
社会力模型的模拟程序
尽管这种思路的确可以逼真地模拟复杂系统,但是所有的模型规则和参数几乎全部是模型构建者拍脑袋决定的。这就使得模型的准确性和可信赖程度大打折扣。
我们知道,实际上,现在的城市公共空间装满了各种各样的摄像头。大量的人群运动轨迹被记录在了视频里。那么,我们能不能自动地将视频中的个体人的运动轨迹提取出来,训练我们的主体模型,从而得到极其逼真的人群运动模拟呢?
来自清华大学自然语言处理和深度学习的一个团队就做了这样的尝试。他们为人群运动视频中的每一个人构建了一个LSTM模型(long short time memory,一种特殊的循环神经网络RNN模型,被人们大量地用于自然语言处理和机器翻译),通过自动提取视频中每一个人的运动轨迹作为训练数据,构建了能够准群预测人群运动状态的深度学习模型【4】。
每一个Agent的LSTM模型,该图引自:参考文献4
该模型不仅可以预测每个人的运动轨迹,同时,它还可以自动为人群的集体运动状态进行分类和识别,以便预警人群的恐慌状态,防止踩踏的发生。也可以用来快速识别突发事件。
类似的,来自英国Sheffield大学和美国哈佛大学的一个团队尝试用对抗式机器学习的方法,让机器通过模仿自动建立多主体模型【5】。他们将自制的小机器人分成了三组,一组是被模仿对象,它们会按照事先指定的规则进行复杂的运动;一组是模仿者,它们会混到第一组机器人之中模仿它们的运动行为,从而尽可能地骗过辨别者的法眼;第三组是辨别者,它的任务就是区分这些机器人谁是模仿者,谁是被模仿对象。最终的效果是,随着辨别者识别准确度的提高,模仿者的模仿行为也会越来越逼近被模仿者。于是,我们便可以利用训练好的模仿者搭建一个逼真的多主体模型,来对被模仿者群体进行模拟。
尽管这些研究仍处于实验室阶段,但是我们不难想象,未来的人工智能将可能通过深度学习自动提取主体的运行规则,从而构造大规模的模拟程序。那个时候,我们将有可能更加逼真地模拟多个体的复杂系统,并在其上进行规划或政策仿真。
复杂网络中的深度学习
为什么深度学习如此厉害?不同的人会给出不同的答案。
-
因为它有很深的神经网络层次——一个初学者大概会如是说;
-
因为它可以学习超大规模数据——一个了解深度学习的行业从业人员大概会这么说;
-
因为深度学习技术可以自动从数据中提取特征——一个深入理解深度学习的科研人员大概会这么回答。
没错,深度学习的本质并不在层次有多深,数据规模有多大,而在于它自动提取特征的能力。
什么是特征?长度、宽度、颜色、质料、形状,等等都是特征。然而,它们全部是人为定义的。假设一种生活在频率世界之中的生物体,它大概很难看到一个物体的长度和体积。所以面对超大规模的数据,我们凭借肉眼已经很难提炼特征了,必须把这种能力赋予机器,这才是深度学习的本质。
在现代的复杂系统研究中,复杂网络已经成为了一种标准的通用描述语言。那么我们怎样用深度学习的方式自动提取大规模网络数据特征呢?
我们知道,复杂网络无非就是由点和连边构成的整体。节点或连边的特征自然就是由它所在的网络环境(上下文)所决定的。只要我们将每一个点赋予一个n维向量,就得到了整个网络的嵌入(n维空间中的一团点云)。
我们可以把语言中出现在同一句话的单词彼此相连构成一个所谓的“共现网络”,这样,每一个词就是一个节点,连边就表示同时出现。对于这种网络,2013年,Google的Miklov开创性地提出了一种用向量表示英语单词的做法,叫做Word2Vec【6】。通过扫描大量的文本数据,Word2Vec可以快速、高效地为每一个单词构造一个向量,即n维空间中的一个点。
相似的单词,例如红与粉在空间中会彼此靠近。更有趣的是,同一种意思的单词在不同语言的空间嵌入中具有相似的位置。例如,如果我们分别用英语和法语进行训练,那么1,2,3……等数字会在两套向量表示下具有相似的位置。如图所示:
分别用纯英文(左)和纯法文(右)的语料训练Word2Vec得到的向量表示。我们会看到,英语的one,two,three……的位置以及对应的法语单词的位置非常相似。与此类似,哺乳类动物在两种语言的嵌入中也具有相似的位置(下面两幅图)。
Word2Vec中涌现的向量差关系:,其中蓝色的向量(深蓝和浅蓝)都表示用Word2Vec学习得到的单词向量。它们彼此之间的差向量(红色箭头),表达了最高权力关系也近似相等。
更让人震惊的是,单词之间的关系也可以自动地被Word2Vec学到,如上图这个著名的公式:v(男人)-v(女人)=v(国王)-v(王后),其中v(x)表示x这个单词的词向量。也就是说,机器会自己学习到男人相对于国王相当于女人相对于王后。所以,除了将每个单词进行向量表示以外,Word2Vec还可以隐式地学习到“男女关系”这种抽象关系。
与此类似,很多概念之间会存在着上下位的层级关系。例如,“动物”就是“昆虫”的上位词,而“昆虫”又是“蜻蜓”的上位词。我们用这些单词的向量表示分别做减法,就可以用差向量来表示这种抽象的关系【9】。如图:
Word2Vec学习得到的词语之间的层级关系:首先让Word2Vec学习大量的中文语料,这样每个单词会对应一个表示(蓝色的点)。其次,我们寻找所有的上下位词层级关系,比如工人与木匠,或者运动员与足球运动员,并将它们的向量表示分别相减得到了上下位词的差向量。我们发现,这些差向量如果是同一种类别的话,比如工人-木匠,以及工人-园丁,则非常相似。所以,Word2Vec学习得到的向量表示蕴含了一种关系表示。该图摘自:参考文献9
然而,这种蕴含的关系表示并不十分明确,存在着很大的误差。于是,人们想出了各种方法来改进,其中一种比较彻底的方式是,将所有的名词实体和各种关系(包括上下位、同义词等)分别嵌入到不同的空间(即实体空间和关系空间),这样可以更全面、更准确地来表达它们【10】。
与此类似,我们还可以用这种方法处理其它的不同网络。
利用与Word2Vect类似的DeepWalk算法【10】得到的“跆拳道俱乐部”(左侧)网络的嵌入(右侧)。其中节点是人,连边是好友关系。在这个俱乐部中,存在着4个相对独立的社团,分别被标注了不同的颜色。摘自参考文献7
得到这些向量表示又有什么用呢?它的用途有很多,例如,通过向量表示可以发现节点之间的聚类,我们只要将表示空间中彼此靠近的节点划分为一类就可以,如下图:
该图是将带参数的网络嵌入Node2Vec算法在两种不同参数条件下用于同一个网络(上、下),并根据向量表示做聚类分析后得到的可视化效果。其中同一种颜色对应同一种聚类。上图得到的聚类是网络的社团划分。下图的聚类得到的却是生态位(叶子节点、桥接节点以及中心节点)的划分。摘自文献8
更重要的是,这些花样繁多的向量表示解决了每个节点的特征描述问题以作为节点分类和预测问题的基础。一般情况下,节点的向量表示就是机器自发学习出来的节点特征,该特征反应的是每一个节点所在整个网络之中的生态地位。
于是,根据机器学习得到的特征,运用神经网络技术,我们便可以进行节点的分类与预测了。我们可以通过社交网络识别哪一个节点更可能是恐怖分子。我们也可以根据一篇文章在引文网中的地位预测它是否可以获得诺贝尔奖提名,等等。
图卷积神经网络
我们知道,现在的深度学习技术最主要的突破其实都是在图像识别领域和自然语言处理领域。从技术上讲,图像属于一种静态的二维数组,而自然语言实际上可以看做一种时间上的符号序列。它们都有非常标准的数据结构。
但是,网络或者图,却是一种介于二维数组和一维序列之间的不规则数据类型。我们不能把网络看做图像,因为网络的节点之间没有图像的像素之间那样规整的邻域关系。我们同样不能把网络看做是一维的节点和连边序列,因为我们任意颠倒节点之间的顺序,却对应的是同一张网络。
于是,问题来了。既然深度学习可以在图像识别以及自然语言处理中大展身手,那么是否也能在复杂网络的相关任务中崭露头脚呢?
具体的,让我们考虑这样一种所谓的图分类问题(Graph classification problem)。如果我给你一张网络,没有任何其它辅助信息,你能不能告诉我它属于哪一类?是社交网络还是生物网络?是无标度网还是小世界网?这个问题有什么实际背景呢?我们知道,复杂网络可以看做是复杂系统的骨架(backbone),那么当我们处理不同的复杂系统时,我们便可以通过它们的骨架来进行识别、分类和预测。比如,我们可以将一个社群的社交网络看做社群的骨架,那么我们就能否根据它预测网络的运行状况;再比如,如果将一个国家的投入产出网看做是国家经济系统的骨架,那么我们就能给国家的产业结构进行“诊脉”。
这些问题的背后需要一种新的突破,它在5年前刚刚开始萌芽,这就是图卷积神经网络技术(Graph convolutional neural network,GNN)【11】。该套技术通过扩展基于图像的卷积神经网络(Convolutional neural network,CNN),来处理大量的网络数据。并有可能达到和CNN同等的精确程度。
GNN模型的架构,类似于图像处理中的CNN,GNN可以对一个网络进行卷积操作,并做粗粒化,从而实现多层信号处理,摘自文献12
在很多文献中,人们不仅用CNN来识别图像,更多的是用它来提取图片中物体的特征。例如在前面讲述的用卫星遥感图像预测贫困的工作中,研究者用CNN的最主要目的是提取出图像中屋顶、道路等特征。有了这些机器自动学习得到的特征之后,我们便可以将学好的网络用于各种领域。例如,我们可以将CNN和LSTM结合,从而实现 “看图说话”;将CNN配上强大的强化学习,就能实现让计算机和人类一样看着视频打游戏;将CNN配上强大的蒙特卡洛搜索,就能实现战胜人类大师的AlphaGo。
展望
复杂系统需要深度学习吗?我的回答当然是需要。这是因为深度学习可以自动化提取对象中的隐藏特征,这将结束几十年来复杂性科学家手工发明特征指标的历史。人类的智慧虽然闪烁着灵光,但面对庞大的数据,人工智能还是更胜一筹。一旦GNN、网络嵌入等技术获得突破,所有的特征发现就全部变成了自动化流水线,我们便可以站在一个更高的层次来理解复杂系统。
深度学习在图像领域中的大量突破告诉我们,一旦机器可以学会自动提取特征,我们就可以以一种人类难以想象的精准度来进行预测和识别。例如,现在深度学习在人脸识别的准确率已经高达99%了,而人类的准确率也仅仅只有97%。所以,在未来,精确地认识、调控复杂系统并非完全不可能。
而更有意思的是,当我们把深度学习和传统技术,包括多主体模拟、系统动力学相结合,就可能实现对复杂系统的自动建模。我们可以设想这样一种机器,你只要不断地喂给它大量的数据,它就有可能自动吐出来一个多主体模型,并告诉你精确调控系统的方案。如果能实现这一步的话,人工智能就真的可以管理社会了。
然而,反对论者批评深度学习是一个黑箱模型:尽管它可以很好地工作,但我们人类仍然无法理解。这就好像中医看病,完全凭借老医师的个人经验和感悟,无法给你一套符合西医科学标准的解释。但是,也许复杂系统就需要这种中医式的思维方式。因为就像小蚂蚁无法理解蚁群的行为一样,超级复杂的相互作用关系也许压根就不是我们人脑智慧可以处理得了的。我们只能借助更加强大的机器来应付超大规模的复杂性。
反过来讲,复杂性科学也可以帮助我们更好地理解深度学习模型。例如,最近的一批物理学家就在尝试用变分重整化群(Variational renormalization group)的方法来理解深度学习网络【13】,每增加一层神经元节点就是在对原问题进行更高层次的粗粒化。所以,层次的加深有助于我们从更高的尺度去把握数据中的规律。
总而言之,长期以来复杂性科学就是一个非常具有包容性的学科。它是各种数理方法、工程技术的大熔炉。所以,将深度学习融入复杂系统是一个必然趋势。
深度“深度学习”读书会第一期PPT
参考文献:
-
Jean N, Burke M, Xie M, et al. Combining satellite imagery and machine learning to predict poverty.[J]. Science, 2016, 353(6301):790-794.
-
Blumenstock J E. Fighting poverty with data[J]. Science, 2016, 353(6301):753-754.
-
Helbing D, Moln T. Social Force Model for Pedestrian Dynamics[J]. Physical Review E Statistical Physics Plasmas Fluids & Related Interdisciplinary Topics, 1995, 51(5):4282-4286.
-
Hang Su, Yinpeng Dong, Jun Zhu, Haibin Ling, and Bo Zhang, Crowd Scene Understanding with Coherent Recurrent Neural Networks, Proceedings of the Twenty-Fifth International Joint Conference on Artificial Intelligence (IJCAI-16), 2016
-
T. Miklov: Efficient Estimation of Word Representations in Vector Space, 2013
-
Perozzi B, Al-Rfou R, Skiena S. DeepWalk: Online Learning of Social Representations[J]. arXiv preprint arXiv:1403.6652, 2014.
-
Aditya Grover, Jure Leskovec. node2vec: Scalable Feature Learning for Networks. KDD 2016.
-
R Fu et al: Learning Semantic Hierarchies via Word Embeddings, Meeting of the Association for Computational Linguistics, 2014
-
Lin Y, Liu Z, Sun M, et al. Learning entity and relation embeddings for knowledge graph completion[J]. 2015.
-
Defferrard M, Bresson X, Vandergheynst P. Convolutional Neural Networks on Graphs with Fast Localized Spectral Filtering[J]. 2016.
-
Niepert M, Ahmed M, Kutzkov K. Learning Convolutional Neural Networks for Graphs[J]. 2016.
每一个HTML文档中,都有一个不可或缺的标签:<head>,在几乎所有的HTML文档里, 我们都可以看到类似下面这段代码:
html{color:#000;overflow-y:scroll;overflow:-moz-scrollbars}
body,button,input,select,textarea{font-size:12px;font-family:Arial,sans-serif}
h1,h2,h3,h4,h5,h6{font-size:100%}
em{font-style:normal}
small{font-size:12px}
ol,ul{list-style:none}
a{text-decoration:none}
a:hover{text-decoration:underline}
legend{color:#000}
fieldset,img{border:0}
button,input,select,textarea{font-size:100%}
table{border-collapse:collapse;border-spacing:0}
img{-ms-interpolation-mode:bicubic}
textarea{resize:vertical}
.left{float:left}
.right{float:right}
.overflow{overflow:hidden}
.hide{display:none}
.block{display:block}
.inline{display:inline}
.error{color:red;font-size:12px}
button,label{cursor:pointer}
.clearfix:after{content:'\20';display:block;height:0;clear:both}
.clearfix{zoom:1}
.clear{clear:both;height:0;line-height:0;font-size:0;visibility:hidden;overflow:hidden}
.wordwrap{word-break:break-all;word-wrap:break-word}
.s-yahei{font-family:arial,'Microsoft Yahei','微软雅黑'}
pre.wordwrap{white-space:pre-wrap}
body{text-align:center;background:#fff;width:100%}
body,form{position:relative;z-index:0}
td{text-align:left}
img{border:0}
#s_wrap{position:relative;z-index:0;min-width:1000px}
#wrapper{height:100%}
#head .s-ps-islite{_padding-bottom:370px}
#head_wrapper.s-ps-islite{padding-bottom:370px}#head_wrapper.s-ps-islite #s_lm_wrap{bottom:298px;background:0 0!important;filter:none!important}#head_wrapper.s-ps-islite .s_form{position:relative;z-index:1}#head_wrapper.s-ps-islite .fm{position:absolute;bottom:0}#head_wrapper.s-ps-islite .s-p-top{position:absolute;bottom:40px;width:100%;height:181px}#head_wrapper.s-ps-islite #s_lg_img,#head_wrapper.s-ps-islite#s_lg_img_aging,#head_wrapper.s-ps-islite #s_lg_img_new{position:static;margin:33px auto 0 auto}.s_lm_hide{display:none!important}#head_wrapper.s-down #s_lm_wrap{display:none}.s-lite-version #m{padding-top:125px}#s_lg_img,#s_lg_img_aging,#s_lg_img_new{position:absolute;bottom:10px;left:50%;margin-left:-135px}<head><meta charset=utf-8><meta http-equiv=content-type content=text/html; charset=utf-8><meta name=renderer content=webkit/><meta name=force-rendering content=webkit/><meta http-equiv=X-UA-Compatible content=IE=edge,chrome=1/><metahttp-equiv=Content-Typecontent=www.czjy.cn;charset=gb2312><meta name=viewport content=width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no></head>.s-ps-sug table{width:100%;background:#fff;cursor:default}.s-ps-sug td{color:#000;font:14px arial;height:25px;line-height:25px;padding:0 8px}.s-ps-sug td b{color:#000}.s-ps-sug .mo{background:#ebebeb;cursor:pointer}.s-ps-sug .ml{background:#fff}.s-ps-sug td.sug_storage{color:#7a77c8}.s-ps-sug td.sug_storage b{color:#7a77c8}.s-ps-sug .sug_del{font-size:12px;color:#666;text-decoration:underline;float:right;cursor:pointer;display:none}.s-ps-sug .sug_del{font-size:12px;color:#666;text-decoration:underline;float:right;cursor:pointer;display:none}.s-ps-sug .mo .sug_del{display:block}
.s-ps-sug .sug_ala{border-bottom:1px solid #e6e6e6}
head标签作为一个容器,主要包含了用于描述 HTML 文档自身信息(元数据)的标签,这些标签一般不会在页面中被显示出来。