|||
这个话题已经谈过多次了,散见在我以前的博客里,今天兴起,随口再聊几句。这是一个非常重要的话题,会不断被人翻出来议论,似乎莫衷一是。最近的由头源于有关谷歌搜索排序算法为什么依赖手工多于机器学习的议论。此前,很多人想当然以为世界上最牛、服务亿万人的谷歌搜索必然是基于机器学习的,而不可能是被学界轻视漠视的(利用规则或heuristics调控的)手工系统。而事实正好相反,奇怪么?其实一点也不奇怪。
虽然我只是个语言学家,擅长的是开发和调控规则系统,但幸运的是,曾经有机会在相当长的时间里作为PI主持研发过一系列机器学习的科研项目,对两类系统做过很多观测比较和思考。我的经验是,机器学习和手工系统确实各有所长所短,有互补性,具体用谁更好要看应用现场,真地不能一概而论。
面对谷歌搜索仍然主要依赖手工调控,有人说,对于具体的问题,手工调控虽然很直接有效,立竿见影,但其结果是排序算法里面掺杂了太多的琐碎规则,使得系统变得越来越 fragile(不 robust),长远看来值得忧虑。其实,这种担忧是 assume 手工系统里面的规则或 heuristics 是相互联系的网状设计,相互牵连。在那种情形下,短期的好处(立竿见影的解决了来自 field 的具体问题)确实可能导致长期的隐患,甚至最终导致系统越来越复杂,超出人可调控的程度而报废。但是,有经验的手工系统设计大师绝不会陷入那个怪圈,他一定会把问题切割,把功能模块化,把规则尽可能相互独立开来,同时配备各种防止 regressions 的自动和半自动的质量控制流程,以保证每一步调控走在总体优化的轨道上,保证副作用趋于最小。这里面有很多 know-how,魔鬼在细节中,暂时按下不表。
回到搜索这个具体的应用领域,是不是规则琐碎了,系统就脆弱了呢?其实完全可以避开这个后果。如果把系统设计为针对不同的 query 的类型,配备不同的规则模块(模块化),同一个规则模块中,把少数的共性规则与多数的个性(例外)规则分开(个性规则之间很容易做到相互独立,允许一些冗余而已;以此防止网状规则系统),那么系统就不会变得脆弱,debug 调控起来也容易。譬如,query 分类可以包括,查询天气预报、交通状况、人物、事件、时间、地点等等,然后针对一个类别,或者一个子类,再开发调控相应的规则系统,假以时间,这样的开发怎么会因为规则的琐碎和繁多而脆弱呢?
机器学习和手工系统的优劣,说到底是机器和人谁更聪明能干的问题。简单的回答有两点:1. 当然“人”更聪明(这里的人指专家精英;事实上,甚至蹩脚的人工智能在专项任务上也往往高于资质平平的人,这不是玩笑);但是 2. 人并不总比机器能干。
由于上述第一点,可以说,假设没有人力资源的限制,多数的智能系统是手工强过机器学习。注意,那个假设在现实世界往往不成立,多数项目都有人力和时间的限制因素在。当然,有些项目(譬如互联网搜索)太过重要而且长期存在,有些公司(譬如谷歌)太强大,其人力的投入可以很大,时间上可以很多年一直做下去不断提升,相对来说就较少受到资源和时间的限制。
上述第二点并不鲜见,有些事情人就是很笨(或者反过来说,机器就是很灵),无法与机器比。最极端的例子是计算,神算师也算不过电脑。还有记忆,再博学的语言学家也记不住电脑可以轻易存取的海量词汇表。比较技术性的例子是文本分类(document classification)。对于这种见林不见木的粗线条任务,人是相当低能的,即便编制出有限的规则,也往往挂一漏万,而机器就很擅长,可以从统计的角度综合“琐细”的蛛丝马迹来做出总体合理的分类。
累了,今天就聊到这儿。
【相关篇什】
Comparison of Pros and Cons of Two NLP Approaches
why hybrid? on machine learning vs. hand-coded rules in NLP
[转载]为什么谷歌搜索并不像广泛相信的那样主要采用机器学习?
【NLP主流的反思:Church - 钟摆摆得太远(1):历史回顾】
Archiver|手机版|科学网 ( 京ICP备07017567号-12 )
GMT+8, 2024-12-21 22:04
Powered by ScienceNet.cn
Copyright © 2007- 中国科学报社