ChatGPT 原理与核心技术介绍(自然语言处理NLP的发展与Transformer的概念)

2023-11-05

1、定义:ChatGPT与自然语言处理NLP

ChatGPT(Chat Generative Pre-training Transformer)是自然语言处理(Natural Language Processing,NLP)领域的一种AI模型。NLP是人工智能的一个分支,专注于处理人们日常生活中使用的各种自然语言,如英语、汉语、德语等。其目标是让计算机能够理解和准确操作自然语言,以完成人类指定的任务。在NLP中,常见的任务包括文本关键词抽取、文本分类、机器翻译等。

NLP中还存在一个非常具有挑战性的任务,即对话系统,也被广泛称为聊天机器人。而ChatGPT正是为了实现这一任务而设计的模型。它通过预先进行训练和生成技术,使得计算机能够模拟人类的对话方式,从而实现智能化的对话交互。聊天机器人能够回答用户的问题、参与有趣的对话,并提供相关的信息和建议。

ChatGPT的出现为NLP领域带来了巨大的进展,它的应用潜力非常广泛。不仅可以用于社交娱乐领域,还可以应用于客户服务、虚拟助手、语言学习等各种场景。通过ChatGPT,我们能够以一种更智能、更自然的方式与计算机进行交流,为人们带来更加便利和丰富的体验。

1.1 图灵测试

自从1950年代计算机问世以来,人们就开始研究如何让计算机辅助人类理解和处理自然语言。这也是自然语言处理(Natural Language Processing,NLP)领域的发展目标之一,而最著名的里程碑则是图灵测试。

在1950年,计算机之父艾伦·图灵(Alan Turing)提出了一项测试,用于评估机器是否能像人类一样进行思考。这就是著名的图灵测试。图灵测试的具体方法和现在ChatGPT的工作方式一模一样,即通过构建一个计算机对话系统,让人类与被测试的模型进行对话交流。如果测试者无法确定对方究竟是机器模型还是另一个人,那么该模型就通过了图灵测试,被认为具备智能。

长期以来,图灵测试被学术界视为攀登的难题。正因如此,NLP被誉为人工智能皇冠上的明珠。而ChatGPT所能够完成的工作已远远超出了传统聊天机器人的范畴。它可以根据用户的指令撰写文章,回答技术问题,解决数学题,进行外文翻译,甚至参与文字游戏等等。因此,在某种程度上,ChatGPT已经脱颖而出,不再是皇冠上的明珠。它为我们展示了一种全新的人机交互方式,拓宽了人工智能的应用领域。

1.2 建模形式(多轮历史对话原理)

ChatGPT以其简单直观的工作方式而闻名。用户可以向ChatGPT提出任何问题,而模型会给出回答。

在这个过程中,用户的输入和模型的输出都是以文字形式进行。一次用户的输入和一次模型的回答被称为一轮对话。我们可以将ChatGPT的工作流程抽象成以下形式:

此外,ChatGPT还可以处理用户的连续提问,也就是多轮对话,这些对话之间是有信息关联的。这个过程也很简单,当用户进行第二次输入时,系统会默认将前一轮对话的输入和输出信息连接在一起,供ChatGPT参考前一轮对话的上下文。

如果用户与ChatGPT的对话进行了多轮,通常模型只会保留最近几轮对话的信息,之前的对话信息会逐渐被遗忘。

当用户输入问题:“你喜欢苹果还是香蕉?”,ChatGPT接收到这个数据后,首先会生成一个“我”的字,然后根据用户的问题和生成的“我”字继续生成下一个字“喜”。以此类推,直到生成一个完整的句子:“我喜欢苹果。”

1.3 NLP 的发展历程(规则->统计->强化学习)

  • 基于规则的自然语言处理(NLP)
    是指使用人工编写的规则来处理自然语言。这些规则通常基于语法、语义和语用等方面的知识,用于解析和生成自然语言。例如,我们可以设计一个对话系统,基于以下规则:
    规则1:当模型接收到用户的问句后,删除问句中的"吗"字,并将"?“替换为”。“。
    规则2:将"你"替换为"我”,将"我"替换为"你"。
    基于这些规则,我们可以创建一个简单的对话模型,使其进入对话模式。

  • 基于统计的自然语言处理(NLP)
    是利用机器学习算法从大量的语料库中学习自然语言的规律特征的方法,在早期也被称为连接主义。与基于规则的方法不同,基于统计的方法不需要人工编写规则,而是通过学习语言的统计特征,将规则隐含在模型参数中。换句话说,在基于规则的方法中,规则是显性的、由人工编写的;而在基于统计的方法中,规则是隐形的,通过模型根据数据训练得到。

    • 这些模型在近年来得到了快速发展,其中包括 ChatGPT。除了 ChatGPT,还有各种形态不同的模型,它们的基本原理是相似的。它们的处理方式主要遵循以下步骤:

      1. 标注数据
      1. 构建模型并确定输入输出
      1. 训练模型
      1. 利用已训练好的模型进行工作
    • 在 ChatGPT 中,主要采用预训练技术来实现基于统计的 NLP 模型学习。预训练最早由 ELMO 模型(Embedding from Language Models)引入,后来被广泛应用于 ChatGPT 等各种深度神经网络模型中。

    • 预训练的重点是根据大规模的原始语料学习一个语言模型,这个模型并不直接学习如何解决特定的任务,而是学习语法、词法、语用以及常识、知识等信息,并将它们融入到语言模型中。可以将其视为一个知识记忆器,而不是应用知识解决实际问题的方式。

    • 预训练有许多优点,已成为几乎所有 NLP 模型训练的必备步骤。我们将在后续章节中详细讨论。

    • 尽管基于统计的方法比基于规则的方法更受欢迎,但它也存在一个主要缺点,即黑盒不确定性。也就是说,规则是隐含在模型参数中的,因此模型有时会给出一些含糊不清、难以理解的答案,我们无法根据结果判断模型为什么给出这样的答案。

  • 基于强化学习的自然语言处理(NLP)模型如

    • ChatGPT,虽然基于统计方法,但它利用了一种新的方法,即带人工反馈的强化学习(Reinforcement Learning with Human Feedback,RLHF),从而取得了出色的效果,将NLP的发展推向了一个新的阶段。

    • 几年前,AlphaGo战胜了柯洁,这几乎表明在适当的条件下,强化学习完全可以击败人类,接近完美的极限。当前,我们仍处于弱人工智能时代,但仅就围棋领域而言,AlphaGo已经是一种强人工智能。而其核心在于强化学习。

    • 强化学习是一种机器学习方法,旨在通过与环境的交互来让智能体(在NLP中主要指深度神经网络模型,如ChatGPT模型)学习如何做出最优决策。

    • 可以将其比作训练一只狗,听哨声并获得奖励(环境),以获得食物(学习目标)。

    • 当主人吹哨时,小狗会得到食物作为奖励;而当主人不吹哨时,小狗就会挨饿。通过反复的奖励和饥饿的体验,小狗就能建立起相应的条件反射,实际上完成了一次强化学习过程。

    • 然而,在NLP领域,环境要复杂得多。针对NLP模型的环境并非真实的人类语言环境,而是人为构建的一种语言环境模型。因此,我们强调这是一种带有人工反馈的强化学习方法。

1.4 NLP 技术的发展脉络

实际上,基于规则、基于统计、基于强化学习 这 三种方式,并不仅仅是一种处理自然语言的手段,而是一种思想。一个解决某一问题的算法模型,往往是融合了这三种解决思想的产物。

如果把计算机比作一个小孩,自然语言处理就像是由人类来教育小孩成长。

基于规则的方式,就好比家长 100% 控制小孩,要求他按照自己的指令和规则行事,如每天规定学习几小时,教会小孩每一道题。整个过程,强调的是手把手教,主动权和重心都在家长身上。对于 NLP 而言,整个过程的主动权和重心,都在编写语言规则的程序员、研究员身上。

基于统计的方式,就好比家长只告诉小孩学习方法,而不教授具体每一道题,强调的是半引导。对于 NLP 而言,学习重心放在神经网络模型上,但主动权仍由算法工程师控制。

基于强化学习的方式,则好比家长只对小孩制定了教育目标,比如,要求小孩能够考试达到 90 分,但并不去管小孩他是如何学习的,全靠自学完成,小孩拥有极高的自由度和主动权。家长只对最终结果做出相应的奖励或惩罚,不参与整个教育过程。对于 NLP 来说,整个过程的重心和主动权都在于模型本身。

NLP 的发展一直以来都在逐渐向基于统计的方式靠拢,最终由基于强化学习的方式取得完全的胜利,胜利的标志,即 ChatGPT 的问世;而基于规则方式逐渐式微,沦为了一种辅助式的处理手段。ChatGPT 模型的发展,从一开始,就在坚定不移地沿着让模型自学的方向发展进步着。

1.5 ChatGPT 的神经网络结构 Transformer

ChatGPT 是一个大型的神经网络,其内部结构是由若干层 Transformer 构成的,Transformer 是一种神经网络的结构。自从 2018 年开始,它就已经成为了 NLP 领域的一种通用的标准模型结构,Transformer 几乎遍布各种 NLP 模型之中。

如果说,ChatGPT 是一幢房子的话,那么,Transformer 就是构建 ChatGPT 的砖头。

Transformer 的核心是自注意力机制(Self-Attention),它可以帮助模型在处理输入的文字序列时,自动地关注到与当前位置字符相关的其他位置字符。自注意力机制可以将输入序列中的每个位置都表示为一个向量,这些向量可以同时参与计算,从而实现高效的并行计算。举一个例子:

在机器翻译中,在将英文句子 “I am a good student” 翻译成中文时,传统的机器翻译模型可能会将其翻译成 “我是一个好学生”,但是这个翻译结果可能不够准确。英文中的冠词“a”,在翻译为中文时,需要结合上下文才能确定。
而使用 Transformer 模型进行翻译时,可以得到更加准确的翻译结果,例如 “我是一名好学生”。

这是因为 Transformer 能够更好地捕捉英文句子中,跨越很长距离的词汇之间的关系,解决文本上下文的长依赖。

总结

随着时间的推移,自然语言处理(NLP)领域的发展已经从人工编写规则和逻辑控制计算机程序逐渐转变为完全依靠网络模型来适应语言环境的过程。

目前,ChatGPT是最接近通过图灵测试的NLP模型,未来的GPT4、GPT5将进一步接近这个目标。

ChatGPT是一种生成式的对话系统,其工作流程可以描述为以下几个步骤。

  • 首先,ChatGPT通过语言模型的预训练来进行训练。这个过程利用大量的语料数据,使模型能够学习语言的规律和特征。

  • 其次,ChatGPT使用带人工反馈的强化学习(RLHF)来进一步优化模型。这种方法使模型通过与环境的交互和人工反馈来学习如何做出最佳决策,从而不断改进和提升性能。

  • ChatGPT的模型结构采用了以自注意力机制为核心的Transformer。这种结构允许模型自动捕捉输入中的关联信息,并生成准确、连贯的回答。

  • 通过这些步骤和模型结构,ChatGPT成为了一种先进的NLP模型,为人们提供了高质量的对话体验。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ChatGPT 原理与核心技术介绍(自然语言处理NLP的发展与Transformer的概念) 的相关文章

  • Centos 环境下安装tree命令

    sudo yum y install tree
  • 修改Linux系统时间EDT改为CST

    今天发现一台服务器时间比北京时间慢 12 个小时 使用 date 命令后发现是 root ubuntu date Thu Mar 22 5 12 08 EDT 2018 EDT 时间即美国东部时间 这里要改为北京时间即可 命令如下 root
  • 牛客 AB29 快速乘 JAVA

    描述 请你计算 a b mod p 的值 要求只能使用加法和取模运算 且计算过程中的值不能超过 2 1072 107 一共有 q 次询问 输入描述 第一行输入一个正整数 q 代表询问次数 接下来每行输入三个正整数 a b p 代表一次询问

随机推荐

  • 腾讯云服务器如何搭建Docker?

    本文档介绍如何在腾讯云云服务器上搭建和使用 Docker 本文适用于熟悉 Linux 操作系统 刚开始使用腾讯云云服务器的开发者 如需了解更多关于 Docker 相关信息 请参见 Docker 官方文档 说明 若您需在 Windows 操作
  • Git命令使用问题汇总

    参考链接 https www cnblogs com ximiaomiao p 7140456 html https www jianshu com p 828e004542aa https www bootcss com p git gu
  • 流程:论文发表的流程

    流程 论文发表的流程 更新历史 20190425 首次发布 20191228 后面扯远了的部分删掉了 20200101 对于论文缴费的事 增加了说明 初次写论文的人 通常不清楚论文怎么发表 并且存在诸多的疑问 国内期刊跟国外期刊的投稿方式是
  • 【我在CSDN成长】我的两周年创作纪念日

    我在CSDN成长 我的两周年创作纪念日 一 来到CSDN的大家庭 二 在CSDN的收获 1 在CSDN的感受 2 在CSDN的收获 三 在CSDN的未来规划 憧憬 一 来到CSDN的大家庭 当看到这个信息时 才发现不知不觉已经在CSDN创作
  • mysql中实现交叉连接的食_Mysql中的连接查询

    连接查询 内连接 无条件内连接 无条件内连接 又名交叉连接 笛卡尔连接 第一张表中的每一项和另一张表的每一项依次组合 SELECT FROM students JOIN subjects 上图两张不一样的JOIN方法 有条件内连接 在无条件
  • html 替换多选框和单选框默认的按钮

    div class 113 div
  • CTF Show Web5

    题干中给出关键提示 phps源码泄露有时候能帮上忙 phps文件是什么 phps文件就是php的源代码文件 通常用于提供给用户 访问者 查看php代码 因为用户无法直接通过Web浏览器看到php文件的内容 所以需要用phps文件代替 可见本
  • 程序计算精确圆周率Pai的方法

    一些参考资料 http www guokr com blog 444081 大家都知道 3 1415926 无穷多位 历史上很多人都在计算这个数 一直认为是一个非常复杂的问题 现在有了电脑计算机 这个问题就简单了 最简单高效用Python
  • 前端实战-咪咪在线音乐网站(一)

  • 随机密码生成。编写程序,在26个字母大小写和10个数字组成的列表中随机生成10个8位密码。

    随机密码生成 编写程序 在26个大小写字母和10和数字组成的列表中随机生成10个8位的密码 根据题目要求 我们编写的程序主干要有哪些内容呢 1 随机选择 2 26个大小写字母 3 10个阿拉伯数字 0 9 4 10组8位的密码 具体内容分析
  • Qt通过Http上传数据或文件

    Qt网络相关的三个主要类QNetworkAccessManager QNetworkRequest QNetworkReply 一般的使用方法就是 QNetworkRequest添加头和地址等信息 QNetworkAccessManager
  • 记录Java代码的执行时间

    方式1 public void testMenu1 M1 第一种是以毫秒为单位计算的 long startTime System currentTimeMillis 获取开始时间 Role r new Role r setId Long v
  • OSI七层参考模型之一:传输层

    大家好呀 我是请假君 今天又来和大家一起学习数通了 今天要分享的知识是OSI七层参考模型之一的传输层 传输层 Transport Layer 的功能是为会话层提供无差错的传送链路 保证两台设备间传递信息的正确无误 传输层传送的数据单位是段
  • 我们在囧途之技术管理者篇

    http blog csdn net shenyisyn article details 8350939 注 本文使用第一人称 原型取材于周围同事或民间 不代表作者本人 一到年底我就头疼 上午到了办公室刚倒了杯水 还没喝上一口 下属张XX就
  • Post请求基本步骤

    接着我的博客前后端交互来 使用Post请求完成操作 get方法从服务器获取数据 post方法向服务器提交数据 public class MainActivity extends AppCompatActivity OkHttpClient
  • SQL优化

    一 查询SQL尽量不要使用select 而是具体字段 1 反例 SELECT FROM user 2 正例 SELECT id username tel FROM user 3 理由 节省资源 减少网络开销 可能用到覆盖索引 减少回表 提高
  • jmeter java版本_Jmeter部署安装

    Jmeter安装 一 Apache Jmeter介绍 Apache JMeter是Apache组织开发的基于Java的压力测试工具 用于对软件做压力测试 它最初被设计用于Web应用测试但后来扩展到其他测试领域 它可以用于测试静态和动态资源例
  • 这样的会议让人很纠结

    很纠结吧 永远也不要参加这样的会议 顺便说一下 解决这个问题的方法就是 可用性测试 Usability Testing 好好想一想 我们做决定的时候 是要无休无止地争吵 最后谁吵赢了谁说了算呢 还是要基于真实的数据 这个变化是一场革命
  • truffle 安装以及基本指令

    1 linux下安装方式 npm install g truffle 环境要求 NodeJS 5 0 Windows Linux 或Mac OS X 2 创建工程 mkdir testdir cd testdir truffle init
  • ChatGPT 原理与核心技术介绍(自然语言处理NLP的发展与Transformer的概念)

    文章目录 1 定义 ChatGPT与自然语言处理NLP 1 1 图灵测试 1 2 建模形式 多轮历史对话原理 1 3 NLP 的发展历程 规则 gt 统计 gt 强化学习 1 4 NLP 技术的发展脉络 1 5 ChatGPT 的神经网络结