现在是2013年2月11号早上3:54 这个时候本来是应该在睡觉的 但是本人今天可耻的失眠了 甚至连一点点的睡意都木有阿
在这失眠的一段时间里 我看了一集公开课 查了几个英语单词 修了一个插件的bug 甚至还打算在这么冷的天起来wow一会儿
瞄了一眼这一年来的日记 各种滋味杂陈其中 或许是夜半的寂静常常给人带来灵感 我的一大喜好就是半夜在床上各种各样的胡思乱想,总想把想法付诸于行动,却总在起身的一刹那失去了所有的想法
这段真是乱七八糟
以上
(好吧 我是骗点击量的 这篇无视好了 最后那句经典的话我就不说了~)
到了这个一年一度的12月31号,传说中的世界末日还是没有来,日子还是一样的过,淡还是要继续扯,按惯例扯扯自己这一整年都干了点什么吧。
从2012年1月1日到今天,这个blog共写了25篇文字,涉及到了各种各样的东西,不过大体上记忆起来,主要是搞了一下NLP相关乱七八糟的东西,看了一本有关逻辑学的神书,体验了一下找工作的“乐趣”,经历了各种面试官和HR的暴虐,办了一场发了2000块钱奖品的校赛,做了一场蛋疼致极的数学建模,找M67神牛了了自己的心愿,玩了几个游戏,wow90级,玩了大北京各种各样的地方,还有最重要的在我厂的5个月的时光。
2012.1.1:
用上了飞哥写的vbloger的wordpress插件,写了差不多半年日记
基于隐马尔可夫模型的汉语词性标注器:
完成了老师给我的第一个任务,一个HMM词性标注器,很用心很认真做的一个东西,虽然很简单,但是没想到的是在后面的面试里发挥了巨大的作用(*_*)
又到一年思春时:
在家玩轩辕三云山彼端,看到里面的情诗不免就跟着荡漾了
新年随感:
同理新年扯个淡,比较特殊的是有个特殊的祝福,还是很感动啊
我忏悔了,自我河蟹好了:
测试了一下GFW的效果,结论是效果还蛮不错的。。。。。
一年中最美哈尔滨:
今年的哈尔滨居然到3月份才来了第一场大雪,这也是这个城市留给我最后的感动了
非常美的ISAP模板:
代码之美~
树状数组原理[转]:
神奇的算法,居然现在才理解,太囧了
数模瞎感:
喷了一下数模,不过广州之行还是很有意思的,两个队友也超级给力,一段不错的时光吧
逻辑学的N个关键词(一) (二) (三):
《哥德尔、埃舍尔、巴赫——集异璧之大成》 看了一篇大神的blog兴趣盎然,上豆瓣一刷,评价就两字——神书,果断搞来了(可悲的是到现在才看到第8章。。。一年啦)
放一个Clicki邀请码,挺有趣的统计插件:
很不错的一个统计插件,详情见网页右下角
传说中只有编译器能看懂的代码:
神代码一发
记一道百度面试题:
这个是百度面试哈,比较有意思的题一道,当时面的感觉还是不错的,特别是扯了一大堆HMM什么的东西
记一个好玩的玩意:
很有才的一个豆瓣友邻做的,当时考试周,看书看不下去的时候就靠上这个到处扯淡了,认识了一个文艺工科男,结果华丽的猜错了性别。。。。
2012 ACM HCPC spring 山寨版参考程序:
费尽心思办完了校赛啊,累了个半死,结果还是很不错的,很高兴和大家在一起这么久一起奋斗过这就够了
转一篇Matrix67牛的blog:
赞一下M67大牛
程序猿的刷票经历:
用python搞了一个刷票机~第一次用python做东西哦 现在太喜欢这个语言了
最大熵模型学习笔记:
碉堡了的模型一个,我的数学实在是太弱了啊啊啊啊
迁移学习学习笔记:
花了一个多月看明白了一篇论文(中间的一部分 -_- )用这个东西改了一个模型,效果碉堡了的差(*_*)
我也来做一篇期末总结:
期末总结一篇,充斥着吐槽,谩骂,嫉妒,忐忑,忏悔和钓丝的样子。
今年的后五个多月一篇都没写,那是我被众pm们剥削了劳动力,这不赖我啊啊啊啊啊啊啊,关于这个事情等离职了再好好写写吧~
最后的最后用一句经典的话结束这篇blog吧——————————本年度维持光棍的状态没有任何进展(-_-)
纠结的大三下终于过去了,以一种非兴奋,非特别的方式过去了,在家闲的没事,还是写写这个学期都干了点什么东西吧。
成绩篇
一般来说这个是最为关心的部分,主要涉及到下学期的保研大计,说实话原来是没有什么读研的想法的,后来不搞ACM进了试验室之后被各种模型一顿虐,才发现自己的知识是有多么的浅薄,虽然我大HIT自然环境真的是挺恶劣的,不过毕竟在学校里无论怎么样还是能有时间自由的学一些东西的吧。结果这个学期成绩一路走低,感觉保研也不是那么的稳当,现在似乎也还没有做好直接去工作的心理准备,要是出了意外保研失败的话真心要蛋疼了。顺便说一句,看到牛人们的考试成绩我真的感到中间差的已经不是距离而是维度了,想象一下被高维生物自内而外的蔑视就会感到有多么的恐怖。
实验室篇
在试验室搞了一个学期迁移学习,到头来到是只学了最大熵,看论文的效率实在是有够低下的了。东凑西凑照着一篇看上去不太靠谱的论文写了一个不太靠谱的迁移学习工具,简单测了一下得到了一个非常不靠谱的结果…下面的工作还是要看师兄的了。到头来看了一个学期论文的到一个结论就是,对于我来说单纯的看论文是比写代码更幸福的一件事,身为一个未来新时代的码农居然会这么想真是毁三观阿。
上课篇
按照主要考试课分的话这个学期主要可以分成前后两个部分,前面是编译课,开学之前是下定了决心要好好学的一门课,结果上到一半就崩溃了,完全听不懂在讲什么。后半学期是网络课,好歹还是能听懂一些东西,不过已经没什么耐心了。回想高中那个时候,难以想象上课走神是什么样的情况,就算困到要死还是会撑着,时光真是一去不复返了呀。还有就是神一样的软件开发实践,真是不想再说什么了,上完这一系列的课该打酱油的还是打酱油,该一个人做的还是一个人做,何必呢。
生活篇
寝室仍然是个不适宜非dotaer生存的地方,一到夏天就热的要死,主要是晚上连电扇都不能用,不热死几个人学校恐怕是不会有什么作为的吧。其他时间不是在试验室就是在基地,后来试验室里的师兄们实习回来了待不了了,基地也总是一帮焦虑的人天天探讨让人焦虑的事,总之似乎难得有可以安静待一会儿地方,不过也知足了,好歹有空调可以降降温,比天天只能大清早去挤图书馆的童鞋们好不少了。
实习篇
先后应聘了腾讯,微软,豆瓣,百度,前两个一个被HR血虐,一个被笔试血虐,豆瓣和百度凭着HMM模型和ACM还剩下的一点点余辉通过了,最后综合了我的一点点装文艺的心理和学长们的一点点经历还是觉得豆瓣会更吸引我一些,而且豆瓣的HR大人似乎还更萌那么点!过几天就要去大水刚泡过的京城了,还是挺忐忑的么。
感情篇
本学期维持光棍的状态没有任何进展。
设备篇
意淫了MacBook Pro,Kindle Touch,Xbox360,iPad3,移动硬盘,无线路由等等一系列的设备,最后除了丢了一根数据线和二个耳机之外一无所得。
机油篇
众机油们表示暑假可以一起出来玩,我表示我大HIT还要考试,你们忏悔吧,当我HIT放假的时候你们的暑假也没几天了。
电影篇
看了不少文艺范的电影,总是被电影感动到一塌糊涂半夜上豆瓣翻影评,总是觉得少了些什么所以想自己写写影评,总是觉得麻烦就不写了,总是到这个时候才后悔怎么连这点时间都抽不出来,总是觉得刷sns真是浪费时间践踏生命还忍不住要去刷却连写个影评的时间都没有。什么都不说了。
别的还没想到,那就先这样吧。
最近忙各种事,很久没有更新这段连载了,也很久没看GEB这书了,今天搞完了软件开发实践那破事,有点时间就记一些东西吧~
第四章 一致性、完全性与几何学
对于任何一个形式系统,真理超出该系统所规定的定理资格这件事,被称作该系统的“不完全性”。
PS:这里表示的是,根据哥德尔不完全定理,对于一个强的公理系统,必然存在有这个系统不能导出的真理。
形式系统的一致性:这是指形式系统中每个定理经过解释后都成为一个真称述(真理)。如果至少有一个经解释后的定理是假称述,那么就是出现了不一致性。
完全性:所有真称述(真理)而且可以表示成系统中的良构符号串的称述都是定理
第五章 递归结构和递归过程
堆栈:stack,你懂的。
递归:其实就是递归。
*侯世达定理:做事所花费的时间总是比你预期的要长,即使你的预期中考虑了侯世达定律!(这就是个递归(-_-))
暂时看到第六章还没看完,所以——(待续)
最近事情比较多,这个星期从凤凰山回来了之后终于有了点比较完整的时间,所以才把A Comparative Study of Methods for Transductive Transfer Learning 这篇论文从头看了一遍,似乎解决了一些心中的疑惑,所以写出来记录一下。
首先我关注的是论文里用最大熵解决transductive transfer问题的这部分内容(前面也有inductive transfer问题,但是中间的推导实在没看明白就先跳过去了)
根据论文的介绍,transductive transfer问题是在有source domain训练语料,但是没有target domain的训练语料的情况下,如何通过训练source语料并通过调整预测概率分布(distribution)来使对target测试语料达到一个比较好的识别效果。
为了简单起见,记X为source语料的上下文集合,Y为source语料的标记的集合。这样
,
,其中每个
为source语料的一个时间,且source语料一共有
个事件。
记对source语料训练时所用的特征集合为
,训练得到的参数向量计为
这里我似乎原来理解的有错误,还是因为看原来最大熵模型时的概念先入为主,始终认为特征函数总会包含x和y这两个参数,现在看来,似乎这篇论文中的特征函数只需要x参数就可以了,对y的限制利用了计算特征函数对不同y的期望。这样对y的限制效果就从参数向量
上体现出来了,所以每个
都有两个下标i,j表示对应于第i个特征函数和第j个y标记。
这里我认为用传统的最大熵模型就可以将参数向量
计算出来,这时候是完全没有target语料的信息(顺便说一下,我认为作者为什么没有在特征向量中使用y参数原因可能是在transductive transfer中target语料并没有Y标记集合的信息,所以他希望通过这么做来绕开限制)。然后论文提出了一个
的概念,所希望达到的目标是
也就是说通过调整每个特征函数
的值来使source语料的期望尽量满足target语料的期望。
这里的
可以由
计算得到,而
则可以用对source语料的训练来计算的结果。
这样的话就可以通过
来计算适合target语料的新的特征函数
,这样似乎就可以用
和新的特征函数来计算
的概率分布,通过这个分布就可以来识别target语料。
这个应该就是论文这部分的基本意思,现在的问题是这个做法的特征函数和现在手上的easyME工具不太一样,我现在直观感觉可以简单的用最后的
这个公式套在现有的工具上,利用有x,y参数的特征函数,似乎在理论上也是说的过去的,这样的话就可以着手实现了,这部分问题会再好好思考一下。
这个学期在实验室主要任务是学习最大熵和CRF这种类型的处理信息概率的模型,从一开学开始看CRF发现看不懂,然后返回来看最大熵,看的模模糊糊,稀里糊涂。中间的时候把师兄写的easyME的代码简单读了一遍,结果还是一头雾水。
一直到最近要开始做Transfer Learning相关的工作,因为CRF实在是太复杂,所以还是决定先在最大熵模型的基础上做文章。原来以为最大熵已经看的有点眉目了,没想到一遇到实际问题就蒙了,其中很多细节问题又看不懂了。所以这几天花了一些功夫重新把模型的原理和具体实现的理论看了一下,做一下笔记。也好以后忘了的时候能回来看一看。(中间还是有一些地方是我自己意淫的,或许有些问题,希望大神们发现了之后能给指出来!)
最大熵模型的理论基础是建立在香农信息论关于熵的这部分上的。
具体对于模型的定义是:
1.对于已知的概率分布的限制,预测出的概率分布结果应严格遵守这个限制;
2.对于 没有限制的概率分布部分,预测出的概率分布结果应是整个分布的总熵值最大。
总体来说就是选择满足限定条件的p,使H(p)(总熵值)最大,其中
上边的概率分布的事件
,其中
,针对词性标注来说的话 A就为上下文集合, B为待预测标记的集合
这个地方似乎我原来理解的有问题,主要是上下文集合这个地方与后文的特征函数给搞混了,这个后面会提到(其实现在也不是很确定到底理解的对不对)
对于如何表示概率分布的限制,一般采用特征函数的方法:
特征f是指x与y之间存在的某种特定关系,用二值函数表示
其中xx和yy为特定的标记,看常宝宝《自然语言处理的最大熵模型》里举了一个特征函数的例子
这里t为待预测标记。
为上下文集合,他给的例子中说
。
是上下文中的一个特定词,我原来的理解是事件是
,也就是和特征函数里的if条件完全对应,然后后面的推导怎么想都不对,怎么想都是预测出的概率分布和已知概率分布完全一样,就非常纠结。现在一看原来的理解是完全错误的。
后面就比较明白了,现在有了限制的表示——特征函数。我们就可以公式化限制了
其中前者表示预测的概率分布的特征期望,后者表示的是已知的概率分布的特征期望,具体每项可以这么计算
x表示的是每个事件,式子的意义就是对所有的满足特定特征
的事件x,对其求出现概率和。原来的时候我在前面理解错了,导致这里死活都看不明白这么做的意义。
最后我们要求的预测的概率分布记为![]()
其中的P的定义为
k为自己设定的特征函数的总数
再往后就可以通过拉格朗日极值定理推出
的形式为(我在看过的文献里都没有见过如何用拉格朗日极值定理推导,主要是本来数学就不行,看着就吐了,自己推不出来,只好硬记了)
公示里的
是某种参数,貌似可以直接计算出来。
是一个向量参数,应该是有k维,可以通过GIS或IIS迭代算法算出来,这样就可以确定每个
的值,这样主要的问题就可以解决了。GIS或IIS迭代算法什么的可以自己找点相关的东西看,我看了下GIS,还是可以理解,IIS还没看就不说什么了。
这总结的可能有地方还不太对,毕竟只是我一个人自己瞎看,有空还是要和学长再去交流一下,看看还有什么不对的地方改正吧。
参考文献
常宝宝《自然语言处理的最大熵模型》(这个写的相当不错)
最大熵理论及其应用 廖先桃 (这是IR实验室的前辈写的,同样很不错)
还有一些乱七八糟的英文文档,当时看的时候就不太明白,这里就不乱推荐了
昨天老妈给发了个网址让我帮着去抢票,大致的流程是先登入一下然后点一个特定的链接,那个链接只有在今天的4个时间段内有效,每个时间段会发600张票大概持续30秒左右,票可以重复抢,大概情况就是这样。
作为一个听话的好孩子,我就勤勤恳恳地每次开10个页面去抢了前3次票,后来在下午无所事事的时候oneplus学长和童童学长突然来了基地(事实证明他们是来找基友滴,这我会乱说么!),两位学长对我的抢票页面产生了兴趣,然后就不知谁突然想到了可以写个程序算票挖!哇哇哇!作为一个程序猿我居然前面完全没有想过写程序刷挖,我还是转行去卖烤肉好了挖!
然后神oneplus学长对着键盘一顿啪啪啪,一个可以用的python程序就出来了有木有!!!好神的有木有!!!偶像阿有木有!!!
这时我对oneplus学长的崇拜之情油然而生,鸡冻的眼泪都快下来了(其实本来也挺崇拜的!),然后一看搞定了oneplus学长和童童学长就挽着基友学长一起高高兴兴的走了!
剩下的就很好搞了,改了下url,加了个多线程,就可以开始抢票啦啦啦!
结果战绩辉煌,最后的总共600张票被我抢走80张左右(因为我就开了80个线程,搞得太过分了被封号了就囧了,不过最后遗憾的是面额最高的票还是没抢着……)
下面代码大部分是学长啪啪啪的结果,还有小部分是我哒哒哒的结果,敬请围观,掌声鼓励一下!!!
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# coding=gbk
import mechanize
import cookielib
import threading
import time
url1="xxx.com/yyy.asp"
url="xxx.com"
def main():
br = mechanize.Browser()
# Cookie Jar
cj = cookielib.LWPCookieJar()
br.set_cookiejar(cj)
# Browser options
br.set_handle_equiv(True)
# br.set_handle_gzip(True)
br.set_handle_redirect(True)
br.set_handle_referer(True)
br.set_handle_robots(False)
# Follows refresh 0 but not hangs on refresh > 0
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)
# Want debugging messages?
#br.set_debug_http(True)
#br.set_debug_redirects(True)
#br.set_debug_responses(True)
# User-Agent (this is cheating, ok?)
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')]
request=br.open(url)
#print request.read()
print "good"
#x = br.open(url1)
#print x.read()
br.select_form(nr=0)
br.form['User_Name']='name'
br.form['User_Phone']='phone'
br.submit()
print "good2"
#print br.response().read()
x = br.open(url1)
#print x.read()
print "yes"
if __name__=="__main__":
#main()
for xx in range(0,4):
for i in range(0,20):
t = threading.Thread(target=main)
t.start()
time.sleep(1) |
前几个月就看过这篇文章,突然又在google reader上出现了,于是又观摩了一遍这篇文章。对于这种科学+哲学的文章我一向最喜欢,怀着科学的震撼和哲学的敬畏,最终上升到宇宙和人生的高度,读完真是回味无穷。
本文内容遵从CC版权协议 转载请注明出自matrix67.com
昨天终于读完了《The Annotated Turing》一书,第一次完整地阅读了 Turing 最经典的那篇论文,理解了 Turing 机提出的动机和由此带来的一系列结论。不过,这本书的最大价值,则是让我开始重新认识和思考这个世界。在这里,我想把我以前积累的哲学观点和最近一些新的思考记下来,与大家一同分享。《The Annotated Turing》一书中的一些学术内容,留待以后几篇日志与大家分享。今年是 Alan Turing 诞辰 100 周年,图灵公司将推出这本书的中译本《图灵的秘密》,现在正在紧张的编辑排版中,不久之后就能和大家见面。
1928 年, David Hilbert 提出了一个著名的问题:是否存在一系列有限的步骤,它能判定任意一个给定的数学命题的真假?这个问题就叫做 Entscheidungsproblem ,德语“判定性问题”的意思。大家普遍认为,这样的一套步骤是不存在的,也就是说我们没有一种判断一个数学命题是否为真的通用方法。为了证明这一点,真正的难题是将问题形式化:什么叫做“一系列有限的步骤”?当然,现在大家知道,这里所说的“有限的步骤”指的就是由条件语句、循环语句等元素搭建而成的一个机械过程,也就是我们常说的“算法”。不过,在没有计算机的时代,人们只能模模糊糊地体会“一个机械过程”的意思。 1936 年,Alan Turing 在著名的论文《On computable numbers, with an application to the Entscheidungsproblem》中提出了一种假想的机器,第一次给了“机械过程”一个确凿的含义。
Turing 提出的机器非常简单。假设有一张无穷向右延伸的纸条,从左至右分成一个一个的小格子。每一个小格子里都可以填写一个字符(通常是单个数字或者字母)。纸条下方有一个用来标识“当前格子”的箭头,在机器运行过程中,箭头的位置会不断移动,颜色也会不断变化。不妨假设初始时所有格子都是空白,箭头的颜色是红色,并且指向左起第一个格子。为了让机器实现不同的功能,我们需要给它制定一大堆指令。每条指令都是由五个参数构成,格式非常单一,只能形如“如果当前箭头是红色,箭头所在格子写的是字符 A ,则把这个格子里的字符改为 B ,箭头变为绿色并且向右移动一格”,其中最后箭头的移动只能是“左移一格”、“右移一格”、“不动”中的一个。
精心设计不同的指令集合,我们就能得到功能不同的 Turing 机。你可以设计一个生成自然数序列的 Turing 机,或者是计算根号 2 的 Turing 机,甚至是打印圆周率的 Turing 机。 Turing 本人甚至在论文中实现了这么一种特殊的 Turing 机叫做通用 Turing 机,它可以模拟别的 Turing 机的运行。具体地说,如果把任意一个 Turing 机的指令集用 Turing 自己提出的一种规范方式编码并预存在纸条上,那么通用 Turing 机就能够根据纸条上已有的信息,在纸条的空白处模拟那台 Turing 机的运作,输出那台 Turing 机应该输出的东西。
但是, Turing 机并不是无所不能的。 Turing 证明了一个看似有些惊人的事实:不存在这样的一个 Turing 机,它能读取任意一个 Turing 机的指令集,并判断该 Turing 机是否将会在纸条上打印出至少一个 0 。注意,简单地用通用 Turing 机做模拟并不是一个可行的方案,因为模拟到现在还没有打出 0 ,不意味着今后也就永远不会打出 0 。这个定理有一个更深刻的含义,即没有一种通用的方法可以预测一台 Turing 机无穷远后的将来(后人把这个结论简化为了著名的停机问题)。正如《The Annotated Turing》封底上的一段文字所说:在没有计算机的时代, Turing 不但探索了计算机能做的事,还指出了计算机永远不能做到的事。
在论文的最后一章, Turing 给出了一种 Turing 机指令集和一阶逻辑表达式的转换规则,使得这个 Turing 机将会打出 0 来,当且仅当对应的一阶逻辑表达式为真。然而,我们没有一种判断 Turing 机是否会输出 0 的算法,因此我们也就没有一种判断数学命题是否为真的通用办法。于是, Entscheidungsproblem 有了一个完美的解答。
有趣的是,Turing 机本身的提出比 Entscheidungsproblem 的解决意义更大。计算机诞生以后,出现了五花八门的高级编程语言,一个比一个帅气,但它们的表达能力实际上都没有超过 Turing 机。事实上,再庞大的流程图,再复杂的数学关系,再怪异的语法规则,最终都可以用 Turing 机来描述。 Turing 机似乎是一个终极工具,它似乎能够表达一切形式的计算方法,可以描述一切事物背后的规律。在同一时代,美国数学家 Alonzo Church 创立了 λ 算子(λ-calculus),用数学的方法去阐释“机械过程”的含义。后来人们发现, Turing 机和 λ 算子是等价的,它们具有相同的表达能力,是描述“可计算性”的两种不同的模型。 Turing 机和 λ 算子真的能够描述所有直观意义上的“可计算数”、“可计算数列”、“可计算函数”吗?有没有什么东西超出了它们的表达能力?这个深刻的哲学问题就叫做 Church–Turing thesis 。当然,我们没法用形式化的方法对其进行论证,不过大家普遍认为, Turing 机和 λ 算子确实已经具有描述世间一切复杂关系的能力了。人们曾经提出过一些 hypercomputer ,即超出 Turing 机范围的假想机器,比如能在有限时间里运行无穷多步的机器,能真正处理实数的机器,等等。不过这在理论上都是不可能实现的。
事实上, Turing 在他的论文中就已经指出,人的思维也没有跳出 Turing 机的范围。对此, Turing 有一段非常漂亮的论证:人在思考过程中,总能在任意时刻停下来,把当前进度记录在一张纸上,然后彻底走开并把它完全抛之脑后,过一会儿再回来,并完全凭借纸上的内容拾起记忆,读取进度,继续演算。也就是说,人的每一帧思维,都可以完全由上一帧思维推过来,不依赖于历史的思维过程。而 Turing 机所做的,也就是把人的思维步骤拆分到最细罢了。
没错,这意味着,或许一个人的语言、计算甚至学习能力,完全等价于一个 Turing 机,只不过这个 Turing 机的指令集可能异常庞大。1950 年, Turing 的另一篇经典论文《Computing Machinery and Intelligence》中正式把人和机器放到了相同的高度:让一个真人 C 先后与一台计算机 A 和另一个真人 B 进行聊天,但事先不告诉他 A 和 B 哪个是机器哪个是人;如果 C 无法通过聊天内容分辨出谁是机器谁是人,我们就认为计算机 A 具有了所谓的人工智能。这就是 Turing 测试。
计算机拥有智能?这岂不意味着计算机也能学习,也能思考,也拥有喜怒哀乐?人类似乎瞬间失去了不少优越感,于是不少科学家都旗帜鲜明地提出了反对意见。其中最为经典的恐怕要数美国哲学家 John Searle 在 1980 年提出的“中文屋子”思想实验了。把一个不懂汉语的老外关在一个屋子里,屋子里放有足够多的草稿纸和铅笔,以及一本汉语机器聊天程序的源代码。屋子外面则坐着一个地地道道的中国人。屋里屋外只能通过纸条传递信息。老外可以用人工模拟程序运行的方式,与屋外的人进行文字聊天,但这能说明老外就懂中文了吗?显然不能。每次讲到中文屋子时,我往往会换一种更具戏剧效果的说法。一群微软研究员在小屋子里研究代码研究了半天,最后某人指着草稿纸一角的某个数字一拍大腿说,哦,原来屋外的人传进来的是一段笑话!于是,研究员们派一个代表到屋子外面捧腹大笑——但是,显然这个研究员是在装笑,他完全不懂笑点在哪儿。这个例子非常有力地说明了,机器虽然能通过 Turing 测试,但它并不具有真正的智能。
当然,有反方必有正方。另一派观点则认为,计算机拥有智能是一件理所当然的事。这涉及到一个更为根本的问题:究竟什么是智能?
记得我曾经看过一本科幻小说,书名不记得了,情节内容也完全不记得了,只记得当我看完小说第一页时的那种震撼。在小说的开头,作者发问,什么是自我意识?作者继续写到,草履虫、蚯蚓之类的小动物,通常是谈不上自我意识的。猫猫狗狗之类的动物,或许会有一些自我意识吧。至于人呢,其实我只敢保证我自己有自我意识,其他人有没有自我意识我就不知道了。看到这里我被吓得毛骨悚然:完全有可能整个世界就只有我一个人有自我意识,其他所有人都是装出一副有意识的样子的无生命物!
有一次做汉语语义识别的演讲时,讲到利用语义角色模型结合内置的知识库,计算机就能区别出“我吃完了”和“苹果吃完了”的不同,可以推出“孩子吃完了”多半指的是什么。一位听众举手说,难道计算机真的“理解”句子的意思了?我的回答是,没有冒犯的意思,你认为你能理解一个汉语句子的意思对吧,那你怎样证明这一点呢?听众朋友立即明白了。你怎样证明,你真的懂了某一句话?你或许会说,我能对其进行扩句缩句啊,我能换一种句型表达同样的意思啊,我能顺着这句话讲下去,讲出与这句话有关的故事、笑话或者典故,我甚至还能在纸上画出句子里的场景来呢!那好,现在某台电脑也能做到这样的事情了,怎么办?
这就是所谓的“功能主义”:只要它的输入输出表现得和人一样,不管它是什么,不管它是怎么工作的,哪怕它只是一块石头,我们也认为它是有智能的。永远不要觉得规则化、机械化的东西就没有智能。你觉得你能一拍脑袋想一个随机数,并且嘲笑计算机永远无法生成真正的随机数。但是,你凭什么认为你想的数真的就是随机的呢?事实上,你想的数究竟是什么,这也是由你的大脑机器一步一步产生的。你的大脑逃不出 Turing 机。
事实上,整个世界也逃不出 Turing 机的范围。 Newton 系统地总结了物体运动规律后,人类豁然开朗,原来世界万事万物都是由“力”来支配的,扔出一个东西后,这个东西将以怎样的路线做怎样的运动,会撞击到哪些其他的物体,它们分别又会受到怎样的影响,这都是可以算出来的。这便是所谓的机械唯物主义:我们的世界是一个简单的、确定的、线性的、无生的世界。 1814 年,法国数学家 Laplace 给出一个更加漂亮的诠释:如果有一个妖精,它知道宇宙某个时刻所有基本粒子的位置和动量,那么它就能够根据物理规律,计算出今后每一时刻整个宇宙的状态,从而预测未来。刘慈欣在科幻小说《镜子》中更加极端地把初始状态取到宇宙大爆炸的时刻,因为宇宙诞生之初的状态极其简单,调整到正确的参数就可以生成我们所处的这个宇宙。这就是所谓的决定论。
我特别相信这些说法。我的拖延症有一个非常怪异的缘由,那就是我会告诉自己,截止的那一天总会到来的,这堆破事儿总会被我做完的。遇上纠结的问题,我不会做过多的思考,而会让一切顺其自然。其实,结果已经是确定的了,我真正需要做的不过是亲自把这个过程经历一遍。就仿佛我没有自由意志了一样。
不过,现代物理学的观念,尤其是量子理论的诞生,开始质疑上帝究竟会不会掷骰子了。然而,上帝会不会掷骰子,对于我们来说其实并不重要。 Turing 的结论告诉我们,即使未来是注定的,我们也没有一种算法去预测它,除非模拟它运行一遍。但是,要想模拟这个宇宙的运行,需要的计算量必然超出了这个宇宙自身的所有资源。运行这个宇宙的唯一方式,就是运行这个宇宙本身。 Seth Lloyd 在《Programming the Universe》里说到,“我们体会到的自由意志很像 Turing 的停机问题:一旦把某个想法付诸实践,我们完全不知道它会通向一个怎样的结局,除非我们亲身经历这一切,目睹结局的到来。”
未来很可能是既定的,但是谁也不知道未来究竟是什么样。每个人的将来依旧充满了未知数,依旧充满了不确定性。所以,努力吧,未来仍然是属于你的。