大模型是怎么学会的

大模型学会的整套流程

求导

梯度下降

链式法则

哈喽,我是子牙老师。前面花了五年时间通关了计算机:手写操作系统、手写CPU虚拟机、手写Linux系统、手写GDB调试器、手写编程语言...,后面准备通关AI,研发出所有大家想学却没人教或者学不到的AI领域课程。如果你感兴趣,可以关注我的公众号【硬核子牙】

现在的大模型,简直强的一批!能写代码、生成内容、生成图片、生成视频......简直无所不能!那大模型,究竟是如何学会这些的呢?本篇文章为你揭晓

本篇文章是《通关AI》系列文章第三篇,前两篇:《真刀真枪讲透大模型底层》《不要小瞧y=wx+b》

关注我的公众号【硬核子牙】,看计算机底层、大模型底层,硬核文章

以下,enjoy

先说答案

想想我们人是怎么学会东西的?获取信息->尝试回答->对照结果->发现错误->调整学习方式->再次尝试->重复直到掌握

大模型学会东西的本质非常类似:前向传播->计算Loss->求导->得到梯度->梯度下降更新参数->重复

代码长这样

人类学习与大模型学习的类比关系如图

我们人类是通过反馈,修正自己的认知。大模型是通过梯度修正自己的参数

本篇文章着重讲梯度。梯度是什么?梯度是怎么来的?为什么梯度下降能让大模型修正自己的参数到无限接近真实答案?

举个例子

再讲梯度之前,举个例子,让你清晰看到,大模型是如何学会的。即前面提到的那些名词,是如何协同工作的

模型:y=wx(大模型通过不断训练,要得到w=5)

假设:x=2

真实答案:y_true=10

当前:w=3

计算得到答案: y_pred=6

计算误差:error=y_pred-y_true=-4

损失函数(MSE)计算Loss=16

大模型看到Loss这么大,意味着w=3错的很离谱,需要调整(这里顺便提一下,Loss很小,也不一定结果就对的离谱,最终还是要看测试数据的测试结果。总之,大模型训练就像泥巴里抓泥鳅-捉摸不透,微调才是精髓)

Loss,只能让大模型知道w=3是不对的,而且值等于16,让大模型知道当前错的很离谱。但是大模型不知道此时w的值到底是偏大还是偏小,即大模型不知道是要调大w的值,还是调小w的值,怎么办呢?

数学里有个东西可以解决这个问题:导数。导数、求导,后面再讲。关注我的公众号【硬核子牙】,看计算机底层、大模型底层,硬核文章

大模型通过对Loss求导,得到结果dW=-53.926102913598854,这里的dW就是梯度。把dW代入梯度下降公式【w = w - lr * dW】就能得到新的w值4.999999999943761,已经无限接近真实答案w=5了

一般来说,大模型训练的前N轮,效果是最明显的,越往后训练,效果越不明显,甚至有可能没有变化

ini 复制代码
epoch=100, loss=5.718312269938509e-20, W=4.999999999943761
epoch=200, loss=2.903008131213323e-29, W=4.999999999999998
epoch=300, loss=2.903008131213323e-29, W=4.999999999999998
epoch=400, loss=2.903008131213323e-29, W=4.999999999999998
epoch=500, loss=2.903008131213323e-29, W=4.999999999999998
epoch=600, loss=2.903008131213323e-29, W=4.999999999999998
epoch=700, loss=2.903008131213323e-29, W=4.999999999999998
epoch=800, loss=2.903008131213323e-29, W=4.999999999999998
epoch=900, loss=2.903008131213323e-29, W=4.999999999999998
epoch=1000, loss=2.903008131213323e-29, W=4.999999999999998

所以真实的大模型训练,前N轮训练时,会让大模型学得快一点,后面的训练,会让大模型学得越来越慢。你可以这样理解:大模型的学习速度随着大模型的训练次数递减,即大模型的学习率随着大模型的训练次数动态调整

所以真实的大模型训练,前N轮训练时,会让大模型学得快一点,后面的训练,会让大模型学得越来越慢。你可以这样理解:大模型的学习速度随着大模型的训练次数递减,即大模型的学习率随着大模型的训练次数动态调整你有没有注意到dW是负数,意味着w=3太小,需要往大了调。如果dW是正数,意外着w大了,需要往小了调。这是人话版,从大模型或者数学角度,它是这样的

人类,只是利用了求导的这个规律,用来训练大模型(发明导数的人是天才!使用导数来训练大模型的人,也是天才!)

梯度与求导

【大模型学会】这件事是怎么做到的?通过梯度下降,不断调整自己的参数,直到无限接近真实答案。那梯度是怎么来的?求导。求导到底是求什么?如何理解求导?

抛开数学概念,说人话:求导,就是w等于某个值时,Loss的值。如果配合上梯度下降,就可以计算出w调整一点,Loss变化多少。即Loss随w的变化情况。这个是大模型训练与大模型学习的根基!

举个例子吧, 假设你开车回家,汽车速度不是固定的。平均速度只能告诉你一段时间内开了多快,但是如果想知道10点整这一瞬间的速度,就需要求导。求导本质就是研究"某个东西变化一点点,会引起另一个东西变化多少"。在大模型中,我们也是通过求导知道:参数 w 改变一点,会让 Loss 变化多少,从而决定参数应该如何调整。

你现在应该对梯度、求导,有概念了吧。接下来就来讲讲求导到底是怎么求的,公式是怎么推理出来的

求导

从计算角度来说,求导,就是把两个点之间的平均变化率,不断缩小到某一个点的瞬时变化率,什么意思呢?举个例子

转化成求导公式就是

即s(t)=t**2的导数公式是d(s)/d(t)=2t(平方的导数公式就是按这个过程推导出来的)

这个例子还是很容易懂的吧,没有你看一遍没看懂,多看几遍。如果你还是搞不懂,那你可能需要老师教你,欢迎报名我的课程《手写Chatgpt+自研推理平台》

链式法则+求导

真正的大模型训练,不是一次求导就完成,而是通过链式法则,把 Loss 对几十亿参数的影响逐层计算出来,然后通过梯度下降不断更新参数,重复很多很多次

什么是链式法则,先不说教材上的定义,直接上例子,找到感觉

回到我写的大模型,我想让大模型学会:y=wx

大模型的训练代码

前向传播的链式法则是:W->Y_pred->error->Loss

如果想让大模型学会W,就要进行反向传播:Loss->error->Y_pred->W

画箭头的部分,就是链式法则。学术定义是:一个结果经过多个步骤计算出来,那么最终结果对最开始变量的变化,要一层一层传递(是不是一下就看懂了?)

开始根据链式法则进行求导

d(Loss)/d(error)的结果是多少呢?上面提过。s(t)=t**2,导数就是2t。这里就是

为什么要除以len(X),因为loss的值是平均值

d(error)/d(Y_pred)的结果是多少呢?

d(Y_pred)/d(W)呢?

这三个公式的大致推导过程就是如此,本篇文章我就不展开讲了,后面再写文章展开讲。其实你们看懂这篇文章+AI辅助,完全可以自己啃出来。对大模型底层感兴趣的小伙伴可以关注我的公众号【硬核子牙】,看计算机底层、大模型底层,硬核文章。

反向传播的完整公式就是如图,结合梯度下降,就能学会W

大模型中所有的参数,都是这样学会的!可以这样说,你吃透了这篇文章,你就吃透了大模型训练的精髓!你就深刻理解了大模型能学会任何东西的根基!

如果你想更多了解我,欢迎去我公众号【硬核子牙】看我之前的文章及我的奋斗历程。白手起家程序员的职场心得,应该会对你有很大启发

若有收获,就点个赞吧

相关推荐
D11_1 小时前
如何选择靠谱的 GEO 品牌服务商
大数据·人工智能
无忧智库1 小时前
某集团数字人客服多模态交互与情感语音合成平台详细设计方案(WORD)
人工智能
罗西的思考1 小时前
【Agentic RL / 强化学习 / OPD】OpenClaw-RL 源码阅读笔记 — (14)— Teacher
人工智能·笔记·深度学习·算法·机器学习
薛定e的猫咪1 小时前
如何高效构建一个RAG知识库 dify实例与常见问题
人工智能·深度学习
塔能物联运维1 小时前
**塔能两相液冷:量化交易场景下的硬核验证,±1.5℃控温如何转化为真金白银**
人工智能·fpga开发·两相液冷
hithithithithit2 小时前
图像编辑维度分类一览表
人工智能
塔能物联运维2 小时前
塔能两相液冷:600W/cm²极限能力,为下一代AI芯片预留充足散热余量
人工智能·算法·两相液冷
网易云信2 小时前
从"能不能用"到"用来干什么"——2026 企业 AI 认知的三级跳
人工智能·agent
万悉科技2 小时前
时尚品牌GEO技术选型指南:LLM原生优化与AI记忆构建全解析
数据库·人工智能·搜索引擎