社会学的一座金矿:计算社会学与程序模拟法
原文地址:http://qixianglu.cn/20090416131722.htmlforcode:最近又想起了"计算社会学"(Computational sociology),于是搜索了一下,发现了国内居然出现了2篇综述性的论文:李国杰的《关于网络社会宏观信息学研究的一些思考》以及顾卓筠的《西方数理科学社会学的进展》(附在后面),后一篇的作者有社会学的背景,但是目前国内社会科学学者利用这种研究方法的还很少,基本上是工科(尤其是计算机专业)的研究员在用,比较有名可能是中科院自动化所的王飞跃研究员,北师大张江做的网站"集智俱乐部"以及他与北师大李建会老师合著的《数字创世纪:人工生命的新方法》介绍了大量有关内容。
计算社会学的研究方法主要是模拟法。据我所知,模拟法有统计模拟法与程序模拟法之分,我去年写过一个帖子《统计模拟法计算pai的近似值.xls》 是用的统计模拟法,李敏毕业论文里用到的stata模拟法也是一种统计模拟。而计算社会学的程序模拟法是基于agent的自下而上的编程,给每一个 agent设定一些初始条件和互动规则,让agent与环境互动若干步骤之后,再去统计某些参数的特征值。所以,这种方法从根本上来说是一种演绎法,与传 统的统计这样的归纳法不同,这种方法不需要调查数据就可以做社会实验,但是这种社会实验需要有统计等归纳法获得的理论、假设做支持,以设定初始条件和互动 规则。程序模拟法使得社会科学也可以像理工科研究人员一样做实验,比如我们希望知道放开二孩政策对我国的生育率有什么影响,传统的做法可能需要做试点,然 后在试点地区与非试点地区调查获得数据进行统计和比较,才能研究这种政策的影响;但是用模拟法,可能只需要恰当地设置好初始条件和互动规则,纳入重要的变 量,让agent像真实的个人一样互动一段时间之后,再去统计生育率等参数就可以获得很接近的数据了。
程序模拟法不只是可以用来做政策影响评估、社会预测或验证宏观社会规律,实际上也可以被城市规划等专业用来进行城市商业区的选址,甚至心理学也可以用来模拟各种人格因子的相互作用,经济学里比较有名的例子是用程序模拟研究博弈论(Tit for tat), 所以这种方法是一种普适的方法,虽然未必能够取代统计学这样的归纳法,但是,我感觉这种方法在未来会成为比较重要的方法,如果同门有人立志从事定量研究, 建议花时间钻研一下怎么使用这种办法,可以成为国内社会科学界的"先驱"。其实这种方法也并没有听起来那么复杂玄虚,学习难度可能比想象的要小得多,因为 有多个研究机构(比如很有名的圣菲研究所(the Santa Fe Institute,SFI))设计出了开源的程序供免费使用,并且提供了很全的入门资料。比较有名的程序模拟软件有SWARM、starlogo、repast、netlogo,大家google一下就可以找到更多资料。
建议参考wikipedia以下词条:Artificial Society,Important publications in computational sociology,Simulated reality,Social simulation,Agent Based Social Simulation,AgentSheets,StarLogo,Swarm,Behaviour Composer,NetLogo,agent based model,emergence,social complexity,evolutionary algorithm,complex system ,Life simulation game,Complex adaptive system,等等.
英国有一个JASSS杂志是专门收录程序模拟法论文的,很多论文都可以在这个杂志的网站免费下载,网址是:http://jasss.soc.surrey.ac.uk/JASSS.html。
有必要了解一下自下而上编程思想的起源,这种思想的发展与人工智能自上而下编程模式的瓶颈有关,导致了人工生命(Artificial life)这个学科的出现。
我在2006年初关注过计算社会学这个方向,最初我是因为对科幻的兴趣而在2003年做了一些"人工生命"(Artificial Life)方面的网站(源码运动),人工生命最大的贡献是提供了一种自下而上的编程思想,而以往人工智能的专家系统都是自上而下的编程模式,自上而下的编 程模式遇到了瓶颈:代码繁杂而缺乏灵活性。
比如基于自上而下思想编写的火星探测器程序需要事先设计各类地形的原型及应对方式,由于地形可能千变万化,所以这样编写出来的程序非常庞大而且未必能穷尽 各种地形,火星探测器的环境适应性很差。而基于自下而上思想编写的火星探测器软件非常简洁,而且能适应编程者没有预想到的地形,因为这种编程思想是对机器 人的每一条腿的行为模式进行编程,比如八腿机器人,每条腿的状态只有三种:抬腿、向前伸、放下,只要为每条腿的这三个状态编好了反应规则,机器人的八条腿 相互作用就可以实现适应各种地形。行为机器人attila和Genghis的介绍,这里是Attila的主页,这里是Genghis的主页,这里是bigdog的主页。
《数字创世纪:人工生命的新方法》中原文如下:
"虽然Genghis的6条腿可以协调一致向前运动,但它的每条腿都是独立控制的。每条腿都被赋予几种简单的行为规则,以便在不同情况下他们知道应当怎样 移动。举例来说,这些简单规则有:"如果我是一条腿并且我在抬起的位置,那么就把我自己放下来";"如果我是一条腿,并且我在朝前的位置,那么就让其他5 条腿向后移动一点";"如果我是一条腿并且在抬起的状态,那么就向前摆动"。要想使Genghis向前走动,只需要使它的腿有序地摆动。一旦一条腿抬起 来,它就会自动地向前和向后摆动。其中一条腿向前摆动的行为导致所有其他腿向后移动一点。因为那些腿恰好接触到地面,所以就导致Genghis的身体向前 移动一点。这个过程不断重复,Genghis就可以向前走动。"
"在基本的行走行为被创造出来以后,布鲁克斯等又开始为Genghis添加更多的感应器和行为层。其中一些感应器监控Genghis晃动时身体倾斜的角 度,其他一些感应器跟踪腿在摆动中的力度的大小。Genghis利用从这些感应器得来的信息,又产生出一些新的行为,这些新的行为可以帮助它走得更好。在 添加新的行为时,研究者并没有对原来的行为作修改。新的行为只是在条件需要的时候覆盖在基本的行为上。这些高层的行为在不需要的时候将不起作用。"
"Genghis的这种包容结构使它的能力大大增强。现在Genghis不仅可以在平坦的地面上行走,而且可以在高低不平的地面上行走,甚至可以在斜坡上 行走。比如,如果在Genghis的前面放置一个很厚的电话号码本,那么,当它的一条前腿在向前移动时碰到电话号码本的边缘时,所有的运动就都停了下来。 很快,这条前腿又开始移动,这一次比先前抬得更高一些,使它可以放在电话本上。这看上去就好像Genghis有意识要往电话号码本上走一样。 Genghis爬到电话号码本上之后继续向前走。当它的前腿在向前移动的过程中感觉不到地面时,它又停下来,就像昆虫走到物体的边缘一样。它的后腿这时伸 直,使它的整个身体向前倾斜,它的前腿因此可以接触到地面。然后,Genghis慢慢地从电话号码本上走下来,继续它的行程。"
没有评论:
发表评论