我:
我虽然被封了个小公司 Chief Scientist 的职称,实在不敢称科学家了,因为早已脱离 academia,也没真正靠科学吃饭:这个金饭碗太沉,端不起。这倒不是谦虚,也不是自我矮化,因为科学家和技术人在我心中难分高低。作为一线技术人,并没觉得自己比一流科学家逊色。
不说生物,说说NLP。可重复性是科学的根本,否则算命先生和跳大神的也都是科学家了。针对一个单纯的任务,或一个纯粹的算法,在 community 有一个标注测试集的时候,这个可重复性似乎是理应有所要求的,虽然具体怎么验证这个要求,验证到哪一步才被公认有效,似乎远非黑白分明。
我的问题是,如果是一个复杂一些的系统,譬如 deep parser,譬如 MT,特别是在工业界,有可能做到可重复吗?不可重复就不能认可吗?且不说不可重复是保持竞争优势的必要条件,就算一家公司不在乎 IP,指望对手能重复自己的结果,也是难以想象的事儿 -- 除非把全盘源代码、原资源,包括所有的词典,原封不动交给对方,而且不许configure,亦不允许改动任何参数,否则怎么可能做到结果可以被重复呢?
毛:
凡是“构成性要素”,必须在一定的误差范围内可重复。要不然就属于商业秘密而不属于科学发现了。
我:
所以 key 就是看你吃哪一碗饭。吃学术的饭,你就必须过这一关。怎么拿捏是 community peer reviewers 的事儿。
毛:
还是那句话,你不能把什么好处都占了。
我:
吃工业的饭,你只要你的黑箱子 performs 就ok了。
这就使得学术界只能就“构成性要素”而发表,做一个 integrated 系统是不讨好的。这个从科学上是有道理的,但是很多做学术的人也不甘心总猫在象牙塔里,为他人做嫁衣裳,他们也想做实用系统。integrated 的实用系统几乎肯定无法由他人重复出结果来,因为变数太多,过程太复杂。
毛:
那倒也不一定,当年的 unix 就是系统。但是在同样的配置条件下得到的结果应该在一定的误差范围之内。
我:
换句话说吧,别说他人,就是自己也不见得能重复出自己的结果来。如果重起炉灶,再做一个 parser 出来,结果的误差是多少才能算容许的范围呢?就算基本设计和算法不变,相信是越做越好,但结果的误差在做成之前是很难预测的。这与在新的开发现场所能调用的资源等因素有关。
毛:
对呀,所以别人也不至于吹毛求疵,大家会有个共识的。像Parser一类,如果是对自然语言,那应该是很宽的。但如果是形式语言、编程语言,那就要求很严了。
我:
说的是自然语言。十几年前,我还在学术殿堂边徘徊,试图讨好主流,分一杯羹,虽然明知学界的统计一边倒造成偏见流行(【科普随笔:NLP主流的傲慢与偏见】)积久成疾,我辈压抑,同行如隔山,相互听不见。直到有一天大彻大悟,我到底吃的是谁的饭,我凭的什么在吃饭?原来我的衣食父母不是科学,更不是主流。我与隔壁的木匠阿二无异,主要靠的是手艺吃饭,靠的是技术创新的绝技,而不是纯科学的突破。认清这一点,也就避免了以卵击石,长他人威风,灭自己志气。说到底,在业界,老板不在意你在哪一条路线上,客户更不在乎你有没有追赶潮流,白猫黑猫,一切由系统说话。你有你的科学突破,我有我的技术绝技,到了应用现场,还要看谁接地气,有没有硬通货呢。系统结果可能难以重复,客观测量却并非难事儿。(李维)
吃科学的饭,还是技术的饭? |