程序员:我只想买件没有格子的衬衫,怎么就这么难?

晓查 发自 凹非寺

量子位 报道 | 公众号 QbitAI

说到程序员着装,大家会想到什么?

自然是格子衬衫了。

但一个外国程序员,终于对此厌倦,他不想再穿格子衬衫或条纹衬衫,于是他打开了亚马逊网站,输入了关键词“无条纹衬衫”(shirt without stripes),结果却是这样的:

为什么几乎全部都是带条纹的衬衫啊?

“一定是我打开的姿势不对!”

或者只是亚马逊的自然语音处理(NLP)技术不够好吧。

他又接着尝试了谷歌和微软的搜索引擎,结果却还是这样:

反正结果就算不是衬衫,也一定带条纹,甚至还搜出了球衣。

如果把关键词换成“没有格子的衬衫”(shirt without plaid),结果还是让人失望。

是不是感到这个世界满满的恶意?程序员想买个没有格子的衬衫怎么就这么难!

接着,这位程序员把搜索结果上传到GitHub,短短十个小时就获得了300星。

更让人没想到是,这件小小的事情影响范围还在扩大,几个小时就在Hacker News上带了400多条评论。

看来有相同槽点想吐的人,并不少。

并且事情也“闹大”了。

大家发现,何止搜索引擎,现在你只需一个“不”就能让AI助手变“人工智障”。

打开你的Siri,和它说“不要告诉我天气”,但Siri还是义无反顾地告诉了你天气状况。

那么问题来了:为什么AI会犯如此低级的错误呢?

人工智能的盲区

无论是搜索商品图片还是询问天气,加上了一个“不”或“无”字,就变得复杂起来。

这个“不”到底是哪个部分做出否定,可能人类也说不清楚。

这类问题属于“归因”问题,可能是统计学方法不能解决的,这就触及到机器学习的盲区了。

在上面的问题中,处理一个“不”还算比较清晰,但是在一些对准确性有要求的领域,会有很大的问题。

比如“无癌症证据”,到底是得到了没得癌症的证据,还是根本没有证据呢?

这还算是比较简单的,人类语言中还有很多双重否定,有时候连人自己表达的时候都会犯错。

处理这类问题,不能使用过去的统计方法,而需要更多关注语法内在的逻辑性,语言学中的乔姆斯基学派的研究者就是这么认为。

但是涉及此类算法的研究很少,甚至很多从事算法的人对此并不感兴趣。

一些从事机器学习研究的大型公司,他们研究的算法具有很大的适用性,但是在归因等情况下,他们的语言模型可能会失败。

而且神经网络尚未显示出对此问题的改进。在说“不”这个问题上,各家的AI都不能通过图灵测试,甚至显得愚蠢。

所以是不是“另有隐情”?

技术不行还是SEO捣乱

是不是因为谷歌没有在搜索引擎里用上NLP技术,所以才导致错误的结果?

实际上,谷歌去年10月就已经在英文版的搜索引擎里用上了BERT。

过去,谷歌的搜索更多的是基于单个单词的理解。

比如“2019 brazil traveler to usa need a visa”,以前的谷歌搜索会基于visa、usa、brazil这几个关键词,而英文结果里更多的是美国人咨询去巴西,所以搜索结果往往是相反的。

更新后的谷歌能够理解“to usa”的含义,才能识别正确的结果

于是这让一些网友觉得,谷歌亚马逊研究多年的NLP技术不过如此,要理解人类语言还有很长的路要走。

不过,经过努力,计算机已经能够搞清楚英文里的“无癌症证据”(No evidence of cancer、Evidence of no cancer)两者之间的差别。

当然,还有一些技术之外的因素。

任何搜索引擎都绕不开SEO和广告问题。

那些卖条纹衬衫的商家会通过各种优化手段,霸占“条纹”和“衬衫”这两个关键词的头部位置,结果导致“no”和“without”之类的关键词被忽略。

一些网友认为,是SEO的垃圾信息毁了搜索引擎,同时广告还是是谷歌搜索的重要收入来源,谷歌自己可能也无心解决——这一点自然无法妄加揣测。

不过,我们也用最大的中文搜索引擎试了试,发现也是一样的结果:

但往好的一面看,这也意味着时代之问有解了。

之前,总有人“抬杠”,在智能时代里,你无法判断跟你交流的是人类还是AI……

但现在,钥匙来了:机器是不能说“不”的。