
有监督的NLP
在前面的章节中,我们介绍过有监督学习的方法,过去几年来,几乎所有基于深度学习的NLP算法模型都使用了这种方法。
“有监督”意味着在AI模型的学习阶段,每一次输入时都要提供相应的正确答案。(注意,这里的“监督”并不是指简单地把确切的规则“编程”到AI系统中,正如第一章所介绍的,这样做是行不通的。)成对的标注数据(输入和“正确的”输出)被不断“投喂”给人工神经网络,用于AI模型的训练,然后AI模型学习生成与输入相匹配的输出。还记得前面提过的用AI识别带有猫的图片的例子吗?通过上述有监督的深度学习,AI将被训练得可以输出“猫”这个标签。
对于与自然语言相关的任务,目前也有一些标注好的现成数据集,可以用来“投喂”给有监督的NLP模型。例如,联合国等机构组织建立的多语种翻译数据库,就是有监督的NLP模型的天然训练数据源。AI系统可以利用这些数据库中成对的数据进行训练,例如,把上百万个英语句子,以及与其一一对应的由专业翻译人员翻译好的上百万个法语句子,作为模型的输入―输出训练数据。通过这种方式,有监督学习的方法还可以用于语音识别(将语音转换成文字)、语音合成(将文字转换成语音)、光学字符识别(将手写体或图片转换成文字)。在处理这类自然语言方面的具体识别任务时,有监督学习非常有效,AI的识别率超过了大多数人类。
除了自然语言识别,还有一类更复杂的任务——自然语言理解。只有理解了人类语言所表达的“意图”,计算机才能采取下一步行动。例如,当用户对智能音箱说“放一首巴赫”时,智能音箱首先需要理解用户要表达的真正意图——播放作曲家塞巴斯蒂安·巴赫的一段古典音乐,而不是字面意义上一首叫《巴赫》的曲子——它才能对用户的指令做出正确回应。再如,当买家对电商平台的智能客服机器人提出“我要退款”时,进行对话的机器人必须先明白买家的意图,才能指导买家申请退货,然后退还买家的货款。但是,人类表达“退款”这个意图的方式多种多样,比如会说“我要退货”“这台烤面包机出故障了”,等等。因此,有监督的NLP模型的训练数据应尽量穷尽针对同一种意图所可能使用的尽可能多的表达方式,但是只有经过人工标注的数据才能训练出有效的语言理解模型。
在自然语言处理领域,有监督学习催生出一个新的职业——数据标注,这个职业在过去20年里不断发展壮大,甚至成了新的就业方向。举个例子,我们可以看一段在航空公司的定制化客户服务系统中,经过人工标注的有监督的NLP模型的训练文本:
【预订飞机航班】我想要上午8:38【起飞时间】从北京【出发地】起飞,上午11:10【抵达时间】落地上海【目的地】。
这只是一个非常简单的句子。如果句子所表达的含义更复杂,细节信息更丰富,文本标注的工作量就会加大,人工成本也会随之提高。事实上,哪怕在“预订航班”这个单一领域,我们都无法保证能够考虑到并收集到所有可能的数据变量。因此,在过去的很多年里,即便是单一领域的自然语言理解应用,也需要投入大量的人工标注成本。而更实际的难题在于这种方法无法广泛使用,无法实现通用性的自然语言理解。因为一方面不可能有这样的通用性应用,另一方面也无法进行通用性的数据标注。退一步来说,即便上述问题可以解决,试图给世界上所有的语言数据都打上标签也不现实,因为其背后所需要耗费的时间和成本几乎是无法想象的。