DeepSeekMath论文笔记

  • 0、研究背景与目标
  • 1、GRPO结构
    • GRPO结构
    • PPO知识点
      • **1. PPO的网络模型结构**
      • **2. GAE(广义优势估计)原理**
        • **1. 优势函数的定义**
        • 2.GAE(广义优势估计)
  • 2、关键技术与方法
  • 3、核心实验结果
  • 4、结论与未来方向
  • 关键问题与答案
        • 1. **DeepSeekMath在数据处理上的核心创新点是什么?**
        • 2. **GRPO算法相比传统PPO有何优势?**
        • 3. **代码预训练对数学推理能力的影响如何?**

0、研究背景与目标

  1. 挑战与现状
    • 数学推理因结构化和复杂性对语言模型构成挑战,主流闭源模型(如GPT-4、Gemini-Ultra)未开源,而开源模型在MATH等基准测试中性能显著落后。
    • 目标:通过数据优化和算法创新,提升开源模型数学推理能力,逼近闭源模型水平。
      在这里插入图片描述
      在这里插入图片描述

1、GRPO结构

GRPO结构

在这里插入图片描述
图 4 |PPO 和我们的 GRPO 示范。GRPO 放弃了价值模型,而是根据组分数估计基线,从而显著减少了训练资源。
在这里插入图片描述
近端策略优化(PPO)(舒尔曼等人,2017年)是一种演员 - 评论家强化学习算法,在大语言模型(LLMs)的强化学习微调阶段得到了广泛应用(欧阳等人,2022年)。具体来说,它通过最大化以下替代目标来优化大语言模型:
J P P O ( θ ) = E [ q ∼ P ( Q ) , o ∼ π θ o l d ( O ∣ q ) ] 1 ∣ o ∣ ∑ t = 1 ∣ o ∣ min ⁡ [ π θ ( o t ∣ q , o < t ) π θ o l d ( o t ∣ q , o < t ) A t , clip ( π θ ( o t ∣ q , o < t ) π θ o l d ( o t ∣ q , o < t ) , 1 − ε , 1 + ε ) A t ] ( 1 ) \mathcal{J}_{PPO}(\theta)=\mathbb{E}\left[q \sim P(Q), o \sim \pi_{\theta_{old }}(O | q)\right] \frac{1}{|o|} \sum_{t = 1}^{|o|} \min \left[\frac{\pi_{\theta}\left(o_{t} | q, o_{<t}\right)}{\pi_{\theta_{old }}\left(o_{t} | q, o_{<t}\right)} A_{t}, \text{clip}\left(\frac{\pi_{\theta}\left(o_{t} | q, o_{<t}\right)}{\pi_{\theta_{old }}\left(o_{t} | q, o_{<t}\right)}, 1 - \varepsilon, 1 + \varepsilon\right) A_{t}\right] (1) JPPO(θ)=E[qP(Q),oπθold(Oq)]o1t=1omin[πθold(otq,o<t)πθ(otq,o<t)At,clip(πθold(otq,o<t)πθ(otq,o<t),1ε,1+ε)At]1
其中, π θ \pi_{\theta} πθ π θ o l d \pi_{\theta_{old}} πθold分别是当前策略模型和旧策略模型, q q q o o o分别是从问题数据集和旧策略 π θ o l d \pi_{\theta_{old}} πθold中采样得到的问题和输出。 ε \varepsilon ε是PPO中引入的与裁剪相关的超参数,用于稳定训练。 A t A_{t} At是优势值,通过应用广义优势估计(GAE)(舒尔曼等人,2015年)计算得出,该估计基于奖励值 { r ≥ t } \{r_{\geq t}\} {rt}和学习到的价值函数 V ψ V_{\psi} Vψ 。因此,在PPO中,价值函数需要与策略模型一起训练。为了减轻奖励模型的过度优化问题,标准做法是在每个令牌的奖励中添加来自参考模型的每个令牌的KL散度惩罚项(欧阳等人,2022年),即:
r t = r φ ( q , o ≤ t ) − β log ⁡ π θ ( o t ∣ q , o < t ) π r e f ( o t ∣ q , o < t ) r_{t}=r_{\varphi}\left(q, o_{\leq t}\right)-\beta \log\frac{\pi_{\theta}\left(o_{t} | q, o_{<t}\right)}{\pi_{ref}\left(o_{t} | q, o_{<t}\right)} rt=rφ(q,ot)βlogπref(otq,o<t)πθ(otq,o<t)
其中, r φ r_{\varphi} rφ是奖励模型, π r e f \pi_{ref} πref是参考模型,通常是初始的监督微调(SFT)模型, β \beta β是KL散度惩罚项的系数。

由于PPO中使用的价值函数通常与策略模型规模相当,这会带来巨大的内存和计算负担。此外,在强化学习训练过程中,价值函数在优势值计算中被用作基线以减少方差。而在大语言模型的环境中,奖励模型通常只给最后一个令牌分配奖励分数,这可能会使精确到每个令牌的价值函数的训练变得复杂。

为了解决这个问题,如图4所示,我们提出了组相对策略优化(GRPO)。它无需像PPO那样进行额外的价值函数近似,而是使用针对同一问题产生的多个采样输出的平均奖励作为基线。更具体地说,对于每个问题 q q q,GRPO从旧策略 π θ o l d \pi_{\theta_{old}} πθold中采样一组输出 { o 1 , o 2 , ⋯ , o G } \{o_{1}, o_{2}, \cdots, o_{G}\} {o1,o2,,oG},然后通过最大化以下目标来优化策略模型:
J G R P O ( θ ) = E [ q ∼ P ( Q ) , { o i } i = 1 G ∼ π θ o l d ( O ∣ q ) ] 1 G ∑ i = 1 G 1 ∣ o i ∣ ∑ t = 1 ∣ o i ∣ { min ⁡ [ π θ ( o i , t ∣ q , o i , < t ) π θ o l d ( o i , t ∣ q , o i , < t ) A ^ i , t , clip ( π θ ( o i , t ∣ q , o i , < t ) π θ o l d ( o i , t ∣ q , o i , < t ) , 1 − ε , 1 + ε ) A ^ i , t ] − β D K L [ π θ ∣ ∣ π r e f ] } (3) \begin{aligned} \mathcal{J}_{GRPO}(\theta) & =\mathbb{E}\left[q \sim P(Q),\left\{o_{i}\right\}_{i = 1}^{G} \sim \pi_{\theta_{old}}(O | q)\right] \\ & \frac{1}{G} \sum_{i = 1}^{G} \frac{1}{|o_{i}|} \sum_{t = 1}^{|o_{i}|}\left\{\min \left[\frac{\pi_{\theta}\left(o_{i, t} | q, o_{i,<t}\right)}{\pi_{\theta_{old}}\left(o_{i, t} | q, o_{i,<t}\right)}\hat{A}_{i, t}, \text{clip}\left(\frac{\pi_{\theta}\left(o_{i, t} | q, o_{i,<t}\right)}{\pi_{\theta_{old}}\left(o_{i, t} | q, o_{i,<t}\right)}, 1 - \varepsilon, 1 + \varepsilon\right) \hat{A}_{i, t}\right]-\beta \mathbb{D}_{KL}\left[\pi_{\theta}|| \pi_{ref}\right]\right\} \end{aligned} \tag{3} JGRPO(θ)=E[qP(Q),{oi}i=1Gπθold(Oq)]G1i=1Goi1t=1oi{min[πθold(oi,tq,oi,<t)πθ(oi,tq,oi,<t)A^i,t,clip(πθold(oi,tq,oi,<t)πθ(oi,tq,oi,<t),1ε,1+ε)A^i,t]βDKL[πθ∣∣πref]}(3)
其中, ε \varepsilon ε β \beta β是超参数, A ^ i , t \hat{A}_{i, t} A^i,t是仅基于每组内输出的相对奖励计算得到的优势值,将在以下小节中详细介绍。GRPO利用组相对的方式计算优势值,这与奖励模型的比较性质非常契合,因为奖励模型通常是在同一问题的输出之间的比较数据集上进行训练的。还需注意的是,GRPO不是在奖励中添加KL散度惩罚项,而是通过直接将训练后的策略与参考策略之间的KL散度添加到损失中来进行正则化,避免了 A ^ i , t \hat{A}_{i, t} A^i,t计算的复杂化。并且,与公式(2)中使用的KL散度惩罚项不同,我们使用以下无偏估计器(舒尔曼,2020年)来估计KL散度:
D K L [ π θ ∥ π r e f ] = π r e f ( o i , r ∣ q , o i , < t ) π θ ( o i , t ∣ q , o i , < t ) − log ⁡ π r e f ( o i , r ∣ q , o i , < t ) π θ ( o i , t ∣ q , o i , < t ) − 1 \mathbb{D}_{KL}\left[\pi_{\theta} \| \pi_{ref}\right]=\frac{\pi_{ref}\left(o_{i, r} | q, o_{i,<t}\right)}{\pi_{\theta}\left(o_{i, t} | q, o_{i,<t}\right)}-\log\frac{\pi_{ref}\left(o_{i, r} | q, o_{i,<t}\right)}{\pi_{\theta}\left(o_{i, t} | q, o_{i,<t}\right)}-1 DKL[πθπref]=πθ(oi,tq,oi,<t)πref(oi,rq,oi,<t)logπθ(oi,tq,oi,<t)πref(oi,rq,oi,<t)1
该估计值保证为正。

算法流程:
在这里插入图片描述

PPO知识点

强化学习全面知识点参考:https://blog.csdn.net/weixin_44986037/article/details/147685319
https://blog.csdn.net/weixin_44986037/category_12959317.html

PPO的网络模型结构(优势估计)
若使用在策略与价值函数之间共享参数的神经网络架构,则需使用一个结合了策略替代项与价值函数误差项的损失函数。
在PPO(Proximal Policy Optimization)算法中,网络模型的数量为两个,分别是 Actor网络Critic网络。而 GAE(Generalized Advantage Estimation) 是一种用于计算优势函数(Advantage Function)的方法,并不引入额外的网络模型。以下是详细说明:


1. PPO的网络模型结构

PPO基于 Actor-Critic 架构,包含以下两个核心网络:

  1. Actor网络(策略网络)
    • 功能:生成动作概率分布 π ( a ∣ s ) \pi(a|s) π(as),指导智能体行为。
    • 结构:多层感知机(MLP)或Transformer,输出层为动作空间的概率分布。

    • 输入:当前状态 s s s
    • 输出:动作概率分布(离散动作空间)或动作分布参数(连续动作空间,如高斯分布的均值和方差)。
    • 作用:决定智能体在特定状态下选择动作的策略(策略优化的核心)。
  2. Critic网络(价值网络)
    • 功能:估计状态价值函数 V ( s ) V(s) V(s),用于计算优势函数 A t A_t At
    • 结构:与Actor类似,但输出层为标量值(状态价值)。

    • 输入:当前状态 s s s
    • 输出:状态价值 V ( s ) V(s) V(s),即从当前状态开始预期的累积回报。
    • 作用:评估状态的好坏,辅助Actor网络更新策略(通过优势函数的计算)。
  3. 变体与优化
    • 共享参数:部分实现中,Actor和Critic共享底层特征提取层以减少参数量。
    • GRPO变体:如DeepSeek提出的GRPO算法,去除Critic网络,通过组内奖励归一化简化计算,但标准PPO仍保留双网络结构。
    共享编码层
    在实际实现中,Actor和Critic网络的底层特征提取层(如卷积层、Transformer层等)可能共享参数,以减少计算量并提高特征复用效率。例如,在图像输入场景中,共享的CNN层可以提取通用的视觉特征,然后分别输出到Actor和Critic的分支。


PPO基于 Actor-Critic 架构,A2C网络结构:
参考:https://zhuanlan.zhihu.com/p/450690041
在这里插入图片描述
GRPO和PPO网络结构:
在这里插入图片描述
图 4 |PPO 和我们的 GRPO 示范。GRPO 放弃了价值模型,而是根据组分数估计基线,从而显著减少了训练资源。
由于PPO中使用的价值函数通常与策略模型规模相当,这会带来巨大的内存和计算负担。此外,在强化学习训练过程中,价值函数在优势值计算中被用作基线以减少方差。而在大语言模型的环境中,奖励模型通常只给最后一个令牌分配奖励分数,这可能会使精确到每个令牌的价值函数的训练变得复杂。

为了解决这个问题,如图4所示,我们提出了组相对策略优化(GRPO)。它无需像PPO那样进行额外的价值函数近似,而是使用针对同一问题产生的多个采样输出的平均奖励作为基线。

2. GAE(广义优势估计)原理

1. 优势函数的定义

优势函数 A ( s , a ) A(s, a) A(s,a) 的数学表达式为:
A π ( s , a ) = Q π ( s , a ) − V π ( s ) A^\pi(s, a) = Q^\pi(s, a) - V^\pi(s) Aπ(s,a)=Qπ(s,a)Vπ(s)

  • Q π ( s , a ) Q^\pi(s, a) Qπ(s,a):动作值函数,表示在状态 s s s 下执行动作 a a a 后,遵循策略 π \pi π 所能获得的期望累积奖励。
  • V π ( s ) V^\pi(s) Vπ(s):状态值函数,表示在状态 s s s 下,遵循策略 π \pi π 所能获得的期望累积奖励(不指定具体动作)。
  • 意义:若 A ( s , a ) > 0 A(s, a) > 0 A(s,a)>0,说明执行动作 a a a 相比于当前策略的平均表现更优;若 A ( s , a ) < 0 A(s, a) < 0 A(s,a)<0,则说明该动作不如当前策略的平均水平。
2.GAE(广义优势估计)

GAE是PPO中用于估计优势函数的核心技术,通过平衡偏差与方差优化策略梯度更新。其核心结构包括以下要点:

  1. 多步优势加权
    GAE通过指数衰减加权不同步长的优势估计(如TD残差)构建综合优势值,公式为:
    A t GAE = ∑ l = 0 ∞ ( γ λ ) l δ t + l A_t^{\text{GAE}} = \sum_{l=0}^{\infty} (\gamma \lambda)^l \delta_{t+l} AtGAE=l=0(γλ)lδt+l
    其中, δ t = r t + γ V ( s t + 1 ) − V ( s t ) \delta_t = r_t + \gamma V(s_{t+1}) - V(s_t) δt=rt+γV(st+1)V(st)为时序差分误差。 γ \gamma γ(折扣因子)控制长期回报衰减, λ \lambda λ(GAE参数)调节偏差-方差权衡。

  2. 偏差-方差平衡机制
    λ ≈ 0 \lambda \approx 0 λ0:退化为单步TD残差(高偏差、低方差)

    λ ≈ 1 \lambda \approx 1 λ1:接近蒙特卡洛估计(低偏差、高方差)

    通过调节 λ \lambda λ,GAE在两者间取得最优折衷。

  3. 与TD-λ的区别
    GAE将TD-λ的资格迹思想引入策略梯度框架,直接服务于优势函数计算,而非传统的价值函数更新。


参考:https://blog.csdn.net/animate1/article/details/146100100
在这里插入图片描述

2、关键技术与方法

  1. 大规模数学语料构建(DeepSeekMath Corpus)

    • 数据来源:从Common Crawl中通过迭代筛选获取,以OpenWebMath为种子数据,用fastText分类器识别数学网页,经4轮筛选得到 35.5M网页、120B tokens,含英/中多语言内容,规模是Minerva所用数学数据的7倍、OpenWebMath的9倍。
    • 去污染:过滤含基准测试题的文本(10-gram精确匹配),避免数据泄露。
    • 质量验证:在8个数学基准测试中,基于该语料训练的模型性能显著优于MathPile、OpenWebMath等现有语料,证明其高质量和多语言优势。
  2. 模型训练流程

    • 预训练
      • 基于代码模型 DeepSeek-Coder-Base-v1.5 7B 初始化,训练数据含 56%数学语料、20%代码、10%自然语言 等,总 500B tokens
      • 基准表现:MATH基准 36.2%(超越Minerva 540B的35%),GSM8K 64.2%
    • 监督微调(SFT)
      • 使用 776K数学指令数据(链思维CoT、程序思维PoT、工具推理),训练后模型在MATH达 46.8%,超越同规模开源模型。
    • 强化学习(RL):Group Relative Policy Optimization (GRPO)
      • 创新点:无需独立价值函数,通过组内样本平均奖励估计基线,减少内存消耗,支持过程监督和迭代RL。
      • 效果:MATH准确率提升至 51.7%,GSM8K从82.9%提升至88.2%,CMATH从84.6%提升至88.8%,超越7B-70B开源模型及多数闭源模型(如Inflection-2、Gemini Pro)。

3、核心实验结果

  1. 数学推理性能

    基准测试DeepSeekMath-Base 7BDeepSeekMath-Instruct 7BDeepSeekMath-RL 7BGPT-4Gemini Ultra
    MATH (Top1)36.2%46.8%51.7%52.9%53.2%
    GSM8K (CoT)64.2%82.9%88.2%92.0%94.4%
    CMATH (中文)-84.6%88.8%--
    • 关键优势:在不依赖外部工具和投票技术的情况下,成为首个在MATH基准突破50%的开源模型,自一致性方法(64样本)可提升至60.9%。
  2. 泛化与代码能力

    • 通用推理:MMLU基准得分 54.9%,BBH 59.5%,均优于同类开源模型。
    • 代码任务:HumanEval(零样本)和MBPP(少样本)表现与代码模型DeepSeek-Coder-Base-v1.5相当,证明代码预训练对数学推理的促进作用。

4、结论与未来方向

  1. 核心贡献

    • 证明公开网络数据可构建高质量数学语料,小模型(7B)通过优质数据和高效算法可超越大模型(如Minerva 540B)。
    • 提出GRPO算法,在减少训练资源的同时显著提升数学推理能力,为RL优化提供统一范式。
    • 验证代码预训练对数学推理的积极影响,填补“代码是否提升推理能力”的研究空白。
  2. 局限

    • 几何推理和定理证明能力弱于闭源模型,少样本学习能力不足(与GPT-4存在差距)。
    • arXiv论文数据对数学推理提升无显著效果,需进一步探索特定任务适配。
  3. 未来工作

    • 优化数据筛选流程,构建更全面的数学语料(如几何、定理证明)。
    • 探索更高效的RL算法,结合过程监督和迭代优化,提升模型泛化能力。

关键问题与答案

1. DeepSeekMath在数据处理上的核心创新点是什么?

答案:通过 迭代筛选+多语言数据 构建高质量数学语料。以OpenWebMath为种子,用fastText分类器从Common Crawl中筛选数学网页,经4轮迭代获得120B tokens,涵盖英/中多语言内容,规模远超现有数学语料(如OpenWebMath的9倍),且通过严格去污染避免基准测试数据泄露。

2. GRPO算法相比传统PPO有何优势?

答案:GRPO通过 组内相对奖励估计基线 替代独立价值函数,显著减少训练资源消耗。无需额外训练价值模型,直接利用同一问题的多个样本平均奖励计算优势函数,同时支持过程监督(分步奖励)和迭代RL,在MATH基准上比PPO更高效,准确率提升5.9%(46.8%→51.7%)且内存使用更优。

3. 代码预训练对数学推理能力的影响如何?

答案:代码预训练能 显著提升数学推理能力,无论是工具使用(如Python编程解题)还是纯文本推理。实验表明,基于代码模型初始化的DeepSeekMath-Base在GSM8K+Python任务中得分66.9%,远超非代码模型(如Mistral 7B的48.5%),且代码与数学混合训练可缓解灾难性遗忘,证明代码中的逻辑结构和形式化推理对数学任务有迁移优势。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/79355.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/79355.shtml
英文地址,请注明出处:http://en.pswp.cn/web/79355.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

卡尔曼滤波算法(C语言)

此处感谢华南虎和互联网的众多大佬的无偿分享。 入门常识 先简单了解以下概念&#xff1a;叠加性&#xff0c;齐次性。 用大白话讲&#xff0c;叠加性&#xff1a;多个输入对输出有影响。齐次性&#xff1a;输入放大多少倍&#xff0c;输出也跟着放大多少倍 卡尔曼滤波符合这…

SolidWork-2023 鼠標工程

地址 https://github.com/MartinxMax/SW2023-Project/tree/main/mouse 鼠標

vue 组件函数式调用实战:以身份验证弹窗为例

通常我们在 Vue 中使用组件&#xff0c;是像这样在模板中写标签&#xff1a; <MyComponent :prop"value" event"handleEvent" />而函数式调用&#xff0c;则是让我们像调用一个普通 JavaScript 函数一样来使用这个组件&#xff0c;例如&#xff1a;…

Vite Proxy配置详解:从入门到实战应用

Vite Proxy配置详解&#xff1a;从入门到实战应用 一、什么是Proxy代理&#xff1f; Proxy&#xff08;代理&#xff09;是开发中常用的解决跨域问题的方案。Vite内置了基于http-proxy的代理功能&#xff0c;可以轻松配置API请求转发。 二、基础配置 在vite.config.js中配置…

图像画质算法记录(前言)

一、背景介绍 本篇主要是对图像画质增强相关&#xff0c;进行简单整理和记录。 二、整体流程 整体效果主要受到两部分影响&#xff1a; 1、前端isp处理。 2、后端画质增强。 三、isp常规流程 可以参考&#xff1a;刘斯宁&#xff1a;Understanding ISP Pipeline 四、后端画质…

Qt 中信号与槽(signal-slot)机制支持 多种连接方式(ConnectionType)

Qt 中信号与槽&#xff08;signal-slot&#xff09;机制支持 多种连接方式&#xff08;ConnectionType&#xff09; Qt 中信号与槽&#xff08;signal-slot&#xff09;机制支持 多种连接方式&#xff08;ConnectionType&#xff09;&#xff0c;用于控制信号发出后如何调用槽…

卷积神经网络实战(4)代码详解

目录 一、导包 二、数据准备 1.数据集 2. 标准化转换(Normalize) 3.设置dataloader 三、定义模型 四、可视化计算图&#xff08;不重要&#xff09; 五、评估函数 六、Tensorboard 一、导包 import matplotlib as mpl import matplotlib.pyplot as plt %matplotlib i…

深入解析进程地址空间:从虚拟到物理的奇妙之旅

深入解析进程地址空间&#xff1a;从虚拟到物理的奇妙之旅 前言 各位小伙伴&#xff0c;还记得我们之前探讨的 fork 函数吗&#xff1f;当它返回两次时&#xff0c;父子进程中同名变量却拥有不同值的现象&#xff0c;曾让我们惊叹于进程独立性与写时拷贝的精妙设计。但你是否…

opencv处理图像(二)

接下来进入到程序线程设计部分 我们主线程负责图形渲染等操作&#xff0c;OpenGL的限制&#xff0c;opencv技术对传入图像加以处理&#xff0c;输出预期图像给主线程 QThread 我之前也是在想给opencv开一个专门的线程&#xff0c;但经过了解有几个弊端&#xff0c;第一资源浪…

学习threejs,使用Physijs物理引擎

&#x1f468;‍⚕️ 主页&#xff1a; gis分享者 &#x1f468;‍⚕️ 感谢各位大佬 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍⚕️ 收录于专栏&#xff1a;threejs gis工程师 文章目录 一、&#x1f340;前言1.1 ☘️Physijs 物理引擎1.1.1 ☘️…

ARCGIS PRO DSK 选择坐标系控件(CoordinateSystemsControl )的调用

在WPF窗体上使用 xml&#xff1a;加入空间命名引用 xmlns:mapping"clr-namespace:ArcGIS.Desktop.Mapping.Controls;assemblyArcGIS.Desktop.Mapping" 在控件区域加入&#xff1a; <mapping:CoordinateSystemsControl x:Name"CoordinateSystemsControl&q…

LangGraph(三)——添加记忆

目录 1. 创建MemorySaver检查指针2. 构建并编译Graph3. 与聊天机器人互动4. 问一个后续问题5. 检查State参考 1. 创建MemorySaver检查指针 创建MemorySaver检查指针&#xff1a; from langgraph.checkpoint.memory import MemorySavermemory MemorySaver()这是位于内存中的检…

深入理解Mysql

BufferPool和Changebuffer是如何加快读写速度的? BufferPool 在Mysql启动的时候 Mysql会申请连续的空间来存储BufferPool 每个页16kb 当控制块不足以存储信息的时候就会向后申请一个新的页 每个控制块都对应了一个缓存页 控制块占chunk的百分之5左右 LRU链表 Changebuffer …

Python核心编程深度解析:作用域、递归与匿名函数的工程实践

引言 Python作为现代编程语言的代表&#xff0c;其作用域管理、递归算法和匿名函数机制是构建高质量代码的核心要素。本文基于Python 3.11环境&#xff0c;结合工业级开发实践&#xff0c;深入探讨变量作用域的内在逻辑、递归算法的优化策略以及匿名函数的高效应用&#xff0c…

《用MATLAB玩转游戏开发》贪吃蛇的百变玩法:从命令行到AI对战

《用MATLAB玩转游戏开发&#xff1a;从零开始打造你的数字乐园》基础篇&#xff08;2D图形交互&#xff09;-&#x1f40d; 贪吃蛇的百变玩法&#xff1a;从命令行到AI对战 &#x1f3ae; 欢迎来到这篇MATLAB贪吃蛇编程全攻略&#xff01;本文将带你从零开始&#xff0c;一步步…

Android平台FFmpeg音视频开发深度指南

一、FFmpeg在Android开发中的核心价值 FFmpeg作为业界领先的多媒体处理框架&#xff0c;在Android音视频开发中扮演着至关重要的角色。它提供了&#xff1a; 跨平台支持&#xff1a;统一的API处理各种音视频格式完整功能链&#xff1a;从解码、编码到滤镜处理的全套解决方案灵…

AI大模型驱动的智能座舱研发体系重构

随着AI大模型&#xff08;如LLM、多模态模型&#xff09;的快速发展&#xff0c;传统智能座舱研发流程面临巨大挑战。传统座舱研发以需求驱动、功能固定、架构封闭为特点&#xff0c;而AI大模型的引入使得座舱系统向自主决策、动态适应、持续进化的方向发展。 因此思考并提出一…

Day20 常见降维算法分析

一、常见的降维算法 LDA线性判别PCA主成分分析t-sne降维 二、降维算法原理 2.1 LDA 线性判别 原理 &#xff1a;LDA&#xff08;Linear Discriminant Analysis&#xff09;线性判别分析是一种有监督的降维方法。它的目标是找到一个投影方向&#xff0c;使得不同类别的数据在…

Python----机器学习(模型评估:准确率、损失函数值、精确度、召回率、F1分数、混淆矩阵、ROC曲线和AUC值、Top-k精度)

一、模型评估 1. 准确率&#xff08;Accuracy&#xff09;&#xff1a;这是最基本的评估指标之一&#xff0c;表示模型在测试集上正确 分类样本的比例。对于分类任务而言&#xff0c;准确率是衡量模型性能的直观标准。 2. 损失函数值&#xff08;Loss&#xff09;&#xff1…

cdn 是什么?

内容分发网络&#xff0c;Content Delivery Network 介绍 CDN&#xff08;Content Delivery Network&#xff09;是一种将内容分发到靠近用户的边缘服务器&#xff0c;以加速访问速度、减少延迟、降低源站压力的网络系统。 CDN 把网站的静态资源&#xff08;如 HTML、JS、CSS、…