1 层对话像这样:
问:今天上海空气质量如何?答:空气指数 135
问:北京呢?答:空气指数 356
更高级的还可以有 2 层对话:
问:帮我在上海订一个今晚的酒店。答:好,在帮您预订
问:空气质量如何?答:空气指数 135
问:北京呢?答:空气指数 356
Q6:那聊天式的呢?
A:这种问题的答案通常是开放式的,比如说,问 “你在干嘛呢?”。
这种回答可以是事先人为设定好的规则,常见于一般的寒暄,用户会发现重复问 机器人 同样的问题,每次答案可能不同,比如 “我在陪你聊天啊”、“不告诉你”、“你猜” 等等,但问的次数多了就开始有重复了。
这种回答也可以是从巨大的真人对话库中进行搜索得来的,返回出现概率最大的回答。比如说,可以搜索同义的问题,如 “你干啥呢?”,“你弄啥咧?”,然后发现排名最多的回答是 “闲着”、“你猜”、“不告诉你”,那机器就会返回这些回答。
一般情况下,这两种方式在具体的产品中都会使用。具体到小冰,主要是使用的后者,对话库来源主要是在网络上爬取的(直接调用 MSN 信息可能会涉及隐私问题)。考虑到返回结果较随机,对其的二次理解较为困难,这类聊天机器人通常都是不含上下文理解的。
Q7:结合前面讲的语音识别一起总结一下?
A:语音识别,就是一个积攒数据,进行统计的过程,一个劳动密集型的活儿。语义理解,不管是命令式的,还是聊天式的,除非可获取优质聊天记录资源(世界上有这样数据资源的公司就那么几家,当然我也见过有人花钱买人过来陪机器人聊天的),不然就是人工制定规则的事儿,又是一个劳动密集型的活儿。工作量越大,机器人就显得越聪明。从公司维度来说,有限场景下,小公司深耕细作,有机会比大公司更好;大公司则能背靠资源,在更多场景下有所覆盖。
再用最精炼的话总结一下——多少人工,多少智能;就算聊天,也不智能。一般的壁垒就是工作量!语音是收集素材的工作量;语义是制定规则的工作量;在有限场景范围内,小公司在产品上比大公司没有劣势。
最后再提一句,机器学习 = 统计。
Q8:再说说图像识别?
A:嗯,我们先说最普通的图像识别是怎么做的。这里面我要盗用下 Andrew Ng 大神在 UCLA 的一次 talk 的 PPT(视频截图)。
人类在看一个物体时,大部分情况其实主要是看它的轮廓(并不是颜色或其他),所以我们希望机器也这么做。拿摩托车举例。第一步,通过图像处理算法,把摩托车的轮廓提取出来(美图秀秀类图像处理工具都有这功能)。第二步,我们把一幅图分成四份,分别统计 0°,45°,90°,135°四种的边的多少,然后把这些数字列在一起,我们称之为 “特征值”。这个特征值里面包含很多的信息,比如说,右下角的图中一般都有轮子,轮子是圆形的,也就是说,各个方向的边,应该都存在且比例相当;而右上角的图中,一般都有把手,所以某一个方向的边会比较多。通过这些数字的内在的关系,机器进行摩托车的判别。这样的方法看起来有些简单粗暴不合理,但目前许多机器确实就是这么识别的。