首页 > 其他分享 >深入理解预训练与微调,为什么需要预训练,什么是微调?

深入理解预训练与微调,为什么需要预训练,什么是微调?

时间:2024-11-22 11:13:38浏览次数:3  
标签:训练 AI 模型 微调 学习 深入 数据

大模型需要先经过模型设计和实现,然后再进行预训练获得通用能力,最后通过微调强化能力**”**

在上一篇文章中介绍了预训练为什么要使用无监督学习,并简单介绍了预训练与微调;而在之前的文章中也讲过什么是训练和微调,而现在再回头看看发现之前的理解还是太肤浅了。

所以,今天我们就来深入理解一下预训练与微调。

大模型预训练与微调

在之前学习大模型训练和微调的过程中,一直认为预训练就是使用大规模数据训练一个新模型的过程;而微调就是在预训练模型的基础之上,做更加细化的训练。

虽然上面这种理解不能说有错,但只能说只看到了大模型训练和微调的表象,而没有透过现象看到模型训练的本质。

先思考一个问题,模型训练和微调的区别是什么?

其实从技术的角度来说,模型训练和微调没有任何区别,都是通过训练数据,对神经网络模型的参数进行调整;虽然从技术上两者没什么区别,但从功能和数据上两者还是有很大区别的。

什么是预训练模型,为什么需要预训练模型?

从本质上来说,大模型就是一种使用一种机器学习的架构去模仿人类大脑神经元的过程;而大模型的学习本质上是基于神经网络模型,通过概率实现的归纳总结。

也就是说,虽然大模型无法实现和理解人类的思考方式,但大模型可以通过一种架构去学习不同语义下某个参数出现的概率,其本质上是一个概率模型。

而预训练的作用,就是让大模型在什么都不知道的情况下,通过对大量输入数据进行归纳总结,建立自己的概率模型;这样根据正态分布原则,大量的参数就会呈现正态分布的模式,也就是说通过这种方式大模型能够学习到大量通用的数据模式,这就是无监督学习。

这就类似于,我们在工作的过程中虽然大部分都是使用我们的专业技能;但同时我们也可以学到很多职场的通用技能;虽然短时间来看,你的收入主要靠你的专业技能,但从长远来看你的专业技能不一定有用;但你的职场技能却能够通用。

那预训练是否只能使用无监督学习的方式?

其实预训练和学习方式没有任何关系,不论是监督学习还是无监督学习,预训练都可以使用。

而决定一个模型到底使用监督学习还是无监督学习的方式进行预训练,这是由此模型的定位和目标所决定的。

比如说,你设计一款模型,然后你想让它具备更加通用的能力;这样在必要的时候就可以对模型进行微调,这样就不用每次都重新训练一个模型;这时,你这个模型就只能使用无监督学习的方式,因为只有无监督学习才能让大模型具备更加通用的能力。

而采用监督学习进行模型预训练,那么训练出来的模型就只擅长特定类型的任务处理;如果想让它处理其它类型的任务,那么通过微调是无法实现的,只能进行重新训练。当然,前提是当前模型的架构适用于其它类型的任务。

而微调是什么?

微调的本质就是对大模型进行某个方面的强化,比如说一个自然语言处理大模型,你使用大量的安徒生童话进行微调,这时此模型就会更加擅长讲童话,而不是讲笑话。

所以,微调的作用就是让大模型在当前类型任务下,进行更加细致的学习,也就是让大模型更加“过拟合”。但前提是当前大模型支持这样的任务,如果大模型本身不支持这样类型的任务,那么再微调也无济于事。

预训练有哪些好处?

预训练的好处在于,通过利用大规模数据进行训练,模型可以学习到更泛化的特征表示,从而在具体任务上表现更好。这对于数据较少的任务或者计算资源有限的情况下特别有用。

预训练能够让大模型在底层特征具备通用性,而在高层特征具备相关性。

预训练有什么作用?

  • 加速训练过程:通过预训练,在大规模数据上学习到的通用特征表示可以作为初始化参数,加速模型在特定任务上的训练过程。这是因为预训练的参数已经接近最优,并且已经捕捉到了输入数据中的一些通用模式,这样在目标任务上的优化过程更容易收敛。

  • 提高性能:预训练的模型通常在具体任务上表现更好。这是因为在预训练阶段,模型学习到了大量的数据中的通用特征,这些特征对于许多任务都是有用的。在目标任务中,预训练的模型能够更好地利用这些通用特征,从而提高性能。

  • 解决数据不足问题:在许多实际任务中,数据往往是有限的,特别是深度学习模型需要大量的数据进行训练。通过预训练,可以利用大规模数据集进行通用特征的学习,然后将这些学到的特征应用于目标任务,从而克服数据不足的问题。

  • 迁移学习:预训练的模型可以作为迁移学习的基础。将预训练模型的参数应用于新的相关任务,可以利用预训练模型在大规模数据上学习到的通用特征,从而在新任务上提高性能。这对于目标任务数据较少的情况下特别有用。

  • 提高泛化能力:预训练有助于提高模型的泛化能力,即在未见过的数据上表现良好。通过在大规模数据上学习通用特征,模型更能够从输入数据中捕捉普遍的模式,而不是过度拟合训练集。

总之,预训练和微调是大模型实践过程中很重要的两个步骤;预训练是微调的前提,微调虽然能够在某个方面进行强化,但它无法打破预训练模型的限制。

大模型能处理什么类型的任务是由其模型架构和实现来决定的,预训练是让模型具备处理某个任务的能力,而微调是让其在某个任务上更加擅长;但不论是预训练还是微调都无法让大模型做它根本做不到的事。

如何学习AI大模型 ?

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。【保证100%免费】

标签:训练,AI,模型,微调,学习,深入,数据
From: https://blog.csdn.net/h1453586413/article/details/143851393

相关文章

  • 蓝桥杯训练7——刷题统计
    #该代码运行时间太长了a,b,n=map(int,input().strip().split())deftonji():  sum=0  count=0  whileTrue:    foriinrange(1,8):      count+=1      ifi<=5:        sum+=a   ......
  • 深入计算机语言之C++:STL之vector的模拟实现
    ......
  • 代码随想录算法训练营day52 day53| 卡码网101.孤岛的总面积 102.沉没孤岛 103.水
    学习资料:https://www.programmercarl.com/kamacoder/0101.孤岛的总面积.html#思路邻接矩阵是否被遍历过;每个坐标点上的值为0、1、2等等;四个边的考虑;地图的遍历次数都是卡码网的题学习记录:101.孤岛的总面积点击查看代码#用深搜,遍历邻接矩阵的四个边,先遍历所有可遍历的岛屿,......
  • 深入理解 Callable 和 Future:异步编程的强大工具
    在多线程编程中,Callable和Future提供了一种强大的方式来处理异步任务,它们解决了Runnable无法返回结果以及无法处理异常的问题。通过Callable和Future,你可以实现更加高效和灵活的线程管理。本篇博客将详细探讨Callable与Runnable的区别,Future的作用以及如何利用这......
  • 2024.11.20组队训练记录
    B.osu!mania题面:\(pp=\max\left(0,\frac{320a+300b+200c+100d+50e+0f}{320(a+b+c+d+e+f)}-80\%\right)\times5\timesppmax\)输入:输入的第一行包含一个正整数$T$,表示数据组数。保证$1\leqT\leq100$。对于每组测试数据:输入......
  • 【深度学习】模型训练时减少GPU显存占用
    训练过程中,显存的主要占用来自:激活值(Activations):前向传播过程中存储的中间计算结果。梯度存储:用于反向传播。权重和偏置参数。一、梯度检查点(GradientCheckpointing)在深度学习中,反向传播需要保留前向传播过程中生成的中间激活值(activations)来计算梯度。GradientCheckp......
  • 深入解析 Autotools 自动化工具
    Autotools是一套功能强大的构建系统工具集,用于自动生成软件项目的构建脚本,解决跨平台兼容性问题。它广泛用于开源项目的开发,特别是在Linux和类Unix系统中。本文将详细解析Autotools的概念、工作原理、使用方法及实战案例,并结合逻辑图和表格使其更加通俗易懂。什么......
  • 【淘汰9成NLP面试者的高频面题】BPE 分词器是如何训练的?
    **【淘汰9成NLP面试者的高频面题】BPE分词器是如何训练的?**︎重要性:★★此题主要是考察面试者对分词的理解,一个好的分词器不仅能够降低词表的大小,减少OOV的出现,而且还能引入额外的先验知识,降低模型的学习难度。这是我常用的一个面试题。看似简单的基础题,但在面试中能准确回答......
  • 深入计算机语言之C++:STL之vector的认识和使用
    ......
  • 深入理解C++11右值引用与移动语义:高效编程的基石
    文章目录前言......