海外更流行的是另外一个词 Generative Al
AIGC即是AI生成的内容简写
生成式与其他的那么关键词有什么关系呢
早在1956年,AI就被确立为了一个学科领域,在此后数十年间经历过多轮低谷与繁荣。
AI也叫人工智能,是计算机科学下的一个学科,旨在让计算机系统去模拟人类的智能,从而解决问题和完成任务。
机器学习是AI的一个子集,它的核心在于不需要人类做显示编程,而是让计算机通过算法自行学习和改进去识别模式,做出预测和决策。
比如如果我们通过代码告诉电脑,图片里有红色说明是玫瑰,图片里有橙色说明是向日葵。那程序对花种类的判断就是通过人类直接明确编写逻辑达成的,不属于机器学习,机器也没学。
但如果我们给电脑大量玫瑰和向日葵的图片,让电脑自行识别模式,总结规律,从而能对没见过的图片进行预测和判断,这种就是机器学习。
机器学习领域下有多个分支,包括监督学习、无监督学习、强化学习。
监督学习:在监督学习里,机器学习算法会接受有标签的训练数据,标签就是期望的输出值,所以每个训练数据点都既包括输入特征,也包括期望的输出值。算法的目标是学习输入和输出之间的映射关系,从而在给定新的输入特征后,能够准确预测出相应的输出值。
经典的监督学习任务包括:
- 分类,数据划分为不同的类别。
- 回归,也就是对数值进行预测。
比如拿一堆猫猫狗狗的照片和照片对应的猫狗标签进行训练,然后让模型根据没见过的照片预测是猫还是狗,这就属于分类。
拿一些房子特征的数据,比如面积、卧室树是否带阳台等,和相应的房价作为标签进行训练,然后让模型根据没见过的房子的特征预测房价,这就属于回归
无监督学习和监督学习不同的是,它学习的数据是没有标签的。所以算法的任务是自主发现数据里的模式和规律。
经典的无监督学习任务包括:
- 聚类,也就是把数据进行分组。
- 强化学习。学习↔反馈↔奖/罚↔学习....
聚类就比如拿一堆新闻文章,让模型根据主题或内容的特征自动把相似文章进行组织。
强化学习则是让模型在环境里采取行动,获得结果反馈,从反馈里学习,从而能在给定情况下采取最佳行动来最大化奖励或是最小化损失。
强化学习就跟训小狗似的,刚开始的时候小狗会随心所欲做出很多动作,但随着和训犬师的互动,小狗会发现某些动作能够获得零食,某些动作没有临时,某些动作甚至会遭受惩罚。通过观察动作和奖惩之间的联系,小狗的行为会逐渐接近训犬师的期望。
深度学习属于这三类里的哪一类呢?它不属于里面的任何一类。神经网络可以用于监督学习、无监督学习、强化学习,所以深度学习不属于它们的子集。
大语言模型也叫LLM language language model也是深度学习的一种应用,专门用于进行自然语言处理任务。大语言模型里面的大字说明模型的参数量非常大,可能有数十亿甚至到万亿个,而且训练过程中也需要海量文本数据集,所以能更好的理解自然语言以及生成高质量的文本
大语言模型也叫LLM large language model。是用于做自然语言相关任务的深度学习模型。
但大语言模型的大指的不仅仅是训练数据巨大,而是参数数量巨大。
参数是模型内部的变量,可以理解为是模型在训练过程中学到的知识。
随着参数的增加,他甚至有能力做出别的玩意儿,创造一些全新的品种。所以如今语言模型的参数数量可能是曾经的数万倍甚至数百万倍。
参数量的增大也同样可以实现更好的效果。
接下里的内容比较深入的探讨原理。
大模型的参数量、训练量和数据量是描述深度学习模型规模和训练过程中的关键指标:
- 参数量:
- 模型参数量是指在深度学习模型中所有可学习权重和偏置的数量总和。对于一个大模型,参数量往往达到数十亿乃至数万亿级别。这些参数包括但不限于神经网络中的连接权重、偏置项、注意力矩阵等等。模型参数越多,理论上模型就有更强的表达能力和拟合复杂函数的能力,但也意味着模型更庞大,对计算和存储资源的需求更高。
- 训练量:
- 训练量通常指的是模型在训练过程中所经历的计算量或者训练迭代次数。它涉及到训练算法在优化模型参数时所需要的浮点运算次数(FLOPs)、训练步数(epochs)或者训练时间。大模型因其参数众多,每一步训练更新都会涉及更多计算,所以总的训练量非常大。这要求足够的计算资源如GPU集群、TPU等硬件支持,以及高效能的训练框架以加速收敛。
- 数据量:
- 数据量是指用来训练模型的数据总量。在深度学习尤其是大模型训练中,数据量至关重要,因为它决定了模型能否学到足够丰富的规律和模式。大型预训练模型如GPT-3、BERT等,往往需要消耗TB级别的大规模语料库进行训练,这样才能让模型学会泛化并形成强大的表示能力。随着数据量的增加,模型有望捕捉到更细微、复杂的特征,从而提高在各种下游任务上的性能。
综上所述,大模型的参数量、训练量和数据量三者相辅相成,共同决定了模型最终的表现力和实用性。模型越大,通常就需要更大的数据量来充分训练,并且整个训练过程将消耗更多的计算资源。
在transformer架构被提出之前,语言模型的主流架构主要是循环神经网络,简称RNN(Recurrent Neural Network),而未能按顺序逐字处理。
- 自注意力机制
权重是模型在训练过程中通过大量文本逐渐习得的,因此transformer有能力知道当前这个词和其他词之间的相关性有多强,然后去专注于输入里真正重要的部分。即使两个词的位置隔得很远,transformer依然可以捕获到它们之间的依赖关系。
也正如论文标题所说,attention is all you need, 注意力就是你所需要的一切。
- 位置编码
在语言里,顺序很重要,即使句子里包含的字都是一样的,但顺序不一样也能导致意思大相径庭。
这也是为什么自然语言处理领域会用序列这个词,因为它表示一系列按照特定顺序排序的元素。
Transformer模型
通过位置编码词可以不按顺序输入给transformer,模型可以同时处理输入序列里的所有位置,而不需要像RNN那样依次处理。那么在计算时,每个输出都可以独立的计算,不需要等待其他位置的计算结果,这大大提高了训练速度,训练速度一快,训练出巨大的模型也不是那么难了。
但因为ChatGPT直接向公众开放,而且能让用户在网页上用对话的方式进行交互,体验很流畅丝滑,大众的目光才被吸引过去。
编码器
怎么现在又要用一串数字表示各个token?其中一个原因是,一串数字能表达的含义是大于一个数字的,能包含更多语法、语义、信息等等。
因此词向量不仅可以帮模型理解词的语义,也可以捕捉词与词之间的复杂关系。
我们这里为了直观是用三维向量空间表示的,把向量长度相应简化成了3,而提出transformer的论文里,向量长度是512GPT3是12288,所以可以想象能包含多少信息。
通过编码器的嵌入层得到词向量后,下一步是对向量进行位置编码。
这就是编码器的核心部分,它的主要任务是把输入转换成一种更抽象的表示形式,这个表示形式也是向量记串数字,里面既保留了输入文本的词汇信息和顺序关系,也捕捉了语法语义上的关键特征。
每个字注意力投的权重都是模型在之前的训练过程中从大量文本里逐渐学习和调整的。在多头自注意力后面还有一个前馈神经网络,它会对自注意力模块的输出进行进一步的处理,增强模型的表达能力。
解码器
现在我们知道了解码器本质上是在猜下一个最可能的输出,至于输出是否符合客观事实,模型无从得知。所以我们能经常看到模型一本正经的胡说八道,这种现象也被叫做幻觉。
解码器的一整个流程会重复多次,新的token会持续生成,直到生成的是一个用来表示输出序列结束的特殊token。现在我们就拥有了来自解码器的完整输出序列。
但以上描述的是attention is all you need里的原始transformer。编码器用来理解和表示输入序列,解码器用来生成输出序列。