深度学习入门指南(1) - 从chatgpt入手

img

2012年,加拿大多伦多大学的Hinton教授带领他的两个学生Alex和Ilya一起用AlexNet撞开了深度学习的大门,从此人类走入了深度学习时代。
2015年,这个第二作者80后Ilya Sutskever参与创建了openai公司。现在Ilya是openai的首席科学家,带领工程师研发出了可能再次改变世界的chatgpt.

img

撞开深度学习大门的三位大神

上图中,右面的就是图灵奖获得者,深度学习之父Hinton大牛。中间是AlexNet的第一作者Alex, 左边的就是Ilya Sutskever.

10多年间,从DNN,CNN,RNN为代表的第一代深度神经网络,到以深度Q学习为代表的深度强化学习,再到以Transformer技术为基础以BERT为开创的大规模预训练模型。以及针对大规律预训练模型所需要的人工引导和数据标注等技术支持的chatgpt。
深度学习呈现出理论的东西越来越多,但是应用的难度却越来越低的变化。

深度学习的工具发展主要有以下4个阶段:

  1. 以Caffe为代表的专用工具库
  2. 以TensorFlow和PyTorch为代表的生态体系
  3. 以Hugging Face库为代表的预训练模型生态
  4. 以openai API为代表的封闭库

此外,还有一些专用工具,比如推理性能优化的AI编译器技术如TVM,比如LLVM的MLIR等。比如支持深度学习后端的各种GPGPU技术,比如OpenGL,OpenCL,Vulkan,WebGPU。比如支持CPU上进行深度学习计算的OpenMP和XLA线性计算库,等等。

人工智能有三要素:算法、算力和数据。

在大规模预训练模型的时候,算法在核心上变化不大,都是堆积了很多层的Transformer模型。
但是其难点在于对于算力需求越来越庞大,而且随着数据的增加,所生成的数据的质量的保证也是重要的问题。

所以目前的主线就有两条:一条是如何堆积更多的算力,用更大的模型去进行突破,比如gpt3和gpt4就都是大力出奇迹的成果;另外一条是如何提升数据的准确性,并不是说模型大了就自然正确了。目前很多模型都很大,但是效果好的只有openai一家,就说明了这第二条主线的重要性。

另外,光堆算力对于更多人参与研究是不利的,如何实现用较小的算力,实现更好的效果,也是热门的主题。

所以,这个时候的教程,如果还从PyTorch实现MNIST入手的话,离使用chatgpt这样的突破性成果之间的gap就太大了。我们的教程就从chatgpt开始。

学习分享

需要更多AI大模型资源的可以

在这里插入图片描述

从Transformer到GPT-3: 预训练模型的发展

大规模预训练模型的是为了解决自然语言处理NLP问题而产生的。比如机器翻译就是自然语言处理中的一个重要问题。

用神经网络来处理自然语言,早在深度学习出现之前就有了。那时候还没有深度学习,神经网络还存在着梯度爆炸等困难。
1997年,循环神经网络的重要模型,长短时记忆网络LSTM就被研究出来了。
2014年,另外一种改进的循环神经网络-门控循环单元LRU也被发明出来。

2014年,Ilya Sutskever作为第一作者发明了seq2seq模型,基本上解决了使用循环神经网络进行机器翻译的问题。
也是在2014年,为了提升RNN的效果,《Neural Machine Translation by Jointly Learning to Align and Translate》论文开始引入了注意力机制。

2017年,Google人民发现,注意力机制并不一定要依附于循环神经网络,只用注意力模块自己就可以了。他们提出了只用注意力编码器和解码器的结构,就是著名的Transformer模型。这篇论文叫做《Attention is all you need》,不用RNN啦,Attention自己就够用了。

2018年,Google人民研究出了Transformer模型的真正组合方法,正式提出了预训练模型这个概念。从此又开始了一个新的时代。
同年,openai推出了第一代的gpt,论文名叫《Improving language understanding by generative pre-training》。gpt的名称就来自generative pre-training,生成立的预训练模型。

真正开始传奇故事的是从gpt2开始的。openai的大神们发现,通过预训练一个大型语言模型,在无监督的情况下学习多个任务,就可以在很多任务上取得另人惊讶的效果。

gpt2引入了两个重要的东西:一个是零样本学习,就是一个大模型只要训练得足够大,就可以对于很多未知的任务有很强的泛化性,这正是机器学习追求的终极梦想;另一个是微调fine-tune,就是可以站在巨人的肩膀上,基于自己的少量数据的加强训练,就可以让gpt2和自己独特的业务结合起来。

这一下子就点燃了各种大模型,大家纷纷沿着这条路前进,参数不断翻新。从BERT到gpt2这些模型也都是开源的,这时诞生了Hugging face库,将各种预训练模型集成在一个框架内。

gpt2的论文叫做《Language Models are Unsupervised Multitask Learners》,多任务同时也引发多模态的支持,除了文本之外,各大模型对于代码、图像之类的也不放过。这一传统也沿用至今。

微调虽然已经相对容易了,但是openai人民仍不满足。他们认为,人类只用很少的几个样例就能学会的东西,为什么微调需要提供大量的数据才可以做到。最终他们发现,gpt2虽然可以支持多任务学习,但是还需要很多微调的原因是,模型还不够大。于是他们训练了1750亿参数的GPT-3.

GPT-3开始,openai决定不开源了。再想像用gpt2一样通过hugging face库调用没办法了,从此进入了编程的第三范式,只能调用openai的API。

不过,正如gpt3的论文名字《Language Models are Few-Shot Learners》字面所说的,因为gpt3是一个支持few-shot,也就是少样本的学习。所以,不用微调,只用少量的提示就可以让gpt3学习。这就是在现在发挥光大形成一个学科的prompt engineer的“提示工程”或者叫“引导工程”。

img

少样本学习超能力之涌现

目前有一种鄙视链,就是觉得用PyTorch等库自己搭建才是技术,微调不是技术,引导工程更不是技术。我不知道他们是否读过论文原文。
深度学习从一开始就没追求成功理论的严谨性,而是靠易用性流行起来的。
可解释性当然是好的,我们也要学习Anthropic等机构的成果。但是这跟我们搞好引导工程和微调并不矛盾。

无监督预训练模型的不足与chatgpt的诞生

  • Attention is all you need
  • Improving language understanding by generative pre-training
  • Language Models are Unsupervised Multitask Learners
  • Language Models are Few-Shot Learners

上面一节我们看到,这上面4句话是Transformer, gpt, gpt2和gpt3的论文的标题名。他们连在一起就是用无监督的大规模预训练的模型来实现各种任务的总纲。
总结起来,就是大力出奇迹。当模型足够大,就能涌现出少样本学习的强大能力。

这在GPT-3得到了很好的验证。但是,最终火起来的是chatgpt,而非强调few-shot的GPT3。它缺少什么呢?我们看一个论文题目就知道了:《Training language models to follow instructions with human feedback》。

没错,无监督的大规模预训练模型还不行,还需要人类的反馈。这也是chatgpt现目前为止还领先不少参数更多的大模型的原因。比如13亿参数的chatgpt的效果就可以强于1750亿参数的gpt3.

像gpt3这么强大的模型,哪怕是像更强的gpt4,虽然有较强的少样本学习的能力,但是它们都会生成一些编造的事实,生成一些有偏见的事实,甚至是不知所云的或者是有害的信息。

比如,有篇叫做《On the Dangers of Stochastic Parrots: Can Language Models be too Big?》题目就直接质疑,语言模型不能做太大。否则有伦理问题、法律问题、社会公平问题,甚至引发大量碳排放影响环境等。

许多研究人员还制作了有偏见的或者有害的数据集来供模型评估自己的效果,比如Realtoxicityprompts数据集。

而如何通过人类反馈来改进语言模型,也并不是openai的原创,而是借用了强化学习的思想。这种技术被称为reinforcement learning from human feedback - RLHF,人类反馈强化学习。

img

RLHF

RLHF这种技术最初是用在玩游戏的强化学习中。如果用深度强化学习做过Atari游戏的同学都会知道,很多游戏太复杂了,想让算法找到成功的路径需要花费大量时间,甚至经常退化找不到。这时候,如果有玩通关过的人来指导一下,就会节省大量的试错时间。
但是这也是个技术活,如果让哪一种情况下人都指导,那人也受不了。所以要将人类的反馈数据也加工成模型。后来,这种技术在自然语言处理中也遍地开花。

经过人类反馈强化学习的方法进行微调之后,chatgpt竟然惊奇地发现,它对于代码的总结能力、对回答代码问题的能力和支持多种编程语言的能力比gpt3有显著的提高。这个结果跨界打击了Codex等专门为编程语言研发的模型。

不过,不管是论文还是实测结果都证明了,chatgpt仍然会犯简单低级的错误,需要在理论和实践上都进一步的改进。

chatgpt并不是全部

从目前看来,chatgpt和gpt4是领先的。但是,其它的方向我们也需要保持关注和敏感度。比如更小算力的方向是否可能有突破,或者是下一步的线索是否已经在悄悄地成长中。

开源的解决方案仍然是一个值得关注的方向。 抱openai的大腿并且搞好引志工程是目前是最现实的解决方案,但是我们永远不能忽视开源的力量。哪怕开源的走错了方向,这个错误也更容易被学习到。

以Meta AI推出的LLaMA为例,他们的关注点不是人类反馈强化学习,而是坚持由《Scaling laws for neural language models》一文提出的缩放定律:

  • 语言模型的交叉熵损失随着模型大小、数据集大小和训练计算量呈幂律关系,其中一些趋势跨越了七个数量级以上。
  • 网络的其他架构细节,如宽度或深度,在较大的范围内对性能影响很小。

img

3keypoints.png

也就是说,沿着缩放定律的方向,few-shot的能力就还会进一步提升。这一过程,只与数据量、计算量和参数量三者有关。

而据Deepmind的一项研究《Training Compute-Optimal Large Language Models》,模型和训练数据量等比例缩放才会获取更好的训练效果。现有的大模型参数加上去了,但是数据量没有跟上,所以浪费了资源。

所以LLaMA也尝试依据Deepmind的这项研究,通过增加训练数据来对较小的模型进行训练,可以得到比更大模型更好的效果。

这里不得不再八卦一下,缩放定律这篇论文,恰恰是也是来自研究gpt3的openai团队。团队的leader是Dario Amodei。

img

dario.png

在gpt3面临选择的关头,Dario Amodei对于gpt3这样的黑盒也很不满,他认为能够解释清楚黑盒比做更大的gpt4更重要,于是他带领很多openai同事创建了Anthropic。无论最终结果如何,Anthropic所代表的思路是值得我们一直关注的。

小结

  1. 从编程实现全部模型,到使用预训练模型,到调用API微调,再到引导工程,每一步都是技术的发展,每一层做好都不容易。
  2. 更大的模型目前仍然是最有希望的方向。更大的模型和更多的数据可能会涌现出更强的微调和少样本零样本能力。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手机误操作导致永久删除照片的恢复方法有哪些?

随着手机功能的不断增强和应用程序的不断丰富,人们越来越依赖手机,离不开手机。但有时因为我们自己的失误操作,导致我们手机上重要的照片素材被永久删除,这时我们需要怎么做,才能找回我们被永久删除的照片素材呢&#…

Langchain框架深度剖析:解锁大模型-RAG技术的无限潜能,引领AI应用新纪元

文章目录 前言一、Langchain 框架概述二、大模型-RAG技术原理三、应用示例1.RAG案例一(私有文档直接读取-问答)2.RAG案例二(Vue上传文件结合文件内容回答问题)3.RAG案例三(Vue秒传文件结合文件内容回答问题&#xff09…

无字母数字webshell命令执行

<?php if(isset($_GET[code])){$code $_GET[code];if(strlen($code)>35){die("Long.");}if(preg_match("/[A-Za-z0-9_$]/",$code)){die("NO.");}eval($code); }else{highlight_file(__FILE__); }限制&#xff1a; 1.webshell长度不超过…

【海思SS626 | 内存管理】海思芯片的OS内存、MMZ内存设置

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

基于jsp的宠物领养与服务管理系统(源码+论文+部署讲解等)

博主介绍&#xff1a;✌全网粉丝10W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术栈介绍&#xff1a;我是程序员阿龙&#xff…

【SpringBoot】自定义注解<约定式i18n国际化>终极升级版方案源码Copy

零、前言 在后端对于 SpringBoot 的 数据库数据&#xff0c;需要国际化的字段和主要显示字段是分离的&#xff0c;为了避免大耦合性&#xff0c;与用户端的国际化字段处理问题&#xff0c;统一采用主要显示数据的实体字段。为此&#xff0c;我设计了一套解决方案&#xff0c;通…

el-form-item,label在上方显示,输入框在下方展示

本来是两排展示去写&#xff0c;设计要求一排展示&#xff0c;label再上方&#xff0c;输入框、勾选框在下方&#xff1b;只能调整样式去修改&#xff1b;参考label-position这个属性 代码如下&#xff1a; <el-form ref"form" :model"formData" clas…

React应用(基于react脚手架)

react脚手架 1.xxx脚手架&#xff1a;用来帮助程序员快速创建一个基于xxx库的模板项目 包含了所有需要的配置&#xff08;语法检查&#xff0c;jsx编译&#xff0c;devServer&#xff09;下载好了所有相关的依赖可以直接运行一个简单结果 2.react提供了一个用于创建react项目…

AWVS——Web 应用漏洞扫描的强大工具

一、引言 在网络安全日益重要的今天&#xff0c;Web 应用的安全性备受关注。Acunetix Web Vulnerability Scanner&#xff08;简称 AWVS&#xff09;作为一款知名的 Web 应用漏洞扫描工具&#xff0c;为保障 Web 应用的安全发挥了重要作用。本文将详细介绍 AWVS 的功能、特点、…

【vulhub靶场之spring】——

简介&#xff1a; Spring是Java EE编程领域的一个轻量级开源框架&#xff0c;该框架由一个叫Rod Johnson的程序员在2002年最早提出并随后创建&#xff0c;是为了解决企业级编程开发中的复杂性&#xff0c;业务逻辑层和其他各层的松耦合问题&#xff0c;因此它将面向接口的编程思…

【Postman工具】

一.接口扫盲 1.什么是接口&#xff1f; 接口是系统之间数据交互的通道。拿小红到沙县点餐为例&#xff1a;小红想吃鸭腿饭。她要用什么语言来表达&#xff1f;跟谁表达&#xff1f;通过什么表达&#xff1f;按照生活习惯应该是&#xff1a;小红根据菜单对服务员用中文表达她想要…

联通数科如何基于Apache DolphinScheduler构建DataOps一体化能力平台

各位小伙伴晚上好&#xff0c;我是联通数字科技有限公司数据智能事业部的王兴杰。 更好的阅读体验可前往原文阅读:巨人肩膀 | 联通数科如何基于Apache DolphinScheduler构建DataOps一体化能力平台 今天&#xff0c;我将和大家聊一聊联通数字科技有限公司是如何基于Apache Dol…

k8s创建secret并在container中获取secret

k8s创建secret并在container中获取secret 本文使用的deployment和service与我的上一篇文章一样。link也放在下面了&#xff0c;如果不懂什么事deployment和service&#xff0c;可以先看我的上一篇文章。 k8s使用kustomize来部署应用 下面我们将通过创建secret开始。secret是我…

保姆教程篇:手把手教你从零开始本地部署Dify

本教程将指导您在个人电脑上安装和配置 Dify。 为什么需要Dify 在开始具体的教程之前&#xff0c;先搞清楚为什么要选择 Dify。 6 月份&#xff0c;阿里巴巴全球数学竞赛中&#xff0c;首次接受AI参赛。结果令人大跌眼镜&#xff1a;AI选手们的表现完全无法与人类选手相提并…

萌啦数据软件价格多少,萌啦数据软件价格是多少

在当今这个数据驱动的时代&#xff0c;无论是企业运营、市场分析还是个人研究&#xff0c;都离不开高效、准确的数据处理与分析工具。萌啦数据软件&#xff0c;作为业界一颗璀璨的新星&#xff0c;凭借其强大的功能、友好的用户界面以及灵活的数据处理能力&#xff0c;赢得了众…

[SWPUCTF 2021 新生赛]PseudoProtocols(构造伪协议)

打开题目所给的环境我们可以看到这样一句话&#xff1a; 这里我先尝试访问/hint.php &#xff0c;但是发现什么都没有发生&#xff0c; F12查看源代码也并没有发现什么&#xff0c;到这里来看的话似乎没有思路了&#xff0c;但是这个题的题目已经给了我们很明显的提示&#xff…

类和对象(中)(1)

类和对象&#xff08;中&#xff09;(1) 类的默认成员函数 默认成员函数就是用户没有显式实现&#xff0c;编译器会⾃动⽣成的成员函数称为默认成员函数。 ⼀个类&#xff0c;我们不写的情况下编译器会默认⽣成以下6个默认成员函数&#xff0c;需要注意的是这6个中最重要的是…

云计算实训24——python基本环境搭建、变量和数据类型、数据集合、py脚本

一、python环境搭建 确保拥有阿里云镜像 查看python环境 [rootpython ~]# yum list installed | grep python 查看epel是否安装 [rootpython ~]# yum list installed | grep epel 安装epel [rootpython ~]# yum -y install epel-release.noarch 查看是否安装python3 [rootpyt…

【数据结构】mapset详解

&#x1f341;1. Set系列集合 Set接口是一种不包含重复元素的集合。它继承自Collection接口&#xff0c;所以可以使用Collection所拥有的方法&#xff0c;Set接口的实现类主要有HashSet、LinkedHashSet、TreeSet等&#xff0c;它们各自以不同的方式存储元素&#xff0c;但都遵…

OceanBase V4.2特性解析:MySQL模式下GIS空间表达式的场景及能力解析

1. 背景 1.1. OceanBase Mysql gis空间表达式的应用场景及能力 在OceanBase 4.1版本中&#xff0c;mysql模式下支持了gis数据类型以及部分空间对象相关的表达式&#xff0c;随着客户使用空间数据的需求日益增长&#xff0c;需要快速地补齐空间数据存储和计算分析的能力&#…