“ 预训练一般采用无监督的方式进行,而微调一般采用监督学习的方式进行 ”
说到预训练大模型,首先就要先了解一下pre-training(预训练) 和 fine-tuning(微调)。
什么是预训练?
比如说你想做一个图像识别的大模型,这时你需要使用某种神经网络架构(比如Transformer)来设计一个神经网络,然后通过某种初始化方法对神经网络参数进行初始化。
然后,你就可以使用大量的训练数据对模型进行训练,也就是不断的调整其参数;直到损失差不断的降低,然后达到一个合适的值;这就是一个完整的训练过程,而这个训练完成的模型就叫做预训练模型。
预训练一般使用无监督学习。
什么是微调?
所谓的微调其实和预训练差不多,只不过预训练是一个从未训练过的模型,其参数值都是随机的,而微调是在预训练的基础之上对部分参数进行调整。
这就类似于二八定律,你想让大模型统计一下社会的财富分配,然后使用没经过预训练的模型,然后经过大量的数据进行预训练之后发现,社会的财富分配基本符合二八原则,也就是说百分之八十的财富在百分之二十的人手上;而微调就是,在微调之前,别人就告诉你基本上属于二八定律,你只需要在这附近统计一下即可。
微调一般使用监督学习。
为什么需要预训练和微调?
一般情况下,很少有人会从0开始设计和训练一个模型,原因就是技术难度大,算力要求高,而且需要大量的训练数据集,而这些对绝大部分人来说都是一个无法跨越的坎;其次,从0开始设计和训练一个模型属于严重的资源浪费,明明已经有现存的模型可以使用,为什么还要浪费资源去重新做一个差不多的。
所以,一般做大模型研究的组织或企业就会开源一部分已经预训练过的模型,这样其他人就可以基于这个模型做二次训练或微调,这样就可以大量节约技术,算力和时间成本。
还有一个原因就是,对大模型训练来说,必须要有足够的训练数据做支撑,否则就很容易形成过拟合的现象,而避免这种现象唯一的解决办法就是增加数据量。
为什么预训练要使用无监督学习呢?
在上面的内容中介绍了一些关于预训练的背景,但还有一点没有完全说清楚,预训练还有一个原因就是,让模型在接触特定任务数据之前,先通过学习大量通用数据来捕获更多广泛有用的特征,从而提升模型在目标任务上的表现和泛化能力。
预训练技术通过从大规模未标记数据中学习通用特征和先验知识,减少对标记数据的依赖,加速并优化在有限数据集上的模型训练。
模型在训练过程中容易产生欠拟合和过拟合的现象,欠拟合就是模型训练之后的表现能力很差,说白了就类似于啥东西都懂,但啥玩意都说不明白;而过拟合就是,对某个东西太擅长,而其它什么玩意都不会。
比如,欠拟合就是有眼睛,鼻子,并且有四肢的就是人,但事实上猫狗等很多动物都具备这些特征。而过拟合就是,有眼睛,鼻子和四肢,并且皮肤必须是黄色的才是人;但其实人类还有黑色和白色人种,这就是过拟合。
所以说预训练为什么要使用无监督学习?
总结就两点,一是因为数据的稀缺性,训练出一个专业领域的大模型需要大量的数据,特别是标注数据,但这些数据的获取困难重重;而预训练能够让模型从大量未标记的数据中学习到大量特征,从而减少对标记数据的依赖,这样就可以在有限的数据集上训练出良好的模型。
二是因为先验知识的问题,有些公司在做模型时,会自己设计和训练模型;但事实上很多时候模型在具备一定的其它知识的情况下,会表现的更好。
比如,我们九年制义务教育让我们每个人从小学就开始学习语数外,物化生等学科;这玩意就类似于预训练,虽然你学了这些东西并不一定有用;但由于学科之间的关联性,你有了其它科目的基础再去学一些科目就会变得更容易。
比如说,你有语文和外语的基础,你才能通畅的阅读其它学科的文献资料;你有数学基础才能更好的去学习物理化学和生物,这就是先验知识的问题。
而如果你上来就使用监督学习的方式,通过大量的标记数据进行训练;那么你就相当于一开始就扎进了物理,化学,数学等其中的某一个科目,其它的科目一窍不通。
虽然你拼命学习也可以学习到很多物理,化学和数学的知识;但没有数学的支撑,你永远也学不好物理和化学;而且深入到其中某一个领域,而对其它领域完全不了解,那么也会严重限制你的眼光和视角。
所以说一般情况下,一个大模型的出现需要经过模型的设计,架构的选择,无监督学习的预训练和监督学习的强化训练,才能让大模型表现更好,而不至于过拟合或欠拟合。