自然语言处理的发展历程

1.自然语言处理发展的7个阶段

序号阶段时间贡献代表人物
1起源期1913-1956思考使用图灵算法计量模型来描述自然语言,描述词语及词语之间的关系。这一阶段停留在理论层面做探索图灵、马尔可夫、香农
2基于规则的形式语言理论期1957-1970形式语言理论的提出,开启了学术界对自然语言结构的研究、建模和解析,从而为基于结构与规则的文本识别、生成和翻译开辟了一条康庄大道诺姆·乔姆斯基、冯志伟
3基于规则、概率模型和预料库的融合期1971-1995隐马尔可夫模型的诞生属于一个里程碑式的重大进展,大大推进了自然语言处理的发展进程。
4浅层机器学习期1996-2005朴素贝叶斯模型等模型弥补传统融合模型方法的不足,展现一定的学习和推理能力,这有助于提高自然语言的综合能力,比如优化文本分类、消除奇艺、增强语义分析、强化情感分析
5深度学习期2006-2017神经网络语言模型能够挖掘到更多隐含信息,多层神经网络能够有效地实现特征工程的自动化,通过逐层初始化的预训练方式解决多层神经网络训练的难题。另一进展是词向量技术和表征方法的提出,提高了文本识别的准确度和精度
6预训练语言模型期2018-2021预驯良模型大大降低了自然语言处理的门槛,让创业公司能轻轻松松的在预训练语言模型的基础上进行优化,并在各个垂直领域的应用中获得良好的效果
7大模型期2022-大模型表现出优异的自然语言生成和推理性能

2.从BERT模型到ChatGPT

2.1BERT模型说明

BERT模型由谷歌于2018年发布,其主要创新点在于提出了预训练的思想,并且使用Transformer的编码器作为模型的基础架构。BERT模型能够解决的实际问题如:语法错误判别、情感分析、语义相近、语义相近评分、问题对语义相近、句子对关系判断、问答、实体识别问题、阅读理解、完形填空。

2.2BERT模型诞生之后行业持续摸索

BERT模型诞生后,由于优秀的性能和开源的特性,其很快应用到各行各业和各类自然语言处理任务中,比如智能客服、语音质检、对话机器人和搜索引擎等,产生了巨大的商业价值。

此时,GPT技术选型嗨处于非主流状态,另外当时行业攻坚克服的方向主要放在自然语言处理上,而非自然语言生成上。

2.3ChatGPT的诞生

与BERT模型相比,ChatGPT在文本生成方面的效果提高十分明显。两者的差异在于BERT模型重点关注的是自然语言处理任务,而ChatGPT重点突破的是自然语言生成任务。

2.3.1InstructGPT模型的构建流程

InstructGPT模型是ChatGPT的孪生兄弟,该模型的构建分为以下3个步骤:

(1)微调GPT-3.0

按照要求收集并标注演示数据,为监督学习做准备。

1)构建Prompt数据集:比如“向小孩解释登月”、“讲讲白雪公主的故事”等

2)对数据集进行标注:主要通过人工进行标注,比如“登月就是去月球”

3)使用标注数据集微调GPT-3:使用监督学习策略对模型进行微调,获得新的模型参数

(2)训练奖励模型

收集训练奖励模型(Reward Model,RM)所需要的比较数据集。标注数据知识对于给定输入用户更偏好哪个输出,依据此进行奖惩,从而训练RM来更好的按照人类偏好进行模型输出。

1)模型预测:用微调过的GPT-3对采样的任务进行预测

2)数据标注,获得比较数据集:对模型预测数据结果按照从好到坏的规则进行标注,获得比较数据集

3)得到RM:用比较数据集作为输入数据训练,得到RM

(3)使用ppo算法更新模型参数

通过强化学习手段,使用PPO算法优化RM,使用RM的输出作为标量奖励,同时使用PPO算法对监督政策进行微调以优化RM。

1)使用PPO算法预测结果:通过强化学习手段,使用PPO算法优化GPT-3并构建新的生成函数,然后输入采样的Prompt数据集,获得模型输出

2)使用RM打分:使用第二步训练好的RM给模型输出进行打分,获得Reward(奖励)打分数据

3)更新模型参数:根据Reward打分数据来更新模型参数

模型构建的第二步和第三步可以循环操作,只需要收集关于当前最佳策略的更多比较数据集,用于训练心得RM,然后使用PPO算法训练新的策略

从以上的InstructGPT的构建流程和方法介绍中可以看到,InstructGPT的构建流程相对简单,并没有涉及特别复杂的方法论和技术,也没有涉及很多原创的理论,更多的是站在巨人肩膀上的工程实践方面的创新

2.3.2ChatGPT和InstructGPT的差异

通过对话形式,ChatGPT能够回答问题、承认错误、对模糊的需求进行询问、质疑不正确的前提和拒绝不适当的请求等。ChatGPT是InstructGPT的兄弟模型,被训练为在提示中遵循指令并输出反馈结果。

模型InstructGPTChatGPT
底座模型GPT-3.0GPT-3.5
数据集指令数据集人工交互标注数据+指令数据集,最后转化为对话数据集
应用场景更适合指令型文本生成任务更适合对话型文本生成任务
推理能力较强
代码生成能力较强
泛化能力中等较强

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/579114.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vue入门到关门之Vue介绍与使用

一、vue框架介绍 1、什么是Vue? Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与…

OpenHarmony语言基础类库【@ohos.util.PlainArray (非线性容器PlainArray)】

PlainArray可用于存储具有关联关系的key-value键值对集合,存储元素中key值唯一,key值类型为number类型,每个key对应一个value。 PlainArray依据泛型定义,采用轻量级结构,集合中key值的查找依赖于二分查找算法&#xf…

65、二分-在排序数组中查找元素的第一个和最后一个位置

思路: 寻找数组中的目标值第一个和最后一个,如果不存在哪儿就是返回-1。 第一种方式直接线性遍历,找到目标值记录当前下标。继续寻找下一个不等于目标值,说明下一个目标值的下标就是结尾。直接返回。 第二种方式通过使用二分法…

《HCIP-openEuler实验指导手册》1.7 Apache虚拟主机配置

知识点 配置步骤 需求 域名访问目录test1.com/home/source/test1test2.com/home/source/test2test3.com/home/source/test3 创建配置文件 touch /etc/httpd/conf.d/vhost.conf vim /etc/httpd/conf.d/vhost.conf文件内容如下 <VirtualHost *.81> ServerName test1.c…

基于Python+Selenium的web自动化测试框架详解

简介 随着Web应用程序的广泛应用和不断发展&#xff0c;Web自动化测试已经成为软件质量保证中的一个重要环节。而PythonSelenium作为一组强大的工具和框架&#xff0c;已经成为Web自动化测试领域中的热门技术之一。PythonSelenium可以帮助我们快速、准确地模拟用户行为和操作&…

电脑教程1

一、介绍几个桌面上面的软件 1、火绒&#xff1a;主要用于电脑的安全防护和广告拦截 1.1 广告拦截 1.打开火绒软件点击安全工具 点击弹窗拦截 点击截图拦截 拦截具体的小广告 2、向日葵远程控制&#xff1a;可以通过这个软件进行远程协助 可以自己去了解下 这个软件不要…

BP算法-即误差反向传播法简介

BP算法-即误差反向传播法简介 1986年 反向传播算法&#xff08;back propagation&#xff0c;简称BP模型&#xff09;是1986年由Rumelhart、Hinton和Williams为首的科学家提出的概念&#xff0c;是用于多层神经网络训练的著名算法&#xff0c;有理论依据坚实、推导过程严谨、概…

java spring 07 createBean()(加载class文件,重写方法,实例化前)和doCreateBean()

01.createBean方法 protected Object createBean(String beanName, RootBeanDefinition mbd, Nullable Object[] args)throws BeanCreationException {if (logger.isTraceEnabled()) {logger.trace("Creating instance of bean " beanName "");}RootBea…

面试算法题精讲:最长公共子序列

面试算法题精讲&#xff1a;最长公共子序列 题面 题目来源&#xff1a;1143. 最长公共子序列 题目描述&#xff1a; 给定两个字符串 text1 和 text2&#xff0c;返回这两个字符串的最长公共子序列&#xff08;LCS&#xff09;的长度。如果不存在公共子序列 &#xff0c;返回…

C++ ─── 匿名对象+变量的创建顺序

目录 1. 匿名对象&#xff08;临时对象&#xff09; 2. 编译器的优化 3.变量的创建与销毁 1. 匿名对象&#xff08;临时对象&#xff09; 我们先来看有名对象的创建 Date d1; Date d2(2024,4,27);匿名对象的创建 Date(2024,56,1); 生成了一个匿名对象&#xff0c;执行完Da…

MySQL之binlog归档日志

binlog&#xff08;二进制归档日志&#xff09; binlog 二进制日志记录保存所有执行过的修改操作语句&#xff0c;不保存查询操作。如果 MySQL 服务意外停止&#xff0c;可通过二进制日志文件排查&#xff0c;用户操作或表结构操作&#xff0c;从而来恢复数据库数据。启动 bin…

Vue的安装及使用教程【超详细图文教程】

一、安装Node.js 安装步骤详细见Node.js下载安装及环境配置 》https://blog.csdn.net/WHF__/article/details/129362462 二、安装vue ①安装 vue.js&#xff1a; npm install vue -g // -g为全局安装 注意&#xff1a;要以管理员身份运行cmd命令窗口&#xff01;&#xf…

深入浅出MySQL-02-【MySQL支持的数据类型】

文章目录 前言1.数值类型2.日期时间类型3.字符串类型3.1.CHAR和VARCHAR类型3.2.ENUM类型3.3.SET类型 4.JSON类型 前言 环境&#xff1a; Windows11MySQL-8.0.35 1.数值类型 MySQL中的数值类型&#xff0c;如下&#xff1a; 整数类型字节最小值最大值TINYINT1有符号 -128无…

从 Apache Doris 到 SelectDB Cloud:云原生架构下的弹性能力揭秘

随着云时代的到来&#xff0c;越来越多企业开始在公有云、私有云乃至 K8s 容器平台构建实时数据平台。云计算基础设施的革新&#xff0c;促使着数据仓库朝着云原生的方向发展。而用户日益复杂的业务负载和降本增效的需求&#xff0c;对于系统资源的精细化管理和成本效益等方面提…

64、二分-搜索二维矩阵

思路&#xff1a; 通过使用二分方式&#xff0c;对于每行进行二分&#xff0c;因为每行的最后一个数小于下一行的第一个数&#xff0c;我们就可以依次二分。首先取出行数N&#xff0c;然后从0-N进行二分&#xff0c;如果mid最后一个数小于目标值说明0-mid中没有&#xff0c;舍弃…

36 线程概念

本章重点 1.了解线程概念&#xff0c;理解线程与进程的区别与联系 2.学会现充控制&#xff0c;线程创建&#xff0c;线程终止&#xff0c;线程等待 3.了解现场分离与线程安全 4.学会线程同步 5.学会使用互斥量&#xff0c;条件变量&#xff0c;posix信号量&#xff0c;以及读写…

cnpm安装

npm install -g cnpm --registryhttps://registry.npmmirror.com # 注册模块镜像 npm set registry https://registry.npmmirror.com // node-gyp 编译依赖的 node 源码镜像 npm set disturl https://npmmirror.com/dist // 清空缓存 npm cache clean --force // 安装c…

Linux中的yum和gcc/g++

一、快速认识yum&#xff08;简单介绍&#xff09; 在Linux中&#xff0c;我们也要进行工具/指令/程序、安装、检查、卸载等等&#xff0c;需要使用到yum 在Linux中安装软件的方式&#xff1a; 源代码安装——交叉编译的工作rpm包直接安装yum/apt-get yum:yum是我们Linux预…

Androd SharedPreferences 存取key-value键值对的用法小结

文章目录 一、存储数据二、读取数据三、删除数据3.1 删除指定KEY的数据3.2 删除所有数据 四、测试4.1 查找数据文件4.2 查看数据的存储 在开发一个简单Launcher&#xff0c;点击APP按钮后&#xff0c;如无APP绑定&#xff0c;则弹出一个APP选择列表&#xff0c;选择后进行绑定&…

STL--string详解

STL基本内容 string是什么 string实质上是一个对象 string可看作一个串&#xff0c;类似字符数组 可以扩容&#xff0c;可以增删查改 可用下表访问操作符[]引用&#xff0c;修改某值 构造函数 默认构造 拷贝构造&#xff1a;参数为(string 或 char*) 求string对象的长度不…