自然语言处理领域(Natural Language Processing,NLP)
1950年,计算机之父------艾伦·图灵(Alan Turing)介绍了一项测试,以检查机器是否能像人类一样思考,这项测试称为图灵测试。
它具体的测试方法是构建一个计算机对话系统,一个人和被测试的模型互相进行对话,如果这个人无法辨别对方究竟是机器模型还是另一个人,就说明该模型通过了图灵测试,计算机是智能的。
这个图灵测试就属于自然语言处理(后面简称 NLP)领域的范畴,那什么是自然语言处理呢?
所谓自然语言,就是人们日常生活中接触和使用的中文、英语、日语等。自然语言处理是指,让计算机来理解并正确地操作自然语言,完成人类指定的任务。
长久以来,图灵测试都被学界认为是难以攀登的巅峰。正因如此,NLP 也被称为人工智能皇冠上的明珠。
ChatGPT
NLP 中常见的任务包括文本中的关键词抽取、文本分类、机器翻译等等。NLP 当中还有一个非常难的任务:对话系统 ,也可被笼统称为聊天机器人。
现在,ChatGPT 已经远远超出了聊天机器人这个范畴,它能够根据用户的指令写文章,回答技术问题,做数学题,做外文翻译,玩文字游戏等等。所以,某种程度上,ChatGPT 已经摘下了这颗皇冠上的明珠。
ChatGPT 的工作形式非常简单,用户向 ChatGPT 提问任何一个问题,模型都会做出解答。用户的输入和模型的输出都是文字形式。
一次用户输入和一次模型对应的输出,叫做一轮对话。可以把 ChatGPT 的模型抽象成如下流程:
ChatGPT 也可以回答用户的连续提问,也就是多轮对话,多轮对话之间是有信息关联的。其具体的形式也非常简单,第二次用户输入时,系统默认把第一次的输入、输出信息都拼接在一起,供 ChatGPT 参考上次对话的信息。
如果用户与 ChatGPT 对话的轮次过多,一般来讲模型仅会保留最近几轮对话的信息,此前的对话信息将被遗忘。
ChatGPT 在接收到用户的提问输入后,输出的文字并不是一口气直接生成的,而是一个字、一个字生成的,这种逐字生成,即生成式(Generative) 。如下图所示。
ChatGPT 与 NLP 的发展历程
可以试想一下,如果让你来实现一个 ChatGPT 模型,有哪些思路和方法呢?
事实上,大致有两种策略,基于规则 的 NLP 和基于统计的 NLP。
自从 ChatGPT 开始,NLP 领域又进入了强化学习时代,即基于强化学习的 NLP。
基于规则的 NLP
基于规则的 NLP,是指使用人工编写的规则来处理自然语言。
例如,我们可以基于以下规则设计一个对话系统:
规则 1:当模型接收到用户的问句后,把问句中的"吗"字去掉,"?"换成"。"
规则 2:把"你"换成"我","我"字换成"你"。
由此,我们可以根据这些规则,制作一个对话模型,开启对话模式了。
js
用户:Hello。
模型:Hello。
用户:你是 ChatGPT吗?
模型:我是 ChatGPT。
以上是一个基于规则的非常粗浅的对话系统示例。
如果用户问题太复杂了怎么办?问题中没有加问号怎么办?我们需要不断编写出各种规则来覆盖上面的特殊情况。这说明基于规则存在几个明显的缺点:
- 在自然语言中,任何规则都无法完全覆盖需求,因此在处理复杂的自然语言任务时效果不佳;
- 规则无穷无尽,靠人力来完成将是一项天量的工作;
- 本质上并没有把自然语言处理的任务交给计算机来完成,依然是人在主导。
基于统计的 NLP
基于统计的 NLP 则是利用机器学习算法从大量的语料库中学习自然语言的规律特征。
这种方法不需要人工编写规则,规则主要通过学习语言的统计特征,暗含在模型中。换句话说,基于规则的方法中,规则是显性的,人工编写的;基于统计的方法中,规则是隐形的,暗含在模型参数中,由模型根据数据训练得到。
在近年来这种模型发展迅速,ChatGPT 就是其中一种。它们的处理方式主要如下:
在 ChatGPT 中,主要采用预训练( Pre-training ) 技术来完成基于统计的 NLP 模型学习。
它的重点在于,根据大规模原始语料学习一个语言模型,而这个模型并不直接学习如何解决具体的某种任务,而是学习从语法、词法、语用,到常识、知识等信息,把它们融汇在语言模型中。直观地讲,它更像是一个知识记忆器,而非运用知识解决实际问题。
预训练的好处很多,它已经成为了几乎所有 NLP 模型训练的必备步骤。
基于统计的方法远远比基于规则的方法受欢迎,然而它最大的缺点是黑盒不确定性,即规则是隐形的,暗含在参数中。例如,ChatGPT 也会给出一些模棱两可、不知所云的结果。
所以,就有了基于强化学习的 NLP。
基于强化学习的 NLP
ChatGPT 模型是基于统计的,然而它又利用了新的方法,带人工反馈的强化学习(Reinforcement Learning with Human Feedback,RLHF) ,以此取得了卓越的效果,把 NLP 的发展带入了一个新阶段。
几年前,Alpha GO 击败了柯洁。这几乎可以说明,强化学习如果在适合的条件下,完全可以打败人类,逼近完美的极限。当前,我们依然处在弱人工智能 时代,但局限于围棋这个领域,Alpha GO 就是一个强人工智能 ,它的核心就在于强化学习。
所谓强化学习,就是一种机器学习的方法,旨在让智能体 (Agent,在 NLP 中主要指深度神经网络模型,就是 ChatGPT 模型)通过与环境的交互来学习如何做出最优决策。
这种方式就像是训练一只狗(智能体)听哨声(环境)进食(学习目标)。一只小狗,当听到主人吹哨后,就会被奖励食物;而当主人不吹哨时,小狗只能挨饿。通过反复的进食、挨饿,小狗就能建立起相应的条件反射,实际上就是完成了一次强化学习。
而在 NLP 领域,这里的环境要复杂得多。针对 NLP 模型的环境并非真正的人类语言环境,而是人为构造出来的一种语言环境模型。因此,这里强调是带人工反馈的强化学习。
基于统计的方式能够让模型以最大自由度去拟合训练数据集;而强化学习就是赋予模型更大的自由度,让模型能够自主学习,突破既定的数据集限制。ChatGPT 模型是融合统计学习方法和强化学习方法的,它的模型训练流程如下图所示:
总结
实际上,基于规则、基于统计、基于强化学习这三种方式,并不仅仅是一种处理自然语言的手段,而是一种思想。一个解决某一问题的算法模型,往往是融合了这三种解决思想的产物。
如果把计算机比作一个小孩,自然语言处理就像是由人类来教育小孩成长。
基于规则的方式,就好比家长 100% 控制小孩,要求他按照自己的指令和规则行事,如每天规定学习几小时,教会小孩每一道题。整个过程,强调的是手把手教,主动权和重心都在家长身上。对于 NLP 而言,整个过程的主动权和重心,都在编写语言规则的程序员、研究员身上。
基于统计的方式,就好比家长只告诉小孩学习方法,而不教授具体每一道题,强调的是半引导。对于 NLP 而言,学习重心放在神经网络模型上,但主动权仍由算法工程师控制。
基于强化学习的方式,则好比家长只对小孩制定了教育目标,比如,要求小孩能够考试达到 90 分,但并不去管小孩他是如何学习的,全靠自学完成 ,小孩拥有极高的自由度和主动权。家长只对最终结果做出相应的奖励或惩罚,不参与整个教育过程。对于 NLP 来说,整个过程的重心和主动权都在于模型本身。
NLP 的发展一直以来都在逐渐向基于统计的方式靠拢,最终由基于强化学习的方式取得完全的胜利,胜利的标志,即 ChatGPT的问世;而基于规则方式逐渐式微,沦为了一种辅助式的处理手段。ChatGPT 模型的发展,从一开始,就在坚定不移地沿着让模型自学的方向发展进步着。