科学网

 找回密码
  注册

tag 标签: 规则系统

相关帖子

版块 作者 回复/查看 最后发表

没有相关内容

相关日志

【李白之50:符号战壕的两条道路之辩(续)】
热度 1 liwei999 2017-6-19 08:14
白: 我的思路是:句法维护纯二元关系,模式编码进subcat,直接对接语义。纯二元关系对模式既兼容又有更大的robustness,不用白不用。 李: pos 支持句法做粗线条分析 subcat支持逻辑语义做细线条分析? 白: 必须的 李: 那倒未必。可以结合做的。显式的句法语义关系可以一起做, 没有句法关系的隐式逻辑语义可以推后。subcat 结合句法语义。 白: 模式方法中,小词的缺省和成分的倒置,只能认为是不同的模式,不穷尽则不work。二元关系方法中,缺了小词也好,倒置也好,在subcat那里都可以重构出来。输出是现成的,既可以跟着cat一起输出,也可以等语义落地了再输出。这是个简单的配置问题。 李: 缺省不怕:就是 optionality,不是模式必需的。倒置的确需要增加模式,没办法,模式也是线性。 白: “我紧张,一见到那个人。” 省略了“就”,而且倒置。但是在二元关系方法下,这都不是问题。 李: 但n元模式,在多层系统中,并非全排列模式。模式负担完全可控。也可以类似于二元的样子,一层层做:起码动宾与主谓通常被认为是不同层次的组合,无需SVO全排列。推得极端一点,n=2,多层n元就成了2元,也是可行的策略之一。 白: 对“一”的subcat标注,已经隐含了对“就”的“脑补”。 语义frame任何语言中都不必然是二元关系,这层落地映射,本来就是缺不了的,并不是因为模式而特设的。 李: exactly 白: 句法专注二元关系,好处多多。 李: 1 【一VP(S)就VP】 2 【一VP】 也就是两条模式捕捉的事儿。都很直观 intuitive。捕捉了,还不是要怎么玩语义怎么玩。 白: 这实际是语义直观,跟那些多元关系是同等对待的。 李: 第1个模式涉及5元,第2个模式是bigram,我说过,模式也就是以三元为峰值的正态分布。并不是想象的那样组合爆炸,完全在可掌握之中。最大特点还是其接地气,直观,容易 debug 和维护。不就是给语言结构拍照吗?所谓句型练习(pattern drills),人学语言也就是这么个事儿,我们当过外语老师的,都知道 drills 的重要。 白: 那个完全是UI的问题 李: 如果你做二元配对,我心里想的是五元模式,【一VP(S)就VP】 这样的模式,你如何把二元的过程UI到我感觉舒服的五元模式呢? 白: 双宾语结构也是一样啊 二元的过程是在机器里发生的,五元模式是结果,不在一个频道上。边加够了,五元模式就出来了,就这么简单。 李: 机器发生的过程 不是基于词典的标注吗?这个标注不需要人去做 去维护 去 debug? 白: 但过程总是一个一个边加的 李: 那是因为你的 parsing 是 PSG的 parsing 过程,虽然表达的是DG。这个 PSG 的过程,是遇到任何物件都不能跳过去,要一个一个的叠加组合。 白: 能跳,否则就无法处理交叉了 李: 从你画的图看,还是一个不跳地在叠加,只不过叠加的顺序可以不同,然后导致一些远距离二元关系的最终建立。(当然你的X见人见鬼,先加上再说,也算是一种模糊应对或“跳过”。) 换句话说,parsing 的总过程与经典的 chart parsing 没有看出大的区别。 白: 这理解是错的 李: 可能。也许我看得不够仔细。 白: 从数学上看,模式引发的步骤不是分析树的“构造”而是分析树的“映射(变换)”。这个映射环节引入PSG还是引入DG的差别是细节的差别,核心的精神都是一致的。如果你说的“跳跃”意味着“映射”的引入,我目前确实没有,但 1、这并不影响在较上层的节点上,映射的结果和非映射的结果会得到相同的语义落地。2、如果一定要引入映射,与我现在的体系也毫无违和感,可以兼容处理好的。 另外,不包含映射的技术方案并非都是一丘之貉,彼此之间可以有天壤之别。这实质上是模式驱动的“一揽子”填坑动作,可以加速分析进程(就是你说的“跳跃”),又不破坏填坑的基础架构。但是我要说的是,既然看到了这个实质,映射的触发就不必拘泥于从左到右的模式匹配,一定程度上的词袋模型一样可以触发!实际上我在subcat里面做的事情就是这种不完全信息的模式触发,只不过做在了语义层。语义层都能做,回头做句法层纯粹就是锦上添花,照顾语言学家的UI感受而已。我不看好从左到右依次匹配,但我认同通过映射实现跳跃。语言学家不应该成为排列组合匠, 更不应该为某项排列组合的缺失而背黑锅。除非该项排列组合有明显不同的语言学意义。此其一 另外一个因素就是模式在激活之前的状态一定要有一个载体,而且这个载体必须跟着分析进程动态维护。伟哥有分层的fsa做这个事情,我是用词负载的subcat(实际上就是词袋)做这个事情。词袋的好处就是对排列无感,只认组合而且允许组合缺斤短两。在某些场合,词袋的部分填充会造成激活歧义。所以要用“状态”记录这些有歧义的部分填充(套用时髦的量子话术,这就是几个候选词袋的“叠加态”)。随着分析进程的展开,叠加态会“坍缩”到确定的词袋上,完成激活。 李: 大赞。...... 先赞后辩。 没全看懂 但似乎又懂了 貌似透过做法看实质 有不少共同的观念。消化消化。 白: “人肉”本意是名词。在“人肉搜索”这个短语中是副词(N降格为S+),意思是用活人去深挖特定对象的隐秘信息。再简化一点去掉“搜索”二字,“人肉”就成了动词了(S+升格为S)。升格降格操作的活标本啊 李: 人肉搜索 不是宾语提前?把衣服扒光 不是人肉? 白: “这个公司的所有人都是好样的。”居然有歧义。 李: “所有-人” 歧义(hidden ambiguity): 单数 vs 复数, 复合词 vs NP,黑箱 vs 白箱,  vs  白: “发言的是我们公司的。” 李: 1 -- NP 2.  -- AP 1 + be + 2 -- 1 belong-to 2 “发言的是我们公司的。” -- belong-to -- plan-V (verb compounding like) 2. -- S Pred 3. -- Topic S Pred 4. Topic S Pred(/O) -- O S Pred (所谓先耍流氓后结合:有“做-作业”的可分离动词的搭配关系更是坐实了远距离勾搭) 5. Vt NP -- VP 6. Vt -- VP(/O) 7. 是不是不 can be treated as one compound 小词 whether (or whether-or-not) 白: 是你打算,还是作业打算?是你打算做作业,还是作业打算做你?由什么决定?就本例而言,语序已经完全乱套了,只有subcat能决定。好在我们知道,计划类动词具有穿透性。打算的两个坑,是human、event;做的两个坑,是human、thing。这两个human就是穿透确定的共享萝卜的坑。往前面看,能填的只有“你”。“做-作业”离合词的远距离锁定,从另一个侧面做了神助攻。所以,不管前面“作业”和“你”的顺序怎么折腾,它们的subcat如同狐狸尾巴,总会泄露真正的结合方向。我们不需要S/O/Topic这些名目,直接根据萝卜和坑的subcat相谐性,就可以选择行的,排除不行的。也不需要针对不同语序设置不同模式。跟着词条走的cat/subcat就足够确定目标了。 “你懂的。”其中的“的”就是句末助词,标记为+S。“我是不懂。”其中的“是”是表强调义的副词,标记为S+。“你是不懂的。”其中的“是”和“的”借助这两个修饰语标记完成了绿叶的使命,把红花凸显出来。但是这种做法的好处更在于,“是”或者“的”之一缺位时,句法上照样work。红花之间的关系照样不变。不需要针对几片绿叶的有或无的排列组合一个个遍历。 李: 这话说的,好像世界上就有人有直道不走,偏要走弯道似的 哈。白老师雄辩。 排列组合遍历很多时候是免不了的,除非可以证明这些绿叶红花的排列没有意义, 所有绿叶都是可有可无的。语言的最大形式特点之一就是排列,或曰线性次序。概念通过语词,关系通过小词以及词序,线性地流进我们的耳朵。小词和词序,作为显性语言形式(参见 【立委科普:漫谈语言形式】 ),其功能本质是一样的。由于信息和形式的冗余,厚此薄彼可以作为一个可行的策略,作为一个精算师的算法之一,但拔到理论高度说,让小词负载结构,赋予重任,同时忽视词序来取得鲁棒,总是很难让人信服的。 汉语的省略小词,是如此普遍,就跟汉语的词序灵活一样,都给鲁棒提出挑战也留下空间。你可以厚此薄彼作为一个 parsing 策略,别人也可以厚彼薄此作为一个策略。更有人二者都不厚不薄,利用模式,用?(optionality) 传达鲁棒,用显性排列形式的 obligatory 出现(何时、何地)来表达精准及其语义落地。有何不可?有何不好呢?能想到的不好都是实践层面,而不是理论层面,譬如:(1)可行吗?组合爆炸,排列得过来吗?(2)即便不组合爆炸,有本事伺候排列吗?(可维护性) 可行性的问题已经有答案也有实践,就是多层。Note that 这个多层也不是单单为了可行而采纳的。多层反映的是自然语言的 configuration(参见乔老爷杆杆理论,X-bar, 科学网—乔氏X 杠杠理论以及各式树形图表达法 ),也是语言本质之一,譬如动宾(VP)与主谓对于多数语言就天然不在一层。 多层排列的可行性,其理论基础在于人脑记忆的有限,自然语言的可学习性。如果语言本质就是排列的组合爆炸,人也无法学习语言了。我们所做的不过是瞄着人 parse 语言的样子,去模拟实现它。符号逻辑的模型透明性和可维护性在多层模式里面得到了彰显。 第(2)个问题是本事问题。的确多层排列算法不是每一个人都玩得转的,就如小词负载结构兼以隐藏知识的大数据中间件除了白老师迄今无人能玩一样(甚至无人想到了这条路,参见 【李白之15:白老师的秘密武器探秘】 )。两条路线都严重偏离主流,主流人才的多数或者无视或者没有历练/本事来玩转这任何一条路线。 正如尺有所长,寸亦有所长。如今是各自玩各自的。区别在于,这个战壕自认为可以对nlu挖掘更深(这一点在下确信无疑:毕竟坐井观天一辈子了,天可能还是没看清,但井的深浅是清楚的,如数家珍;而且不需要做天外比较,就可以得出结论,因为自然语言在这口井里面基本是已经见底了),主流的战壕在我们不过是摘除低枝果实(这一点无法确认,保不定哪一天主流就突然从导弹演化为核弹,也未可知,彼此祝好运吧)。 白: 小词“可”负载结构,不是“仅”小词负载结构。语言的层次性在技术上“可”通过分层fsa消化,不是“仅”通过分层fsa消化。模式也不是“仅”通过负载结构的小词消化。同样负载结构的实词、算符优先序,都在推波助澜。一个句法体系和技术体系,一些特色或许突出,但贡献是多个特色联合作出的。 我不希望受众被误导。 李: 哈 我也不希望误导,或被误导。 其实,因素比重的差别,还是构成 了技术路线的不同。也许用“小词负载结构”(的因素)来概括或代表白老师的路线,就好比以“多层专家词典排列模式”来代表的 立委路线(听上去好耳熟,对了,历史上有过被毛委员往死里批判的立三路线) 一样,都是不 准确的。但仔细看过讨论系列的会了解其中的路线之别。 二元句法在前,逻辑语义在后的策略之所以可以成功,我觉得是因为有了“大数据中间件”的助力,否则很难想象那么简单的句法操作可以应对那么复杂的语言现象。所以,让我 wonder 的主要是大数据中间件,如何训练如何使用的。而对于二元本身,特别是小词负载结构,相对于多层专家词典的模式匹配,我没看出多少优势。如果硬要评价 pros and cons,从我的角度,前者长于简洁(也许也增强了效率)和鲁棒,后者更符合语言学家的语言认知和描述习惯,可以更加从容地对语言做精细而不失鲁棒的描述。 重要的是,二者同属符号主义,同一战壕,也似乎都可以包容对方。 【相关】 【李白梁49:同一个战壕的两条道路之辨】 【李白之16:小词负载结构与小词只参与模式条件之辩】 【李白之15:白老师的秘密武器探秘】 【立委科普:漫谈语言形式】 科学网—乔氏X 杠杠理论以及各式树形图表达法 【语义计算:李白对话录系列】 【置顶:立委NLP博文一览】 《朝华午拾》总目录
个人分类: 立委科普|4156 次阅读|2 个评论
【立委科普:如何自动识别同一个意思千变万化的表达?】
liwei999 2016-12-9 11:04
自然语言理解(NLU)的很多应用需要找到解答下列问题的算法:如何自动识别同一个意思千变万化的表达?譬如,问答系统或自然语言的任何人机接口,第一个问题就是如何理解不同用户千变万化的问题,以便从某个库里检索出合适的答案来。主流流行的做法仍然是绕过结构和理解,根据关键词、ngram以及 some word expansion,建立一个模型来计算不同问句的相似度。这种显然是偏离人类理解,最多可算是近似的做法被认为是理所当然,甚或唯一的手段,因为符号逻辑和语言规则那一套貌似模拟人类理解语言的做法早已从学界退出了历史舞台:学习界要竞争连对手都没有,只能自己跟自己玩。 以我骨灰级计算语言学家的身份,本篇就来专门谈谈这个问题的符号逻辑。都说语言学家迂腐得可以,云山雾罩,对牛弹琴。不信这个邪,你就是工程或学习的大牛,今儿个我也要把语言学的琴给你弹明白,不明白不收钱。(当然,明白了也没打算收钱。有心给小费的话,请转而打赏给任何公益项目为荷。) 我们把上述问题分解如下,更复杂的 cases 大多是这些部件的不同组合而已。 (1) 同一个意思的不同表达主要体现在用词的不同上,例如: 我没钱。 我很穷。 我买不起。 我就是个屌丝。 我银子不够。 我手头很紧。 (2)同一个意思的不同表达主要体现在结构的不同上,例如: 我没有那么多钱 钱我没有那么多 我钱没有那么多 同一个意思的不同表达所用的词不同结构也不同也是有的,那不过是上述两种情形的交织而已。任它千变万化,所牵涉到的变量是可以映射的。以上述场景为例,变量是:【human】【lack】【money】。其底层结构是:【lack】(【human】,【money】)。词典级的映射是: 【money】:钱,银子,美钞,RMB,¥,$ ...... 【lack】:缺乏,没有,缺少,不够 【human】:我,你,他,人,..... 【lack】(,【money】):穷,穷酸,买不起,手头+紧,...... 【lack】(“人”,【money】):屌丝 以底层结构为起点反推(乔姆斯基所谓生成),以上面的词典信息为驱动,加上一些简单的句法约束,包括容忍 optional 的随机成分(譬如加入程度“很”或强调“的确”,时态“已”等等),符号逻辑可以用计算文法(computational grammar)一网打尽语言的不同用词或结构的千变万化,不是清晰可见了吗? 一网打尽的前提是起点是一个定义明确的 logical statement,如果起点不确定,我们面对的是语言海洋,那就不好说了。因此,我一直跟人说,对于领域的问答系统,譬如,起点是 QA 的档案或者起点是一个 app 的可能的 commands,利用符号逻辑的自然语言理解技术,建造一个几乎一网打尽的自然语言接口,是完全靠谱,可以拍胸脯的事儿。 这里面的原理就在语言海洋的千变万化被聚焦了(据说深度学习也有了类似的时髦概念 叫 attention,在 IE 领域,这个概念已经有 20 多年的历史了,IE 本身就是 NLU 的聚焦)。聚焦以后仍然有很多变式,让人眼花缭乱的不同说法,但是这些变化逃不过如来佛的手掌。聚焦的最大特点是 vocabulary 急剧浓缩,加上语言学文法的约束(此篇省略其细节,明眼人自可想象,这绝对是 tractable 的任务),貌似的千变万化于是被一张无形的符号逻辑网罩住。 顺便一提:很喜欢张学友一首歌,叫【一张无边无际的网】,说的是情网,用来代表文法也很贴切。文法就是NL的无边无际的网。我们做计算文法的人 为什么乐此不疲,因为是在编织这张无边无际的网。尽管如此,仍然需要语义聚焦,才好最佳落地。 【相关】 【 立委科普:问答系统的前生今世 】 【deep parsing,deep learning 以及在对话和问答系统中的应用】 中文处理 Parsing 【置顶:立委NLP博文一览】 《朝华午拾》总目录
个人分类: 立委科普|3156 次阅读|0 个评论
【主流的傲慢与偏见:规则系统与机器学习】
热度 6 liwei999 2016-8-4 02:58
I. 引言 有回顾NLP(Natural Language Processing)历史的知名学者介绍机器学习(machine learning)取代传统规则系统(rule-based system)成为学界主流的掌故,说20多年前好像经历了一场惊心动魄的宗教战争。必须承认,NLP 这个领域,统计学家的完胜,是有其历史必然性的。机器学习在NLP很多任务上的巨大成果和效益是有目共睹的:机器翻译,语音识别/合成,搜索排序,垃圾过滤,文档分类,自动文摘,词典习得,专名标注,词性标注等(Church 2007)。 然而,近来浏览几篇 NLP 领域代表人物的综述,见其中不乏主流的傲慢与偏见,依然令人惊诧。细想之下,统计学界的确有很多对传统规则系统根深蒂固的成见和经不起推敲但非常流行的蛮横结论。可怕的不是成见,成见无处不在。真正可怕的是成见的流行无阻。而在NLP这个领域,成见的流行到了让人瞠目结舌的程度。不假思索而认同接受这些成见成为常态。因此想到立此存照一下,并就核心的几条予以详论。下列成见随处可见,流传甚广,为免纷扰,就不列出处了,明白人自然知道这绝不是杜撰和虚立的靶子。这些成见似是而非,经不起推敲,却被很多人视为理所当然的真理。为每一条成见找一个相应的规则系统的案例并不难,但是从一些特定系统的缺陷推广到对整个规则系统的方法学上的批判,乃是其要害所在。 【成见一】规则系统的手工编制(hand-crafted)是其知识瓶颈,而机器学习是自动训练的(言下之意:没有知识瓶颈)。 【成见二】规则系统的手工编制导致其移植性差,转换领域必须重启炉灶,而机器学习因为算法和系统保持不变,转换领域只要改变训练数据即可(言下之意:移植性强)。 【成见三】规则系统很脆弱,遇到没有预测的语言现象系统就会 break(什么叫 break,死机?瘫痪?失效?),开发不了鲁棒(robust)产品。 【成见四】规则系统的结果没有置信度,鱼龙混杂。 【成见五】规则系统的编制越来越庞杂,最终无法改进,只能报废。 【成见六】规则系统的手工编制注定其无法实用,不能 scale up,只能是实验室里的玩具。 【成见七】规则系统只能在极狭窄的领域成事,无法实现跨领域的系统。 【成见八】规则系统只能处理规范的语言(譬如说明书、天气预报、新闻等),无法应对 degraded text,如社会媒体、口语、方言、黑话、OCR 文档。 【成见九】规则系统是上个世纪的技术,早已淘汰(逻辑的结论似乎是:因此不可能做出优质系统)。 【成见十】从结果上看,机器学习总是胜过规则系统。 所列“成见”有两类:一类是“偏”见,如【成见一】至【成见五】。这类偏见主要源于不完全归纳,他们也许看到过或者尝试过规则系统某一个类型, 浅尝辄止,然后遽下结论(jump to conclusions)。盗亦有道,情有可原,虽然还是应该对其一一纠“正”。本文即是拨乱反正的第一篇。成见的另一类是谬见,可以事实证明其荒谬。令人惊诧的是,谬见也可以如此流行。【成见五】以降均属不攻自破的谬见。譬如【成见八】说规则系统只能分析规范性语言。事实胜于雄辩,我们开发的以规则体系为主的舆情挖掘系统处理的就是非规范的社交媒体。这个系统的大规模运行和使用也驳斥了【成见六】,可以让读者评判这样的规则系统够不够资格称为实用系统: 以全球500强企业为主要客户的多语言客户情报挖掘系统由前后两个子系统组成。核心引擎是后台子系统(back-end indexing engine),用于对社交媒体大数据做自动分析和抽取。分析和抽取结果用开源的Apache Lucene文本搜索引擎(lucene.apache.org) 存储。生成后台索引的过程基于Map-Reduce框架,利用计算云(computing cloud) 中200台虚拟服务器进行分布式索引。对于过往一年的社会媒体大数据存档(约300亿文档跨越40多种语言),后台索引系统可以在7天左右完成全部索引。前台子系统(front-end app)是基于 SaaS 的一种类似搜索的应用。用户通过浏览器登录应用服务器,输入一个感兴趣的话题,应用服务器对后台索引进行分布式搜索,搜索的结果在应用服务器经过整合,以用户可以预设(configurable)的方式呈现给用户。这一过程立等可取,响应时间不过三四秒。 II. 规则系统手工性的责难 【成见一】说:规则系统的手工编制(hand-crafted)是其知识瓶颈,而机器学习是自动训练的(言下之意:因此没有知识瓶颈)。 NLP主流对规则系统和语言学家大小偏见积久成堆,这第一条可以算是万偏之源。随便翻开计算语言学会议的论文,无论讨论什么语言现象,为了论证机器学习某算法的优越,在对比批评其他学习算法的同时,规则系统大多是随时抓上来陪斗的攻击对象,而攻击的理由往往只有这么一句话,规则系统的手工性决定了 “其难以开发”(或“其不能 scale up”,“其效率低下”,“其不鲁棒”,不一而足),或者干脆不给具体理由,直接说“文献【1】【2】【3】尝试了这个问题的不同方面,但这些系统都是手工编制的”,一句话判处死刑,甚至不用讨论它们的效果和质量。手工性几乎成了规则系统的“原罪”,编制这些系统的语言学家因此成为学术共同体背负原罪的二等公民。 手工编制(hand-crafted)又如何?在日常消费品领域,这是对艺人特别的嘉奖,是对批量机械化生产和千篇一律的反抗,是独特和匠心的代表,是高价格理直气壮的理由。缘何到了NLP领域,突然就成贬义词了呢?这是因为在NLP领域,代表主流的统计学家由于他们在NLP某些任务上的非凡成功,居功自傲,把成功无限夸大,给这个共同体施行了集体催眠术,有意无意引导人相信机器学习是万能的。换句话说,批判手工编制的劣根性,其隐含的前提是机器学习是万能的,有效的,首选的。而实际情况是,面对自然语言的复杂性,机器学习只是划过了语言学的冰山一角,远远没有到主流们自觉或不自觉吹嘘的万能境界。催眠的结果是,不独不少语言学家以及NLP相关利益方(如投资人和用户)被他们洗脑了,连他们自己也似乎逐渐相信了自己编制的神话。 真实世界中,NLP 是应用学科,最终结果体现在应用软件(applications)上,属于语言软件工程。作为一个产业,软件工程领域吸引了无数软件工程师,虽然他们自嘲为“码工”,社会共同体给予他们的尊重和待遇是很高的(Bill Gates 自封了一个 Chief Engineer,说明了这位软件大王对工匠大师的高度重视)。古有鲁班,现有码师(coding master)。这些码工谁不靠手工编制代码作为立足之本呢?没听说一位明星工程师因为编制代码的手工性质而被贬损。同是软件工程,为什么计算语言学家手工编制NLP代码与其他工程师手工编制软件代码,遭遇如此不同的对待。难道是因为NLP应用比其他应用简单?恰恰相反,自然语言的很多应用比起大多数应用(譬如图形软件、字处理软件等等)更加复杂和艰难。解释这种不同遭遇的唯一理由就是,作为大环境的软件领域没有NLP主流的小环境里面那么多的傲慢和偏见。软件领域的大师们还没有狂妄到以为可以靠自动编程取代手工编程。他们在手工编程的基础建设(编程架构和开发环境等)上下功夫,而不是把希望寄托在自动编程的万能上。也许在未来的某一天,一些简单的应用可以用代码自动化来实现,但是复杂任务的全自动化从目前来看是遥遥无期的。不管从什么标准来看,非浅层的自然语言分析和理解都是复杂任务的一种。因此,机器学习作为自动编程的一个体现是几乎不可能取代手工代码的。规则系统的NLP应用价值会长期存在。 自动是一个动听的词汇。如果一切人工智能都是自动学习的,前景该有多么美妙。机器学习因为与自动连接在一起,显得那么高高在上,让人仰视。它承载着人类对未来世界的幻想。这一切理应激励自动学习专家不断创新,而绝不该成为其傲慢和偏见的理由。 在下面具体论述所谓规则系统的知识瓶颈软肋之前,值得一提的是,本文所谓自动是指系统的开发,不要混淆为系统的应用。在应用层面,无论是机器学习出来的系统,还是手工编制的系统,都是全自动地服务用户的,这是软件应用的性质决定的。虽然这是显而易见的事实,可确实有人被误导,一听说手工编制,就引申为基于规则系统的应用也是手工的,或者半自动的。 手工编制NLP系统是不是规则系统的知识瓶颈?毋庸讳言,确实如此。这个瓶颈体现在系统开发的周期上。但是,这个瓶颈是几乎所有大型软件工程项目所共有的,是理所当然的资源成本,不独为 NLP “专美”。从这个意义上看,以知识瓶颈诟病规则系统是可笑的,除非可以证明对所有NLP项目,用机器学习开发系统比编制规则系统,周期短且质量高(个别的项目可能是这样,但一般而言绝非如此,后面还要详谈)。大体说来,对于NLP的浅层应用(譬如中文切词,专名识别,等等),没有三个月的开发,没有至少一位计算语言学家手工编制和调试规则和至少半个工程师的平台层面的支持,是出不来规则系统的。对于NLP的深层应用(如句法分析,舆情抽取等),没有至少一年的开发,涉及至少一位计算语言学家的手工编制规则,至少半个质量检测员的协助和半个工程师的平台支持,外加软件工程项目普遍具有的应用层面的用户接口开发等投入,也是出不来真正的软件产品的。当然需要多少开发资源在很大程度上决定于开发人员(包括作为知识工程师的计算语言学家)的经验和质量以及系统平台和开发环境的基础(infrastructures)如何。 计算语言学家编制规则系统的主体工作是利用形式化工具编写并调试语言规则、各类词典以及语言分析的流程调控。宏观上看,这个过程与软件工程师编写应用程序没有本质不同,不过是所用的语言、形式框架和开发平台(language,formalism and development platform)不同,系统设计和开发的测重点不同而已。这就好比现代的工程师用所谓高级语言 Java 或者 C,与30年前的工程师使用汇编语言的对比类似,本质是一样的编程,只是层次不同罢了。在为NLP特制的“高级”语言和平台上,计算语言学家可以不用为内存分配等非语言学的工程细节所羁绊,一般也不用为代码的优化和效率而烦扰,他们的注意力更多地放在面对自然语言的种种复杂现象,怎样设计语言处理的架构和流程,怎样平衡语言规则的条件宽窄,怎样与QA(质量检测)协调确保系统开发的健康,怎样保证语言学家团队编制规则的操作规范(unit testing,regression testing,code review,baselines,等等)以确保系统的可持续性,怎样根据语言开发需求对于现有形式框架的限制提出扩展要求,以及怎样保证复杂系统的鲁棒性,以及怎样突破规则系统的框架与其他语言处理包括机器学习进行协调,等等。一个领头的计算语言学家就是规则系统的架构师,系统的成败绝不仅仅在于语言规则的编制及其堆积,更多的决定于系统架构的合理性。明星工程师是软件企业的灵魂,NLP 规则系统的大规模成功也一样召唤着语言工程大师。 关于知识瓶颈的偏见,必须在对比中评估。自然语言处理需要语言学知识,把这些知识形式化是每个NLP系统的题中应有之义,机器学习绝不会自动免疫,无需知识的形式化。规则系统需要语言学家手工开发的资源投入,机器学习也同样需要资源的投入,不过是资源方式不同而已。具体说,机器学习的知识瓶颈在于需要大数量的训练数据集。排除研究性强实用性弱的无监督学习(unsupervised learning),机器学习中可资开发系统的方法是有监督的学习(supervised learning)。有监督的学习能开发知识系统成为应用的前提是必须有大量的手工标注的数据,作为学习的源泉。虽然机器学习的过程是自动的(学习算法的创新、调试和实现当然还是手工的),但是大量的数据标注则是手工的(本来就有现成标注不计,那是例外)。因此,机器学习同样面临知识瓶颈,不过是知识瓶颈的表现从需要少量的语言学家变成需要大量的低端劳动者(懂得语言及其任务的中学生或大学生即可胜任)。马克思说金钱是一般等价物,知识瓶颈的问题于是转化为高级劳动低级劳动的开销和转换问题:雇佣一个计算语言学家的代价大,还是雇佣10个中学生的代价大?虽然这个问题根据不同项目不同地区等因素答案会有不同,但所谓机器学习没有知识瓶颈的神话可以休矣。 另外,知识瓶颈的对比问题不仅仅是针对一个应用而言,而应该放在多应用的可移植性上来考察。我们知道大多数非浅层的NLP应用的技术支持都源于从自然语言做特定的信息抽取:抽取关系、事件、舆情等。由于机器学习把信息抽取看成一个直接对应输入和输出的黑匣子,所以一旦改变信息抽取目标和应用方向,以前的人工标注就废弃了,作为知识瓶颈的标注工作必须完全重来。可是规则系统不同,它通常设计成一个规则层级体系,由独立于领域的语言分析器(parser)来支持针对领域的信息抽取器(extractor)。结果是,在转移应用目标的时候,作为技术基础的语言分析器保持不变,只需重新编写不同的抽取规则而已。实践证明,对于规则系统,真正的知识瓶颈在语言分析器的开发上,而信息抽取本身花费不多。这是因为前者需要应对自然语言变化多端的表达方式,将其逻辑化,后者则是建立在逻辑形式(logical form)上,一条规则等价于底层规则的几百上千条。因此,从多应用的角度看,规则系统的知识成本趋小,而机器学习的知识成本则没有这个便利。 III. 主流的反思 如前所述,NLP领域主流意识中的成见很多,积重难返。世界上还很少有这样的怪现象:号称计算语言学(Computational Linguistics)的领域一直在排挤语言学和语言学家。语言学家所擅长的规则系统,与传统语言学完全不同,是可实现的形式语言学(Formal Linguistics)的体现。对于非浅层的NLP任务,有效的规则系统不可能是计算词典和文法的简单堆积,而是蕴含了对不同语言现象的语言学处理策略(或算法)。然而,这一路研究在NLP讲台发表的空间日渐狭小,资助亦难,使得新一代学人面临技术传承的危险。Church (2007)指出,NLP研究统计一边倒的状况是如此明显,其他的声音已经听不见。在浅层NLP的低垂果实几乎全部采摘完毕以后,当下一代学人面对复杂任务时,语言学营养缺乏症可能导致统计路线捉襟见肘。 可喜的是,近年来主流中有识之士(如,Church 2007, Wintner 2009)开始了反思和呼吁,召唤语言学的归来:“In essence, linguistics is altogether missing in contemporary natural language engineering research. … I want to call for the return of linguistics to computational linguistics.”(Wintner 2009)。相信他们的声音会受到越来越多的人的注意。 参考文献 Church 2007. A Pendulum Swung Too Far. Linguistics issues in Language Technology, Volume 2, Issue 4. Wintner 2009. What Science Underlies Natural Language Engineering? Computational Linguistics, Volume 35, Number 4 原载 《W. Li T. Tang: 主流的傲慢与偏见:规则系统与机器学习》 【计算机学会通讯】2013年第8期(总第90期) Pride and Prejudice in Mainstream: Rule System vs. Machine Learning In the area of Computational Linguistics, there are two basic approaches to natural language processing, the traditional rule system and the mainstream machine learning. They are complementary and there are pros and cons associated with both. However, as machine learning is the dominant mainstream philosophy reflected by the overwhelming ratio of papers published in academia, the area seems to be heavily biased against the rule system methodology. The tremendous success of machine learning as applied to a list of natural language tasks has reinforced the mainstream pride and prejudice in favor of one and against the other. As a result, there are numerous specious views which are often taken for granted without check, including attacks on the rule system's defects based on incomplete induction or misconception. This is not healthy for NLP itself as an applied research area and exerts an inappropriate influence on the young scientists coming to this area. This is the first piece of a series of writings aimed at correcting the prevalent prejudice, focused on the in-depth examination of the so-called hand-crafted defect of the rule system and the associated knowledge bottleneck issue. 【相关】 K. Church: A Pendulum Swung Too Far , Linguistics issues in Language Technology, 2011; 6(5) 【科普随笔:NLP主流的傲慢与偏见】 【 关于NLP方法论以及两条路线之争 】 专栏: NLP方法论 【置顶:立委NLP博文一览】 《朝华午拾》总目录
个人分类: 立委科普|4153 次阅读|6 个评论
【泥沙龙笔记:关于语法工程派与统计学习派的总结】
liwei999 2016-6-3 08:29
再谈一哈语法工程派与统计学习派。 总结一下要点: 【1】 规则系统模拟人的语言理解,着重结构分析,深度上是关键词(ngram)系统无法达到的 【2】 规则系统以前多局限于实验室,做的是玩具,速度也不能 scale up,AI 的玩具如此,NLU 最常用的乔姆斯基的 CFG 为底的 parser 也是没有线速算法的。 【3】 我们做的是多层的有限状态为机制的深度分析,线速,已经多次 scale up 到大数据和社交媒体,真实世界的 apps 【4】 多层有限状态系统的关键是必须有经验的架构师才能玩转,没有多年的积累无法构建多层模块,协调好接口和通讯 【5】 深度句法分析是语言理解的核武器,是因为语言是由词汇和结构叠加而成,而统计派的NLP落地为产品迄今一直缺乏结构支持 【6】 任何 NLU 的产品,要想做得细致,必须有深度结构的支持;没有结构的关键词技术只能支持粗线条的NLP产品,靠的是分类聚类等统计算法。 【7】 一定要深度分析与当前正火的深度学习结合的话,深度分析的结构结果可以考虑作为新的 features 来帮助深度学习系统 【8】 深度句法分析离语义理解只有一步之遥 语义理解最终决定于应用(语用)层面的语义落地, 而从深度句法到语义落地,这一步可以很容易扩展,因为苦活脏活都在 deep parser 里面做掉了。 【9】 deep parser 是核武器,很繁难,但是是领域独立的,一旦做了,就可以支持各种应用。这样一来,语义落地模块面对的是逻辑化的句法结构,使得一条逻辑结构的语义规则等价于千百条(毫不夸张)语言表层规则的能量。 【10】 deep parser 的繁难和手工性在工业界不是缺点, 而是竞争优势,因为它把竞争对手抛在后面,提高了门槛。而 学习方法,不管怎样花样翻新,对手赶上来的机会和速度还是大多了。 譬如 语音识别的突破,首先是在一两个小组,譬如 Nuance 和 讯飞等, 但很快整个行业全面提升。因为方法是通用的 自动的 迟早会被赶上来。 规则系统的设计和实现则不然,因人而异。 何况过去20多年,规则一派严重的断层,学问的传承只有极少数幸存的人得道。 Nick: 对不同语言,parser需要改很多吗?是不是要很多修修补补的if then else? 我: 那是语言学家的工作,语言不同,词汇和文法当然不同。 但是 (1) 架构不变;(2) 有限状态FSA++机制和算法不变;(3)有血缘关系的语言之间的规则可以平移,稍加改造可用;(4)反映全世界的语言的共性(乔姆斯基的所谓 UG)的语言学算法,融合在 pipieline 的过程设计中,也是不变。 这样一来,多语开发虽然仍旧繁难,但比起从头只做一门语言,要省力很多。 【后记】 我: 这一阵子笔记爆炸,backlog 太长,根本就整理不过来。整多少算多少吧,至少不是白开水. 几乎赶超洪爷打油了。 到退休的时候,怎么也得整个桂冠NLP鼓吹手的称号啥的。 洪: 你的笔记是超越沈括的梦溪笔谈啊 我: 据说毛泽东思想是我党集体智慧的结晶。As long as 这个群和白老师群继续存在,立委NLP笔记也是二群集体智慧的结晶,在下就是主编而已。 Guo: 学朱德熙写语法问答吧。 我: 不是已经开办大学了吗? 等到桃李满天下了,看那个教授有我的学生多? 华人子弟学NLP的,很少有错过我的网上 NLP University 的吧?据说有些教授也在推荐。 【相关】 【新智元笔记:工程语法与深度神经】 【科普小品:NLP 的锤子和斧头】 【新智元笔记:两条路线上的NLP数据制导】 《立委随笔:语言自动分析的两个路子》 Comparison of Pros and Cons of Two NLP Approaches 【 why hybrid? on machine learning vs. hand-coded rules in NLP 】 Why Hybrid? 钩沉:Early arguments for a hybrid model for NLP and IE 【李白对话录:你波你的波,我粒我的粒】 【置顶:立委科学网博客NLP博文一览(定期更新版)】 《朝华午拾》总目录
个人分类: 立委科普|5146 次阅读|0 个评论
【新智元笔记:工程语法与深度神经】
热度 2 liwei999 2016-5-29 13:45
我: 汉语的类后缀(quasi-suffix)有不同的造词程度,“-者” 比“-家”强。“ 者” 是 bound morpheme,“家(home)” 通常是 free morpheme,突然来个“冷笑家”,打了个措手不及 @白老师。 不敢轻易给这种常用的 free morpheme 增加做类后缀的可能性,怕弄巧成拙。即便是人,乍一听这句子中的“冷笑家”也有点怪怪的感觉,怎么这样用词呢?如果硬要去模拟人的造词和理解合成词的功能,倒是有 heuristics,不知道值得不值得 follow:“冷笑”是 human 做 S 的动词,-家 是表示 human 的可能的后缀(“者” 比 “家” 更宽泛一些,可以表示机构或法人),这就为“冷笑家”作为合成词增添了一点语义的搭配证据,但还不足以站住,于是还有另一个 heuristic:“冷笑”的 subcat 的 human 语义坑不仅仅是S,其 O 也是 human: “张三冷笑李四”。而另一条路径(上面输出的 parse)是:冷笑 的 O 是赞成“, 不搭。 这两个 heuristics (一个morphological,一个 syntactic)是如何在人脑里合力促成了正确的理解的,是一个可以想象但并不清晰的下意识过程。机器可以不可以模拟这个过程,利用这种合力做出逼近人类的语言理解呢?道理上当然可以。既然我都可以描述出来,那么硬做也可以做出它来。但是,在遇到这样的语料的时候,说句实话,通常选择不做。原因就是我以前说的:编制一个 NLU 系统,不能太精巧。【 科研笔记:系统不能太精巧,正如人不能太聪明 】 白: 赞成有俩坑,一个human,一个内容。就算被“的”强制为名词,这俩坑仍旧在。 我: 是,我还没来得及加上 “赞成” 的坑的考量进来,问题的复杂度更增加了。 精巧的路线是老 AI 的人和语言学家最容易陷入的泥潭。 老 AI 陷入精巧还不当紧,因为 老 AI 做的都是玩具,domain 极为狭窄,精巧不至于造成太大偏向。 白: “这本书的出版”和“冷笑家的赞成”异曲同工,都是用填坑成分限定有坑的临时名词。 所以,两个坑其中一个是human,会给“-家”结构加分。 这是系统性的现象,与精巧无关。 我: 我就怕聪明反被聪明误。在 data driven 的NLU开发过程中,对于偶然出现的“怪怪“ 的语词或句子, 我通常是无视它的存在(除非这个现象反复出现)。 白老师总说是系统性的现象, 但举出的例子常常是 “怪怪”的, 是那种介于人话与“超人话”之间的东西, 超人指的是,这类话常常是语言学家从头脑里想出来的, 或者是高级知识分子抖机灵的作品。 白老师宋老师,还有 yours truly 都擅长写出这样句子,可是普罗不这样说话。 用白老师自己的话说,就是这类现象处于毛毛虫的的边缘毛糙的地方。 虽然是毛毛虫的一个部分,没有它其实无碍。 我指的是 “家” 作为类后缀的现象。 白: 对付这种既没有截然的肯定也没有截然的否定,而只是“加分”/“减分”的逻辑,统计比规则更在行。关键是模式长啥样。 mei: Deep learning 死记硬背,套模式,有了training data,做第四层,第五层,做不出吗? 我: 我对这个统计的能力,好奇多于怀疑。统计或深度神经,真有这么神吗? 连毛毛虫的毛边、灰色地带、长尾,也都恰好能学出来? mei: 那就需要多run experiments,机器多。一部分靠知识,一部分靠实验。应该能的。 白: 模式过于稀松平常,深度学习或可用上,但效果很差。模式过于稀奇古怪,深度学习可能完全没有用武之地。 我: “家”作为后缀的产生性不强,基本属于长尾。而“家(home)”作为自由语素则是压倒性的。统计的系统不会看不见这一点。 白: 在找到合适的模式之前,过于乐观或过于悲观都是缺乏凭据的。 mei: 中文的data多啊。再sample一下 白: 都不知道模式长什么样,sample啥呢?我们的关键是看模式长什么样 mei: 做语音识别深度学习的,也是做很多实验,然后发现模式的。 白: 语音的结构是扁平的,拿来套语言,未必灵。假定了扁平再来发现模式,说不定已经误入歧途了。 mei: 不是100%灵,但有analogy 白: 实验不可能对所有模式一视同仁,一定有先验假设的。也许藏在心里没说出来,但是模型会说明这一切的。 我: 【 科研笔记:系统不能太精巧,正如人不能太聪明 】里面有 事不过三的原则。事不过三,无论是中心递归,还是我文中举的否定之否定之否定的叠加。表面上是程序猿的经验之谈,其实属于设计哲学。 mei: 哲学有用的 白: 如果藏在心里的先验假设是错的,多少数据也救不了你 mei: 先验假设 不是不好-立委的知识都可以用到深度学习上 白: 都能用上就好了。问题是他的知识长的样子,深度学习消化得了么? mei: 那就combine啊 白: 在使用深度学习对付语言结构这件事情上,1、有迷信;2、有办法;3、迷信的人多半不知道办法。 combine会引发什么问题,不做不知道 mei: 深度学习一点不迷信,又有定律,又有实践。 我: 哈,曾经遇到一个“超级”猎头,说超级是说的此女士居然对AI和NLU如数家珍的样子,包括人工智能符号逻辑派与统计学习派的两条路线斗争,不像一般的IT猎头简单地认为AI=DL。她的最大的问题就是(大体):你老人家是经验性的,骨灰级的砖家了,你能简单告诉我,你怎样用你的经验为深度学习服务呢? (哇塞)无语。语塞。 全世界都有一个假定,至少是目前的AI和NLP领域,就是深度神经必然成事。只有在这个假定下,才有这样的问题:你无论多牛,不靠神经的大船,必然没有前途。 白: 深度学习假定的空间是欧氏空间,充其量是欧氏空间的时间序列。万事俱备,只差参数。这个假定要套用到语言结构上,还不失真,谈何容易。其实就是把目标空间的判定问题转化为参数空间的优化问题。 mei: 没说容易啊。现在的深度学习当然有局限性。 还要懂data science,the science of data 白: 目标空间错了,参数空间再优化也没有意义。 我: 非常好奇,这么深奥的深度神经是怎样做的 AI marketing 洗脑了全社会,以致无论懂行的、不懂行的、半懂行的都在大谈深度神经之未来世界,把深度神经作为终极真理一样膜拜。 第一,我做工程语法(grammar engineering)的,句法分析和主要的语义落地场景都验证非常有效了,为什么要服务深度神经?本末倒置啊。他本来做得不如我,无论parsing还是抽取,为啥反倒要我服务他成就他呢?不带这样的,当年的希拉里就被奥巴马这么批评过:你不如我,为啥到处谈要选我做你的副总统搭档呢? 第二,深度神经也没要我支持,我自作多情什么,热脸贴冷屁股去?据说,只要有数据,一切就自动学会了,就好比孩子自动学会语言一样。哪里需要语言学家的出场呢? 最奇妙的是把一个软件工程界尽人皆知的毛病当成了奇迹。这个毛病就是,学出来的东西是不可理解的,很难 debug 。假设学出来的是一个完美系统,不容易 debug 当然可以,因为根本就没有 bugs。可是,有没有 bugs 最终还是人说了算,数据说了算,语义落地的应用说了算。如果发现了 bug,在规则系统中,我一般可以找到症结所在的模块,进去 debug,然后做 regressions,最后改进了系统,修理了 bug。可是到了神经系统,看到了 bugs,最多是隔靴搔痒。 张: 感同身受 我: 要指望在下一轮的训练中,通过 features 的调整,数据的增加等等。幸运的话,你的bugs解决了,也可能还是没解决。总之是雾里看花,隔靴搔痒。这么大的一个工程缺陷,这也是谷歌搜索为什么迄今基本是 heuristics 的调控,而不是机器学习的根本理由之一(见 为什么谷歌搜索并不像广泛相信的那样主要采用机器学习? ),现在被吹嘘成是深度学习的优点:你看,机器多牛,人那点脑量无论如何不能参透,学出来是啥就是啥, 你不认也得认。是缺点就是缺点。你已经那么多优点了,连个缺点也不敢承认?牛逼上天了。 mei: 不是这样的。内行的不否认深度学习的长处,但对其局限性都有认识的 我: @mei 这个是针对最近某个封面文章说的,白老师不屑置评的那篇:【 泥沙龙笔记:学习乐观主义的极致,奇文共欣赏 】 mei: 我的观点: There is nothing wrong with 1) and 2), in fact, they have helped advancing AI big time. But 3) is a serious problem . 我:赞。 宋: 自然语言处理 不同于图像处理和语音处理,相当一部分因素是远距离相关的。词语串的出现频率与其长度成倒指数关系,但语料数据的增加量只能是线性的,这是机器学习的天花板。 我: 宋老师的解释听上去很有调性。 image 不说它了,speech 与 text 还是大可以比较一下的, speech 的结构是扁平的?怎么个扁平法? text 的结构性和层级性,包括 long distance 以及所谓 recursion,这些是容易说清楚的,容易有共识的。 宋: @wei 什么叫“调性”? 我: 这是时髦的夸赞用语。:) 宋: tiao2 or diao4? 我: diao4,就是有腔调。 深度神经没能像在 speech 一样迅速取得期望中的全方位的突破,这是事实,是全领域都感觉困惑的东西。 全世界的 DLers 都憋着一股劲,要不负众望,取得突破。 终于 SyntaxNet 据说是突破了,但也不过是达到了我用 grammar engineering 四五年前就达到的质量而已,而且远远没有我的领域独立性(我的 deep parser 转移领域质量不会大幅度下滑),距离实用和落地为应用还很遥远。 宋: 在不知道结构的情况下,只能看成线性的。知道有结构,要把结构分析出来,还得先从线性的原始数据出发,除非另有外加的知识可以直接使用。 我: 这个 text 迄今没有大面积突破的困惑,白老师说的是模型长什么样可能没弄清楚,因此再怎么神经,再多的数据,都不可能真正突破。 宋老师的解释进一步指出这是结构的瓶颈,特别是long distance 的问题。 如果是这样,那就不复杂了。 将来先把数据结构化,然后再喂给深度神经做NLP的某个应用。 这个接口不难,但是到底能有多奏效? 宋: SyntaxNet宣称依存树的分析准确率达到94%。也就是说,100个依存弧,平均有6个错的。n个词的句子有n到2n个依存弧。因此,10几个词的句子(不算长),通常至少有一条弧是错的。即使不转移领域,这样的性能对于机器翻译之类的应用还是有很大的问题,因为每个句子都会有翻错的地方。 我: 错了一点弧,只要有backoff,对于多数应用是无关大局的, 至少不影响信息抽取, 这个最主要最广泛的NLP应用,对于不完美parsing是完全可以对付的, 几乎对抽取质量没有啥影响。 即便是 MT,也有应对 imperfect parsing 的种种办法。 宋: 这个数据的结构化不仅是clause层面的,而是必须进入clause complex层面。 首先需要人搞清楚clause complex中的结构是什么样子的。就好像分析clause内的结构,要让机器分析,先得让人搞清楚clauses 内的结构体系是什么,还需要给出生成这种结构的特征和规则,或者直接给出一批样例。 我: 现在的问题是,到底是是不是因为 text 的结构构成了深度神经的NLP应用瓶颈? 如果真是,那只要把结构带进去,今后几年的突破还是可以指望的。 结构其实也没啥神奇的。 不过是 (1) 用 shallow parsing 出来的 XPs 缩短了 tokens 之间的线性距离(部分结构化);(2)用 deep parsing 出来的 SVO 等句法关系(完全结构化),包括 reach 远距离。 这些都是清晰可见的,问题是深度神经是不是只要这个支持就可以创造NLP奇迹? 宋: 把结构带进去了再机器学习,当然是可能的。问题就是怎么把结构带进去。什么都不知道的基础上让机器去学习是不可能的。 我: 以前我们就做过初步实验做关系抽取,把结构带进ML去, 是有好处,但好处没那么明显。挑战之一就是结构的 features 与 原来的模型的 features 之间的 evidence overlapping 的平衡。 宋: clause complex的结构与clause的结构不一样。google把关系代词who、what往往翻译成谁、什么,就是没搞清楚层次区别。 【相关】 【 科研笔记:系统不能太精巧,正如人不能太聪明 】 【 泥沙龙笔记:学习乐观主义的极致,奇文共欣赏 】 【李白对话录:你波你的波,我粒我的粒】 【白硕- 穿越乔家大院寻找“毛毛虫”】 为什么谷歌搜索并不像广泛相信的那样主要采用机器学习? 《新智元笔记:再谈语言学手工编程与机器学习的自动编程》 《新智元笔记:对于 tractable tasks, 机器学习很难胜过专家》 《立委随笔:机器学习和自然语言处理》 《立委随笔:语言自动分析的两个路子》 【 why hybrid? on machine learning vs. hand-coded rules in NLP 】 钩沉:Early arguments for a hybrid model for NLP and IE 【置顶:立委科学网博客NLP博文一览(定期更新版)】 《朝华午拾》总目录
个人分类: 立委科普|5503 次阅读|2 个评论
【泥沙龙笔记:学习乐观主义的极致,奇文共欣赏】
热度 1 liwei999 2016-5-20 05:58
洪: 大数据上火车跑, 告别编程规则搞。 garbage in garbage out, 烧脑码农被废掉。 AI不再需要“程序猿”,未来数据比代码重要-新智元-微头条(wtoutiao.com) 我: 最近心智元那篇深度学习要代替程序猿的译文很有看头,是学习(ML)乐观主义的极致,但又呈现了两条路线合流的某种迹象,有的可唠。白老师洪爷尼克一干人熟悉ai两条路线你死我活斗了半个多世纪的,跟我党10次路线斗争类似,看这篇的极端乐观主义,最终宣告斗争结束世界大同的架势,可以评评掐掐。抛几个玉看能不引来啥砖砸。 【1】 quote: 编程将会变成一种“元技能(meta skill)”,一种为机器学习创造“脚手架”的手段。就像量子力学的发现并未让牛顿力学失效,编程依旧是探索世界的一种有力工具。但是要快速推进特定的功能,机器学习将接管大部分工作。 这个说法听上去怎么与白老师前一阵说的有类似或平行的味道? 洪: 这种鸡血文,可别仔细读,否则@wei 你就前功尽弃邯郸学步了 我: 它代表了这股“热”的一种极致。还是比ai取代或消灭人类,更加“理性”一些,调子是乐观主义的。 洪: 老@wei 你还是要待价而沽,找机会当老黄忠,杀一回nlp夏侯渊啥的,抖抖威风。赶紧做benchmark,你为刀斧手,syntaxnet啥的为鱼肉。 我: 杀一回nlp夏侯渊根本不是问题。 现在说的是取代程序猿,凭什么他们成为劳工中的贵族。 【2】 谷歌搜索真地从规则和 heuristics 调控正在过度到深度学习吗?这是里面爆料的新发展? (benchmarking 我心里有数,稳操胜券:新闻媒体如果所报 94 为确,那么大家都已经登顶,基本不分伯仲,没多大余地了。一旦超越领域限制,哈哈) 我疑惑的是这个报料:quote 甚至,Google搜索引擎这座由人工规则建立起来的“大厦”也开始仰仗这些深度神经网络。2月份,Google用机器学习专家John Giannandrea替换掉了多年以来的搜索部门负责人,还开始启动一个针对工程师的“新技能”再培训项目。“通过培养学习机制,我们不一定非要去编写规则了。”Giannandrea告诉记者。 这个转移如果是真地,对于搜索这么大的一个产业,在根基上做这种转移,在这种热昏的大气候下,哈哈,是福不是祸,是祸躲不过,谷歌这座搜索大厦是不是面临倾覆的前兆?不过想来即便想在 existing 手工调控的搜索路线中夹带新货,management 也不会冒进,估计是逐渐渗透和试验,否则不是自杀? 关于这个,有一些背景,见我以前的博文:《 再谈机器学习和手工系统:人和机器谁更聪明能干? 》 还有 为什么谷歌搜索并不像广泛相信的那样主要采用机器学习? Nick: 我赶脚伟哥最近修改resume和google开源parser有关系。再不改嫁就真砸手里了。 说到两条路线斗争,最极端的符号派当属定理证明,我最近在写篇定理证明简史。你们想听啥,告我一声,我再加料。 白: 那篇不需要“程序猿”的文章,理论上是错的,懒得转也懒得评。 我: 谁能证实谷歌搜索要走深度学习取代规则调控的路线? Nick 真以为 SyntaxNet 对我是威胁吗?是一个 alert,是实。 南: Nick大师逗你玩呢 我: 威胁还太远。alert 是因为确实没想到这一路在新闻领域训练能这么快达到94的高度,因为这个高度在我四五年前达到的时候,我是以为登顶了,可以喘口气,不必再做了。从应用角度,确实也是 diminishing returns 了,没有再做的价值了。如果想争口气的话,有些已知的地方还可以再做圆,那还是等退休没事儿的时候玩儿比较合适。 问题不在那里,问题在这儿: 【3】 领域转移和语义落地 机器学习的系统天生地难以领域转移,SyntaxNet 恐非例外。你花费牛劲儿,把各种 features 设计好,优化了,加上真正海量的训练数据,在一个领域 譬如新闻媒体,达到了最优的 benchmark 譬如 94%,但是一旦转换领域,performance 直线下滑是常见的问题。除非 retrain,这个谈何容易,不论。 陈: 新闻能做到的话,在其他领域,无非就是积累数据 我: 你的说法是经典的。 quote 当然,还是要有人来训练这些系统。但是,至少在今天,这还是一种稀缺的技能。这种工作需要对数学有高层次的领悟,同时对于“有来有往”的教学技巧有一种直觉。“使这些系统达到最优效果的方法差不多是一门艺术”,Google Deepmind团队负责人Demis Hassabis说。“世界上只有寥寥数百人能出色地完成这件事。” (这么说来还不错,世界上还有几百号大牛可以玩转它。另一条路线断层了,能玩转的会有几十人吗?) 以前就不断听说,同一个算法,同一批数据,甚至基本相同的 feature design,不同人训练出来的结果大不相同。虽然科学上说这个现象不合理,科学的东西是可以完全重复的,但是如果参杂了艺术或某种 tricks,说不清道不明的经验因素啥的呢。不用说得那么玄,重新训练的确不是一个简单的过程重复。 Self-quote: 问题的另一方面是,机器学习是否真地移植性那么强,象吹嘘的那么神,系统无需变化,只要随着新数据重新训练一下就生成一个新领域的系统?其实,谈何容易。首先,新数据哪里来,这个知识瓶颈就不好过。再者,重新训练的过程也绝不是简单地按章办事即可大功告成。一个过得去的系统常常要经历一个不断调控优化的过程。 说到这里,想起一段亲历的真实故事。我以前拿过政府罗马实验室10多个小企业创新基金,率领研发组开发了一个以规则系统为主(机器学习为辅,主要是浅层专名标注那一块用的是机器学习)的信息抽取引擎。我们的政府资助人也同时资助另一家专事机器学习的信息抽取的团队(在美国也是做机器学习很牛的一家),其目的大概是鼓励竞争,不要吊死在一棵树上。不仅如此,罗马实验室还选助了一家系统集成商开发一套情报挖掘应用软件,提供给政府有关机构试用。这套应用的内核用的就是我们两家提供的信息抽取引擎作为技术支撑。在长达四年的合作中,我们与集成商有过多次接触,他们的技术主管告诉我,从移植性和质量改进方面看,我们的规则引擎比另一家的机器学习引擎好太多了。 我问,怎么会,他们有一流的机器学习专家,还常年配有一个手工标注的团队,引擎质量不会太差的。主管告诉我,也许在他们训练和测试的数据源上质量的确不错,可是集成商这边是用在另一套保密数据(classified data)上,移植过来用效果就差了。我说,那当然,训练的数据和使用现场的数据不同类型,机器学习怎么能指望出好结果呢,你们该重新训练(re-training)啊。你们用他们引擎五年来,重新训练过几次,效果如何?主管说:一次也没有重新训练成过。重新训练,谈何容易?我问:你们不可以组织人自己标注使用领域的数据,用他们的系统重新训练?主管说:理论上可行,实践上步步难行。首先,要想达到最优效果 ,当然是根据我们的数据重新标注一个与引擎出厂时候大体等量的训练文本集来。可那样大的数据标注,我们根本无力做成,标注过程的质量控制也没有经验。结果是我们只标注了部分数据。理论上讲,我们如果把这批自己的数据加到引擎提供者的训练数据中,重新训练可以把系统多少拉到我们的领域来,效果总会有 提高。但是我们不是信息抽取和机器学习专家,我们只擅长做系统集成。机器学习用新旧数据混合要想训练得好,要牵涉到一些技术细节(甚至tips和tricks) 和一些说明书和专业论文上不谈的微调和小秘密。尝试过,越训练效果反而越差。我问:那怎么办?遇到质量问题,怎样解决?他说:没什么好办法。你们不同,我们只要例示观察到的错误类型,你们下一次给我们 update 引擎时基本上就已经解决了。可我们把问题类型反馈给机器学习开发者就不能指望他们可以改正,因为他们见不到这边的数据。结果呢,我们只好自己在他们的引擎后面用简单模式匹配程序打补丁、擦屁股,可费劲了。 我当时的震惊可想而知。一个被NLP主流重复无数遍的重新训练、移植性好的神话,在使用现场竟然如此不堪。学习大牛做出来的引擎在用户手中四五年却连一次重新训练都实施不了。系统成为一个死物,完完全全的黑箱子。所有改进只能靠隔靴搔痒的补丁。 from 【科普随笔:NLP主流成见之二,所谓规则系统的移植性太差】 即便是同一个大厨,做了一锅好饭菜以后,下一锅饭菜是不是同样好,也不是铁定的。 【4】 这一点最重要,白老师批评。如果你的“模型”就不对,你怎么增加数据,怎么完善算法,你都不可能超越。这里说的是自然语言的“样子”,即白老师说的“毛毛虫”(见 【白硕- 穿越乔家大院寻找“毛毛虫”】 )。 整个自然语言的边界在哪里?不同语言的“样子”又有哪些需要不同调控的细节? 这些东西有很多体悟,并不是每一种都可以马上说清楚,但是它是的确存在的。无视它,或对它缺乏认识,最终要栽跟头的。 Nick: 那得看是什么餐馆,麦当劳每天味道都同样,路边馄饨摊每天各不相同。 我: exactly 麦当劳每天一样的代价是低品质,它要保持 consistency 就不可能同时保持高品质,只能永远在垃圾食品的标签下。 Nick: 我意思是你今能卖麦当劳的价钱,再不嫁,明就馄饨摊了。 我: 鼎泰丰来湾区了,小笼包子比他家贵出好几倍。前两天一尝,果然名不虚传。被宰认了,因为心甘情愿,谁叫它那么好吃呢。 我又饿不死,何苦卖麦当劳呢?怎么也得成为鼎泰丰吧。 最不抵,我开个咨询公司也有饭吃,没必要看贱自己。 现在就是,如何领域突破,如何语言突破?换一个语言,本质上也是换一个领域。因为只有这两项突破,才能真正NLP广泛落地为产品。94 很动听了,后两项还在未定之数。这种领域和语言的突破与毛毛虫什么关系 很值得思考。 洪爷说的“鸡血”文的最有意思的地方是,机器学习终于从过去遮遮掩掩的自动编程黑箱子,被鸡血到正式宣告和标榜为终极的自动编程。程序猿下岗,资料员上岗,在最上面的是几百号能玩转黑箱子魔术的超人。一切搞定,环球太平。一幅多么美妙的AI共产主义图景。 【相关】 AI不再需要“程序猿”,未来数据比代码重要-新智元-微头条(wtoutiao.com) 【新智元笔记:巨头谷歌昨天称句法分析极难,但他们最强】 《 再谈机器学习和手工系统:人和机器谁更聪明能干? 》 为什么谷歌搜索并不像广泛相信的那样主要采用机器学习? 【科普随笔:NLP主流成见之二,所谓规则系统的移植性太差】 【白硕- 穿越乔家大院寻找“毛毛虫”】 【科研笔记:NLP “毛毛虫” 笔记,从一维到二维】 Comparison of Pros and Cons of Two NLP Approaches 《立委随笔:语言自动分析的两个路子》 why hybrid? on machine learning vs. hand-coded rules in NLP 【科普随笔:NLP主流成见之二,所谓规则系统的移植性太差】 【科普随笔:NLP主流最大的偏见,规则系统的手工性】 【科普随笔:NLP主流的傲慢与偏见】 【科研笔记:系统不能太精巧,正如人不能太聪明】 【NLP主流的反思:Church - 钟摆摆得太远(1):历史回顾】 《立委随笔:机器学习和自然语言处理》 与老前辈谈 NLP 及其趋势 【置顶:立委科学网博客NLP博文一览(定期更新版)】
个人分类: 立委科普|2824 次阅读|1 个评论
《新智元笔记:再谈语言学手工编程与机器学习的自动编程》
热度 2 liwei999 2016-2-26 01:03
宋: We believe the contents of your iPhone are none of our business. 我们确信你手机里存了什么,跟我们没有半毛钱的关系。 我们确信,你手机里存了什么跟我们没有半毛钱的关系。 标点的问题。 @wei 能不能再看一下英文的结果? 我: 可以。 宋: 英语的分析很好,汉语还有点问题,关键是英语的NP(Subj) 到了汉语译文中成了主谓结构。 我: 这句英语比较简单。今天CNN头条的一个新闻,随机测试两句较长一些的句子,看里面的结构parse成什么: 英语开发时间长,早就成熟了,好久不动它了,没多少油水可榨了。 基本达到人的分析水平了。 张: 威武 我: 常有人问我看过这个parser,那个parser 没有,我老实说一般都懒得看。都琢磨了一辈子了,曾经沧海难为水。 关键是,在用 parser 做事儿的时候,就会发现,凡是 offshelf 的,都不好用。不仅仅是树的问题,树上只看到了 arcs,看不到的是 nodes。没有对nodes的语义接口和掌控,句法树也就是一道风景,也做不了事儿。 我: @白硕 谈辖域,离不开并列结构和省略现象。 并列结构被公认是 parsing 的拦路虎,痛点之一。它打破了依存关系的日常秩序, 是个难缠的东西。 梁: 白老师说的“辖域”是指什么呢,能具体点儿吗?在这句话里: “这顿饭的吃与不吃,都左右不了选举的结局。” 梁: 挺好的,很多细节都处理得好。只是大结构没有抓住,中心词应是“改变”,A 改变不了B.核心动词应是“左右不了”。 我: 加上了,这下你该满意了? 白: “吃饭”搭配呢? 我: 白老师真心眼毒。搭配与并列还没协调好,你容我喘口气儿 我: binggo!原来只是一个很小的词典问题。 哈哈,“仰天大笑闭门编,我辈岂止码农民”。工具顺手了,调系统就是个玩儿。 与大学生玩游戏上瘾类似,调试系统很 addictive 的。 据说机器学习可以代替语言学码农,剥夺我们的乐趣, 第一我们语言码农是不会答应的,第二它也代替不了。 能代替的都是低级劳动,高级劳动的自动编码还有日子吧,或者根本就是科学幻想。 梁: 不是说机器学习是根据输入输出学习规则吗? 也就是学习自动编码,对吧? 我: 机器学习的本质是自动编程,属于自动编程的一个分支。但在AI和NLP历史上, 它被视为理所当然高于领域码农的高级算法。这个观点本身没有问题,这是高一阶的算法,自然是高级的。但是这一切成立的基础是,领域算法和formalism已经清晰,可模拟。领域指的是语言学,of course。但实际情形完全不是这样,这个 assumption 只在浅层、单一语言学现象上, 是成立的。 白: 自动编程和基于示例的编程不是一个概念。自动编程是以spec为输入,以相应程序为输出。基于示例编程是以输入输出pairs为输入,以相应程序为输出。 我: 白老师说的不错,(有监督)机器学习的根基是示例, 语言处理本身是黑箱子,一切被认为完全可以用输入输出完善表达。在错综复杂的自然语言问题领域,这个思路有问题。譬如,并列现象与依存现象的错综复杂的纠缠,本来是需要精细周到的语言学算法去应对的(参见: 【立委科普:语言学算法是 deep NLP 绕不过去的坎儿】 )。但是现在被认为是,只要请语言学家标注出一大批树,这些领域算法, 就可以绕过去,然后机器自动学习出一种合适的处置来。我始终不信服。无法信服。里面饶了那么多弯儿呢,怎么可能全部自动学出来?语言学家也是专门家,他们就那么容易被机器复制、取代? 梁: “自动编程是以spec为输入,以相应程序为输出” 是 Specification ? 我: specs 本身的定义,其实不排除用案例,或 labeled data。我们产品经理找我提供NLP支持的时候,他给我的 specs 就是以案例为主:说只要是这样的 input,你给我抽取出这样的 insights,就ok了。软件中的不少 specs 是难以精确逻辑定义的,只好辅以 labeled data,这就与NLP中的机器学习面对的“specs”同质了。 我: 重要的话说n遍,QUOTE: 手工编制(hand-crafted)怎么了, 怎么到了NLP领域, 突然就成了带有原罪的贬义词了呢。这是因为在NLP领域, 代表主流的精算师们由于他们在NLP某些任务上的非凡成功, 使得他们居功自傲,把成功无限推广和夸大, 给这个community 施行了集体催眠术,让人相信机器学习是万能的。换句话说, 批判手工编制的劣根性,其隐含的前提是机器学习是万能的, 有效的,首选的。而实际情况是,面对自然语言的复杂性, 机器学习只是划过了语言学的冰山一角, 远远没有到主流们自觉和不自觉吹嘘的如入无人之地的万能境界。 催眠的结果是不独不少语言学家以及NLP相关利益方(stake holders,如投资人和用户)被他们洗脑了, 连他们自己也逐渐相信了自己编制的神话。 古有鲁班,现有码师(coding master)。这些码工谁不靠手工编制代码作为立足之本呢? 没听说一位明星工程师因为编制代码的手工性质而被贬损。 同是软件工程, 为什么计算语言学家手工编制NLP代码与其他工程师手工编制软件 代码遭遇如此不同的对待。难道NLP应用比其他应用简单? 恰恰相反,自然语言的很多应用比起大多数应用 更加复杂和艰难。 解释这种不同遭遇的唯一理由就是, 作为大环境的软件领域没有NLP主流的小环境里面那么多的傲慢和 偏见。 软件领域的大牛们还没有狂妄到以为可以靠自动编程取代手工编程。 他们在手工编程的基础建设(编程语言、架构和开发环境)上下功夫, 而不是把希望寄托在自动编程的万能上。也许在未来的某一天, 一些简单的应用可以用代码自动化来实现, 但是复杂任务的全自动化从目前来看是遥遥无期的。 不管从什么标准来看, 非浅层的自然语言分析和理解都是复杂任务的一种。因此, 机器学习作为自动编程的一个体现是几乎不可能取代手工代码的。 规则系统的NLP应用价值会长期存在。 自动是一个动听的词汇。如果一切人工智能都是自动学习的,前景该有多么美妙。机器学习因为与自动连接在一起,显得那么高高在上,让人仰视。它承载着人类对未来世界的幻想。这一切理应激励自动学习专家不断创新,而绝不该成为其傲慢和偏见的理由 。 (摘自: 【科普随笔:NLP主流最大的偏见,规则系统的手工性】 ) 【相关博文】 【立委科普:语言学算法是 deep NLP 绕不过去的坎儿】 《立委随笔:语言自动分析的两个路子》 【科普随笔:NLP主流的傲慢与偏见】 【科普随笔:NLP主流最大的偏见,规则系统的手工性】 再谈机器学习和手工系统:人和机器谁更聪明能干? 《新智元笔记:对于 tractable tasks, 机器学习很难胜过专家》 【置顶:立委科学网博客NLP博文一览(定期更新版)】
个人分类: 立委科普|6100 次阅读|6 个评论
【围脖:做 parsing 还是要靠语言学家,机器学习不给力】
热度 1 liwei999 2016-1-6 07:01
对于AI和NLP,统计是万金油,可以做一切任务。有些是统计擅长的甚至必需的,有些则不是。parsing 就属于后者,没有一个统计的必要性。宏观上看,语言的文法是蛮清晰的一套规则系统,人可以直接去 model,无需借助统计去学习。至于长尾的习惯用法或不规则现象,机制上没有问题,专家可以通过专家词典(expert lexicon)内的词驱动规则去应对,虽然人力并不能一蹴而就,但机器学习因此而遇到的稀疏数据(sparse data)则更具挑战性。 当然,如果有海量的带标数据(可惜没有,目前基本只在玩一个新闻文体的非常有限量的宾州树),统计学习出来的 parser 也有可能逼近专家编码的规则系统,但也只是逼近而已。想超过语言学专家码农的精雕细刻,看不出这种可能性。 机器能超过人的地方很多,譬如计算,譬如记忆,譬如在人力不及的巨大搜索空间里寻求最佳路径,譬如在多参数中玩大数据平衡,等等。然而,对于像 parsing 这样的专家可以见底的任务(tractable tasks),机器学习无法超越训练有素的专家码农,虽然它可以超越平庸之徒。 微博评论: 七年之痒 呵呵。 // @Hyperddr : 感觉七年内肯定要被打脸。。。。// @砰砰的小屋 : 转发微博 【相关】 《新智元笔记:对于 tractable tasks, 机器学习很难胜过专家》 【新智元笔记:深度 parsing 的逻辑化 】 《新智元:有了deep parsing,信息抽取就是个玩儿》 《泥沙龙笔记:漫谈自动句法分析和树形图表达》 【立委科普:语法结构树之美】 【立委科普:语法结构树之美(之二)】 【征文参赛:美梦成真】 泥沙龙笔记:parsing 是引擎的核武器,再论NLP与搜索 泥沙龙笔记:从 sparse data 再论parsing乃是NLP应用的核武器 【置顶:立委科学网博客NLP博文一览(定期更新版)】
个人分类: 立委科普|4393 次阅读|1 个评论
《新智元笔记:对于 tractable tasks, 机器学习很难胜过专家》
热度 2 liwei999 2015-12-26 19:50
我们 “语义计算” 群在讨论这个句子的句法结构: The asbestos fiber, crocidolite, is unusually resilient once it enters the lungs, with even brief exposures to it causing symptoms that show up decades later, researchers said. 我说,it looks fine in its entirety. once-clause has a main clause before it, so it is perfectly grammatical. The PP with even brief exposures to it is an adverbial of causing ...: usually PP modifies a preceding verb, but here it modifies the following ING-verb, which is ok. 然后想到不妨测试了一下我们的 parser,果然,把 PP 连错了,说是 PP 修饰 enters,而不是 causing。 除此而外,我的 parse 完全正确。这也许是一个可以原谅的错误。如果要改进,我可以让两种可能都保留。但是统计上看,也许不值得,因为一个 PP 面对前面的一个谓语动词和后面的一个非谓语动词,修饰前者的概率远远大于修饰后者。 张老师问: 是否此句在你的训练集里?如是统计方法。否则太不容易了 我说,我这是语言学程序猿做的规则系统,不是统计方法。句子不在我的 dev corpus 里面。parsing 是一个 tractable task,下点功夫总是可以做出来,其水平可以达到接近人工(语言学家),超越普通人(非语言学家)。说的是自己实践的观察和体会。靠谱的 parsing,有经验的语言学程序猿可以搞定,无需指靠机器学习。 为了说明这个观点,我测试了我的汉语 parser: 这个汉语句子的 parsing,只有一个错误,“语言学”与 “程序猿” 之间掉链子了(说明 parsing 还有改进余地,汉语parsing开发晚一些,难度也大一些,当前的状况,掉链子的事儿还偶有发生)。但整体来看基本也算靠谱了。所以,即便是比英语句法更难的汉语,也仍然属于 tractable 人工可以搞定的任务。 语言学家搞不定的是那些千头万绪的任务,譬如语音识别(speech recognition),譬如文章分类 (document classification),譬如聚类习得 (clus tering-based ontology acquisition) 。这些在很多个 features 中玩平衡的任务,人脑不够用,见木不见林。但是对于 deep parsing 和 信息抽取,解剖的是一颗颗树,条分缕析,这是语言学家的拿手好戏,都是 tractable 的任务,当然可以搞定。(甭管多大的数据,一句句分析抽取完了存入库里,到retrieve的时候还是需要“挖掘”一番,那时候为了不一叶障目,自然是需要用到统计的)。 在 条分缕析的 tractable 任务上(譬如,deep parsing),我的基本看法是:有NLP经验的语言学家立于不败之地。而机器学习,包括深度学习(deep learning,当前呼声最高的机器学习神器),也许在将来的某一天,可以逼近专家水平。值得期待。最多是逼近语言学家,但是要超越人工,我不大相信。再牛的机器学习算法也不可能在所有任务上胜过专家的手工编码,这个观点本来应该是显然的,但是学界的多数人却天然地认为深度学习总是可以超越人工系统。 parser 的直接目标不是语义求解, 而是提供一个靠谱的结构基础, 这样后续的(语用层面的)语义理解、信息抽取、舆情分析、机器翻译、自动文摘、智能秘书或其他的NLP应用, 就可以面对有限的 patterns, 而不是无限的线性序列。 从这个目标来看,我们的中文英文的 parsers 都已经达标了。 【相关】 【围脖:做 parsing 还是要靠语言学家,机器学习不给力】 手工规则系统的软肋在文章分类 《立委随笔:语言自动分析的两个路子》 再谈机器学习和手工系统:人和机器谁更聪明能干? 【 why hybrid? on machine learning vs. hand-coded rules in NLP 】 Comparison of Pros and Cons of Two NLP Approaches 【置顶:立委科学网博客NLP博文一览(定期更新版)】
个人分类: 立委科普|3503 次阅读|4 个评论
【科研笔记:系统不能太精巧,正如人不能太聪明】
热度 1 liwei999 2013-9-2 11:11
Countless lessons learned over the years in the NLP system development show that a robust real life system should not be too sophisticated just as man should not be too smart. As a rule of thumb, anything involving more than 3 levels of dependency is too delicate. You can make it work today, but it will break some day. One recent lesson was my effort to handle Chinese long distance negation and satire in question forms: it seemed to work, but in the end, it created more problems than it solved. Stay simple, stay foolish. 这是本人积30年系统研发教训及经验的一个总结。尤其对于自然语言这样复杂的现象,尤其在容易见木不见林的规则系统的编制中。 人常常自以为聪明,语言学家为甚。在缺少大数据及其工具和平台支持下,再聪明的语言学家也难逃井底之蛙的局限,可我们偏偏以为自己洞察了语言之海。面前就是一例:为了对付远距离否定(否定词“不”、“没有”等不是紧挨着被否定的动词或形容词短语)以及反问句形式的否定等复杂语言现象,笔者精心编制了一批规则。结果如上个帖子所示,在挖掘薛蛮子嫖娼的热点话题时候,挖掘出不少否定嫖娼的情报来,其中约一半是弄巧成拙,还不如不要那套规则(参见:【 嫖还是没嫖,这不是语言学的问题 】)。 作为一个经验法则,面对 open-ended 的复杂现象,任何依仗因果条件的推导,其依赖条件的嵌套层次不要超过3层。其实就语言本体而论,句法层次的所谓无限递归(recursion)的人类语言能力,由于人脑短期记忆的制约,也大体遵循同样的经验法则:中心递归基本不超过3层,这是可以由统计来证明的。超过了,就应该亮起红灯。一定要克服语言学家那种拍着脑袋(据说语言可以从脑袋产生,与其做语言大数据调查,不如通过内省)去“阿丽斯追兔子”似的一条路走到黑的职业恶习。 以否定式为例,初始的规则是不考虑否定式的,大约有七成现象不涉及否定式(如: iPhone 5 有问题 )。把否定带入是第一层(如: iPhone 5 没有问题 ),这时候应该涵盖约九成有关现象了。如果进一步考虑 double negation 的处理(如: iPhone 5 并非没有问题 ),算是第二层,那该到九成以上了。再进一步去对付远距离否定(如: 我不认为 iPhone 5 没有问题 ; iPhone 5 没有问题,是不可能的 ),这就到第三层了。第三层人力还勉强可为,虽然已经很危险了。如果你还不知足藏拙适可而止,还要把系统进一步复杂化去对付远距离否定与反问句交互等复杂现象(如: 谁不认为 iPhone 5 没有问题 ?),你开始越过红线,忘乎所以了。弄巧成拙,聪明反被聪明误,就是为你预备的警句。 Stay simple,stay foolish,此乃金玉良言。 【置顶:立委科学网博客NLP博文一览(定期更新版)】
个人分类: 立委科普|6335 次阅读|1 个评论
【科普随笔:NLP主流之偏见重复一万遍成为反真理】
liwei999 2013-6-28 15:56
【科普随笔:NLP主流的傲慢与偏见】 中有些广为流传或广为采信的观点,岂止偏见,谬见是也,无需一驳,因为事实胜于雄辩 : 【偏见三】 规则系统的手工编制注定其不能 scale up,无法胜任 real world application,只能做实验室里的玩具。 谬!以我们在社交媒体大数据上运行的最新系统为例(当然这不是我的功劳,是工程师的成就): 整个舆情挖掘系统由前后两个子系统组成。核心引擎是后台子系统( back-end indexing engine ),用于对社交媒体大数据 做自动分析和抽取。分析和抽取结果用开源的 Apache Lucene 文本搜索引擎 (lucene.apache.org) 存储。生成后台索引的过程基于 Map-Reduce 框架,利用计算云 (computing cloud) 中 200 台 虚拟 服务器进行分布式索引。对于过往一年的社会媒体大数据存档(约 300 亿文档跨越 40 多种语言),后台索引系统可以在 7 天左右完成全部索引。 前台子系统( front-end app )是基于 SaaS 的一种类似搜索的应用。用户通过浏览器登录应用服务器,输入一个感兴趣的话题,应用服务器对后台索引进行分布式搜索,搜索的结果在应用服务器经过整合,以用户可以预设( configable )的方式呈现给用户。这一过程立等可取,响应时间不过三四秒。前台系统负责搜索、挖掘、整合和表达,设计成一个三层的混合后备式模型( hybrid back-off model ),以求最大程度地满足不同用户的情报需求 。 【偏见四 】 规则系统只能在极狭窄的领域成事,无法做跨领域的系统 。 谬!见我们开发的两款跨领域产品,回答 how 的问答系统 illumin8 和多语言社交媒体舆情挖掘的系统 ConsumerBase。 【偏见五 】 规则系统只能处理规范的语言(譬如说明书、天气预报、新闻等),无法应对 degraded text,如社会媒体、口语、方言、黑话、OCR 文档 。 谬!见我们开发的社交媒体舆情挖掘系统以及粤语前处理系统。 【系列姐妹篇】 【科普随笔:NLP主流的傲慢与偏见】 【科普随笔:NLP主流最大的偏见,规则系统的手工性】 【科普随笔:NLP主流偏见之二,所谓规则系统的移植性太差】 【科普随笔:NLP主流之偏见重复一万遍成为反真理】 【置顶:立委科学网博客NLP博文一览(定期更新版)】
个人分类: 立委科普|5744 次阅读|0 个评论
【科普随笔:NLP主流成见之二,所谓规则系统的移植性太差】
热度 3 liwei999 2013-6-28 14:49
【科普随笔:NLP主流的傲慢与偏见】 中的第二条是 : 【成见二】 规则系统的手工编制导致其移植性差,转换领域必须重启炉灶,而机器学习因为算法和系统保持不变,转换领域只要改变训练数据即可(言下之意:移植性强)。 这一偏见的要害是先把语言学家当机器人(与傻子是同义词),假设手工编制的规则与机器学习的显式规则(symbolic rules)同形,然后批评语言学家不如机器灵活和有效率。这就好比在电子词典或者计算器的比赛中,突然拉进一位号称活字典或心算师的有血有肉的人来,然后考核电子器件与专家的记忆力和运算能力。结论是,see,人脑的容量太小,根本无法与电脑相比,你出局了! 如果规则系统的架构和分析完全没有深度,只允许编写表层模式(surface patterns)的规则,直接连接输入与输出,用脚后跟想也可以得出移植性差的结论,因为表层规则依赖于任务,任务一换,辛辛苦苦编制调试出来的规则就没有再利用的可能。但是,除非是非常浅层的NLP(Natural Language Processing)任务,譬如标注产生式合成词(productive compouds)、词性(Part of Speech tagging)、专名标注(Named Entity tagging)、日期、数量单位、邮递地址等,对于最常见的NLP应用,信息抽取、舆情抽取等,语言学家几乎不可能象机器那样傻地把学习过程当作一个黑匣子,只会匹配输入和输出,而不去究竟背后的深层结构及其概括和推理。(即便是浅层任务,手工编制也未见得不可行不合算、不能与机器学习相媲美,需要具体分析其得失,不过我们先按下不论。) 换句话说,机器学习因为黑匣子的方法论一般只是从表层到表层(即,输入 输出),反正是机器学出来的,不怕模型或规则的量大和冗余。说“一般”是因为机器学习的领域当然有探索多层学习的研究,最近风行的深度学习似乎就是一种。(深度学习之所以被认为是革命性的,似乎也反过来说明长时期以来机器学习一直在表层做文章。)而语言学家设计的规则系统通常是一个模拟人的分析概括过程的层级体系(rule hierarchy),从浅层到深层逐级分析,最后达成任务(即,输入 中间结构 输出)。这样的规则系统的移植性还是很差么?具体说,编写的规则代码需要随着任务转换全部推倒重来,还是代码在新的领域可以再利用?积在美16年研发多种信息抽取系统和产品的经验,我可以负责任地回答,设计优良的规则系统可以做到很好的领域移植性,其绝大部分规则可以再利用。这里面的道理就在,领域可以变,专业术语等词汇级的资源可以各个不同,但语言结构基本不变。总体而言,自然语言的语法是跨领域的。 大体上说,一个四五人的研发团队(一个NLP平台工程师、两位语言学家、半个QA半个operations)研发一个特定自然语言(譬如英语)的语言深度分析器,大约需要两三年的功夫可以做到实用(再做其他的语言,时间至少可以减半,因为平台、形式体系、架构和开发环境是各语言开发及其不同抽取项目都可以分享的。单这一点也可见所谓规则系统转换领域一切要重起炉灶是怎样的误导:一方面吹嘘机器学习算法系统无需改变,一方面有意无意忽视规则系统中的架构、语言处理流程以及规则编译器及平台等系统层面的领域普适性,两套标准被忽悠得如此娴熟,让人不得不叹)。与之相比较,在分析基础上做一套抽取系统支持应用,简单任务两周可达到实用,复杂任务譬如舆情抽取半年也可以初步完成(其后就是维护和逐步完善了),任务平均所需开发时间在三个月左右。大体说来,分析与抽取的资源投入比例大约是10:1,因此,对这样架构的规则系统来说,移植性的量化表述大概是,90%的系统是可移植的,只有10%需要推倒重来。三个月的移植开销是个什么概念呢?在应用软件的开发现场,它根本就不可能成为瓶颈,因为单单是研究用户的信息需求,定义新产品的抽取目标,就常常需要三个月的时间。除此之外,从实用抽取系统第一版开发完成,到产品开发组消化它,把它转变成可用的产品或者产品功能,也至少需要三个月的开发周期。由此可见,即便规则系统移植性进一步加强,在生产线上也难以推动产品的更新换代周期。结论是,不存在规则系统移植性太差不堪使用的问题。这就是偏见重复一千遍转化成集体催眠下的反真理而已。 问题的另一方面是,机器学习是否真地移植性那么强,象吹嘘的那么神,系统无需变化,只要随着新数据重新训练一下就生成一个新领域的系统?其实,谈何容易。首先,新数据哪里来,这个知识瓶颈就不好过。再者,重新训练的过程也 绝不是简单地按章办事即可大功告成。一个过得去的系统常常要经历一个不断调控优化的过程。 说到这里,想起一段亲历的真实故事。我以前拿过政府罗马实验室10多个小企业创新基金,率领研发组开发了一个以规则系统为主(机器学习为辅,主要是浅层专名标注那一块用的是机器学习)的信息抽取引擎。我们的政府资助人也同时资助另一家专事机器学习的信息抽取的团队(在美国也是做机器学习很牛的一家),其目的大概是鼓励竞争,不要吊死在一棵树上。不仅如此,罗马实验室还选助了一家系统集成商开发一套情报挖掘应用软件,提供给政府有关机构试用。这套应用的内核用的就是我们两家提供的信息抽取引擎作为技术支撑。在长达四年的合作中,我们与集成商有过多次接触,他们的技术主管告诉我,从移植性和质量改进方面看,我们的规则引擎比另一家的机器学习引擎好太多了。 我问,怎么会,他们有一流的机器学习专家,还常年配有一个手工标注的团队,引擎质量不会太差的。主管告诉我,也许在他们训练和测试的数据源上质量的确不错,可是集成商这边是用在另一套保密数据(classified data)上,移植过来用效果就差了。我说,那当然,训练的数据和使用现场的数据不同类型,机器学习怎么能指望出好结果呢,你们该重新训练(re-training)啊。你们用他们引擎五年来,重新训练过几次,效果如何?主管说:一次也没有重新训练成过。重新训练,谈何容易?我问:你们不可以组织人自己标注使用领域的数据,用他们的系统重新训练?主管说:理论上可行,实践上步步难行。首先,要想达到最优效果 ,当然是根据我们的数据重新标注一个与引擎出厂时候大体等量的训练文本集来。可那样大的数据标注,我们根本无力做成,标注过程的质量控制也没有经验。结果是我们只标注了部分数据。理论上讲,我们如果把这批自己的数据加到引擎提供者的训练数据中,重新训练可以把系统多少拉到我们的领域来,效果总会有 提高。但是我们不是信息抽取和机器学习专家,我们只擅长做系统集成。机器学习用新旧数据混合要想训练得好,要牵涉到一些技术细节(甚至tips和tricks) 和一些说明书和专业论文上不谈的微调和小秘密。尝试过,越训练效果反而越差。我问:那怎么办?遇到质量问题,怎样解决?他说:没什么好办法。你们不同,我们只要例示观察到的错误类型,你们下一次给我们 update 引擎时基本上就已经解决了。可我们把问题类型反馈给机器学习开发者就不能指望他们可以改正,因为他们见不到这边的数据。结果呢,我们只好自己在他们的引擎后面用简单模式匹配程序打补丁、擦屁股,可费劲了。 我当时的震惊可想而知。一个被NLP主流重复无数遍的重新训练、移植性好的神话,在使用现场竟然如此不堪。学习大牛做出来的引擎在用户手中四五年却连一次重新训练都实施不了。系统成为一个死物,完完全全的黑箱子。所有改进只能靠隔靴搔痒的补丁。 总结一下,关于系统移植性,与通常流行的观点正好相反,架构合理的规则系统比起机器学习系统在实际研发和使用现场,更加具有领域移植性。架构合理指的是用语言学分析支持信息抽取的体系:一个不依赖领域的语言分析器作为基础;一个语言分析支持的依赖于领域的信息抽取器。只有后者才有移植性问题,前者是基本不随领域而变的(领域专业词典可以象用户词典那样外挂,语言学词典与规则内核可基本保持不变)。分析器做得越深入,抽取器就越简化,移植性则越强,因为快速开发领域抽取器的逻辑条件增强了。在深度分析(deep parsing)的逻辑语义基础上做抽取移植效果最佳。 最后我们以谈知识瓶颈偏见的上篇科普随笔的最后一段收尾,因为这两个偏见有很大的相交部分: 知识瓶颈的对比问题不仅仅是针对一个应用而言,而应该放在多应用的可移植性上来考察。我们知道绝大多数NLP应用的技术支持都源于从自然语言做特定的信息抽取。由于机器学习把信息抽取看成一个直接对应输入和输出的黑匣子,所以一旦改变信息抽取目标和应用方向,以前的人工标注就废弃了,作为知识瓶颈的标注工作必须完全重来。可是规则系统不同,它可以设计成一个规则层级体系,独立于领域和应用方向的语言学规则组件(parsers)以及在语言学之上的针对领域和应用的信息抽取规则子系统。结果是,在转移应用目标时候,底层的语言学组件基本保持不变,而只需要重新编写不同的信息抽取规则而已。实践证明,对于规则系统,真正的知识瓶颈在语言学组件的构建上,而信息抽取本身花费不多。这是因为前者需要应对自然语言变化多端的表达方式,把它逻辑化,而后者是建立在逻辑形式(logical form)上的规则,一条等价于底层规则的几百上千条。因此,从多应用的角度看,机器学习的知识成本最终会远远大于规则系统。 引自【 科普随笔:NLP主流最大的偏见,规则系统的手工性 】 【系列姐妹篇】 【科普随笔:NLP主流的傲慢与偏见】 【科普随笔:NLP主流最大的偏见,规则系统的手工性】 【科普随笔:NLP主流偏见之二,所谓规则系统的移植性太差】 【科普随笔:NLP主流之偏见重复一万遍成为反真理】 【置顶:立委科学网博客NLP博文一览(定期更新版)】
个人分类: 立委科普|8387 次阅读|6 个评论
【科普随笔:NLP主流最大的偏见,规则系统的手工性】
热度 5 liwei999 2013-6-22 21:11
【科普随笔:NLP主流的傲慢与偏见】 中的第一条是 : 【成见一】规则系统的手工编制(hand-crafted)是其知识瓶颈,而机器学习是自动训练的(言下之意:因此没有知识瓶颈)。 NLP(Natural Language Processing)主流对规则系统和语言学家大小偏见积久成堆,这一条可以算是万偏之源。随便翻开计算语言学顶级会议的论文,无论讨论什么语言现象,为了论证机器学习某算法的优越,在对比批评其他学习算法的同时,规则系统大多是随时抓上来陪斗的攻击对象,而攻击的理由往往只有这么一句话,规则系统的手工性决定了 blah blah(“其难以开发”, “其不能 scale up”,“其效率低下”,“其不鲁棒”,等等),或者干脆不给具体理由,直接说“文献【1】【2】【3】尝试了这个问题的不同方面,但这些系统都是手工编制的”,一句话判处死刑,甚至不用讨论它们的效果和质量。手工性几乎成了规则系统的“原罪”,编制这些系统的人因此成为学术共同体背负原罪的二等公民。 手工编制(hand-crafted)怎么了?在日常消费品领域,这是道地的褒义词,是特别的嘉奖,是批量机械化生产和千篇一律的反动,是独特和匠心的代表,是高价格理直气壮的理由。怎么到了NLP领域,突然就成了带有原罪的贬义词了呢。这是因为在NLP领域,代表主流的精算师们由于他们在NLP某些任务上的非凡成功,使得他们居功自傲,把成功无限推广和夸大,给这个community 施行了集体催眠术,让人相信机器学习是万能的。换句话说,批判手工编制的劣根性,其 隐含的前提是机器学习是万能的,有效的, 首选的。而实际情况是,面对自然语言的复杂性,机器学习只是划过了语言学的冰山一角,远远没有到主流们自觉和不自觉吹嘘的如入无人之地的万能境界。催眠的结果是不独不少语言学家以及NLP相关利益方(stake holders,如投资人和用户)被他们洗脑了,连他们自己也逐渐相信了自己编制的神话。 真实世界中,NLP 是应用学科,最终结果体现在应用软件(applications)上,属于语言软件工程。作为一个产业,软件工程领域吸引了无数软件工程师,虽然他们自嘲为“码工”,社会共同体给予他们的尊重和待遇是很高的 (Bill Gates 自封了一个 Chief Engineer,说明了这位软件大王对工匠大师的高度重视) 。古有鲁班,现有码师(coding master) 。这些 码工谁不靠手工编制代码作为立足之本呢?没听说一位明星工程师因为编制代码的手工性质而被贬损。同是软件工程,为什么计算语言学家手工编制NLP代码与其他工程师手工编制软件代码遭遇如此不同的对待。难道NLP应用比其他应用简单?恰恰相反,自然语言的很多应用比起大多数应用(譬如图形软件、字处理软件等等)更加复杂和艰难。解释这种不同遭遇的唯一理由就是,作为大环境的软件领域没有NLP主流的小环境里面那么多的傲慢和偏见。软件领域的大牛们还没有狂妄到以为可以靠自动编程取代手工编程。他们在手工编程的基础建设(更好的编程语言、编程架构和开发环境)上下功夫,而不是把希望寄托在自动编程的万能上。也许在未来的某一天,一些简单的应用可以用代码自动化来实现,但是复杂任务的全自动化从目前来看是遥遥无期的。不管从什么标准来看,非浅层的自然语言分析和理解都是复杂任务的一种。因此,机器学习作为自动编程的一个体现是几乎不可能取代手工代码的。规则系统的NLP应用价值会长期存在。 自动是一个动听的词汇。如果一切人工智能都是自动学习的,前景该有多么美妙。机器学习因为与自动连接在一起,显得那么高高在上,让人仰视。它承载着人类对未来世界的幻想。这一切理应激励自动学习专家不断创新,而绝不该成为其傲慢和偏见的理由。 在下面具体论述所谓规则系统的知识瓶颈软肋之前,值得一提的是,所谓自动是指系统的开发,不要混淆为系统的应用。在应用层面,无论是机器学习出来的系统,还是手工编制的系统,都是全自动地服务用户的,这是软件应用的性质决定的。这虽然是显而易见的事实,可确实有人被误导,一听说手工编制,就引申为基于规则系统的应用也是手工的,或者半自动的。 手工编制NLP系统是不是规则系统的知识瓶颈?毋庸讳言,确实如此。这个瓶颈体现在系统开发的周期上。但是,这个瓶颈是几乎所有大型软件工程项目所共有的,是理所当然的资源costs,不独为 NLP “专美”。从这个意义上看,以知识瓶颈诟病规则系统是可笑的,除非可以证明对所有NLP项目,用机器学习开发系统比编制规则系统,周期短而且质量高(个别的项目可能是这样,但一般而言绝非如此,下面还要详谈)。大体说来,对于NLP的浅层应用(譬如中文切词,专名识别,等等),没有三个月到半年的开发,没有至少一位计算语言学家手工编制和调试规则和至少半个工程师的平台层面的支持,是出不来系统的。对于NLP的深层应用(如句法分析,舆情抽取等),没有至少一年的开发,涉及至少一位计算语言学家的手工编制规则,至少半个质量检测员的协助和半个工程师的平台支持,外加软件工程项目普遍具有的应用层面的用户接口开发以及把开发出来的NLP引擎deploy到大数据上去的 operations 的投入,也是出不来 real life 的软件产品的。当然需要多少开发资源在很大程度上决定于开发人员(包括作为知识工程师的计算语言学家)的经验和质量。譬如让立委来开发中文系统(或英文、法文系统),就比找年轻语言学家快得多,以一当十绝不是自夸。其实,即便是10个新手,也未见得能做出立委的系统来,因为自然语言里面所牵涉到问题的复杂度不是拼时间就可以完成的。 计算语言学家编制规则系统与软件工程师编写程序没有本质不同。不过是所用的语言、形式框架和开发平台(language,formalism development platform)不同而已,系统设计和开发的测重点不同而已。 这就好比现代的工程师用所谓高级语言 Java 或者 C,与30年前的工程师使用汇编语言的对比一样,本质是一样的编程,只是层次不同罢了。 在为NLP特制的“高级”语言和平台上,计算语言学家可以不用为 memory allocation 等非语言学的工程细节所羁绊,一般也不用为代码的优化和效率而烦扰,他们的注意力更多地放在面对自然语言的种种复杂现象,怎样设计语言处理的架构和流程,怎样突破规则系统的框架与其他语言处理包括机器学习进行协调, 怎样平衡语言条件的宽窄, 怎样与QA(质量检测)协调确保系统开发的健康, 怎样保证语言学家团队编制规则的操作规范以确保系统的可持续性(data driven,unit testing,regression testing,code review,maintenability,baselines,等等等等),怎样根据语言开发需求对于现有形式框架的限制提出扩展要求,以及怎样保证复杂系统的鲁棒性等等 。一个领头的计算语言学家就是一个系统的架构师,系统的成败绝不仅仅在于语言规则的编制及其堆积,更多的决定于系统架构的合理性。不要把村干部不当干部,也不要把知识工程师(计算语言学家)不当工程师。很多人由于根深蒂固的偏见,把计算语言学家一律当作资料员,殊不知能够在NLP规则系统中统领项目的计算语言学家,绝不是只要知道某个语言的syntax这些皮毛就可以胜任的。明星工程师是软件企业的灵魂,NLP 规则系统的大规模成功也一样召唤语言工程大师。 关于知识瓶颈的偏见,必须在对比中评估。规则系统需要语言学家手工开发的资源投入,机器学习也同样需要资源的投入,不过是资源方式不同而已。真实的情况是这样的:自然语言处理需要语言学知识,把这些知识形式化是每个NLP系统的题中应有之义,机器学习绝不会自动免疫,无需知识的形式化。具体说,机器学习的知识瓶颈在于data,大量的大量的data。排除研究性强实用性弱的无监督学习(unsupervised learning),机器学习中可资开发系统的方法是有监督的学习(supervised learning)。有监督的学习能开发知识系统成为应用的前提是必须有大量的手工标注的数据,作为学习的源泉。机器学习的算法是自动的(算法的创新、调试和实现当然还是手工的,可这种手工被认为是最高级劳动,=),而语言学家的手工规则甚至系统架构则被认为是资料员的低端工作,损人与自夸,无出其右),但是大量的数据标注则是手工的(本来就有现成标注的不算,那是例外)。因此,机器学习同样面临知识瓶颈,不过是知识瓶颈的表现从需要少量的知识工程师变成需要大量的低端劳动者(懂得语言及其任务的大学生或中学生即可胜任)。马克思说金钱是一般等价物,知识瓶颈的问题于是转化为高级劳动低级劳动的开销和转换问题:雇佣一个知识工程师的代价大,还是雇佣10个大学生的代价大?虽然这个问题根据不同项目不同地区等因素答案会有不同,但所谓机器学习没有知识瓶颈的神话可以休矣。 另外,知识瓶颈的对比问题不仅仅是针对一个应用而言,而应该放在多应用的可移植性上来考察。我们知道绝大多数NLP应用的技术支持都源于从自然语言做特定的信息抽取。由于机器学习把信息抽取看成一个直接对应输入和输出的黑匣子,所以一旦改变信息抽取目标和应用方向,以前的人工标注就废弃了,作为知识瓶颈的标注工作必须完全重来。可是规则系统不同,它可以设计成一个规则层级体系,独立于领域和应用方向的语言学规则组件(parsers)以及在语言学之上的针对领域和应用的信息抽取规则子系统。结果是,在转移应用目标时候,底层的语言学组件基本保持不变,而只需要重新编写不同的信息抽取规则而已。实践证明,对于规则系统,真正的知识瓶颈在语言学组件的构建上,而信息抽取本身花费不多。这是因为前者需要应对自然语言变化多端的表达方式,把它逻辑化,而后者是建立在逻辑形式(logical form)上的规则,一条等价于底层规则的几百上千条。因此,从多应用的角度看,机器学习的知识成本最终会远远大于规则系统。 【系列姐妹篇】 【科普随笔:NLP主流的傲慢与偏见】 【科普随笔:NLP主流最大的偏见,规则系统的手工性】 【科普随笔:NLP主流偏见之二,所谓规则系统的移植性太差】 【科普随笔:NLP主流之偏见重复一万遍成为反真理】 【置顶:立委科学网博客NLP博文一览(定期更新版)】
个人分类: 立委科普|12407 次阅读|11 个评论
【科普随笔:NLP主流的傲慢与偏见】
热度 2 liwei999 2013-5-9 17:33
上篇博文 【科普随笔:NLP的宗教战争?兼论深度学习】 匆匆写就发出以后,没想到在新浪微博上一夜间有好几万点击,而平时我在新浪转发的博文最多也不到几千点击。想来一是题目比较花哨(宗教,深层学习,都是容易引起热议的 buzz words),难逃标题党嫌疑;二来内容也容易引起这个领域的争论、不屑或共鸣。 需要说明一句,那篇里面关于深度学习的notes,是信口发挥,各位不要认真,因为对于这样崭新的东西我是老外,是想当然地瞎议论,难免牵强。万一从某个角度让人看出了“道理”,那也纯粹是瞎猫撞死耗子,不足采信。 不过关于NLP过去20年两条路线的宗教式斗争,我和很多同时代人都是亲历者,这方面的每一句话都是有根据、负责任,经过深思熟虑的,有过惨痛的经历或胜利的喜悦。 虽然统计学界有很多对传统规则系统根深蒂固的偏见和经不起推敲但非常流行的蛮横结论(以后慢慢论,血泪账一笔一笔诉 :),但是机器学习的巨大成果和效益是有目共睹无所不在的:机器翻译,语音识别/合成,搜索排序,垃圾过滤,文档分类,自动文摘,知识习得,you name it 摘自 【科普随笔:NLP的宗教战争?兼论深度学习】 近来浏览几篇 NLP (Natural Language Processing) 领域代表人物的综述,见其中不乏主流的傲慢与偏见,令人惊诧。细想之下,统计学界的确有很多对传统规则系统根深蒂固的成见和经不起推敲但非常流行的蛮横结论。这些一览众山小的大牛聪明绝顶,居然如此偏见蛮横,可见宗教式思维定势的危害之深,深入骨髓,对青年学子个更是贻害无穷。(主流掌门人中也有有识之士,以后再论。)可怕的不是成见,成见无处不在。真正可怕的是成见的流行无阻。而在 NLP 这个领域,成见的流行到了让人瞠目结舌的程度。不假思索而认同接受这些成见成为常态。 因此想到立此存照一下,以后再一条一条细论。 下列成见随处可见,流传甚广,为免纷扰,就不列出处了,明白人自然知道这绝不是杜撰和虚立的靶子。这些成见似是而非,经不起推敲,却被很多人视为理所当然的真理。为每一条成见找一个相应的 crappy 规则系统的案例并不难,但是从一些特定系统的缺陷推广到对整个规则系统的方法学上的批判,乃是其要害所在。 【成见一】规则系统的手工编制( hand-crafted )是其知识瓶颈,而机器学习是自动训练的(言下之意:没有知识瓶颈)。 【成见二】规则系统的手工编制导致其移植性差,转换领域必须重启炉灶,而机器学习因为算法和系统保持不变,转换领域只要改变训练数据即可(言下之意:移植性强)。 【成见三】规则系统很脆弱,遇到没有预测的语言现象系统就会 break (什么叫 break ,死机?瘫痪?失效?),开发不了鲁棒( robust )产品。 【成见四】规则系统的结果没有置信度,鱼龙混杂。 【成见五】规则系统的编制越来越庞杂,最终无法改进,只能报废。 【成见六】规则系统的手工编制注定其无法实用,不能 scale up ,只能是实验室里的玩具。 【成见七】规则系统只能在极狭窄的领域成事,无法实现跨领域的系统。 【成见八】规则系统只能处理规范的语言(譬如说明书、天气预报、新闻等),无法应对 degraded text ,如社会媒体、口语、方言、黑话、 OCR 文档。 【成见九】规则系统是上个世纪的技术,早已淘汰(逻辑的结论似乎是:因此不可能做出优质系统)。 【成见十】从结果上看,机器学习总是胜过规则系统。 所列“成见”有两类:一类是“偏”见,如【成见一】至【成见五】。这类偏见主要源于不完全归纳,他们也许看到过或者尝试过规则系统某一个类型,浅尝辄止,然后遽下结论(jump to conclusions)。盗亦有道,情有可原,虽然还是应该对其一一纠“正”。成见的另一类是谬见,可以事实证明其荒谬。 令人惊诧的是,谬见也可以如此流行。 【成见五】以降 均属不攻自破的谬见 。譬如【成见八】说规则系统只能分析规范性语言。事实胜于雄辩, 我们开发的以规则体系为主的舆情挖掘系统处理的就是非规范的社交媒体。这个系统的大规模运行和使用也 驳斥了 【成见六】。 上述每一条都可以写一大篇或一个系列来详细论证其荒谬蛮横,描述学界主流中存在的傲慢与热昏。可是不用着急, 血泪账今后一笔一笔诉 :) 【系列姐妹篇】 【科普随笔:NLP主流最大的偏见,规则系统的手工性】 【科普随笔:NLP主流偏见之二,所谓规则系统的移植性太差】 【科普随笔:NLP主流之偏见重复一万遍成为反真理】 【其他相关篇什】 【科普随笔:NLP的宗教战争?兼论深度学习】 坚持四项基本原则,开发鲁棒性NLP系统 why hybrid? on machine learning vs. hand-coded rules in NLP 《立委随笔:语言自动分析的两个路子》 《朝华午拾:在美国写基金申请的酸甜苦辣》 《立委随笔:机器学习和自然语言处理》 【立委科普:从产业角度说说NLP这个行当】 王伟DL 不得不承认,看完这些偏见之后,我有点乱了。我同意“每一条都可以写一大篇”都可以引起大的讨论,对于是否偏,一时还难明。有些我已经不知何时“采纳”了,有些也不接受。---究竟是正是偏,也是引领方向的大问题。一方面应深入讨论,示明于众,纠偏于正时。另一方面,应采实践检验的标准以实证。 ◆ ◆ 米拉宝鉴 :确实应该展开讨论,不着急,慢慢来。所罗列的“偏见”有两类:一类是谬见,可以证明其荒谬,譬如说规则系统不能处理社会媒体,只能分析规范性语言。另一类就是“偏”见,盗亦有道,情有可原,虽然还是应该对其纠“正”。这类偏见主要源于不完全归纳,他们也许看到过或者尝试过规则系统某一个类型。 浅尝辄止,然后 jump to conclusion 【置顶:立委科学网博客NLP博文一览(定期更新版)】 原载 《W. Li T. Tang: 主流的傲慢与偏见:规则系统与机器学习》 【计算机学会通讯】2013年第8期(总第90期)
个人分类: 立委科普|5620 次阅读|3 个评论
【科普随笔:NLP的宗教战争?兼论深度学习】
热度 7 liwei999 2013-5-7 23:18
有回顾NLP(Natural Language Processing)历史的大牛介绍统计模型(通过所谓机器学习 machine learning)取代传统知识系统(又称规则系统 rule-based system)成为学界主流的掌故,说20多年前好像经历了一场惊心动魄的宗教战争。其实我倒觉得更像49年解放军打过长江去,传统NLP的知识系统就跟国民党一样兵败如山倒,大好江山拱手相让。文傻秀才遭遇理呆兵,有理无理都说不清,缴械投降是必然结果。唯一遗憾的也许是,统计理呆仗打得太过顺利,太没有抵抗,倒是可能觉得有些不过瘾,免不了有些胜之不武的失落。苍白文弱的语言学家也 太不经打了。 自从 20 年前统计学家势不可挡地登堂入室一统天下以后,我这样语言学家出身的在学界立马成为二等公民,一直就是敲边鼓,如履薄冰地跟着潮流走。走得烦了,就做一回阿桂。 NLP 这个领域,统计学家完胜,是有其历史必然性的,不服不行。虽然统计学界有很多对传统规则系统根深蒂固的偏见和经不起推敲但非常流行的蛮横结论(以后慢慢论,血泪账一笔一笔诉 :),但是机器学习的巨大成果和效益是有目共睹无所不在的:机器翻译,语音识别/合成,搜索排序,垃圾过滤,文档分类,自动文摘,知识习得,you name it 甚至可以极端一点这么说,规则系统的成功看上去总好像是个案,是经验,是巧合,是老中医,是造化和运气。而机器学习的成功,虽然有时也有 tricks,但总体而论是科学的正道,是可以重复和批量复制的。 不容易复制的成功就跟中国餐一样,同样的材料和recipe,不同的大厨可以做出完全不同的味道来。这就注定了中华料理虽然遍及全球,可以征服食不厌精的美食家和赢得海内外无数中餐粉丝,但中餐馆还是滥竽充数者居多,因此绝对形成不了麦当劳这样的巨无霸来。 而统计NLP和机器学习就是麦当劳这样的巨无霸:味道比较单调,甚至垃圾,但绝对是饿的时候能顶事儿, fulfilling,最主要的是 no drama,不会大起大落。不管在世界哪个角落,都是一条流水线上的产品,其味道和质量如出一辙 。 做不好主流,那就做个大厨吧。做个一级大厨感觉也蛮好。最终还是系统说了算。邓小平真是聪明,有个白猫黑猫论,否则我们这些前朝遗老不如撞墙去。 就说过去10多年吧,我一直坚持做多层次的 deep parsing,来支持NLP的各种应用。当时看到统计学家们追求单纯,追求浅层的海量数据处理,心里想,难怪有些任务,你们虽然出结果快,而且也鲁棒,可质量总是卡在一个口上就过不去。从“人工智能”的概念高度看,浅层学习(shallow learning)与深层分析(deep parsing)根本就不在一个档次上,你再“科学”也没用。可这个感觉和道理要是跟统计学家说,当时是没人理睬的,是有理说不清的,因为他们从本质上就鄙视或忽视语言学家 ,根本就没有那个平等对话的氛围(chemistry)。最后人家到底自己悟出来了,因此近来天上掉下个多层 deep learning,视为神迹,仿佛一夜间主导了整个机器学习领域,趋之者若鹜。啧啧称奇的人很多,洋洋自得的也多,argue 说,一层一层往深了学习是革命性的突破,质量自然是大幅度提升。我心里想,这个大道理我十几年前就洞若观火,殊途不还是同归了嘛。想起在深度学习风靡世界之前,曾有心有灵犀的老友这样评论过: To me, Dr. Li is essentially the only one who actualy builds true industrial NLP systems with deep parsing. While the whole world is praised with heavy statistics on shallow linguistics, Dr. Li proved with excellent system performances such a simple truth: deep parsing is useful and doable in large scale real world applications. 我的预见,大概还要20年吧(不是说风水轮流转20年河东河西么),主流里面的偏见会部分得到纠正,那时也不会是规则和知识的春天重返,而是统计和规则比较地和谐合作。宗教式的交恶和贬抑会逐渐淡去。 阿弥陀佛! 【相关篇什】 【立委随笔:文傻和理呆的世纪悲剧(romance tragedy)】 ZT: 2013突破性科学技术之“深度学习” 【置顶:立委科学网博客NLP博文一览(定期更新版)】
个人分类: 立委科普|12223 次阅读|8 个评论

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-6-2 08:36

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部