训练原理与环节 从做菜的角度来更笼统的了解什么是大模型的参数 以及为什么要训练
在前面的 大模型参数的文章 中讲了什么是大模型的参数,以及大模型为什么要训练;
不过那个讲的比拟笼统,这里就用一个更笼统的例子来解释一下大模型的参数究竟是什么,以及训练的原理。
01、大模型和厨师
从咱们经常使用者的角度来说,大模型就是一个黑盒,它须要输入,而后给出一个输入。
如下图就是大模型的黑盒模型:
而从咱们经常使用过去看,基本上就是一个聊天框,而后咱们输入文字/图片/视频等,而后大模型给咱们一个输入。
而这种形式和咱们去饭店吃饭一样,咱们到饭店之后点菜,而后厨师就会把咱们的菜做好,而厨房对咱们来说也是一个黑盒。
大模型那么多参数是干什么的呢?厨师又是怎样做菜的呢?
假设把没有训练过的大模型比作一个新西方烹饪学校的在校生;那么刚开局这个在校生并不会做菜,假设你让他做菜,那么他只能依据自己的觉得乌七八糟的一通操作。
这个就是初始化的大模型,它只管可以输入结果,但它输入的结果乌七八糟。
所以在校生须要去学习怎样做菜;不论会不会做饭的人应该都知道,炒菜须要控制火候与调料,不同的菜须要不同的火候和调料。
火候有大火小火中火,调料有必定的葱姜蒜,还有盐,辣椒,鸡精,麻辣虾,油等等。
做菜的时刻,不同的菜须要不同的搭配,而且须要不同的火候和调料;比如,西红柿炒蛋须要有西红柿和鸡蛋,而后调料须要有盐,也可以放葱姜蒜;
而假设做辣椒炒肉,那么就须要有肉和辣椒,而后口味重的人就可以多放一点辣椒和盐,口味油腻的人就可以少放一点。
对比到大模型也是如此,厨师做菜的资料,调料与火候是厨师的参数;而大模型也有自己的参数,比如权重,偏置,卷机网络的卷积核,嵌入矩阵,损失函数参数,激活值,参数梯度,训练轮次等。
从技术等角度来说,大模型的参数就是大模型的一些变量,之所以是变量是由于这些参数的值并不是固定的,而是可以变动的;
就像做菜一样,盐可以多放一点,也可以少放一点;并不是每次必定放多少盐。
02、做菜与大模型的训练
专业的厨师学习做菜时,会测试不同的菜品放不同含量的调料会有什么样的成果,比如放一克盐和放十克盐,放葱姜蒜和不放葱姜蒜在口味上的区别。
而后通过很屡次的测试之后,厨师就知道做什么菜须要放多少盐,放多少辣椒,而后口味会是什么样。
而大模型的训练也是如此,大模型是基于神经网络的架构而开发的;而一个大模型有很多神经网络层,每一层又有很多的神经元节点;
那么,不同的神经元节点的权重和偏置,会对其它神经元以及神经层会发生什么样的影响及成果?
不同神经网络的架构的参数又会有什么样的影响?比如卷积神经网络的卷积层的个数,多一层和少一层的区别?假设是循环神经网络呢?
而这些疑问都是须要通过少量的数据训练,而后给大模型找到一个最优的参数值。
而详细怎样训练呢?
比如第一次性训练,一切神经元的权重都是1,而后生成了一个结果;这就相似于第一次性做菜,一切的调料都放1克,而后做出之后尝尝好不好吃。
而由于神经网络是有层的,这样数据在一层一层神经网络之间的传递就叫做正向流传。
当用1克调料把“菜”做进去之后,尝了一下发现盐放少了;这时第二次做菜的时刻,就可以把盐多放一点,比如放四克或五克。
而大模型毕竟不是人,所以须要有一个方法来测试它做的“菜”能否合格,而这个物品就是损失差,损失差越大,说明输入成果越差,“菜”做的越差。
而详细的损失差怎样计算,不同的大模型和架构有不同的方法,比如交叉熵损失。
而这时,就须要通知大模型做的“菜”不好吃,这个通知的环节就叫做反向流传。
厨师知道菜做的不好吃的时刻,就可以间接调整下次放调料的数量和种类;而大模型也有这种相似的配置,这个配置就是提升器,提升器的配置就是去调整大模型的参数,下次把“盐”放多一点,“辣椒”放少一点。
最小二乘法损失函数
而这个盐和辣椒就是大模型中的权重,偏置,损失函数参数等参数。
而训练次数就是厨师锻炼做菜的次数,或者是十次,也或者是一百次,一千次。
所以说,厨师训练是始终的调整其调料的数量和含量;大模型的训练实质上也是在始终的去调整它的参数。
等厨师所有学会之后,还会找一个专业的教员去评价他做的菜;而在大模型外面,这个就是大模型的评价函数,去测试其成果。
当然,大模型并不是参数和训练次数越多越好,最关键的是适合。
这就是大模型的参数以及训练的环节及原理。
原文链接: