在大语言模型中,**损失函数(Loss Function)**是模型学习的核心驱动力,它通过量化“预测结果”与“实际目标”之间的差距,来指导参数的优化。
根据来源内容,利用损失函数更新参数的过程可以简化为以下几个关键步骤:
1. 随机初始化参数:在训练开始时,模型的巨量参数(如 7B 模型中的 70 亿个参数)是随机赋值的。
2. 执行预测与对比:
◦ 模型接收一个输入(例如“程”),试图预测下一个字。
◦ 由于初始参数是随机的,模型初期的输出通常是错误的(例如输出了“hello”而不是预期的“序”)。
3. 计算损失(Loss):系统会计算模型输出(“hello”)与目标词(“序”)之间的差异,这个差异值就是损失。
4. 梯度下降与参数更新:
◦ 通过损失值,模型利用**梯度下降(Gradient Descent)**算法计算出如何调整参数才能减小这种误差。
◦ 模型利用计算出的更新值,对那 70 亿个(或更多)参数进行微调。
5. 迭代与停止条件:
◦ 这个过程会不断重复(迭代)。如果模型生成的输出仍不符合预期(如未输出“序”),则继续计算损失并更新参数,。
◦ 训练会覆盖海量的数据(如 2 万亿个 token),直到模型能够准确预测训练语料中的内容,此时便得到了一组精准的参数。
总结: 损失函数就像是一个严格的导师,每当模型(学生)预测错误时,导师就会通过损失函数指出错误的大小,并利用梯度下降告诉模型如何修正自己的记忆(参数),直到模型能够对输入的文本进行准确的补全和生成,。
比喻理解: 这就像是在练习射箭。参数是你的站姿和发力方式。刚开始你乱射一气(随机初始化),箭离靶心很远。损失函数就是靶心与落点之间的距离;梯度下降则是教练告诉你要向左微调还是向右。你通过成千上万次的射击(海量数据训练),不断根据箭离靶心的距离来修正姿势,最终练就了百发百中的技能。