新闻动态
NEWS CENTER
NEWS CENTER
2020-04-05
如果你细心看对话的内容你会发现,ELIZA经常在复述用户说过的单词。它的实现方式很聪明,主要是采用一种“将计就计”的策略,将用户的陈述重新表达为问题并返回给用户。
尽管这些对话都是通过规则匹配方式实现的,但是一些巧妙的关键词提取可以让它比较自然地接话,让用户觉得眼前的这个“人”具有共情能力。ELIZA甚至被用来假冒过心理医生,并且有许多和它对话过的人都不相信这只是一个程序。
在我看来,虽然ELIZA只是浑水摸鱼,重复叙述者所说的内容,但是它的出现,对后续聊天机器人的设计思路有很大的启发。通过规则匹配不能让机器人很好地引导交互对话,但是却能够满足任务式对话的需要。
时间来到了1995年,一名叫Richard S. Wallace的科学家观察到一个现象。他发现组成人们日常谈话主题的句子不过几千句,如果他做一个对话机器人,想要覆盖所有的日常用语,甚至包括一些不常用的话语,大概只需要4万个回答就足够了。只要将这些问答结果全部输入到程序中,那么它就可以回应95%以上的日常对话了。
说干就干, 于是诞生了一款名为“ALICE”的聊天机器人。我们看看这款机器人的对话过程:
这次的对话就更加像是两个真人之间的交流了,而且也看不到ALICE在复述对话者的内容,而是尝试与之交谈,甚至在言语中透露出一点小个性出来。
ALICE就像是ELIZA的加强版,使用更大的语料库,使用更先进的关键词匹配技术,甚至是好几个答案对应一个问题,可以随机显示或者根据逻辑判断,选出合适的答案。这样就显得回答不会那么死板,更像是真人之间的交流。实现思路虽然很简单,但这种方式已经能够满足大多数任务型对话的场景。
自从苹果公司在2011年发布Siri以后,多个智能个人助理(IPA)出现并且进入市场,比如谷歌助手、微软的Cortana以及亚马逊的Alexa等等。
除了物料库、匹配逻辑的进一步升级以外,这类个人助理还可以访问手机里的多个数据源,如音乐、电影、日历、电子邮箱和个人资料。因此它们可以提供不同场景下的大量服务,例如播放音乐、查天气、拨打电话、发短信等等,都是这类IPA的基操。
虽然以上对话看起来已经很智能了,但总觉得差了点什么。Siri仅仅是在接收指令,然后给出反馈,其实也没有理解我们在说什么,甚至很难去分析我们的要求。
当我询问Siri最近有什么好看的电影时,它没办法直接回答,只能根据我的问题到网路上检索然后反馈结果。虽然这种交互已经能够满足我们日常大部分任务式对话,但是距离我们所想的“智能”好像还是有一些距离。
为什么让机器理解语言这么难?主要是因为以下两方面的原因:
1.一方面是因为语言的规律错综复杂,不是用简单的统计就可以计算出概率的。不同的语言之间语法结构不用,并且同一种语言对于同一个意思有不同的表达方式,同一个表达也可能有不同的理解。我们去建立一个语料库相当于重新为人类语言建立一个百科全书,工作量十分巨大;
2.另一个方面的原因是使用语言有特定的语境。语言是在特定的环境中,为了生活的需要而产生的,所以特定的环境必然会在语言上打上特定的烙印。
例如“百度”原本是一家企业的名字,但是经过该企业的市场教育后,大家想说“搜索一下”时,很自然就说成了“百度一下”。这时候这个名词就赋予了一个新的特定动作,这些都是让计算机难以理解的表达方式。
以上原因都说明,仅仅让计算机能够理解人类的语言已经是一件非常具有挑战性的事情。如果我们用统计的方式去实现“理解”,让计算机通过配对的方式计算适合输出的语句,由于语言的不规律性和组合性会产生非常多的组合方式,显然是不太现实的。
计算机能够做的事情就是将语言通过数学的形式表现出来。但是到目前为止,语言的组合到底能不能用数学模型去刻画还没有一个清晰的答案。
自然语言本身是人类对世界各种具象以及抽象事物以及事物之间的联系和变化的一套完整的符号化描述,它是简化了底层物理感知的世界模型。这意味着自然语言处理的输入是离散的抽象符号,它直接跳过了计算机感知世界的过程,直接关注以现实世界为依托的各种抽象概念、语义和逻辑推理。
人工智能的终极挑战是理解人类的语言,因此我们需要创造更接近人类大脑思考方式的模型才能模拟语言如何表达。同时也因为这个原因,自然形成了自然语言处理这个领域。我们称之为自然语言处理而不是自然语言理解,因为真正做到让计算机理解语言实在是太困难。
虽然要“理解语言”比较困难,但如果只是想“处理语言”,还是有方法的。
目前业界主流处理语言的方法是:循环神经网络+长短时记忆网络(RNN+LSTM),此处不展开讨论算法的原理,感兴趣的同学买一本《100个案例搞懂人工智能》看看。
这套解决方案,主要是为了解决上述提到的语境与语言规律性的问题。回想我们初中做英语考试的时候,肯定也遇到过这种情况,几个单词可能不认识,但是联系上下文看就能理解这句话大概是什么意思了。LSTM就是这样的设计思路,让算法能够结合上下文的语境去判断这句话是在说什么。
关于LSTM的原理,在知乎上天雨栗同学的解释非常直观,我给大家简单理一理。拿一个简单的情感分类问题为例: