AI学习1:什么是自然语言处理?

403 阅读9分钟

自然语言处理领域(Natural Language Processing,NLP)

1950年,计算机之父——艾伦·图灵(Alan Turing)介绍了一项测试,以检查机器是否能像人类一样思考,这项测试称为图灵测试

它具体的测试方法是构建一个计算机对话系统,一个人和被测试的模型互相进行对话,如果这个人无法辨别对方究竟是机器模型还是另一个人,就说明该模型通过了图灵测试,计算机是智能的。

这个图灵测试就属于自然语言处理(后面简称 NLP)领域的范畴,那什么是自然语言处理呢?

所谓自然语言,就是人们日常生活中接触和使用的中文、英语、日语等。自然语言处理是指,让计算机来理解并正确地操作自然语言,完成人类指定的任务。

长久以来,图灵测试都被学界认为是难以攀登的巅峰。正因如此,NLP 也被称为人工智能皇冠上的明珠。

ChatGPT

NLP 中常见的任务包括文本中的关键词抽取、文本分类、机器翻译等等。NLP 当中还有一个非常难的任务:对话系统,也可被笼统称为聊天机器人

现在,ChatGPT 已经远远超出了聊天机器人这个范畴,它能够根据用户的指令写文章,回答技术问题,做数学题,做外文翻译,玩文字游戏等等。所以,某种程度上,ChatGPT 已经摘下了这颗皇冠上的明珠。

ChatGPT 的工作形式非常简单,用户向 ChatGPT 提问任何一个问题,模型都会做出解答。用户的输入和模型的输出都是文字形式。

一次用户输入和一次模型对应的输出,叫做一轮对话。可以把 ChatGPT 的模型抽象成如下流程:

chatGPT2.png

ChatGPT 也可以回答用户的连续提问,也就是多轮对话,多轮对话之间是有信息关联的。其具体的形式也非常简单,第二次用户输入时,系统默认把第一次的输入、输出信息都拼接在一起,供 ChatGPT 参考上次对话的信息。

chatGPT3.png

如果用户与 ChatGPT 对话的轮次过多,一般来讲模型仅会保留最近几轮对话的信息,此前的对话信息将被遗忘

ChatGPT 在接收到用户的提问输入后,输出的文字并不是一口气直接生成的,而是一个字、一个字生成的,这种逐字生成,即生成式(Generative)  。如下图所示。

chatGPT4.png

NLP 的发展历程

可以试想一下,如果让你来实现一个 ChatGPT 模型,有哪些思路和方法呢?

事实上,大致有两种策略,基于规则的 NLP 和基于统计的 NLP。

自从 ChatGPT 开始,NLP 领域又进入了基于深度神经网络模型学习的时代。

基于规则的 NLP

基于规则的 NLP,是指使用人工编写的规则来处理自然语言。

例如,我们可以基于以下规则设计一个对话系统:

规则 1:当模型接收到用户的问句后,把问句中的“吗”字去掉,“?”换成“。”

规则 2:把“你”换成“我”,“我”字换成“你”。

由此,我们可以根据这些规则,制作一个对话模型,开启对话模式了。

用户:Hello。

模型:Hello。

用户:你是 ChatGPT吗?

模型:我是 ChatGPT

以上是一个基于规则的非常粗浅的对话系统示例。

如果用户问题太复杂了怎么办?问题中没有加问号怎么办?我们需要不断编写出各种规则来覆盖上面的特殊情况。这说明基于规则存在几个明显的缺点:

  1. 在自然语言中,任何规则都无法完全覆盖需求,因此在处理复杂的自然语言任务时效果不佳;
  2. 规则无穷无尽,靠人力来完成将是一项天量的工作;
  3. 本质上并没有把自然语言处理的任务交给计算机来完成,依然是人在主导。

基于统计的 NLP

这是机器学习的早期核心,解决了 规则写不完 的问题。

它的核心逻辑:

  • 人定义模型结构:程序员不再写规则,而是定义一个统计模型(比如朴素贝叶斯、支持向量机)。
  • 计算机从数据中统计规律:给模型喂大量带标签的数据(比如 “垃圾邮件” 和 “正常邮件” 的样本),模型会计算出数据中的概率分布特征权重
  • 用统计规律做决策:输入新数据后,模型根据学到的统计规律,计算出最可能的结果。

利用这个垃圾邮件分类的例子来解释下什么是统计学习(朴素贝叶斯模型):

  1. 准备数据:收集 1000 封垃圾邮件和 1000 封正常邮件,给每封邮件打标签(垃圾 = 1,正常 = 0)。
  2. 提取特征:统计每封邮件中关键词的出现频率(比如垃圾邮件中 “中奖” “免费” 出现次数多,正常邮件中 “工作” “会议” 出现次数多)。
  3. 训练模型:模型计算出某个关键词出现时,邮件是垃圾的概率(比如 “中奖” 出现时,垃圾邮件的概率是 90%)。
  4. 预测新邮件:输入一封新邮件,模型统计其中的关键词,计算出这封邮件是垃圾的总概率,超过阈值就判定为垃圾邮件。

基于统计的学习能处理复杂任务、不需要写大量规则、能从数据中学习规律。但是,它也有如下缺点:

  • 依赖人工特征:程序员需要手动提取数据的特征(比如关键词频率),特征的好坏直接决定模型效果。
  • 模型专用性强:一个垃圾邮件分类模型,不能用来做图片识别。
  • 可解释性差:你只能知道模型的决策结果,却不知道它为什么这么决策(比规则学习难理解)。

基于深度神经网络的统计学习(大模型的学习方式)

深度神经网络模型(Deep Neural Network,DNN)

首先介绍下什么是深度神经网络模型(Deep Neural Network,DNN)?

打个比方的话,深度神经网络模型是一种技术架构,就像程序员手里的框架(比如 Vue、React)。大模型是一种 基于深度神经网络架构、超大规模参数、海量数据训练的特殊模型,就像用 React 框架开发的超大型复杂应用(比如淘宝、抖音)。

所以,它是大模型的基础骨架。

作为程序员,最熟悉的就是函数:输入一个值,经过计算,输出一个值(y = f(x))。神经网络模型的本质,就是多层函数的叠加,每一层函数都叫一个神经层

  • 深度:就是神经层的数量很多(比如 10 层、100 层,甚至更多)。
  • 神经:每一层的计算单元(叫神经元),模仿人脑神经元的 “接收信号 - 处理信号 - 输出信号” 逻辑。

假设你要写一个图片分类程序(判断图片是猫还是狗):

  • 传统编程:你需要手动写规则(比如猫有尖耳朵,狗有圆耳朵”,“猫的尾巴细,狗的尾巴粗”),但规则永远写不完(比如折耳猫的耳朵是圆的)。

  • 深度神经网络编程:你不需要写规则,只需要定义多层函数的结构 (比如输入层→隐藏层 1→隐藏层 2→输出层),然后喂给它海量的猫和狗的图片数据,让模型自己 “学习” 猫和狗的特征。

它是一种 端到端 的学习模型:输入原始数据(图片、文字、声音),输出最终结果(分类、翻译、生成),中间过程无需人工干预。

  • 依赖 数据计算力:数据越多,计算力越强,模型的效果越好。

  • 不仅仅用于 AI:深度神经网络是一个通用架构,可以用于图像识别(CNN)、语音识别(RNN)、自然语言处理等多个领域。

大模型(Large Language Model)

大模型是深度神经网络模型的超级升级版 。大模型的核心定义有三个关键词,缺一不可:

  1. 基于深度神经网络架构:最常见的是 Transformer 架构(2017 年提出,是现在所有大模型的基础)。

  2. 超大规模参数:参数数量达到亿级、十亿级、千亿级甚至万亿级

    • 这里的 “参数” ,你可以理解为模型 “学习到的知识” 的存储载体,就像你程序里的“变量”。参数越多,模型能存储的 “知识” 就越多,能处理的任务就越复杂。
  3. 海量数据训练:训练数据是万亿级的文本、图片、视频等(比如整个互联网的文本内容)。

大模型的学习分为两个核心阶段预训练(Pre-training)  和 微调(Fine-tuning) ,部分大模型还会加上对齐(Alignment)  阶段。

1. 预训练(最核心的 “学习” 过程)
  • 无人工特征工程:程序员只需要定义深度神经网络的结构(比如 Transformer),不需要手动提取特征。模型会自动从原始数据中学习特征

  • 海量无标签数据:喂给模型的是万亿级的原始数据(比如整个互联网的文本、图片),这些数据大多没有标签(比如一篇文章没有标注 “这是新闻” 还是 “这是小说”)。

  • 学习通用规律:模型的目标是 预测下一个词 / 像素 / Token(比如给定 “床前明月光,疑是地上”,模型要预测下一个词是 “霜”)。通过这个过程,模型会学习到语言的语法、语义、世界知识。(比如 “猫是一种动物”, “地球是圆的”)。

  • 超大规模参数:模型的参数数量达到千亿级,这些参数就是模型 记住 的通用规律的载体。

2. 微调(可选,针对特定任务)
  • 少量带标签数据:如果需要让模型适应某个特定任务(比如 “翻译”、“写代码”),可以用少量带标签的任务数据对模型进行微调。

  • 调整参数:微调不会改变模型的整体结构,只会微调模型的部分参数,让模型在特定任务上的表现更好。

3. 对齐(让模型更听话)
  • 解决模型会说但不太满足要求的问题:预训练后的模型可能会生成有害、无意义的内容,对齐的目标是让模型生成符合人类价值观、有用的内容

  • 常用方法:RLHF(基于人类反馈的强化学习),即让人类对模型的输出进行打分,模型根据打分调整自己的输出策略。