我在Google感觉最爽的事情是我可以很容易获得大量的计算资源,做以前无法想象的大规模数据分析。要验证一个想法,我可以基于一整天的搜索记录做分析,只需几分钟就能得到结果r进行调整和下一步分析;而如果没有这套基础软件和可以随意使用的硬件资源,我可能得等一整天才能有结果,或者只能分析小规模的抽样数据。在我自己的知识和技术水平不变的前提下,Google这套系统极大地提高了我的工作效率,让我能做到以前完全无法想象的事情。
我觉得作为一个技术人员,黑或者捧哪个公司毫无意义,技术的事情很直接的,身在哪个公司都无法影响基本判断。还在百度的时候,我就经常想,Mig- 25的故事是个很好的警示,人很容易为类似双三这样的成就沾沾自喜,而对实实的基础技术差距视而不见,不图进步,那前景就相当危险了。幸好据我所知的情况,百度可没有这麽不争气。补充一个实际例子来说明不同技术条件下两个公司做事思路的区别。评论中有朋友提到百度的分词技术,这确实是百度更懂中文的一个集中体现。
百度当年做分词的时候很可能是这样的:先从一个人工编辑好的字典开始,用这个字典跑一些网页,观察分析裡面的bad case —— 可能是分词过细,或者是中文人名没分出来,然后就尝试根据中文语法规律加入规则或添加词表解决这些 bad case,如此往复,直到有满意的结果。上线应用,发现有新的 bad case 就再研究加规则,当然也有自动流程发现和确认如人艰不拆之类的新词。Google做分词的话就是把问题看成一个概率问题:如果中文网页中哪些字经常一起出现,那麽它们很有可能就是一个词。看哪些词后面会跟的地得,的地得后面有常跟哪些词,语法结构也就出来了。
(具体的模型参见吴军《数学之美》)。解题思路就是把所有抓到的中文网页往MapReduce裡一丢,参数算出来就好了。评估分词质量的方法也很简单,就拿新模型放到网页检索的模型裡,做个实验看质量有没提升就行。这套方法结果之好,基本把中文分词做成了一个没有多少悬念的简单问题,而且基本不需要中文语言专家的参与(自然也没有谁更懂中文的问题)。同时这也就是Google 做 Translate的思路。这裡面基本方法其实非常简单,没什麽祕密可言,但是你得先有这麽多的网页数据,还得有大机群,有分佈计算框架,还有可复用的模型……我认为在技术受限的条件下,人工微调优化结果是一个恰当的产品思路,但这个产品思路会与技术发展路线相互影响。
对于长尾头部的一千个热词,完全可以用人工编辑的方法做出非常好的结果,而短期内改进通用的机器模型达到人工编辑的效果几乎不可能。这时候,人工调整可能会受鼓励,而通用模型的技术改进可能就得不到足够的重视—— 虽然即使以中国的人力成本,对所有搜索结果人工调优也绝无可能,但能搞定长尾头部也不错了不是Google的主流技术思路则是骨子裡不相信人工调整,什麽事情都非得弄出个自动通用可扩展的模型来不可,这种思路可能一开始在那一千个热词上怎麽都比不过勤劳接地气的编辑,但通过积累数据调整模型,假以时日,整体结果质量就会显著提升—— 我就是这麽看 2009 年时 Google 搜索质量给我们的压力的。这种思路在具体的产品运营上不一定对,不是人人都有 Google的资源来花时间做通用技术,但 Google 确实就在这种技术碾压一切的(错误)道路上越走越快。