Skip to content

Web 2.0:以人脑为神经元的超级计算 – 纪念Google十周年

[写在前头]
这篇文章的想法是某次作关于Web 2.0的Tech Sharing之后出来的。拖了快一年了,今天才写完,惭愧惭愧。不过也正好赶上Google十周年,回顾回顾也是怪有意思的事情。

    Web 2.0大概是网络泡沫破灭之后网络经济最火爆的卖点了,很多人,包括风险投资机构和疯狂的程序员们,认为它是一记包治百病的仙丹。不过我不想关心Web 2.0的盈利模式,也不聚焦于单个的Web 2.0网站,而是着眼所有的Web 2.0的网站和服务作为一个整体的行为,以及它对于Internet的革命性贡献。

    Web 2.0作为一个被用滥了的术语下一个准确的定义相当困难。这里援引Michael Platt的说法,Web 2.0是一个具有以下特征的新一代网络应用:

Web 2.0定义
注释
以互联网或者各类设备为平台 各类设备,例如手持终端、智能手机
从各种数据源获得并重新混合数据,这里要特别强调来自最终用户的数据 术语mashup,意思是混合,比如把Google的地图服务和芝加哥的犯罪记录数据库混合成http://www.chicagocrime.org这个神奇的网站。关于最终用户的数据,考虑一下blog、wikipedia、BT这些个性鲜明的例子
不间断的update 不但包括framework的更新,也包括数据的更新。这里尤其强调了用户对更新的贡献,例如blog
可交互的好用的UI 特别强调Ajax
基于分享的架构 享受服务的前提是为服务做出贡献, 比如eMule服务

    看上去仍然很晦涩是吧?这些更像是一坨子特性描述。那么有必要进一步进行分析和分解,俺们一步一步来,呵呵。

A. 人类和Web:数据库模型

    Web是World Wide Web的简称(WWW,中文译为“万维网”,蛮奇妙的名字),是基于超文本和超链接连在一起的网页/网站的总称。人类发明Web的初始动机是信息共享——这让人自然而然的联想起数据库。如Figure 1,如果把Web整体看作一个超巨型的分布式数据库,人类对其中信息的操作,仍然可以用增加、删除、修改、查询这么几类基本数据操作来概括:


Figure 1. 人类和Web的数据库模型


  1. 创建构架(Framework):这里所说的Web Framework,既包括硬构架,如计算机、通信链路、通信协议等等;也包括软构架,这里主要指的就是Web网站——所有的Web网站毕竟都是人搭出来的么。硬构架支持计算机互联互通;软构架则支撑着信息本身的发布、展现和管理。
  2. 信息维护:Framework搭好了,里面的内容自然还需要人去维护:增加、删除、修改、归类并建立索引……等等等等,不一而足。地球人都知道,这是一项艰苦的工作。
  3. 信息检索:这里的检索是指搜索信息的全过程。可以是沿着超链接的跳转,也可以是在一个搜索引擎中的查询。难度不一的,用户终于找到了一个URL,打开,然后得到了自己需要的一切。

    如果更加简化。上面两条蓝线代表人类向Web的知识输入,桃红线则代表Web向人类的知识输出。

B. 向2.0演化——越来越容易参与的Web

    对比10年之前的Web,今天的Web“好用”多了。带宽快速增长刺激了新的应用,移动设备也开始参与Web这锅粥。上网人口正在以超过摩尔定律的速率快速膨胀,越来越多的人正在被卷入、被沉浸。

    但最重要的演化是Web的设计动机的演化。Web 1.0时代,Web服务的核心是吸引人们观看:类似电视需要高收视率,以此获得高的广告收入,Web 1.0网站同样需要高的“点击率”以获得挂在网页上的广告收入。所以Web 1.0时代的网络有个常见的词汇“眼球经济”;Web 2.0时代,局势发生了巨大的变化,用户的参与成为了新的设计目标:更好用的UI、更多可以customize的个性化组件、更多样的访问方式……一切都 是为了促进用户对系统的参与和贡献。

    一个典型的例子是信息发布。回顾一下早期Web,除了少数用户直接参与的社区/BBS,最初的Web更像是个老式图书馆,大多数人很容易读,但只有少数专 家可以写。部署网站非常困难。早期的Web,编程类网站比例极高,其原因就在于制作网站的能力只掌握在少数人手里。到了网络泡沫时代,由于大规模的商业介 入,出现了大量的所谓“门户网站”,但是类似传统的电视台,信息是“推送”到普通人眼前的,信息的发布仍然是小众的。

    于是人们试图改变现状。为了把话语权还给公众,程序员们想了很多办法。出现于1999年的blog:普通人第一次如此容易的建立自己的个人门户,充满激情 的发表观点,为Web的信息量添砖加瓦。建设个人主页的复杂性被blog引擎隐藏,用户关注内容即可;同样有趣的还有FlickrYoutube:类似blog,人们发布大量原创信息,参与作品品鉴,并且和自己的blog集成在一起;在学术领域,革命性的Wikipedia,激发了来自各个领域的普通人构建系统性知识的雄心。Web信息源的平民化是2.0时代最显著的特征之一。

    Flickr也是被称为“社交网络服务”(Social Network Service)的典型案例之一。这类网站的推广抛弃了广告宣传。他们完全依靠网站的魅力,让用户主动向自己的社交圈子发起对网站的推广(有点类似传 销),并且不断递归下去,使得一个初始状态下很小的用户群迅速膨胀。类似的还有书评网站(如douban.com)、朋友圈子网站(如facebook)等等。这些服务构成了Web 2.0时代最为活跃的社区。

    为什么Web 2.0具有如此巨大的魅力,让人们自发的向系统贡献自己的智慧?我们不妨对比一下BBS与blog。在Web 1.0时代,BBS是少数的可以供众人发表观点的地方(其他地方连说话的权力都没有)——注册帐号,然后发文或者回复,这些都和blog神似。他们之间最 大的不同就是权力结构:BBS 奉行的是金字塔结构——最底层的是连帐号都没有的阅读者,然后是普通帐号——底层的被管理者,它的上面还有若干层级和权限的版主、分区主管、站务,直至站 长。一篇文章发表以后,作者对它就失去了绝对控制权:它可能被篡改、移动、删除。正如没人喜欢专制政府,这些也是令人厌恶的;blog就相当“扁平”了, 没有任何权威,博主就是老大:发表的内容没人过问(当然啦,被和谐了不算,呵呵),回复想怎么搞都行,外观也是高度可订制的。blog让所有人都那么容易 的“当家作主”,充分释放自己的表现欲和创造欲——本文写了那么长了还没收手,可见一斑啊。

C. Web计算:电脑还是人脑?

    嗯,看上去一切都很美好。网虫们玩得很开心,站长们通过AdSense赚到了钱。但故事显然不止于此。

    如果看官接触过人工智能,那么对计算机的计算能力会有更清醒的认识。某些事情,诸如自然语言、情绪、审美等,对今天的计算机而言是很困难的任务。人类和计算机的思维模式各有特点: 计算机擅长记忆、检索、统计、数字运算、简单逻辑。但是对复杂的需要大量背景知识和超高运算能力的复杂推理、想象、模糊思维、辩证思维、直觉、知觉等等, 能力很弱;人类,似乎正相反。人脑是一个奇观:容量巨大,速度飞快,但是机械记忆和运算并不强。长期以来,模拟人的大脑一直是人工智能研究领域孜孜不倦的 终极目标,但遗憾的是这个叫做“强人工智能”的研究分支一直停滞不前——毕竟是太难了!在人类真正弄清楚大脑的机理之前,我对此不报太大希望。

    不过电脑和人脑毕竟是优势和劣势互补的。一个很自然的想法是把他们结合起来。

    (注意:后面的分析与搜索引擎的工作原理很相关,如果没有相关知识,建议先翻到文末,阅读一下相关的内容再继续。)

    我们再次以blog为例(这是一个大典型啊,呵呵)。前面说了,blog允许普通人输入知识。如果继续细分,这些知识包括:(a)作者的原创信息;(b) 指向作者引用的信息的超链接。通过对搜索引擎的分析,超链接甚至是比作者的原创内容更重要的信息:一条超链接相当于blog作者向被引用的网页“投了一 票”,超链接指向的网页在搜索引擎中的排名分值会因此受益。如Figure 2,这是一个正反馈过程:在搜索引擎中更高的分值(Rank)会带来更大的被引用的可能性,而更多的引用又会带来更高的分值。这样的效应会沿着超链接继续传导,高分网页本身链接的那些网页也会间接受益。在Web 2.0时代,搜索引擎是人类和Web之间的主要查询接口。它的作用就像一个放大器或者过滤器。由于大量blog的参与,整个放大过程会变得更快、更准确和公正,真正的好东西更容易被筛选出来——blog投出的大部分的票来自真实的、直接利益不相关的普通人,而不是门户网站的写手、作弊网页或者所谓的专家们:在过去,他们的声音淹没了真实。

    我们以整个Web系统的视角重新审视这一过程:整个计算任务被定义为“筛选出好的资料”。单独交给人或者计算机,都不行。

  • 任务单独交给计算机作是不可能做出来的,计算机无法从语义上理解什么是“好文章”
  • 任务单独交给人做也不现实,人虽然有能力读懂文章,但是局限性在于:
    1. 文章太多,单凭人力已经不可能读完,更不可能找出“最优”
    2. 领域太多,一个人可以成为某个领域的专家,但不可能全才全能、样样精通
    3. 即使是一大堆专家,每个人都受自己背景局限,存在这样或者那样的偏见

Figure 2的解决方案非常巧妙的把人的智慧和机器的处理能力结合在一起:人作出对机器而言过于困难的判读,并投出自己的一票,而机器综合了人群的判断,得出了更好的结果。对于整个过程而言:人脑加入了这个大的运算系统,和Web一起参与了运算

Figure 2. 人类和Web共同参与的筛选最佳网页的计算


    搜索引擎的例子对Web 1.0是否也同样有效?对比之后发现,Web 2.0的方案优于Web 1.0就在于,更多人卷入运算。尽管1.0同样可以产生类似的放大效应,但是由于作者局限于少数专家或者带有偏见的门户网站,结果的质量和运算速率是差很多的。

    再进一步,如果把人比作大脑的神经元又当如何?直觉上,Web显示越来越多的和人脑近似的结构:

人脑
Web
通过视觉、听觉、触觉等神经末梢采集原始数据 通过人类的知识输入获得原始素材
原始数据进入大脑之后会被压缩,忽略大部分无关紧要的部分,只留下关键信息 信息进入Web之后会被搜索引擎索引编目
经过一组神经元的进一步“思考”,原始数据被提炼成“知识”,这些知识改变了大脑本身的结构,同时可以看过某种模式,用来指导今后的反应 人类从搜索引擎中拣选出优质的链接,并把它们用于自己的blog或者网站,新增的超链接改变(优化)了Web的本身拓扑结构,同时,让这些网页在搜索引擎中的评分得到改善,这也是一种知识的积累

    就像生物计算、量子计算一样,姑且把这样的混合计算模式叫做Web 2.0计算。如Figure 3所示的典型Web 2.0计算任务,人脑承担了其中最重要、最复杂的部分,填补了计算链中缺失的环节,而Web是这一连串运算的组织者和最终受益者。

Figure 3. 典型的Web 2.0计算模式

D. Case study

    抽象的东西说得过多了,真tm累,举几个Web 2.0计算的实例,轻松结束吧。呵呵

D.1. Yahoo!的del.icio.us

    和搜索引擎类似,del.icio.us的计算目标是挑选最好的网页。又是一个单靠计算机无法完成的任务。我们看看是否与Web计算的模式匹配:

  1. 收集原始数据:和google不太一样,delicious没有爬虫,它的数据收集工具作为收藏夹的代用品直接装在用户的浏览器上。当发现有意思的网页,用户会把链接加上一组tag之后发给网站。
  2. 信息粗加工:delicious收到超链接后,会将它加入用户的超链接列表。将超链接加入它的所有tag的池供搜索。
  3. 结合以往知识生成计算用数据源:找出有多少用户已经添加了该链接,将引用计数增1。
  4. 人脑的进一步筛选:人们在delicious搜索,引用计数较高的会排在最前面,更容易被用户发现。搜索结果如果令人满意,用户会将最后选定的超链接也放入deliciou的收藏。然后,这个超链接的计数增1。

    Well, perfect match!

    比较delicious与google,我们会发现,delicious的数据质量远好于google——delicious相当于个人收藏夹,因此垃圾 和噪声数据很少。但这也是没办法的事情,因为google追求的是全覆盖。可以想象如果google和delicious结合起来会有多么可怕: delicious的分值可以直接用在对google搜索质量的改进上……可惜,delicious卖给了Yahoo!

D.2. Google Image Labeler

    Google搜索无疑是最牛b的Web 2.0运算系统。作为此项事业集大成者,Google怪招迭出,下面介绍两个例子。

    Google Image Labeler是Google的去年推出的Beta产品,它的工作原理是这样的:

    大家都知道Google有一个图像搜索引擎http://images.google.com/, 它是通过分析图像所在网页的链接或者指向图片的链接带来的元数据以获取搜索关键字。这也没办法,因为大部分互联网的图片没有合适的关键字描述 (flickr通过用户自定义tag做到了这一点,但这毕竟是少数图片),也就是说图像和它代表的语义脱节。而目前的图像的模式识别算法是远远不能实用 的。

    Image Labeler的目的就是让用户自助的给没有语义的图片加上语义。这个系统的外观是一个小游戏,进入系统之后,你会看到一张照片,然后你会随机分配一个伙 伴,你们两个人共同给这张照片添加关键字(建议用英文)。当添加了相同的关键字,那么就算得分。当然实在搞不定,也可以pass,继续下一张。一共90秒 时间,配对成功的照片越多分越高。

    很明显,Image Labeler用游戏的方式激励用户为搜索引擎免费服务。Google太狡猾了!

    这个同样可以套入Web 2.0计算的范式,不多废话。

D.3. Google拼音输入法

    在Google拼音输入法中,计算机难以完成的任务是准确的切词。

    中文没有空格,所以处理文本之前,需要先把句子切割成单词。这个过程就叫切词。切词是大规模中文文本处理的第一步,也是相当困难的一步。对于中文搜索引擎而言,切词质量直接关系到制作倒排索引的质量,进而大大影响搜索质量。竞争对手baidu一直声称比Google“更懂中文”,baidu广告中的卖点之一就是“特有中文分词和切词技术,理解更精准”。中文语言处理的团队,baidu是比较强。

    所以Google就冒出来个拼音输入法。很多人会纳闷,Google弄这个干嘛?!其实很简单,这个输入法就是为切词准备的!阅读这篇文档以后,你会发现,一个大的机器词典对切词至关重要。这个辞典需要满足以下条件:

  1. 按用户的实际使用频率对同音词排序;
  2. 能够识别新词,比如“张靓颖”这个词,在她火爆的同时应该能够快速进入辞典。

以往,专家们对这个辞典的质量一直头疼不已。但是如果把这个功能放在输入法里,做到这两件事情可以说都是轻而易举的。
   
    根据外部行为,可以猜想一下Google Pinyin的内部机制:每个Google Pinyin用户的词语使用频率统计数据和新词数据都上传至Google服务器。Google收到数据后,更新用户个人的辞典。然后Google定期根据 所有用户的辞典更新全局辞典的词语频率数据,同时将高频率的新词汇作为全局的新词汇。全局辞典的更新会分发给每一个人。

E. 小结

    Web 2.0计算例子还有很多,譬如识别垃圾邮件、识别电子欺诈、海量数据分析(比如Google Earth促使无数人志愿判读卫星图片,douban促使无数人志愿寻找好书)等等,这样的任务通常需要大量的人力和智慧,而且现阶段不可能由机器代替。

    Web 2.0计算很巧夺天工,如果理解之后也有点让人不爽:Web就像Octopus一样把触角伸进每个人的大脑,利用人们的智力资源无偿为其服务并促进其自我演化——这让人有些担心:会不会到后来不可控制如the Matrix?
   
    Well,顺其自然吧!

X. 附录:搜索引擎

    在Web中,搜索引擎的地位极为特殊。如果把Web看作数据库,那么搜索引擎就是Web和人类的主要查询接口。

    地球人都知道,Web中包含着巨量的数据资源。但是,他们分散在世界各地,并且格式混乱,更新频繁。这导致Web信息检索的难度和代价极高。早期Web的 信息如此的无序,以至于在各种数据库内检索资料成了专门的学问。首先要定位自己需要的网站/数据库,然后才能查询。而如何获得这个网站的入口地址,方法很 绝望,可能需要从权威入口开始(例如大学实验室的友情链接)沿着超链接跳转多次,或者向朋友或者论坛咨询,或者翻看自己皱巴巴的笔记本甚至是报纸上的分类 广告,至于是否能够找到信息,完全凭运气。

    不过早期互联网是一个充满了志愿服务精神的地方,很快就有人跳出来制作网址大全之类的分类索引。当这件事变得有利可图,便有人砸钱作商业化的目录,这方面 的集大成者是Yahoo!,它很像一个可以自助添加的分类目录,人们可以手工把网址提交给一个分类树,同时Yahoo的工作人员也在手工提交URL。

    无论是Yahoo还是早期的检索数据库或者专家系统,有几个很大的问题严重影响检索质量:

  1. 少数专家精力有限,无法应付爆发式增长的线上信息
  2. 用户自行添加的数据质量差,无法过滤恶意的信息噪声
  3. 无序,很难找到有效信息;


    于是,10年前,Google成立了。这是一件大事。

    Google是当今世界上最大规模的Web数据挖掘项目。利用一大坨被称为Googlebot的爬虫程序 [1],Google试图收集Web上所有的页面 [2], 送往位于全球各地的200+个超级数据中心——在那里,网页的原始数据(Raw Data)被存放在一个巨大的服务器集群(Google Cluster)的文件服务器中,并不断得到来自Googlebot的更新。同时更新的还有指向该页面的索引表和一个被称为PageRank的数值。 Google的野心,是建立整个Web的一个本地镜像,并在此基础上进行分析;而分析结果,将直接改善搜索的服务质量 [3]

    对类似Google的全文搜索引擎的设计而言,最大的挑战正是信息太多。巨大的信息量不但给存储和索引造成了恐怖压力,更要命的是让用户面对滚滚而来的搜 索结果无所适从。自然而言的,需要一个排序,把“最有价值”的网页排在最前面。Google的排序魔法棒叫做PageRank [4]——有价值的网页将会获得较高的PageRank值。文末的Reference中列出了PageRank值的详细计算方法,我这里只作一下定量描述:

    如Figure 4所示,PageRank值描述的是每个页面受欢迎的程度,因此它只与页面之间的链接拓扑有关。下图 是算法运行结束之后的样子(当然实际中PageRank值是一个0到1的浮点数——PageRank计算矩阵标准正交化后的产物),任何一个页面的 PageRank除以存在于这个页面的正向链接数(该页面内包含的超链接),由此得到的值将平均分配给正向链接所指向的页面,被链接的页面的 PageRank等于它得到的所有PageRank的加和。比如:右上角的页面有两个链接指向它(成为两个反向链接),分别向它分配了50和3的 PageRank值,那么最终它的PageRank就是53。

Figure 4. PageRank计算示意图


    由上面的分析,我们可以看出提高PageRank,大致有三个要点:

  • 反向链接数(单纯的意义上的受欢迎度指标:有很多人关注的内容当然是好的)
  • 反向链接是否来自PageRank高的页面(有根据的受欢迎指标:来自权威页面的推荐是好的推荐,来自垃圾网站的推荐是无效的)
  • 反向链接源页面的链接数(被选中的几率指标。换句话说,即使是高PageRank页,如果胡乱推荐一大堆,每个页面得到的收益也不会太多。这样可以抑制高PageRank的网页滥用自己的高分值)

    直觉上看,有点类似论文的引用评价系统:好论文必然受人关注,而好论文引用的文章,质量也不会太差。

    当然,搜索结果的排名不止是PageRank值。字体,关键字的位置,排版等等几十个参数对最终的分值都有影响。由此专门诞生的一项叫做Search Engine Optimization(SEO,搜索引擎优化,说得不好听了就是作弊)的专门技术,探讨如何提高网站的搜索排名——高排名意味着潜在的商业机会 [5]

    和十年前相比,今天的搜索引擎搜索的结果更准确公正(搜索结果被排序),更全面(自动的爬虫和全文搜索取代了人工标引的目录),信息检索貌似不困难了。

Reference:

[1] 爬虫(Crawler)并不像听上去那么可怕,它不是病毒。可以把它理解为一个不知疲倦的机器人,不断的下载它能看到 的所有Web页面。只不过,下载一个页面之后,它常常立刻“爬”向这个页面的所有超链接指向的页面,故得此名。不只是Google一家有爬虫,今天的 MSN、Yahoo、Baidu等等,都有自家的爬虫。爬虫毕竟要消耗网站资源,太多了也会成为公害,所以各巨头们制订了爬虫界的游戏规则。遗憾的是,据说是更懂中文的Baidu,对这样的规则似乎装作没看见

[2] 收集所有的Web页面是Google的一个理想,但是由于存在大量无法穷举的动态页面,Google只能尽力而为——虽然在这方面,Google的爬虫程序一直在改进。

[3] Google的总体架构,可以参考的资料有:(a)简要版幻灯片How Google Works以及此文的中文注释;(b)Google Architecture对Google的文件系统、集群部署等等有一定的描述;(c)Google的原始论文The Anatomy of a Large-Scale Hypertextual Web Search Engine

[4] PageRank算法最初来自Larry Page, Sergey Brin, R. Motwani, T. Winograd的论文The PageRank Citation Ranking: Bringing Order to the Web。David Austin写了一篇不错的解析How Google Finds Your Needle in the Web’s Haystack,提到了现实Web世界中PageRank运行在非强连通图的情况;图省事儿的话,这里有一个中文版的,是日本京都大学的Hajime BABA写的,分析得很不错。不过建议先读原文,呵呵。

[5] SEO的入门文章一篇Google PageRank: What Do We Know About It?

3 thoughts on “Web 2.0:以人脑为神经元的超级计算 – 纪念Google十周年

  1. hushlight says:

    delicious貌似只能针对tag进行搜索有些冷一点的文章,标签不够准确,或者和我理解的关键词有歧义的话,就搜不到了

    会列出该tag相关联的tag的列表,这个是关联规则矣。

    不对呀,我试了一下,标题和comments都可以搜出来啊?你再试试?

    回复
  2. kuuba says:

    怎么大家都这么有才呀

    也momo

    回复
  3. traveler says:

    厄,这个是虾米呀…

    momo

    回复

发表评论

电子邮件地址不会被公开。 必填项已用*标注