2023年的深度学习入门攻略(1) – 从chatgpt下手
2012年,加拿大多伦多大学的Hinton教授带领他的两个学生Alex和Ilya一起用AlexNet撞开了深度学习的大门,从此人类走入了深度学习年代。
2015年,这个第二作者80后Ilya Sutskever参加创建了openai公司。现在Ilya是openai的首席科学家,带领工程师研制出了或许再次改动国际的chatgpt.
10多年间,从DNN,CNN,RNN为代表的榜首代深度神经网络,到以深度Q学习为代表的深度强化学习,再到以Transformer技能为根底以BERT为开创的大规模预练习模型。以及针对大规则预练习模型所需求的人工引导和数据标示等技能支撑的chatgpt。
深度学习呈现出理论的东西越来越多,可是应用的难度却越来越低的改变。
深度学习的东西发展主要有以下4个阶段:
- 以Caffe为代表的专用东西库
- 以TensorFlow和PyTorch为代表的生态体系
- 以Hugging Face库为代表的预练习模型生态
- 以openai API为代表的封闭库
此外,还有一些专用东西,比方推理功能优化的AI编译器技能如TVM,比方LLVM的MLIR等。比方支撑深度学习后端的各种GPGPU技能,比方OpenGL,OpenCL,Vulkan,WebGPU。比方支撑CPU上进行深度学习计算的OpenMP和XLA线性计算库,等等。
人工智能有三要素:算法、算力和数据。
在大规模预练习模型的时分,算法在中心上改变不大,都是堆积了许多层的Transformer模型。
可是其难点在于关于算力需求越来越巨大,而且随着数据的添加,所生成的数据的质量的保证也是重要的问题。
所以现在的主线就有两条:一条是如何堆积更多的算力,用更大的模型去进行打破,比方gpt3和gpt4就都是大力出奇观的作用;别的一条是如何进步数据的准确性,并不是说模型大了就自然正确了。现在许多模型都很大,可是作用好的只要openai一家,就说明晰这第二条主线的重要性。
别的,光堆算力关于更多人参加研讨是不利的,如何完成用较小的算力,完成更好的作用,也是抢手的主题。
所以,这个时分的教程,假如还从PyTorch完成MNIST下手的话,离运用chatgpt这样的打破性作用之间的gap就太大了。咱们的教程就从chatgpt开端。
从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的“提示工程”或许叫“引导工程”。
现在有一种轻视链,便是觉得用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,人类反应强化学习。
RLHF这种技能开始是用在玩游戏的强化学习中。假如用深度强化学习做过Atari游戏的同学都会知道,许多游戏太复杂了,想让算法找到成功的途径需求花费许多时刻,甚至经常退化找不到。这时分,假如有玩通关过的人来辅导一下,就会节约许多的试错时刻。
可是这也是个技能活,假如让哪一种情况下人都辅导,那人也受不了。所以要将人类的反应数据也加工成模型。后来,这种技能在自然言语处理中也遍地开花。
经过人类反应强化学习的办法进行微调之后,chatgpt居然惊讶地发现,它关于代码的总结才能、对答复代码问题的才能和支撑多种编程言语的才能比gpt3有显著的进步。这个成果跨界冲击了Codex等专门为编程言语研制的模型。
不过,不管是论文仍是实测成果都证明晰,chatgpt仍然会犯简单初级的过错,需求在理论和实践上都进一步的改善。
chatgpt并不是悉数
从现在看来,chatgpt和gpt4是领先的。可是,其它的方向咱们也需求坚持重视和敏感度。比方更小算力的方向是否或许有打破,或许是下一步的线索是否已经在悄悄地生长中。
开源的处理方案仍然是一个值得重视的方向。 抱openai的大腿并且搞好引志工程是现在是最实际的处理方案,可是咱们永久不能忽视开源的力气。哪怕开源的走错了方向,这个过错也更简单被学习到。
以Meta AI推出的LLaMA为例,他们的重视点不是人类反应强化学习,而是坚持由《Scaling laws for neural language models》一文提出的缩放规律:
- 练习丢失和模型参数之间存在幂律联系。具体来说,随着模型参数数量的添加,练习丢失会按幂律联系减小。这意味着更大的模型在练习集上能获得更好的功能。
- 模型的有用容量(即模型可以记住的信息量)与模型参数的数量呈线性联系。这表明更大的模型能存储更多的信息,从而在某些使命上体现更好。
- 随着计算资源的添加,对数丢失会随着模型参数数量的添加而下降。这表明,在有限的计算资源下,较大的模型或许比较小的模型体现更好。
也便是说,沿着缩放规律的方向,few-shot的才能就还会进一步进步。
而据Deepmind的一项研讨《Training Compute-Optimal Large Language Models》,模型和练习数据量等比例缩放才会获取更好的练习作用。现有的大模型参数加上去了,可是数据量没有跟上,所以浪费了资源。
所以LLaMA也测验依据Deepmind的这项研讨,经过添加练习数据来对较小的模型进行练习,可以得到比更大模型更好的作用。
小结
- 从编程完成悉数模型,到运用预练习模型,到调用API微调,再到引导工程,每一步都是技能的发展,每一层做好都不简单。
- 更大的模型现在仍然是最有期望的方向。更大的模型和更多的数据或许会涌现出更强的微调和少样本零样本才能。