认知思考沉迷:如何调试黑箱?

2018-10-15  本文已影响15人  菠萝头说

我8个多月大的儿子,今天让我想到了一个黑箱问题,他究竟发生了什么事儿,待会儿揭晓。

0. 黑箱是什么?

黑箱,是一个形象的比喻。指一个事物,你从外面看不透里面有什么,正在发生什么,发生过什么,就像正看着一个黑箱一样。

黑箱并不是完全不可知,黑箱有两个孔:输入口和输出口。

你往输入口里,放入一些信息,那么输出口就可能出来一些别的东西,也有可能不出来。

你发现放入的信息不同,出来的东西可能不同,但偶尔也可能相同。

于是,在黑箱之外的你,一定对黑箱充满好奇。在好奇心驱使下,你想发现黑箱的内在规律,甚至破解黑箱的内部构成。

1. 中文屋子

中文屋子,是历史上一次经典实验,用来验证图灵测试的失效。

先看什么叫图灵测试?我们结合刚刚的黑箱定义来说明一下。

把一台机器放入一个黑箱,允许一个人在黑箱之外,往黑箱输入口里提问题,那么黑箱输出口里会回应问题。黑箱外的人可反复提出多个问题。

如果超过30%的黑箱外测试者,都不能分清黑箱里,到底是一个人还是一台机器回答的,那么原本黑箱里的机器,就算拥有人工智能,也就算说,通过图灵测试。

中文屋子,算是对黑箱的一次调试,并且反驳图灵测试的结论。

中文屋子是什么?

这个黑箱就叫中文屋子,里面有一个只会说英文的人,一本中英翻译书,一些草稿纸。无论黑箱(中文屋子)的输入口,放入中文纸条。
这个只会英文的人将中英文工具翻译成英文,然后用英文作答,最后用中英文工具翻译成中文,放入输出口。

就这样,黑箱外的人看到输入中文,输出中文,以为里面有一个懂中文的人或者机器。

实际没有,中文屋子骗了他们。

2. 黑盒测试

在计算机软件行业的作业流程中,有个职位叫测试工程师。

测试工程师的岗位要求,就是对研发出来的软件进行各种测试,以期待发现缺陷(Bug),然后交还给开发去修正。

测试的工作有很多方法论,其中一种便是「黑盒测试」。与黑箱概念一致:把软件看成是一个黑箱,当某个输入发生时,有符合期待的输出,否则就要算软件出现了bug。

之所以输出要「符合期待」,是因为程序按照产品设计的,黑箱只是封装了具体的实现内容,但输入、输出结果是固定的。

暂且,把这类黑箱称之为「固定黑箱」。

2. Hey Siri

苹果的Siri,智能语音助手。你说出的任何语言,都会通过Siri上传到某云服务器,云服务器分析后,综合给出相应的解答,输出返回到你的手机。

在这个过程中,Siri本身就是一个黑箱,因为我们不知道Siri是依据什么回应的。

不同的人,不同的手机,问出同样一个问题,回答还各不相同。就算是同一个人,同一部手机,不同的时间,问出同样的问题,依然回答不同。

暂且,把这类黑箱称之为「可变黑箱」。

3. 无反馈黑箱

好了,我家8个月大的小宝儿上场了,他演绎了黑箱的一种最高级模式,「无反馈黑箱」。

最近一段时间,小宝儿睡得很不好,我们换过奶瓶,喂过水,但晚上睡觉依然莫名哭闹。我们也不知道怎么办。

上周末,家里停水让我们把小宝儿转移到外婆家。周末两天,在外婆家的睡觉却非常安稳。

一分析,外婆家的床比较软,而且有床垫,睡起来比较舒服。赶上这两天气温骤降,温度低的时候,加盖的不如加垫的有用。

大人都知道的道理,可我们一直没为小宝儿想出办法,最大的原因是:

小宝儿无法跟我们交流,他只能用哭闹表示不开心,但不能告诉我们具体哪里不开心。

如果小宝儿是黑箱,暂且,把这类黑箱称之为「无反馈黑箱」。

4. 调试黑箱的技巧

固定黑箱,可变黑箱,无反馈黑箱,一个比一个难度级别大。然而,这些级别通常都是有一定的套路。

第. 正向功能调试。按照需求、习惯、自然反射行事,把所有应该有的功能都调试到,争取符合期望。

第二. 单一变量调试。遇到复杂的问题,先将问题分解,对应上我们的调试策略,重复试,直到发现真理。

第三. 逆向调试。即反向调试,与期待的方向相反,来看黑箱的反馈。记住,不要调试小宝儿,否则后果自负。

第四,边界值调试。如果黑箱只能满足从0到1的数值范围,那就应该试试大于1的数字,或者小于0的数字,然后看黑箱的反馈。

第五,组合调试。综合以上所有调试方法,反复、随机、组合的调试。

5. 终章

周末结束,从外婆家回自己家,换上软软的、厚实的床垫,且看今晚小宝儿的反应。哦,对了,这算单一变量测试。

: end )

上一篇下一篇

猜你喜欢

热点阅读