来自清华大学自然语言处理和深度学习的一个团队就做了这样的尝试。他们为人群运动视频中的每一个人构建了一个LSTM模型(long short time memory,一种特殊的循环神经网络RNN模型,被人们大量地用于自然语言处理和机器翻译),通过自动提取视频中每一个人的运动轨迹作为训练数据,构建了能够准群预测人群运动状态的深度学习模型4。
每一个Agent的LSTM模型,该图引自:参考文献4
该模型不仅可以预测每个人的运动轨迹,同时,它还可以自动为人群的集体运动状态进行分类和识别,以便预警人群的恐慌状态,防止踩踏的发生。也可以用来快速识别突发事件。
类似的,来自英国Sheffield大学和美国哈佛大学的一个团队尝试用对抗式机器学习的方法,让机器通过模仿自动建立多主体模型5。他们将自制的小机器人分成了三组,一组是被模仿对象,它们会按照事先指定的规则进行复杂的运动;一组是模仿者,它们会混到第一组机器人之中模仿它们的运动行为,从而尽可能地骗过辨别者的法眼;第三组是辨别者,它的任务就是区分这些机器人谁是模仿者,谁是被模仿对象。最终的效果是,随着辨别者识别准确度的提高,模仿者的模仿行为也会越来越逼近被模仿者。于是,我们便可以利用训练好的模仿者搭建一个逼真的多主体模型,来对被模仿者群体进行模拟。
尽管这些研究仍处于实验室阶段,但是我们不难想象,未来的人工智能将可能通过深度学习自动提取主体的运行规则,从而构造大规模的模拟程序。那个时候,我们将有可能更加逼真地模拟多个体的复杂系统,并在其上进行规划或政策仿真。
复杂网络中的深度学习
为什么深度学习如此厉害?不同的人会给出不同的答案。
因为它有很深的神经网络层次——一个初学者大概会如是说;
因为它可以学习超大规模数据——一个了解深度学习的行业从业人员大概会这么说;
因为深度学习技术可以自动从数据中提取特征——一个深入理解深度学习的科研人员大概会这么回答。
没错,深度学习的本质并不在层次有多深,数据规模有多大,而在于它自动提取特征的能力。
什么是特征?长度、宽度、颜色、质料、形状,等等都是特征。然而,它们全部是人为定义的。假设一种生活在频率世界之中的生物体,它大概很难看到一个物体的长度和体积。所以面对超大规模的数据,我们凭借肉眼已经很难提炼特征了,必须把这种能力赋予机器,这才是深度学习的本质。
在现代的复杂系统研究中,复杂网络已经成为了一种标准的通用描述语言。那么我们怎样用深度学习的方式自动提取大规模网络数据特征呢?
我们知道,复杂网络无非就是由点和连边构成的整体。节点或连边的特征自然就是由它所在的网络环境(上下文)所决定的。只要我们将每一个点赋予一个n维向量,就得到了整个网络的嵌入(n维空间中的一团点云)。
我们可以把语言中出现在同一句话的单词彼此相连构成一个所谓的“共现网络”,这样,每一个词就是一个节点,连边就表示同时出现。对于这种网络,2013年,Google的Miklov开创性地提出了一种用向量表示英语单词的做法,叫做Word2Vec6。通过扫描大量的文本数据,Word2Vec可以快速、高效地为每一个单词构造一个向量,即n维空间中的一个点。
相似的单词,例如红与粉在空间中会彼此靠近。更有趣的是,同一种意思的单词在不同语言的空间嵌入中具有相似的位置。例如,如果我们分别用英语和法语进行训练,那么1,2,3……等数字会在两套向量表示下具有相似的位置。如图所示:
分别用纯英文(左)和纯法文(右)的语料训练Word2Vec得到的向量表示。我们会看到,英语的one,two,three……的位置以及对应的法语单词的位置非常相似。与此类似,哺乳类动物在两种语言的嵌入中也具有相似的位置(下面两幅图)。