从零开始理解大语言模型(LLM)原理(二)神经网络如何被训练?
在上一篇的简单神经网络中,为了让这个魔力“盒子”能够接收我们输入的数值(代表颜色的RGB值与体积Vol值),并输出期望的信息(叶子还是花的概率),我们假设已经“神奇的”得到了能够生成合理输出的模型权重(神经元连线上的数字,也被称为模型的。梯度是在每次权重更新后,根据最后输出结果的损失值,沿着神经网络方向“逆流而上”,根据特定的算法分析每一层对损失的影响,得到每个权重的梯度值。其实,这些权重是通过一
一、模型是如何被训练的?
在上一篇的简单神经网络中,为了让这个魔力“盒子”能够接收我们输入的数值(代表颜色的RGB值与体积Vol值),并输出期望的信息(叶子还是花的概率),我们假设已经“神奇的”得到了能够生成合理输出的模型权重(神经元连线上的数字,也被称为模型的参数):

用来识别“叶子”与“花”的简单神经网络
那么,这些权重是怎么确定的呢?
其实,这些权重是通过一个叫做“训练”的过程来确定的,而这个过程需要使用一些“训练数据”,也就是“投喂”给模型用来学习的知识。
现在假设我们有一组针对这个神经网络的训练数据:其中包含输入数据及其对应的叶子或花的标签。因为每组数据(R, G, B, Vol)都已经明确标注了它是“leaf”还是“flower”,所以这是一种“有标注的数据”:

一组标注的用来训练神经网络的数据
下面是你可以看懂的模型训练的具体过程。记住,训练的目的是为了确定“权重”:
1、最开始:随机初始化权重(参数)
我们从随机数开始。也就是说,将每个权重初始化为一个随机值。比如像下图,这里的连线上的权重数字都是随机生成(图中未列全):

给神经网络设置随机的权重
2、输入训练数据,并计算输出
以一组标注为“叶子”的输入数据为例:R = 181, G = 216, B = 210, Vol = 12.0
我们的目标是让模型的输出层中表示“叶子”概率的神经元数值更大。例如,希望叶子的输出为 1,而花的输出为 0。
由于当前模型的参数是随机的,因此输出数值可能并不符合我们的预期。假设模型输出为 0.6(叶子)和 0.4(花)。如下:

初始权重下的输出结果
3、计算“损失”
由于这里输出层的结果(0.6,0.4)与我们期望的结果(1,0)并不一样。所以用一个数值来衡量当前输出与期望输出的差距,也就是损失(loss)。计算损失的方法是“损失函数”,这里用最简单的计算方法:
损失 = 求和(|期望值-输出值|)
对于本例:
损失 = |1 - 0.6| + |0 - 0.4| = 0.4 + 0.4 = 0.8
很显然,损失值越小,代表模型输出越接近我们期望的结果。而训练模型的目标就是“最小化损失”。
4、调整权重(参数)
为了最小化损失,我们需要调整模型的权重,也就是图中连线上的数字,看看增加或减少它是否会使损失变小。比如在上面例子中:当前某权重为 0.17,输出层的叶子值比期望值低,且叶子的神经元值是正数。现在我们尝试调整:
- 将这个权重增加到 0.18,重新输出并计算损失。观察是否损失减小。如果减小了,说明增加这个权重是正确方向。
当然在实际训练中不会每次只调整一个权重。通过这样反复多轮的调整,将所有的权重不断的稍做增大或者减小,最终损失就会降低。
这是权重调整的最简单描述,但实际训练中要复杂的多,你还需要理解几个概念:
【梯度】
在实际训练时,不可能是这样“摸索”式的、无方向的调整。每次调整权重你需要知道:
- 向哪个方向调整,是增大还是减小?
比如把某个权重0.17应该调整到0.18还是0.16?
- 调整会导致输出损失变化的速率多大?
这决定了把某个权重0.17调整到0.18,还是调整到1.8?
在神经网络中,用“梯度”这个概念来帮助调整权重。权重的梯度就是用来衡量损失相对于神经网络中该权重的变化方向与变化率**。也就是:****当改变这个权重时,损失会增大还是减小,及其变化得有多块。**比如,某两个权重的梯度分别为+100,-20,意味着增大第一个权重会使得损失变大,增大第二个权重则会使损失变小;且第一个权重调整时,损失变化的更快。
有了”梯度“这个帮手,现在调整权重是不是就有了方向感与尺度感?
【梯度下降】
现在我们可以方便的调整权重:你只需要根据梯度指引的方向,根据一定的算法把所有权重向使得损失减小的方向调整。
**这种通过梯度来调整权重(参数),让损失不断变小的方法称为梯度下降(Gradient Descent),而这里的优化算法就是梯度下降算法。**简单说,梯度下降算法就是一个根据旧权重与梯度来生成新权重的公式。即:
新权重 = 旧权重 - 学习率 * 权重对应梯度(学习率是一个控制调整步幅的值)
现在假设某个权重是0.17,梯度是200,学习率0.01,那么计算出的新权重:
新权重 = 0.17 - 0.01 * 200 = -1.83
把这个新权重更新到模型,准备开始下一轮的训练过程。
【梯度是如何计算出来的?】
梯度是在每次权重更新后,根据最后输出结果的损失值,沿着神经网络方向“逆流而上”,根据特定的算法分析每一层对损失的影响,得到每个权重的梯度值。这一部分的算法在此不做深入,不影响后续的理解。
5、重复迭代,逐渐优化模型
每次更新所有权重后,我们重新计算输出与损失,并再次调整权重。随着多次迭代(即“训练”),损失会逐渐减小,模型的参数趋于合理。通常,完整训练一个数据集的过程称为 一个周期(epoch)。通过多次周期训练,就可以让模型在整个训练集上表现良好。
以上就是一个神经网络模型的训练过程,用下图做个总结:

简单总结训练神经网络的一次迭代(epoch):
- 前向传播(Forward Propagation):输入数据送入神经网络,输出结果
- 计算损失(Loss Calculation):通过损失函数计算输出结果与期望的差异
- 反向传播(Backward Propagation):计算损失关于参数(权重与偏置)的梯度
- 参数更新(Parameter Update):根据梯度下降算法更新训练参数
6、其他说明
1. 平均损失
上面计算损失时,我们都是用一个样本举例。但实际上模型训练中会涉及大量训练样本时,每个样本的损失可能并不一致。例如,模型对样本 A 的预测可能很好,但对样本 B 的预测误差很大。如果只根据某一个样本调整权重,会导致对其他样本的预测变差。
为了克服这一问题,通常定义 平均损失(Average Loss),即对所有训练样本的损失求平均值。 训练过程中,我们通过优化平均损失,确保模型在整体上对所有样本表现更好,而不仅仅对单个样本。假设有 3 个样本,其损失分别为 0.2、0.5 和 0.1,则平均损失为:
(0.2+0.5+0.1)/3 = 0.2667
通过梯度下降算法,我们根据平均损失调整权重,既能降低高损失样本的误差,也能维持低损失样本的准确性,从而能使模型在整个数据集上有更均衡的表现。
2. 梯度“爆炸”与“消失”
在实际操作中,训练深度神经网络是一个艰难且复杂的过程,因为在训练过程中,梯度很容易失控(特别是在非常深的神经网络中)。
- 权重梯度可能会变得非常小(梯度消失):导致权重无法根据梯度做更新。
- 权重梯度也可能非常大(梯度爆炸):权重变化时导致损失变化过于剧烈。
梯度消失与梯度保障会导致训练不稳定。实际应用中,会通过改进的损失计算函数、激活函数(参考第一节内容)等方法来改进,暂时你只需要知道这个问题的含义即可。
二、如何系统学习掌握AI大模型?
AI大模型作为人工智能领域的重要技术突破,正成为推动各行各业创新和转型的关键力量。抓住AI大模型的风口,掌握AI大模型的知识和技能将变得越来越重要。
学习AI大模型是一个系统的过程,需要从基础开始,逐步深入到更高级的技术。
这里给大家精心整理了一份
全面的AI大模型学习资源,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享!

1. 成长路线图&学习规划
要学习一门新的技术,作为新手一定要先学习成长路线图,方向不对,努力白费。
这里,我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。
2. 大模型经典PDF书籍
书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。(书籍含电子版PDF)

3. 大模型视频教程
对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识。

4. 2024行业报告
行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估,以了解哪些行业更适合引入大模型的技术和应用,以及在哪些方面可以发挥大模型的优势。

5. 大模型项目实战
学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。

6. 大模型面试题
面试不仅是技术的较量,更需要充分的准备。
在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。

全套的AI大模型学习资源已经整理打包,有需要的小伙伴可以
微信扫描下方CSDN官方认证二维码,免费领取【保证100%免费】

更多推荐



所有评论(0)