强化学习笔记
强化学习的总体目标:寻找最优策略。
关键名词
-
智能体(Agent)
-
状态(State):智能体相对于环境的状态 s ∈ S s∈S s∈S
-
状态空间(State space):把所有状态放在一起,所有状态的集合(set) S = { s 1 , s 2 , … , s n } S=\{s_1,s_2,…,s_n\} S={s1,s2,…,sn}
-
动作(Action):对于每个状态,所可能采取的行动 a ∈ A ( s ) a∈A(s) a∈A(s)
-
动作空间(Action space):某状态下所可能采取的所有动作的集合(动作依赖于状态) A ( s ) = { a 1 , a 2 , … , a m } A(s)=\{a_1,a_2,…,a_m\} A(s)={a1,a2,…,am}
-
状态转移(State transition):通过采取一个动作,智能体从一个状态进入另一个
-
状态转移概率(State transition probability):用条件概率描述状态转移 P ( s ′ ∣ s , a ) P(s′∣s,a) P(s′∣s,a)
-
策略(Policy):策略告诉智能体在某一状态下应采取什么行动
在数学上,策略被定义为在给定状态 s s s 时选择行动 a a a 的概率,即 π ( a ∣ s ) π(a∣s) π(a∣s)。
策略 π π π 需要满足以下条件:对于所有状态 s ∈ S s∈S s∈S,所有可能行动 a ∈ A ( s ) a∈A(s) a∈A(s) 的概率之和等于 1:
∑ a ∈ A ( s ) π ( a ∣ s ) = 1 \sum_{a∈A(s)}π(a∣s)=1 a∈A(s)∑π(a∣s)=1
-
回报(Reward):回报 R ( s , a ) R(s,a) R(s,a) 是智能体在状态 s s s 下执行动作 a a a 后获得的标量值。它可以是正数(奖励)或负数(惩罚)。
-
轨迹(Trajectory)和收益(Return):轨迹是一系列状态、动作和回报的序列,形式为 ( s 0 , a 0 , r 0 , s 1 , a 1 , r 1 , … , s T ) (s_0,a_0,r_0,s_1,a_1,r_1,…,s_T) (s0,a0,r0,s1,a1,r1,…,sT)。轨迹的收益 G G G 是沿轨迹收集的所有回报的总和:
G = ∑ t = 0 T − 1 r t G=\sum_{t=0}^{T−1}r_t G=t=0∑T−1rt -
折扣收益(Discounted Return):在无限或长期的环境中,折扣收益用于优先考虑即时回报,而不是未来的回报。它通过折扣因子 γ γ γ(其中 0 ≤ γ ≤ 1 0≤γ≤1 0≤γ≤1)来计算:
G = ∑ ∑ t = 0 ∞ γ t r t G=\sum_{∑t=0}^{∞}γ_tr_t G=∑t=0∑∞γtrt
当 γ = 1 \gamma=1 γ=1 时,它就是标准的收益。折扣因子可使得无限序列的总和是有限的,并且模型能够捕捉到即时回报比未来回报更有价值这一概念。 γ \gamma γ越接近1越远视(注重长期回报), γ \gamma γ越接近0越近视(注重及时回报)。 -
Episode:一个有限的轨迹,通常在特定的终止状态处结束。
-
马尔科夫决策过程(Markov decision process, MDP):MDP 的目标是找到一个策略 π π π,使得从起始状态开始的预期折扣收益最大化。具有无记忆性(和之前的状态无关)。
π ∗ = a r g m a x π E π [ G ∣ s 0 ] π^∗=\mathrm{argmax_{\pi}}E_π[G∣s0] π∗=argmaxπEπ[G∣s0]
其中 E π [ G ∣ s 0 ] E_π[G∣s0] Eπ[G∣s0] 表示在策略 π π π 下,从初始状态 s 0 s_0 s0 开始的预期折扣收益。
MDP 由以下组件定义:
- 状态空间 S S S
- 动作空间 A ( s ) A(s) A(s)
- 状态转移概率 P ( s ′ ∣ s , a ) P(s′∣s,a) P(s′∣s,a)
- 回报函数 R ( s , a ) R(s,a) R(s,a)
- 折扣因子 γ γ γ
贝尔曼公式
状态值函数(State Value Function)
定义:
在策略 π \pi π下从状态 s s s出发的预期折扣收益,其定义为:
V π ( s ) = E π [ G ∣ s 0 = s ] = E π [ ∑ t = 0 ∞ γ t r t ∣ s 0 = s ] V^{\pi}(s) = \mathbb{E}_{\pi} \left[ G \mid s_0 = s \right] = \mathbb{E}_{\pi} \left[ \sum_{t=0}^{\infty} \gamma^t r_t \bigg| s_0 = s \right] Vπ(s)=Eπ[G∣s0=s]=Eπ[t=0∑∞γtrt s0=s]
其中:
- E π [ ⋅ ] \mathbb{E}_{\pi}[\cdot] Eπ[⋅]表示在策略$\pi $下的期望,覆盖动作选择和状态转移的随机性。
- G = ∑ t = 0 ∞ γ t r t G = \sum_{t=0}^{\infty} \gamma^t r_t G=∑t=0∞γtrt是折扣收益, γ ∈ [ 0 , 1 ) \gamma \in [0,1) γ∈[0,1)是折扣因子,确保无穷级数收敛。
- r t = R ( s t , a t ) r_t = R(s_t, a_t) rt=R(st,at)是时刻 t t t的即时回报, a t ∼ π ( ⋅ ∣ s t ) a_t \sim \pi(\cdot \mid s_t) at∼π(⋅∣st),状态转移由 s t + 1 ∼ P ( ⋅ ∣ s t , a t ) s_{t+1} \sim P(\cdot \mid s_t, a_t) st+1∼P(⋅∣st,at)决定。
贝尔曼方程(Bellman Equation)
状态值函数满足递归关系:
V π ( s ) = ∑ a ∈ A π ( a ∣ s ) [ R ( s , a ) + γ ∑ s ′ ∈ S P ( s ′ ∣ s , a ) V π ( s ′ ) ] , ∀ s ∈ S V^{\pi}(s) = \sum_{a \in A} \pi(a \mid s) \left[ R(s,a) + \gamma \sum_{s' \in S} P(s' \mid s,a) V^{\pi}(s') \right], \quad \forall s \in S Vπ(s)=a∈A∑π(a∣s)[R(s,a)+γs′∈S∑P(s′∣s,a)Vπ(s′)],∀s∈S
含义:
当前状态的值等于即时回报的期望,加上未来状态的期望折扣值。
矩阵形式:
V π = R π + γ P π V π \mathbf{V}^{\pi} = \mathbf{R}^{\pi} + \gamma \mathbf{P}^{\pi} \mathbf{V}^{\pi} Vπ=Rπ+γPπVπ
其闭式解为:
V π = ( I − γ P π ) − 1 R π \mathbf{V}^{\pi} = (I - \gamma \mathbf{P}^{\pi})^{-1} \mathbf{R}^{\pi} Vπ=(I−γPπ)−1Rπ
当 γ < 1 \gamma < 1 γ<1 时,矩阵 ( I − γ P π ) (I - \gamma \mathbf{P}^{\pi}) (I−γPπ)可逆。
动作值函数(Action Value Function)
定义:
动作值函数 Q π ( s , a ) Q^{\pi}(s,a) Qπ(s,a)表示从状态 s s s执行动作 a a a后,遵循策略$ \pi $的预期折扣收益:
Q π ( s , a ) = E π [ ∑ t = 0 ∞ γ t r t ∣ s 0 = s , a 0 = a ] Q^{\pi}(s,a) = \mathbb{E}_{\pi} \left[ \sum_{t=0}^{\infty} \gamma^t r_t \bigg| s_0 = s, a_0 = a \right] Qπ(s,a)=Eπ[t=0∑∞γtrt s0=s,a0=a]
与状态值函数的关系:
状态值函数可表示为动作值函数的期望:
V π ( s ) = ∑ a ∈ A π ( a ∣ s ) Q π ( s , a ) V^{\pi}(s) = \sum_{a \in A} \pi(a \mid s) Q^{\pi}(s,a) Vπ(s)=a∈A∑π(a∣s)Qπ(s,a)
动作值的贝尔曼方程:
动作值函数同样满足递归关系:
Q π ( s , a ) = R ( s , a ) + γ ∑ s ′ ∈ S P ( s ′ ∣ s , a ) V π ( s ′ ) Q^{\pi}(s,a) = R(s,a) + \gamma \sum_{s' \in S} P(s' \mid s,a) V^{\pi}(s') Qπ(s,a)=R(s,a)+γs′∈S∑P(s′∣s,a)Vπ(s′)
贝尔曼最优公式
最优策略与最优值函数
最优策略定义:
策略 π ∗ \pi^* π∗是最优的,当且仅当对任意状态 s s s,其满足:
π ∗ ( a ∣ s ) = { 1 , a = arg max a ′ Q π ∗ ( s , a ′ ) 0 , 其他 \pi^*(a \mid s) = \begin{cases} 1, & a = \arg\max_{a'} Q^{\pi^*}(s,a') \\ 0, & \text{其他} \end{cases} π∗(a∣s)={1,0,a=argmaxa′Qπ∗(s,a′)其他
最优状态值函数:
最优值函数 V ∗ ( s ) V^*(s) V∗(s)是所有策略中最大的状态值:
V ∗ ( s ) = max π V π ( s ) V^*(s) = \max_{\pi} V^{\pi}(s) V∗(s)=πmaxVπ(s)
贝尔曼最优方程:
最优值函数满足:
V ∗ ( s ) = max a ∈ A [ R ( s , a ) + γ ∑ s ′ ∈ S P ( s ′ ∣ s , a ) V ∗ ( s ′ ) ] , ∀ s ∈ S V^*(s) = \max_{a \in A} \left[ R(s,a) + \gamma \sum_{s' \in S} P(s' \mid s,a) V^*(s') \right], \quad \forall s \in S V∗(s)=a∈Amax[R(s,a)+γs′∈S∑P(s′∣s,a)V∗(s′)],∀s∈S
对应动作值函数的最优方程为:
Q ∗ ( s , a ) = R ( s , a ) + γ ∑ s ′ ∈ S P ( s ′ ∣ s , a ) max a ′ Q ∗ ( s ′ , a ′ ) Q^*(s,a) = R(s,a) + \gamma \sum_{s' \in S} P(s' \mid s,a) \max_{a'} Q^*(s',a') Q∗(s,a)=R(s,a)+γs′∈S∑P(s′∣s,a)a′maxQ∗(s′,a′)
存在性与唯一性
- 存在性:在有限马尔可夫决策过程MDP中,若 γ < 1 \gamma < 1 γ<1,则存在唯一的最优值函数 V ∗ V^* V∗和 Q ∗ Q^* Q∗,以及至少一个确定性最优策略 π ∗ \pi^* π∗。
- 唯一性:存在唯一最优解(最优策略不一定唯一)。放缩映射证明。
- 收敛性:通过值迭代或策略迭代算法,可逐步逼近 V ∗ V^* V∗ 和 π ∗ \pi^* π∗(指数级收敛)。
值迭代(Value Iteration)
基本思想
通过直接迭代贝尔曼最优方程求解最优值函数,最终从最优值函数中提取最优策略。通过同步备份(synchronous backup)更新所有状态的值。
算法步骤
V k ( s ) → Q k ( s , a ) → π k + 1 ( a ∣ s ) → V k + 1 ( s ) → max a Q k ( s , a ) V_{k}(s)\to Q_{k}(s,a) \to \pi_{k+1}(a|s) \to V_{k+1}(s) \to \max_aQ_{k}(s,a) Vk(s)→Qk(s,a)→πk+1(a∣s)→Vk+1(s)→amaxQk(s,a)
-
初始化:
对所有状态 s ∈ S s \in S s∈S,设置初始值 V 0 ( s ) = 0 V_0(s) = 0 V0(s)=0(或其他任意值) -
迭代更新:
重复以下更新直至收敛:
V k + 1 ( s ) = max a ∈ A [ R ( s , a ) + γ ∑ s ′ ∈ S P ( s ′ ∣ s , a ) V k ( s ′ ) ] , ∀ s ∈ S V_{k+1}(s) = \max_{a \in A} \left[ R(s,a) + \gamma \sum_{s' \in S} P(s' \mid s,a) V_k(s') \right], \quad \forall s \in S Vk+1(s)=a∈Amax[R(s,a)+γs′∈S∑P(s′∣s,a)Vk(s′)],∀s∈S
更新方式为同步备份(先计算所有新值,再整体替换旧值) -
终止条件:
当 max s ∈ S ∣ V k + 1 ( s ) − V k ( s ) ∣ < ε \max_{s \in S} |V_{k+1}(s) - V_k(s)| < \varepsilon maxs∈S∣Vk+1(s)−Vk(s)∣<ε(预设阈值)时停止 -
策略提取:
最终通过最优值函数 V ∗ V^* V∗得到确定性策略:
π ∗ ( s ) = arg max a ∈ A [ R ( s , a ) + γ ∑ s ′ ∈ S P ( s ′ ∣ s , a ) V ∗ ( s ′ ) ] \pi^*(s) = \arg\max_{a \in A} \left[ R(s,a) + \gamma \sum_{s' \in S} P(s' \mid s,a) V^*(s') \right] π∗(s)=arga∈Amax[R(s,a)+γs′∈S∑P(s′∣s,a)V∗(s′)]
特性分析
-
收敛性:
- 当 γ < 1 \gamma < 1 γ<1时,值迭代以指数速度收敛到唯一最优解
- 迭代次数与状态数无关,仅依赖 γ \gamma γ和 ε \varepsilon ε
-
时间复杂度:
每轮迭代复杂度为 O ( ∣ S ∣ 2 ∣ A ∣ ) O(|S|^2|A|) O(∣S∣2∣A∣),适用于状态空间较小的问题 -
与贝尔曼方程关系:
值迭代本质是不断应用贝尔曼最优算子的不动点迭代
策略迭代(Policy Iteration)
基本思想
通过**交替进行策略评估(Policy Evaluation)和策略改进(Policy Improvement)**来优化策略,直到收敛到最优策略。
算法步骤
-
初始化:
随机选择一个初始策略 π 0 \pi_0 π0 -
策略迭代循环:
Repeat:-
(1) 策略评估:
计算当前策略 π k \pi_k πk的值函数 V π k V^{\pi_k} Vπk
通过求解贝尔曼方程:
V π k ( s ) = ∑ a π k ( a ∣ s ) [ R ( s , a ) + γ ∑ s ′ P ( s ′ ∣ s , a ) V π k ( s ′ ) ] V^{\pi_k}(s) = \sum_{a} \pi_k(a|s) \left[ R(s,a) + \gamma \sum_{s'} P(s'|s,a) V^{\pi_k}(s') \right] Vπk(s)=a∑πk(a∣s)[R(s,a)+γs′∑P(s′∣s,a)Vπk(s′)]
可通过迭代法(重复应用上式直至收敛)或直接求解线性方程组获得精确解 -
(2) 策略改进:
对每个状态 s s s,选择使动作值最大的动作:
π k + 1 ( s ) = arg max a [ R ( s , a ) + γ ∑ s ′ P ( s ′ ∣ s , a ) V π k ( s ′ ) ] \pi_{k+1}(s) = \arg\max_{a} \left[ R(s,a) + \gamma \sum_{s'} P(s'|s,a) V^{\pi_k}(s') \right] πk+1(s)=argamax[R(s,a)+γs′∑P(s′∣s,a)Vπk(s′)]
Until π k + 1 = π k \pi_{k+1} = \pi_k πk+1=πk(策略稳定,实际上是无限逼近)
-
特性分析
-
收敛速度:
- 通常比值迭代更快(尤其当策略空间较小时)
- 策略改进阶段保证每次迭代策略至少不劣化
-
计算复杂度:
- 策略评估阶段需要 O ( ∣ S ∣ 3 ) O(|S|^3) O(∣S∣3)(直接求解)或 O ( m ∣ S ∣ 2 ) O(m|S|^2) O(m∣S∣2)(迭代m次)
- 适用于中等规模状态空间问题
截断策略迭代(Truncated Policy Iteration)
基本思想
在标准策略迭代的基础上,放宽策略评估的精度要求。通过限制策略评估阶段的迭代次数(如固定次数 k k k次),提前截断对当前策略的值函数计算,以降低每次迭代的计算量,同时仍能保证策略逐步优化。
算法步骤
-
初始化:
- 随机初始化策略 π 0 \pi_0 π0
- 设置策略评估阶段的迭代次数上限 k k k(例如 k = 3 k=3 k=3)
-
策略迭代循环:
Repeat:-
(1) 截断策略评估:
对当前策略 π i \pi_i πi,执行以下步骤(从初始值函数 V 0 V_0 V0开始):-
For t = 0 t=0 t=0 to k − 1 k-1 k−1 do:
更新值函数:
V t + 1 ( s ) = ∑ a π i ( a ∣ s ) [ R ( s , a ) + γ ∑ s ′ P ( s ′ ∣ s , a ) V t ( s ′ ) ] V_{t+1}(s) = \sum_{a} \pi_i(a|s) \left[ R(s,a) + \gamma \sum_{s'} P(s'|s,a) V_t(s') \right] Vt+1(s)=a∑πi(a∣s)[R(s,a)+γs′∑P(s′∣s,a)Vt(s′)] -
最终得到近似值函数 V k ≈ V π i V_k \approx V^{\pi_i} Vk≈Vπi
-
-
(2) 策略改进:
基于近似值函数 V k V_k Vk,贪婪更新策略:
π i + 1 ( s ) = arg max a [ R ( s , a ) + γ ∑ s ′ P ( s ′ ∣ s , a ) V k ( s ′ ) ] \pi_{i+1}(s) = \arg\max_{a} \left[ R(s,a) + \gamma \sum_{s'} P(s'|s,a) V_k(s') \right] πi+1(s)=argamax[R(s,a)+γs′∑P(s′∣s,a)Vk(s′)]
Until π i + 1 = π i \pi_{i+1} = \pi_i πi+1=πi(策略稳定)
-
特性分析
- 收敛性:
- 即使策略评估未完全收敛,只要策略改进阶段能提升策略,算法仍能收敛到最优策略
- 收敛速度可能慢于标准策略迭代,但快于值迭代
- 精度-效率权衡:
- 增大 k k k:策略评估更精确,策略改进更有效,但单次迭代时间增加
- 减小 k k k:单次迭代更快,但可能需要更多轮次策略迭代
相关文章:
强化学习笔记
强化学习的总体目标:寻找最优策略。 关键名词 智能体(Agent) 状态(State):智能体相对于环境的状态 s ∈ S s∈S s∈S 状态空间(State space):把所有状态放在一起&…...
【个人记录】openEuler安装K3S并配置为GPU节点
前言 国内网络环境特殊,在线安装比较麻烦,K3S采用离线安装方式进行部署。 安装整体思路是: 安装GPU驱动安装CUDA工具安装nvidia容器运行时安装K3S设置K3S使用GPU 基础环境 采用All In One方式(其实只有一张GPU卡)部…...
SpringAI系列 - ToolCalling篇(二) - 如何设置应用侧工具参数ToolContext(有坑)
目录 一、引言二、集成ToolContext示例步骤1: 在`@Tool`标注的工具方法中集成`ToolConext`参数步骤2:`ChatClient`运行时动态设置`ToolContext`参数三、填坑一、引言 在使用AI大模型的工具调用机制时,工具参数都是由大模型解析用户输入上下文获取的,由大模型提供参数给本地…...
Linux系统中常见的词GNU是什么意思?
GNU 是 “GNU’s Not Unix” 的递归缩写,它是一个自由软件项目,旨在创建一个完全自由的操作系统。这个名字反映了GNU项目的核心理念:它试图创建一个类Unix的系统,但不是Unix本身。 GNU 项目由 理查德斯托曼(Richard S…...
Revit API:对元素过滤的三点思考
一、为什么要对元素进行过滤? 提高效率:Revit模型可能包含成千上万的元素,直接对所有元素进行操作会非常耗时。通过过滤,可以只选择需要处理的元素,从而提高代码的执行效率。 精准控制:通过过滤࿰…...
计算机毕业设计Python农产品推荐系统 农产品爬虫 农产品可视化 农产品大数据(源码+LW文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
计算机网络之TCP的可靠传输
上一篇内容可能比较多,显得比较杂乱,这一篇简单总结一下TCP是靠什么实现可靠传输的吧。 校验和 TCP是端到端的传输,由发送方计算校验和,接收方进行验证,目的是为了验证TCP首部和数据在发送过程中没有任何改动&#x…...
linux 驱动编程配置(minis3c2440)
1.介绍 1. 启动过程:启动u-boot------>>启动linux内核----->>挂载根文件系统 2. uboot是一个裸机程序,是一个bootloader,用于启动linux系统以及系统初始化 ubootloader主要完成了哪些任务:1. 初始化异常向量表&a…...
数据库基础1
MySQL在C语言中的操作步骤 C语言操作MySQL的基本流程如下: 引入MySQL头文件初始化MySQL连接连接到MySQL服务器执行SQL语句获取查询结果处理查询结果释放结果集和连接 数据库中有哪些约束规则 1.主键约束 promary key 具有唯一且非空 2.外键约束 foreign key 3.非…...
Redis文档总结
文档:https://redis.com.cn/topics/why-use-redis.html 1.我们为什么一定要用 Redis 呢? 速度快,完全基于内存,使用 C 语言实现,网络层使用 epoll 解决高并发问题,单线程模型避免了不必要的上下文切换及竞争…...
论文笔记(七十二)Reward Centering(二)
Reward Centering(二) 文章概括摘要2 简单的奖励中心 文章概括 引用: article{naik2024reward,title{Reward Centering},author{Naik, Abhishek and Wan, Yi and Tomar, Manan and Sutton, Richard S},journal{arXiv preprint arXiv:2405.0…...
25年2月通信基础知识补充:多普勒频移与多普勒扩展、3GPP TDL信道模型
看文献过程中不断发现有太多不懂的基础知识,故长期更新这类blog不断补充在这过程中学到的知识。由于这些内容与我的研究方向并不一定强相关,故记录不会很深入请见谅。 【通信基础知识补充7】25年2月通信基础知识补充1 一、多普勒频移与多普勒扩展傻傻分不…...
ASUS/华硕无畏16 X1605VA 原厂Win11 22H2系统 工厂文件 带ASUS Recovery恢复
华硕工厂文件恢复系统 ,安装结束后带隐藏分区,带一键恢复,以及机器所有的驱动和软件。 支持型号:X1605VA 系统版本:Windows 11 22H2 文件下载:点击下载 文件格式:工厂文件 安装教程&#x…...
DeepSeek赋能智慧文旅:新一代解决方案,重构文旅发展的底层逻辑
DeepSeek作为一款前沿的人工智能大模型,凭借其强大的多模态理解、知识推理和内容生成能力,正在重构文旅产业的发展逻辑,推动行业从传统的经验驱动向数据驱动、从人力密集型向智能协同型转变。 一、智能服务重构:打造全域感知的智…...
自学FOC系列分享--SVPWM和clark 逆变换及代码实战
自学FOC系列分享--SVPWM和clark 逆变换 1 说在前面2 回顾clarke 和 park的变换和逆变换2.1 概述2.2 公式说明 3 SVPWM是如何写的3.1 简单说明3.2 重要对比 4、代码实战4.1 代码构成说明4.2 全部代码4.3 测试代码4.4 测试结果4.5 结果分析 总结 1 说在前面 如前一篇文章所述的系…...
LeetCode-524. 通过删除字母匹配到字典里最长单词
1、题目描述: 给你一个字符串 s 和一个字符串数组 dictionary ,找出并返回 dictionary 中最长的字符串,该字符串可以通过删除 s 中的某些字符得到。 如果答案不止一个,返回长度最长且字母序最小的字符串。如果答案不存在&#x…...
浅谈网络 | 容器网络之Cilium
目录 Cilium介绍Cilium是什么Cilium 主要功能特性为什么用Cilium? 功能概述组件概况BPF 与 XDPeBPF (Extended Berkeley Packet Filter)XDP (eXpress Data Path) Cilium介绍 Cilium是什么 Cilium 是一个开源网络和安全项目,专为 Kubernetes、Docker 和…...
armv7l
在 **ARMv7l** 中,最后的字符是字母 **“l”**(小写字母 “L”),而不是数字 **“1”**。 --- ### 1. **ARMv7l 的含义** - **ARMv7**:指的是 **ARM 架构的第 7 代版本**,是一种广泛应用于嵌入式系统&…...
从零开始构建一个小型字符级语言模型的完整详细教程(基于Transformer架构)
最近特别火的DeepSeek,是一个大语言模型,那一个模型是如何构建起来的呢?DeepSeek基于Transformer架构,接下来我们也从零开始构建一个基于Transformer架构的小型语言模型,并说明构建的详细步骤及内部组件说明。我们以构建一个字符级语言模型(Char-Level LM)为例,目标是通…...
期权帮|股指期货交割日为啥会大跌?
锦鲤三三每日分享期权知识,帮助期权新手及时有效地掌握即市趋势与新资讯! 股指期货交割日为啥会大跌? 股指期货交割日股市可能会大跌,主要原因有以下几点: 1.交割日时多空双方需要平仓或转仓,若多头急于平仓…...
B树和B+树
1. B树 1.1 定义 B树是一种多路平衡查找树,具有以下性质: 每个节点最多包含 m 个子节点(m 阶 B树)。 根节点至少有两个子节点(除非它是叶子节点)。 每个内部节点(非根和非叶子节点ÿ…...
分布式事务核心理论:CAP与BASE
一、引言:分布式系统的挑战 在互联网应用中,随着业务规模的扩大,单机数据库已无法满足高并发和海量数据存储需求。分布式系统将数据拆分到不同节点,但随之带来了数据一致性的难题。CAP与BASE理论为分布式事务提供了重要的设计指导…...
【UCB CS 61B SP24】Lecture 4 - Lists 2: SLLists学习笔记
本文内容为重写上一节课中的单链表,将其重构成更易于用户使用的链表,实现多种操作链表的方法。 1. 重构单链表SLList 在上一节课中编写的 IntList 类是裸露递归的形式,在 Java 中一般不会这么定义,因为这样用户可能需要非常了解…...
记录一个ES分词器不生效的解决过程
问题背景 商城项目,其中商品查询检索使用的是ES, 但存在某些商品查询不到的问题 例如:某商品名包含AA_BBB这样的关键词,但是搜索"AA"不能查询到该商品,但是将商品名修改为AA BBB后就能查询到了. 怀疑是分词的问题,但看代码,在创建ES索引时在对应字段上也定义了分词器…...
Jeecg+vue3去掉JInput组件默认模糊查询的配置方式
遇见的问题:input查询带**号 情况1、使用schemas配置的表单项 添加type""属性,默认type为like,去掉模糊则配置为空 文档链接 jeecg文档说明JInput 2、直接调用组件则在属性上直接添加type""属性...
Could not initialize class io.netty.util.internal.Platfor...
异常信息: Exception in thread "main" java.lang.NoClassDefFoundError: Could not initialize class io.netty.util.internal.PlatformDependent0 Caused by: java.lang.ExceptionInInitializerError: Exception java.lang.reflect.InaccessibleObjec…...
什么是业务流程分类框架
业务流程分类框架是一个用于组织和系统化地分类业务流程的结构化方法。它旨在帮助企业理解、管理、分析和改进其运营流程。 可以把它想象成一个图书馆的图书分类系统,帮助快速找到和理解不同类型的书籍。对于业务流程来说,分类框架帮助快速了解不同类型的…...
向量的点乘的几何意义
源自AI 向量的点乘(Dot Product)在几何和图形学中有重要的意义。它不仅是数学运算,还可以用来描述向量之间的关系。以下是点乘的几何意义及其应用: 1. 点乘的定义 对于两个向量 a 和 b,它们的点乘定义为:…...
达梦数据库应用开发_JDBC接口介绍_yxy
达梦数据库应用开发_JDBC接口介绍 1 JDBC是什么?2 JDBC主要类或接口介绍2.1 建立与 DM 数据库的连接2.2 转接发送 SQL 语句到数据库2.3 处理并返回语句执行结果 3 JDBC基本使用3.1 前期准备3.2 增删改查代码示例3.3 绑定变量操作示例3.4 大字段操作示例 1 JDBC是什么…...
在ubuntu上用Python的openpyxl模块操作Excel的案例
文章目录 安装模块读取Excel数据库取数匹配数据和更新Excel数据 在Ubuntu系统的环境下基本职能借助Python的openpyxl模块实现对Excel数据的操作。 安装模块 本次需要用到的模块需要提前安装(如果没有的话) pip3 install openpyxl pip3 install pymysql在操作前,需…...
RabbitMQ介绍以及基本使用
文章目录 一、什么是消息队列? 二、消息队列的作用(优点) 1、解耦 2、流量削峰 3、异步 4、顺序性 三、RabbitMQ基本结构 四、RabbitMQ队列模式 1、简单队列模式 2、工作队列模式 3、发布/订阅模式 4、路由模式 5、主题模式 6、…...
搭建 Hadoop 3.3.6 伪分布式
搭建 Hadoop 3.3.6 伪分布式 IP 192.168.157.132 初始化操作 更改yum源 # 1_1.安装Wget yum install wget# 1_2.备份CentOS-Base.repo文件 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak# 2.下载阿里yum源配置 wget -O /etc/yum.repos.d/Cen…...
进程控制(靠原语实现)
什么是进程控制? 进程控制的主要功能是:对系统中的所有进程实施有效管理,它具有创建新进程、撤销已有进程、实现进程状态转换等功能。 简化理解:进程控制就是要实现进程状态转换。 知识一览: 如何实现进程控制&#…...
linux5-多任务--进程fork()
一.多任务:让系统具备同时处理多个任务的能力 1.如何实现多任务 1.1进程:操作系统上正在运行的程序,需要消耗内存和CPU 1.1.1 进程的生存周期:创建、调度、消亡 1.1.1.1进程的创建:每个进程被创建时,操作…...
【蓝桥】二分法
1、简介 1.1 定义: 通过将问题的搜索范围一分为二,迭代地缩小搜索范围,直到找到目标或确定目标不存在 1.2 适用: 有序数据集合,且每次迭代可以将搜索范围缩小一半 1.3 本质: 枚举:利用数据结构…...
linux查看程序占用的本地端口
ss是Socket Statistics的缩写,用来替代旧的netstat工具,功能更强大,执行更快。它用于查看系统的网络连接情况,包括TCP、UDP等协议的信息。 一. 命令解析: sudo ss -tulwnpss (Socket Statistics):替代 ne…...
统计函数运行时间的python脚本
这是一个统计函数运行时间的实用脚本,其中用到了函数的嵌套、链式传输参数,以及修饰器。 import time# 定义一个装饰器timer,用于计算被装饰函数的运行时间 def timer(func):print("执行了timer")def wrapper(*args, **kwargs):st…...
百度搜索和文心智能体接入DeepSeek满血版——AI搜索的新纪元
在当今数字化时代,搜索引擎作为互联网信息获取的核心工具,正经历着前所未有的变革。据悉,2025年2月16日,百度搜索和文心智能体平台宣布全面接入DeepSeek和文心大模型的最新深度搜索功能,搜索用户可免费使用DeepSeek和文…...
快速入门Springboot+vue——MybatisPlus快速上手
学习自哔哩哔哩上的“刘老师教编程”,具体学习的网站为:6.MybatisPlus快速上手_哔哩哔哩_bilibili,以下是看课后做的笔记,仅供参考。 第一节 ORM介绍 ORM对象关系映射,为了解决面向对象与关系数据库存在的互补匹配现象…...
在C#中动态访问对象属性时,用表达式树可以获得高效性能
在C#中如何用表达式树动态访问对象属性的问题。用户可能已经知道反射的基本用法,但想用表达式树来提高性能,因为表达式树编译后的委托执行速度比反射快。 首先,表达式树的基本概念。表达式树允许在运行时构建代码,并编译成可执行的…...
性能:React 实战优化技巧 之 函数闭包
子组件使用了 React.memo ,为什么 “prop 值未发生改变”,子组件依然被重新渲染了? 🚧 示例:点击子组件中按钮,获取 input 数据进行提交(常见于表单) index.tsx import Author f…...
蓝桥杯学习大纲
(致酷德与热爱算法、编程的小伙伴们) 在查阅了相当多的资料后,发现没有那篇博客、文章很符合我们备战蓝桥杯的学习路径。所以,干脆自己整理一篇,欢迎大家补充! 一、蓝桥必备高频考点 我们以此为重点学习…...
Windows11切换回Windows10风格右键菜单
参考文章:Win11新版右键菜单用不惯?一键切换回Win10经典版!-CSDN博客 以管理员权限运行命令行cmd 切换为经典旧版右键菜单,执行 reg.exe add “HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServe…...
Python 爬虫selenium
1.selenium自动化 selenium可以操作浏览器,在浏览器页面上实现:点击、输入、滑动 等操作。 不同于selenium自动化,逆向本质是: 分析请求,例如:请求方法、请求参数、加密方式等。用代码模拟请求去实现同等…...
Linux常用操作
软件安装 CentOS系统使用: yum [install remove search] [-y] 软件名称 install 安装 remove 卸载 search 搜索 -y,自动确认 Ubuntu系统使用 apt [install remove search] [-y] 软件名称 install 安装 remove 卸载 search 搜索 -y,自动确认 yum 和 apt 均需要root权限 syste…...
Note25022001_Excel表格如何在文字的中间或者后边插入当前日期
Excel表格如何在文字的中间或者后边插入当前日期 关键字: EXCEL;当前日期;文字中间 如图所示: 其中一种实现方法如下: 打开表格,在某一个表格中输入: "项目计划管理表(厂内&…...
Django5 实用指南(四)URL路由与视图函数
4.1 Django5的URL路由系统 Django 的 URL 路由系统是其核心组件之一,它负责将用户的 HTTP 请求(即 URL)映射到相应的视图函数上。每当用户在浏览器中访问某个 URL 时,Django 会根据项目的 URL 配置文件(urls.py&#…...
Unity3D 基于 GPU 动画和 Compute Shader 的大批量动画渲染详解
引言 在现代游戏开发中,渲染大量动画角色是一个常见的需求,尤其是在大规模战斗场景、开放世界游戏或 VR/AR 应用中。传统的 CPU 动画计算和渲染方式在面对大批量角色时,往往会遇到性能瓶颈。为了优化性能,开发者可以利用 GPU 的强…...
遥感影像目标检测:从CNN(Faster-RCNN)到Transformer(DETR)
我国高分辨率对地观测系统重大专项已全面启动,高空间、高光谱、高时间分辨率和宽地面覆盖于一体的全球天空地一体化立体对地观测网逐步形成,将成为保障国家安全的基础性和战略性资源。未来10年全球每天获取的观测数据将超过10PB,遥感大数据时…...
什么是DeFi (去中心化金融)
DeFi (去中心化金融) 概述 💰 1. DeFi 基础概念 1.1 什么是 DeFi? DeFi 是建立在区块链上的金融服务生态系统,它: 无需中心化中介开放且透明无需许可即可参与代码即法律 1.2 DeFi 的优势 开放性:任何人都可以参与…...