文章主题:
🌟📚【深度解析】🔥李沐带你揭秘”GPT”背后的科技魅力!🔍Transformers家族中的明星成员,GPT,无疑是近年来人工智能领域的耀眼明珠。它不仅是编码器世界的翘楚,更是解码器领域的革命者。💡简单来说,GPT就像是Transformer的智慧大脑,通过强大的语言理解和生成能力,为我们解锁了无限可能。🚀每一篇论文都是其技术进化的足迹,今天就让我们一起走进这位AI巨擘的学术殿堂,探索那些引领未来的科研思想。🎓想要深入了解GPT的工作原理?不用担心,这里不仅有专业解读,还有详尽的文献梳理,带你领略科技浪潮中的前沿动态。📖如果你想了解更多关于如何利用GPT进行创新实践,或者对最新研究动态保持敏锐洞察,这里的读书笔记将是你宝贵的参考资料库。📚让我们一起在知识的海洋中遨游,感受科技进步带来的震撼与惊喜!🚀记得关注我,获取更多AI领域的深度解析和实战技巧,我们下次见!👋
上图是transformer,Bert,GPT的发表时间以及引用量。
GPT
🌟通过大量未标注数据挖掘潜力🔥,尽管实际应用中标注文本相对稀缺,作者巧妙地运用语言模型技术,在此基础上进行深度预训练。然后,针对各类特定任务,进行细致的微调优化,确保模型的有效适应性。🚀这就是他训练路径的独特之处,打破了传统依赖标注数据的局限,展现出强大的泛化能力。SEO关键词:无标注文本、预训练、下游任务微调整
🌟在处理无标签数据时的挑战💡:首先,面对不明确的损失函数选择,我们需要导航于复杂的模型优化路径。🔍寻找一种能精准衡量文本质量的标准是关键。其次,如何无缝地将文本特征从上层任务传递到下级子任务,是个技术难题。 kode: 知识迁移与表示统一性成为了瓶颈。每个NLP任务都有自己独特的语义需求,现有的解决方案尚不完善,需要创新的策略来弥合这些差异。记住,优化流程就像在语言的迷宫中穿行,每一步都需要精确和智慧。📚
GPT提出了一种方法:在没有标注的数据集中进行预训练,之后再在有标注的下游任务上进行微调。
🌟模型实力三大关键点揭示!🚀1️⃣ 预训练新纪元:无需标签,数据海洋也能铸就深度力量!🔍2️⃣ 微调秘籍:精细化调整,让模型更贴近任务需求!🔧3️⃣ 输入表达的艺术:每个子任务的输入,独特且高效地呈现!🎨🚀这三个方向引领着模型技术的进步,解锁无尽可能!💡让我们一起探索这背后的智慧与创新吧!🌐
预训练:输入含有大量token的语料库:U={u1,u2,…,un}\mathcal{U}=\left\{ u_{1},u_{2},…,u_{n} \right\}, GPT使用一个语言模型来极大化这个似然函数。具体的说,语言模型就是给定第 i−ki-k 到第 i−1i-1 个词,预测第 ii 个词出现的概率。其中 kk 被称为滑动窗口,当 kk 的值被设置的很大的时候,模型将会看到更多的东西,当 kk 的值被设计的很小时,模型将会看到更少的东西。
语言模型的损失函数:其实是一个乘法规则,但是因为有log,所以就变成加法
作者选择transformer作为骨干模型,其中作者选择transformer的decoder。
表示transformer decoder
当输入是 U=(u−k,…,u−1)U=\left( u_{-k},…,u_{-1}\right) 时,将这些词通过映射矩阵转化为词嵌入,再加上位置嵌入,再通过transformer_block对其进行更新,最后输入到全连接层,得到最终的预测值。
微调:当预训练后,作者将预训练好的参数直接迁移到下游任务中来。下游任务数据集表示为 C\mathcal{C} ,其中数据集中的每一个数据含有一系列的token: ,,x1,…,xmx^{1},…,x^{m} ,标签为 yy 。将这些数据喂到预训练好参数的transformer decoder中,将得到的结果用softmax进行分类,得到最后的结果。
下游任务的预测部分
将预测值和真实值进行比对,得到有监督部分的损失函数,如下所示:
有监督部分的损失函数
原文改写:🌟研究揭示,结合预训练与有监督学习,能显著提升模型性能!💡作者巧妙地将两者损失融合,通过双重优化路径,实现了卓越的训练成果。📝无需透露具体方法或联系方式,只需理解这一创新策略,你的模型也将踏上高效之路。🏆SEO友好词汇如:#预训练+监督学习#双重优化#模型提升可关注相关领域关键词,以获得更精准的搜索引擎排名。
下游任务的损失=有监督的损失+预训练的损失
如何把NLP里面很不一样的子任务表示成一个我们想要的形式(表示成一个序列+对应的标签)
预训练模型和微调之间的差异
极简版
entailment蕴含任务:给出两段文字,之后输出这两段文字是否是相互关联的。start+文本1+delim+文本2+extract输入到transformer_block中,之后将得到的结果输入到线性分类器中,得到最终的结果。
similarity相似任务:给出两段文字,之后输出这两段文字是否相关。start+文本1+delim+文本2;start+文本2+delim+文本1,将以上两个标签输入到transformer_block中,之后将得到的结果输入到线性分类器中,得到最终的结果。
multiple choice多项选择任务:给出一个问题和几个候选选项,之后挑选出正确的答案。strat+文本+delim+候选选项1,……strat+文本+delim+候选选项n,分别输入到transformer_block中,之后将得到的结果输入到线性分类器中,得到最终的结果。
实验:数据集BooksCorpus(数据集中包括7000篇书),之后使用12层transformer decoder,每一层的维度是768。其中BERT-base的维度和GPT的维度是一致的,BERT-base其实就是为了和GPT进行对比的。
GPT2
GPT2不仅仅使用一个更大的数据集,使用更大的模型去学习,还提出了一个新的更难的任务,zero-shot,零少样本学习,即将预训练好的模型,直接接诸多的下游任务,在多个任务下都可以取得很好的效果。
GPT3
GPT3的参数量进一步的增大,并且使用few-shot learning的方法,取得了很好的效果。
GPT3特别大,在计算子任务的时候不需要计算梯度,而且性能是非常好的。
最近一些年来,大家都使用预训练好的语言模型,之后再进行微调,这其实是有问题的:微调需要对每一个任务有一个任务相关的数据集以及和任务相关的微调。1,需要一个大的数据集,需要对其进行标号,当一个样本没有出现在数据分布的时候,泛化性不见得比小模型要好,
GPT3是一个1750亿参数的模型,评估用的是三种方法:1,Few-shot learning,对每个子任务,提供大概10-100个训练样本。2,特殊情况是one-shot模型,也就是每一个类别只有一个样本。3,zero-shot,一个样本都不提供,直接让其进行测试。
GPT中in-context learning和传统fine-tune的区别
GPT提出了一种in-context learning的方法,就是给出任务的描述和一些参考案例的情况下,模型能根据当前任务描述、参数案例明白到当前的语境,即使在下游任务和预训练的数据分布不一致情况下,模型也能表现很好。注意的是,GPT并没有利用实例进行Fine-tune,而是让案例作为一种输入的指导,帮助模型更好的完成任务。
这里再把语言模型类比成一个博览群书的人,虽然这个人很厉害,但你给他一些具体任务让他解决时,他还是会懵逼,例如我现在叫这个人做一个情感分析的任务,输入”请给下面影评做情感分析,判断正面还是负面:这个电影有点冗长,但是画面还是不错的,属于__”。这个人是蒙的,即使他博览群书,但他不知道评价标准,这句话即有正面的因素,也有负面的因素,究竟是分到正面还是负面好?但这时候,你给任务的时候,顺便给多一个参考案例,输入变成“请给下面影评做情感分析,判断正面正面还是负面:这个电影剧情很差,幸好选的演员把电影撑起来了,属于正面。这个电影有点冗长,但是画面还是不错的,属于__” ,这时候,这个博览群书的人就知道该把这个样本分到正面了。
在zero-shot的设置条件下:先给出任务的描述,之后给出一个测试数据对其进行测试,直接让预训练好的模型去进行任务测试。
在one-shot的设置条件下:在预训练和真正翻译的样本之间,插入一个样本做指导。好比说在预训练好的结果和所要执行的任务之间,给一个例子,告诉模型英语翻译为法语,应该这么翻译。
在few-shot的设置条件下:在预训练和真正翻译的样本之间,插入多个样本做指导。好比说在预训练好的结果和所要执行的任务之间,给多个例子,告诉模型应该如何工作。
AI时代,掌握AI大模型第一手资讯!AI时代不落人后!
免费ChatGPT问答,办公、写作、生活好得力助手!
扫码右边公众号,驾驭AI生产力!
转载请注明:🔥揭秘GPT大神!Transformer新解码器背后的预训练与微调秘籍?🚀从无标注到多任务奇迹,N | ChatGPT资源导航