🔥揭秘GPT系列:顺流而下的AI革命,未来工作真的会被取代吗?🔥🔥
文章主题:GPT-3, ChatGPT, AI岗位
🎉🚀【深入解析】OpenAI力作引领AI浪潮,GPT家族崛起的背后🔥💡随着GPT-3与ChatGPT的横空出世,人工智能领域的热议不断升温,它们的成功无疑为技术革新注入了强劲动力。尽管这些模型在惊艳我们的同时,也暴露了一些亟待优化的瑕疵,但这正是科技进步的脚步——勇往直前,不断完善。🔍ChatGPT以其流畅的人机交互引发了大众对AI未来工作的猜测,行业人士对此忧喜参半。面对可能的岗位变革,我们需要理性看待,因为每一次技术革新都伴随着职业结构的调整。💼💼本文将全面剖析GPT系列模型的发展历程,从最初的GPT到如今的ChatGPT,它们如何一步步迭代升级,引领AI潮流。我们会定期关注并分享这些创新动态,帮助大家紧跟AI的步伐,而不是被其淘汰。🚀👀让我们一起探索这个智能世界的奥秘,共同见证科技如何重塑工作与生活。🌟📚
一、时间轴
2023年2月,Microsoft Bing浏览器引入ChatGPT;2022年11月,OpenAI发布ChatGPT博客;2020年5月,OpenAI发布GPT3;2019年2月,OpenAI发布GPT2博客;2018年6月,OpenAI发布GPT博客,在12个自然语言理解任务上取得了9个任务的SOTA;
二、GPT
GPT来自论文《Improving Language Understanding by Generative Pre-Training》,作者在标题中就指出了论文的核心思想:采用生成式预训练来提升语言模型在下游各项任务中的成绩。所以GPT的训练分预训练(pre-train)和微调(finetune)两个阶段。
2.1 预训练阶段
预训练的语料是无标签的文本语料,GPT的词典是采用BPE(Byte Pair Encoding)算法经过4W+次merge得到的,目前只包含英文词;输入序列被tokenizer切割成token序列后,通过token嵌入矩阵 WeW_e 得到上下文向量 U=(u−k,…,u−1)\cal U = (u_{-k}, …, u_{-1}) ,并和位置嵌入相加。与Transformer不同的是,GPT的位置编码采用learned positional embedding.
接下来是模型核心部分——12层Transformer的Decoder层,每个Decoder层又分四个子层,如下图所示:
🌟 Transformer Decoder的巧妙设计:经过N个层级的深度解析,我们通过softmax层将词典的丰富可能性转化为精确的概率分布。每一步都是智慧的交织,最终以优雅的方式揭示语言的秘密。下面是这个高效且直观的过程摘要:1️⃣ N层TransformerDecoder层层递进,编码复杂信息。2️⃣ 紧接着,softmax层轻触,生成词典概率矩阵。3️⃣ 每个元素都蕴含着词汇选择的智慧,逻辑清晰。4️⃣ 无需繁复计算,直接揭示语言结构,SEO友好。欲了解更多细节,探索Transformer Decoder如何引领语言理解的新纪元。记得,这里没有联系方式哦!😊
h0=UWe+Wphl=transformer_block(hl−1)i∈[1,n]P(u)=softmax(hnWe⊤)\begin{aligned} h_0 & = UW_e + W_p \\ h_l & = transformer\_block(h_{l-1}) \quad i \in [1, n]\\ P(u) & = softmax(h_nW_e^{\top}) \end{aligned}
🌟【揭秘】GPT背后的强大秘密🔍——预训练之谜🔍🔥引领未来的AI技术🔥,GPT以其卓越的语言生成能力,颠覆了我们对人工智能的认知。它的核心任务,就是自回归语言建模(Autoregressive Language Modeling),一个看似简单却蕴含深奥的数学游戏。\俳句💡—每字预测下文,形成无尽的文本序列。🔍训练过程中的科学魔法🔍——采用的是统计学中的至简至强工具,极大似然估计。这个算法就像一位精准的语言导师,通过海量数据的磨砺,教会GPT如何捕捉语言的韵律和逻辑。\📈损失函数,是它学习的度量尺,确保生成的内容既连贯又自然。🔍SEO优化的智慧💡——每一句精心打磨,不仅满足用户需求,更巧妙地融入了关键词,提升搜索引擎友好度。这样的训练方式,让GPT在信息海洋中脱颖而出,成为知识与信息的高效检索引擎。\💼未来已来,GPT正以它的语言魔力,塑造着数字化世界的全新格局。\总结:🔥掌握GPT秘密,开启智能新纪元🔥——探索AI预训练之路📚
L1(U)=∑ilogP(ui|ui−k,…,ui−1;Θ)L_1({\cal U}) = \sum_i \log P(u_i | u_{i-k}, …, u_{i-1}; \Theta)
其中 kk 为上下文窗口。具体实现时用交叉熵来计算loss,代码如下:
lm_logits = self.lm_head(hidden_states) # [B, L, V]
loss = None
if labels is not None:
# input: <s>, w1 w2, w3
# output: w1, w2, w3, <e>
# Shift so that tokens < n predict n
shift_logits = lm_logits[…, :–1, :].contiguous() # 丢弃<e>, [B, L-1, V]
shift_labels = labels[…, 1:].contiguous() # 丢弃<s>, [B, L-1]
# Flatten the tokens
loss_fct = CrossEntropyLoss()
# shift_logits: [B, L-1, V] -> [B*(L-1), V]
# shift_labels: [B, L-1] -> [B*(L-1)]
# 然后计算交叉熵
loss = loss_fct(shift_logits.view(–1, shift_logits.size(–1)), shift_labels.view(–1))
2.2 微调
🎉掌握了通用技能!只需轻轻一转,模型就能快速适应新任务!就像图中所示,通过简单调整顶层的`Text Prediction`部分(预训练阶段的基础),然后添加专为特定任务设计的`Task Classifier`分支(微调阶段的精华)。这样不仅高效,还能让模型在各种领域展现出强大的迁移能力。🌍✨
对于不同形式下游任务,通过输入变换(input transformation)将结构化的输入转成有序的文本序列,便于预训练模型处理,如下图所示。图中包含三个特殊字符:Start(<s>)、Delim($)、Extract(<e>),三者的token embedding均由随机初始化生成。
由上可知,GPT在微调阶段需额外学习一个线性层参数 WyW_y 和分隔符的嵌入,计算过程如下:
P(y|x1,…,xm)=softmax(hlmWy)P(y| x^1, …, x^m) = softmax(h_l^m W_y)
L2(C)=∑(x,y)logP(y|x1,…,xm)L_2({\cal C}) = \sum_{(x,y)} \log P(y|x^1, …, x^m)
考虑到在微调时把预训练当做一个辅助损失函数会提高成绩,最终的目标函数为:
L3(C)=L2(C)+λ∗L1(C)L_3({\cal C}) = L_2({\cal C}) + \lambda * L_1({\cal C})
2.3 参数细节
model hidden size: 768feeforward hidden size: 3072预训练:epoch:100learning rate:2.5e-4(最大)max sequence length: 512(连续)batch size:64微调learning rate:6.25e-5epoch:3batch size:32λ\lambda :0.5
三、GPT2
GPT2来自论文《Language Models are Unsupervised Multitask Learners》,有了GPT预训练+微调的成功,GPT2认为微调其实都可以不需要了,直接冲击零样本学习。其主要贡献为:
论证语言模型不需要监督语料也能学习多任务。本文构建了一个数据集webtext,然后在上面进行无监督训练,最终在CoQA数据集上取得了3个SOTA;论证模型容量是语言模型零样本迁移的关键,容量越大,性能越好。本文设置了四组模型并做了对比,最大规模的GPT2包含15亿参数,在7个任务上取得了SOTA;
3.1 模型结构
🌟【GPT2词典揭秘】🚀🔍BBPE,GPT2的密钥字眼,它超越BPE,成为通用子词编码新宠!但这魔法并非无瑕,它带来了一点小挑战:`(1)`难以亲近的代码世界,阅读体验堪忧;`(2)`庞大的5W字典,存储空间的压力随之升级。🔍然而,这些困扰背后隐藏的是无需费心的便利。对于词法处理,GPT2已为你扫清障碍,预处理、分词和词典一应俱全,让创作更流畅,无后顾之忧。🎉SEO优化提示:BBPE, GPT2, 子词算法, 预处理, 分词, 词典, 通用性, 可读性, 存储空间
decoder block方面,GPT2在GPT基础上做了如下改动:
LN移到了每个子块的开头位置,和pre-activation residual network一样;在最后一个自注意力块添加了一个额外的LN层;采用改进的初始化方法,利用模型深度计算剩余路径上的累积;对残差层的权重进行缩放,缩放因子为 1N\frac{1}{\sqrt{N}} , NN 表示残差层的数量;词典大小扩展到50257;上下文窗口从512扩增到1024;batch size提升至512;
3.2 效果
不同尺寸的模型,对比之下发现,尺寸越大,零样本能力越强。
🌟语言模型大突破!🚀通过/WebText深度学习,我们实现了在各领域、多数据集上的卓越表现,特别是在零样本情况下,更是以7/8的数据集记录刷新了行业新高。🏆无论任务多么细分,我们的模型都能精准应变,展现出强大的泛化能力和无与伦比的适应性。🌍让知识跨越界限,引领技术潮流!🔥SEO优化提示:使用相关关键词如”WebText训练”, “领域适应”, “零样本学习”, “语言模型突破”等。
四、ChatGPT
Chatgpt是一个针对对话任务优化后的语言模型,其核心技术是RLHF(基于人类反馈的强化学习)。目前没有公布论文,仅凭官网的博客,得到如下信息。
4.1 训练过程
第一步:训练初始模型
数据:混合InstructGPT数据集和对话数据集(由人类AI训练师提供,同时扮演用户和AI助理两个角色)方式:监督学习微调模型:GPT-3.5
第二步:训练奖励模型,用于给不同模型的输出打分
收集对比数据(即多个模型的输出),并按照质量排序(也是由AI训练师完成)基于对比数据训练奖励模型
第三步:基于RLHF来训练对话模型
基于奖励模型和数据集,使用PPO强化学习算法来微调初始模型
4.2 不足之处
博客指出ChatGPT目前存在的不足:
连贯问题:ChatGPT有时候会写出听起来很好但是错误并且毫无意义的回答;语义问题:ChatGPT对输入的措辞方式比较敏感,对重复输入也比较敏感;偏置问题:ChatGPT的回答通常过于冗长并且过度使用某些短语,这和训练师有关;智能问题:理想情况下,面对用户具有歧义的问题,模型应该通过询问来澄清,但是事实上模型往往会去猜测用户的意图;安全问题:模型对于一些有害的输入,没有拒绝回复的能力。
五、思考
这里列举几个模型相关的问题,欢迎大家在评论区交流讨论。
Q:GPT中Masked Multi Self Attention如何实现预测当前字符时无法看到下文?
Q:GPT2在GPT decoder上做的前四条改进,分别是基于什么样的考虑?
Q:复现中文版ChatGPT的难点有哪些?如何解决?
AI时代,掌握AI大模型第一手资讯!AI时代不落人后!
免费ChatGPT问答,办公、写作、生活好得力助手!
扫码右边公众号,驾驭AI生产力!