📰 来源: 博客园
原文:https://mp.weixin.qq.com/s/C46jhKFNAhiIuri9d8_MsA
欢迎关注公zh: AI-Frontiers
3年,从0到全球领跑:万字长文拆解DeepSeek大模型技术演进
从ResNet到mHC:DeepSeek重构残差连接,额外开销仅6.7%,附复现代码
收藏!LLM开发全链路:5大步骤+15大框架,从数据治理到RLHF一文通关
万字长文解读Qwen进化史:27篇论文深度复盘Qwen模型家族
在上一篇,我们以烹饪火候为类比,从感性的角度系统讲解了LLM API核心参数的的作用、场景化调优方法,强调了参数是控制输出精准度、创造性、多样性与成本的关键旋钮。
比如文中通过智能客服、内容创作、数据分析三类典型场景说明不同参数组合的适配逻辑,逐一拆解temperature、top_p、frequency_penalty、presence_penalty、max_tokens等核心参数的取值范围与效果,并结合代码示例与常见问题,给出实用建议,但并未给出底层原理,即参数调整为什么会带来不同的效果。
本篇将针对上一篇中的核心参数,从数学公式的角度为大家解释,参数的配置对模型到底意味着什么。
LLM 的强大能力相信已家喻户晓:写代码、吟诗作对、做PPT、写报告,无所不能。当剥开 LLM 的技术外壳,你会发现核心逻辑很简单:玩一场永无止境的「词语接龙」游戏。
如上面的架构图所示,LLM 的本质就是 Next Token Prediction(下一个词预测)。它并不理解文字背后的深意,而是通过海量数据的「喂养」,掌握了人类语言的概率分布。当输入一句话,LLM 会像一个超级输入法,根据已经给出的词,在后台疯狂计算成千上万个备选词出现的几率,筛选那个最「顺理成章」的接下去。
实现该过程的精确控制,需要归功于图中顶部的那个数学魔法「Softmax 函数」。
该公式把模型输出的一堆数字,转换成「所有候选词的概率分布」,我们来拆成下公式(1)的计算过程:
\({z}_i\) :也叫 Logits,即上图中 「Linear Layer」的输出分值,「Linear Layer」通过矩阵运算,得到每个词的原始得分\({z}_i\)。\({z}_i\)可以是任何实数,数值越大,代表模型认为这个词出现的可能性越高。
\({z}_i\) :也叫 Logits,即上图中 「Linear Layer」的输出分值,「Linear Layer」通过矩阵运算,得到每个词的原始得分\({z}_i\)。\({z}_i\)可以是任何实数,数值越大,代表模型认为这个词出现的可能性越高。
\(e^{z_i}\) : 这个式子会放大高分词与低分词的差距,让模型更倾向于选 「更合理的词」。我们来举例说明,比如两个词 \(z_i=10, z_j=1\),经过exp后, \(e^{z_i}=e^{10}=6374.31, e^{z_j}=e^{1}=2.72\),两者从原来的10倍差距放大到2343.49。
\(e^{z_i}\) : 这个式子会放大高分词与低分词的差距,让模型更倾向于选 「更合理的词」。我们来举例说明,比如两个词 \(z_i=10, z_j=1\),经过exp后, \(e^{z_i}=e^{10}=6374.31, e^{z_j}=e^{1}=2.72\),两者从原来的10倍差距放大到2343.49。
\({\sum_{j=1}^{K} e^{z_j}}\): 所有词的分数之和,其作用是让所有词的概率加起来刚好等于 1,就像我们说「这几个词里,句号有 70% 的概率,逗号有 20%,其他词加起来只有 10%」。
\({\sum_{j=1}^{K} e^{z_j}}\): 所有词的分数之和,其作用是让所有词的概率加起来刚好等于 1,就像我们说「这几个词里,句号有 70% 的概率,逗号有 20%,其他词加起来只有 10%」。
以上图中中输入「LLMs are cool」为例,模型经过「Linear Layer、Softmax 函数」运算后,映射为一组总和为 1 的概率分布:接「.」的概率可能是 80%,接「!」的概率是 15%,其他符号的概率为5%。通过这种方式,原本枯燥的数字转化成了模型对下一个词的「信心指数」。每预测出一个词,LLM 就会把这个词加入到输入序列里,再次循环上述过程。
2.1 temperature(温度)
该参数值越小,输出结果越确定;值越高,生成内容越随机、多样且富有创造性,取值范围 0~2,默认值为 1。
这是最核心的参数,直接作用于模型最后一层 Softmax 函数。
Linear Layer 输出的是逻辑得分(Logits),通过 Softmax 函数 转化为概率分布。加入Temperature ( \(T\) ) 后的候选词的概率分布
假设 Linear Layer 输出三个词的原始 logits ,即\({z}_i\)为:[10, 2, 1]
当 \(T < 1\) :拉大高分和低分之间的差距。概率分布变得尖锐,模型会非常保守地选择那个概率最高的词。以取\(T=0.1\)为例, \({{z_i} / T}\) 分别为 [100, 20, 10],差距被急剧放大,经过公式(2)
🔗 原文链接: 点击阅读原文
文章评论