EM算法 & 隐马尔可夫模型

文章目录

  • 一、隐马尔可夫模型(HMM)
    • [1. 处理问题类型(HMM 的三大核心任务)](#1. 处理问题类型(HMM 的三大核心任务))
    • [2. 核心数学公式(模型参数与三大任务公式)](#2. 核心数学公式(模型参数与三大任务公式))
    • [3. 典型应用场景](#3. 典型应用场景)
    • [4. 核心特点总结](#4. 核心特点总结)
  • 二、扫清数学知识点
        • [2.1.1 Jensen 不等式](#2.1.1 Jensen 不等式)
        • [2.1.2 E 步 & M 步](#2.1.2 E 步 & M 步)
          • [1. 符号定义](#1. 符号定义)
          • [2. E 步(期望步)](#2. E 步(期望步))
          • [3. M 步(最大化步)](#3. M 步(最大化步))
        • [2.1.3 Gauss 混合模型(GMM)](#2.1.3 Gauss 混合模型(GMM))
          • [1. 符号定义](#1. 符号定义)
          • [2. 核心公式](#2. 核心公式)
            • [(1)GMM 的概率密度函数](#(1)GMM 的概率密度函数)
            • [(2)E 步(计算责任 γ n k \gamma_{nk} γnk)](#(2)E 步(计算责任 γ n k \gamma_{nk} γnk))
            • [(3)M 步(更新参数 θ ( t + 1 ) \theta^{(t+1)} θ(t+1))](#(3)M 步(更新参数 θ ( t + 1 ) \theta^{(t+1)} θ(t+1)))

一、隐马尔可夫模型(HMM)

在学习自然语言处理的时候 对于文本输入的判断运用到了隐马尔可夫模型(Hidden Markov Model,HMM),它是一种基于时序的概率图模型,核心假设是 "隐藏状态的转移仅依赖前一状态(马尔可夫性)""观测值仅由当前隐藏状态决定(观测独立性)",主要用于处理 "观测序列与隐藏状态序列存在对应关系" 的时序问题。

1. 处理问题类型(HMM 的三大核心任务)

HMM 的所有应用均围绕以下三类基础任务展开,三类任务共同构成 HMM 的完整解决框架:

任务类型 核心目标 解决思路
1. 评估任务(概率计算) 已知模型参数(π, A, B)和观测序列 O,计算 "该观测序列由当前模型生成的概率 P (O λ)"
2. 解码任务(状态推断) 已知模型参数(π, A, B)和观测序列 O,找到 "最可能生成该观测序列的隐藏状态序列 S" 维特比算法(Viterbi Algorithm),通过动态规划记录每个时刻、每个状态的 "最优前序状态",最后回溯得到最优序列
3. 学习任务(参数估计) 仅已知观测序列 O,估计 "使 P (O λ) 最大的模型参数 λ=(π, A, B)"

2. 核心数学公式(模型参数与三大任务公式)

2.1 模型核心参数定义

HMM 的所有计算均基于三大参数,先明确符号含义:

  • N N N:隐藏状态总数(如词性标注中 "名词、动词、形容词" 共 3 类, N = 3 N=3 N=3);

  • M M M:观测值总数(如语音识别中 "声音特征向量" 的类别数);

  • T T T:观测序列长度(如一句话有 10 个单词, T = 10 T=10 T=10);

  • O = [ o 1 , o 2 , . . . , o T ] O = [o_1, o_2, ..., o_T] O=[o1,o2,...,oT]:观测序列(如 10 个单词的文本);

  • S = [ s 1 , s 2 , . . . , s T ] S = [s_1, s_2, ..., s_T] S=[s1,s2,...,sT]:隐藏状态序列(如 10 个单词对应的词性);

  • 初始状态概率 π : π i = P ( s 1 = i ) π_i = P(s_1 = i) πi=P(s1=i)(初始时刻选择隐藏状态 i i i的概率, i = 1 , 2 , . . . , N i=1,2,...,N i=1,2,...,N);

  • 状态转移概率矩阵 A : a i j = P ( s t + 1 = j ∣ s t = i ) a_{ij} = P(s_{t+1} = j | s_t = i) aij=P(st+1=j∣st=i)(从隐藏状态 i i i转移到 j j j的概率, i , j = 1 , 2 , . . . , N i,j=1,2,...,N i,j=1,2,...,N);

  • 观测发射概率矩阵 B : b j ( o t ) = P ( o t ∣ s t = j ) b_j(o_t) = P(o_t | s_t = j) bj(ot)=P(ot∣st=j)(隐藏状态 j j j生成观测值 o t o_t ot的概率, j = 1 , 2 , . . . , N j=1,2,...,N j=1,2,...,N);

  • 模型整体记为 λ = ( π , A , B ) λ = (π, A, B) λ=(π,A,B)。

2.2 三大任务核心公式

(1)评估任务:前向算法公式

定义 "前向概率" α t ( i ) = P ( o 1 , o 2 , . . . , o t , s t = i ∣ λ ) α_t(i) = P(o_1, o_2, ..., o_t, s_t = i | λ) αt(i)=P(o1,o2,...,ot,st=i∣λ)(前 t 个观测序列 + 第 t 时刻隐藏状态为 i i i的联合概率),递推计算:

  1. 初始时刻(t=1) : α 1 ( i ) = π i ⋅ b i ( o 1 ) α_1(i) = π_i \cdot b_i(o_1) α1(i)=πi⋅bi(o1)(初始状态概率 × 初始观测发射概率);

  2. 递推时刻(t=2 到 T) : α t ( j ) = [ ∑ i = 1 N α t − 1 ( i ) ⋅ a i j ] ⋅ b j ( o t ) α_t(j) = \left[ \sum_{i=1}^N α_{t-1}(i) \cdot a_{ij} \right] \cdot b_j(o_t) αt(j)=[∑i=1Nαt−1(i)⋅aij]⋅bj(ot)(前 t-1 时刻所有状态的前向概率 × 转移到 j 的概率,再乘 j 生成 o t o_t ot的概率);

  3. 最终结果 : P ( O ∣ λ ) = ∑ i = 1 N α T ( i ) P(O|λ) = \sum_{i=1}^N α_T(i) P(O∣λ)=∑i=1NαT(i)(T 时刻所有隐藏状态的前向概率之和,即观测序列总概率)。

(2)解码任务:维特比算法公式

定义 "维特比概率" δ t ( i ) = max ⁡ s 1 , . . . , s t − 1 P ( s 1 , . . . , s t − 1 , o 1 , . . . , o t , s t = i ∣ λ ) δ_t(i) = \max_{s_1,...,s_{t-1}} P(s_1,...,s_{t-1}, o_1,...,o_t, s_t = i | λ) δt(i)=maxs1,...,st−1P(s1,...,st−1,o1,...,ot,st=i∣λ)(前 t 个观测序列 + 第 t 时刻状态为 i i i的 "最优路径概率"),同时记录 "最优前序状态" ψ t ( i ) ψ_t(i) ψt(i):

  1. 初始时刻(t=1) : δ 1 ( i ) = π i ⋅ b i ( o 1 ) δ_1(i) = π_i \cdot b_i(o_1) δ1(i)=πi⋅bi(o1), ψ 1 ( i ) = 0 ψ_1(i) = 0 ψ1(i)=0(无前期状态);

  2. 递推时刻(t=2 到 T)

    δ t ( j ) = max ⁡ i = 1 N [ δ t − 1 ( i ) ⋅ a i j ] ⋅ b j ( o t ) δ_t(j) = \max_{i=1}^N [δ_{t-1}(i) \cdot a_{ij}] \cdot b_j(o_t) δt(j)=maxi=1N[δt−1(i)⋅aij]⋅bj(ot)(选前 t-1 时刻最优状态 × 转移概率,再乘发射概率);

    ψ t ( j ) = arg ⁡ max ⁡ i = 1 N [ δ t − 1 ( i ) ⋅ a i j ] ψ_t(j) = \arg\max_{i=1}^N [δ_{t-1}(i) \cdot a_{ij}] ψt(j)=argmaxi=1N[δt−1(i)⋅aij](记录使 δ t ( j ) δ_t(j) δt(j)最大的前序状态 i i i);

  3. 回溯找最优序列

    ① 找 T 时刻最优状态: s T ∗ = arg ⁡ max ⁡ i = 1 N δ T ( i ) s_T^* = \arg\max_{i=1}^N δ_T(i) sT∗=argmaxi=1NδT(i);

    ② 反向回溯: s t ∗ = ψ t + 1 ( s t + 1 ∗ ) s_t^* = ψ_{t+1}(s_{t+1}^*) st∗=ψt+1(st+1∗)(t 从 T-1 到 1),最终得到 S ∗ = [ s 1 ∗ , s 2 ∗ , . . . , s T ∗ ] S^* = [s_1^*, s_2^*, ..., s_T^*] S∗=[s1∗,s2∗,...,sT∗]。

(3)学习任务:Baum-Welch 算法公式(EM 迭代)

基于 "期望最大化(EM)",通过观测序列 O 迭代更新参数 λ = ( π , A , B ) λ=(π, A, B) λ=(π,A,B),核心是定义 "状态转移期望" ξ t ( i , j ) ξ_t(i,j) ξt(i,j)和 "状态停留期望" γ t ( i ) γ_t(i) γt(i):

  • 定义辅助变量:

    ξ t ( i , j ) = P ( s t = i , s t + 1 = j ∣ O , λ ) ξ_t(i,j) = P(s_t = i, s_{t+1} = j | O, λ) ξt(i,j)=P(st=i,st+1=j∣O,λ)(第 t 时刻状态 i、t+1 时刻状态 j 的后验概率);

    γ t ( i ) = P ( s t = i ∣ O , λ ) = ∑ j = 1 N ξ t ( i , j ) γ_t(i) = P(s_t = i | O, λ) = \sum_{j=1}^N ξ_t(i,j) γt(i)=P(st=i∣O,λ)=∑j=1Nξt(i,j)(第 t 时刻状态 i 的后验概率);

  • 参数更新公式(迭代至收敛):

  1. 初始概率 π: π i = γ 1 ( i ) π_i = γ_1(i) πi=γ1(i)(第 1 时刻状态 i 的后验概率);

  2. 转移矩阵 A: a i j = ∑ t = 1 T − 1 ξ t ( i , j ) ∑ t = 1 T − 1 γ t ( i ) a_{ij} = \frac{\sum_{t=1}^{T-1} ξ_t(i,j)}{\sum_{t=1}^{T-1} γ_t(i)} aij=∑t=1T−1γt(i)∑t=1T−1ξt(i,j)(转移 i→j 的总期望 / 状态 i 停留的总期望);

  3. 发射矩阵 B: b j ( k ) = ∑ t : o t = k γ t ( j ) ∑ t = 1 T γ t ( j ) b_j(k) = \frac{\sum_{t:o_t=k} γ_t(j)}{\sum_{t=1}^T γ_t(j)} bj(k)=∑t=1Tγt(j)∑t:ot=kγt(j)(状态 j 生成观测 k 的总期望 / 状态 j 停留的总期望, k k k为观测值索引)。

3. 典型应用场景

HMM 的优势是 "高效建模短时序的观测 - 隐藏状态对应关系",因此广泛应用于时序数据的结构化分析,核心是 "明确观测序列与隐藏状态的对应关系":

应用领域 观测序列 O 隐藏状态序列 S 核心目标
1. 语音识别 声音信号的特征向量(如 MFCC 特征) 语音的 "音素" 或 "音节" 将连续的声音信号(观测)转换为离散的语音单位(隐藏状态),再映射为文字
2. 自然语言处理 文本中的单词序列(如 "我 / 爱 / 学习") 单词的 "词性"(如 "代词 / 动词 / 名词") 实现 "词性标注",为后续语法分析、语义理解提供结构化信息
3. 生物信息学 DNA/RNA 的碱基序列(如 "A-T-C-G") 基因的 "功能区域"(如 "编码区 / 非编码区") 从碱基序列(观测)中识别基因的功能片段(隐藏状态),辅助基因结构分析
4. 行为识别 传感器采集的动作数据(如加速度、角速度) 人的 "行为类别"(如 "走路 / 跑步 / 爬楼梯") 从连续的传感器数据(观测)中推断用户的实时行为(隐藏状态),用于健康监测、安防
5. 手写体识别 手写轨迹的坐标序列(x,y 时序点) 手写的 "字符 / 笔画"(如 "横 / 竖 / 撇 / 捺") 将连续的手写轨迹(观测)分解为离散的笔画或字符(隐藏状态),实现手写内容识别
6. 故障诊断 设备传感器的监测数据(如温度、振动) 设备的 "故障状态"(如 "正常 / 轻度故障 / 重度故障") 从设备运行数据(观测)中推断内部故障状态(隐藏状态),实现提前预警

4. 核心特点总结

  1. 优势:模型结构简单、计算效率高(递推 / 动态规划降低复杂度),适合短时序、结构化隐藏状态的问题,可解释性强(参数有明确概率含义);

  2. 局限性:依赖 "马尔可夫性" 和 "观测独立性" 假设,无法建模长程依赖(如文本中跨句子的语义关联),对高维观测数据(如图片、视频)适配性差,需人工定义隐藏状态(灵活性低);

  3. 适用边界:在深度学习(如 Transformer)兴起后,HMM 逐渐被端到端模型替代,但在 "小数据、短时序、需明确状态解释" 的场景(如低资源语言词性标注、简单行为识别)中仍有应用价值。

二、扫清数学知识点

2.1.1 Jensen 不等式
  • 核心定义 :设 f ( x ) f(x) f(x)是定义在实数域上的凸函数(二阶导数 f ′ ′ ( x ) ≥ 0 f''(x)\geq0 f′′(x)≥0),对任意实数 x 1 , x 2 , ... , x n x_1,x_2,\dots,x_n x1,x2,...,xn和权重 λ 1 , λ 2 , ... , λ n \lambda_1,\lambda_2,\dots,\lambda_n λ1,λ2,...,λn(满足 ∑ i = 1 n λ i = 1 \sum_{i=1}^n\lambda_i=1 ∑i=1nλi=1, λ i ≥ 0 \lambda_i\geq0 λi≥0),有:

    f ( ∑ i = 1 n λ i x i ) ≤ ∑ i = 1 n λ i f ( x i ) f\left(\sum_{i=1}^n\lambda_i x_i\right)\leq\sum_{i=1}^n\lambda_i f(x_i) f(∑i=1nλixi)≤∑i=1nλif(xi)

    若 f ( x ) f(x) f(x)为凹函数( f ′ ′ ( x ) ≤ 0 f''(x)\leq0 f′′(x)≤0),则不等式方向反转:

    f ( ∑ i = 1 n λ i x i ) ≥ ∑ i = 1 n λ i f ( x i ) f\left(\sum_{i=1}^n\lambda_i x_i\right)\geq\sum_{i=1}^n\lambda_i f(x_i) f(∑i=1nλixi)≥∑i=1nλif(xi)

  • 等号成立条件 :当且仅当 x 1 = x 2 = ⋯ = x n x_1=x_2=\dots=x_n x1=x2=⋯=xn(或 f ( x ) f(x) f(x)为线性函数时恒成立)。

  • EM 算法中的作用 :作为推导 EM 迭代公式的理论基础,通过凹函数(对数函数 ln ⁡ ( ⋅ ) \ln(\cdot) ln(⋅))的 Jensen 不等式,构建对数似然函数的下界(Q 函数)。

2.1.2 E 步 & M 步

EM 算法用于不完全数据 (含观测变量 X X X和隐变量 Z Z Z)的参数估计,目标是最大化观测数据的对数似然函数 L ( θ ) = ln ⁡ P ( X ∣ θ ) L(\theta)=\ln P(X|\theta) L(θ)=lnP(X∣θ),迭代分为两步:

1. 符号定义
  • X X X:观测变量(如样本数据,维度 N × D N\times D N×D, N N N为样本数, D D D为特征数);

  • Z Z Z:隐变量(如高斯混合模型中的 "样本所属分量",维度 N × K N\times K N×K, K K K为隐变量类别数);

  • θ \theta θ:模型参数(如概率分布的均值、方差、混合系数等);

  • Q ( θ ∣ θ ( t ) ) Q(\theta|\theta^{(t)}) Q(θ∣θ(t)):第 t t t次迭代的 "目标函数"(Q 函数),即完全数据对数似然 ln ⁡ P ( X , Z ∣ θ ) \ln P(X,Z|\theta) lnP(X,Z∣θ)在隐变量后验分布 P ( Z ∣ X , θ ( t ) ) P(Z|X,\theta^{(t)}) P(Z∣X,θ(t))下的期望。

2. E 步(期望步)
  • 目标 :固定当前参数 θ ( t ) \theta^{(t)} θ(t),计算 Q 函数(构建 L ( θ ) L(\theta) L(θ)的下界);

  • 公式

    Q ( θ ∣ θ ( t ) ) = E Z ∣ X , θ ( t ) [ ln ⁡ P ( X , Z ∣ θ ) ] = ∑ Z P ( Z ∣ X , θ ( t ) ) ⋅ ln ⁡ P ( X , Z ∣ θ ) Q(\theta|\theta^{(t)})=E_{Z|X,\theta^{(t)}}\left[\ln P(X,Z|\theta)\right]=\sum_{Z} P(Z|X,\theta^{(t)})\cdot\ln P(X,Z|\theta) Q(θ∣θ(t))=EZ∣X,θ(t)[lnP(X,Z∣θ)]=∑ZP(Z∣X,θ(t))⋅lnP(X,Z∣θ)

    (若 Z Z Z为连续变量,求和替换为积分 ∫ Z \int_Z ∫Z)

3. M 步(最大化步)
  • 目标 :固定 Q 函数,更新参数 θ ( t + 1 ) \theta^{(t+1)} θ(t+1)以最大化 Q 函数(间接提升 L ( θ ) L(\theta) L(θ));

  • 公式

    θ ( t + 1 ) = arg ⁡ max ⁡ θ Q ( θ ∣ θ ( t ) ) \theta^{(t+1)}=\arg\max_{\theta} Q(\theta|\theta^{(t)}) θ(t+1)=argmaxθQ(θ∣θ(t))

  • 迭代终止条件 :参数变化量 ∥ θ ( t + 1 ) − θ ( t ) ∥ < ϵ \|\theta^{(t+1)}-\theta^{(t)}\|<\epsilon ∥θ(t+1)−θ(t)∥<ϵ( ϵ \epsilon ϵ为预设阈值),或对数似然 L ( θ ) L(\theta) L(θ)增长小于 ϵ \epsilon ϵ。

2.1.3 Gauss 混合模型(GMM)

GMM 是 EM 算法的典型应用,假设数据由 K K K个高斯分布(分量)混合生成,核心是估计各分量的参数。

1. 符号定义
  • K K K:高斯分量的个数;

  • ϕ k \phi_k ϕk:第 k k k个分量的 "混合系数"(满足 ∑ k = 1 K ϕ k = 1 \sum_{k=1}^K\phi_k=1 ∑k=1Kϕk=1, ϕ k ≥ 0 \phi_k\geq0 ϕk≥0),即 P ( Z k = 1 ) = ϕ k P(Z_k=1)=\phi_k P(Zk=1)=ϕk( Z k = 1 Z_k=1 Zk=1表示样本属于第 k k k个分量);

  • μ k \mu_k μk:第 k k k个高斯分量的均值向量(维度 D × 1 D\times1 D×1);

  • Σ k \Sigma_k Σk:第 k k k个高斯分量的协方差矩阵(维度 D × D D\times D D×D,正定);

  • γ n k = P ( Z n k = 1 ∣ X n , θ ) \gamma_{nk}=P(Z_nk=1|X_n,\theta) γnk=P(Znk=1∣Xn,θ):第 n n n个样本属于第 k k k个分量的 "后验概率"(也叫 "责任")。

2. 核心公式
(1)GMM 的概率密度函数

观测数据 X n X_n Xn的概率由 K K K个高斯分布加权求和得到:

P ( X n ∣ θ ) = ∑ k = 1 K ϕ k ⋅ N ( X n ∣ μ k , Σ k ) P(X_n|\theta)=\sum_{k=1}^K\phi_k\cdot\mathcal{N}(X_n|\mu_k,\Sigma_k) P(Xn∣θ)=∑k=1Kϕk⋅N(Xn∣μk,Σk)

其中 N ( X n ∣ μ k , Σ k ) \mathcal{N}(X_n|\mu_k,\Sigma_k) N(Xn∣μk,Σk)是高斯概率密度:

N ( X n ∣ μ k , Σ k ) = 1 ( 2 π ) D / 2 ∣ Σ k ∣ 1 / 2 exp ⁡ ( − 1 2 ( X n − μ k ) T Σ k − 1 ( X n − μ k ) ) \mathcal{N}(X_n|\mu_k,\Sigma_k)=\frac{1}{(2\pi)^{D/2}|\Sigma_k|^{1/2}}\exp\left(-\frac{1}{2}(X_n-\mu_k)^T\Sigma_k^{-1}(X_n-\mu_k)\right) N(Xn∣μk,Σk)=(2π)D/2∣Σk∣1/21exp(−21(Xn−μk)TΣk−1(Xn−μk))

(2)E 步(计算责任 γ n k \gamma_{nk} γnk)

固定当前参数 θ ( t ) = ( ϕ 1 ( t ) , ... , ϕ K ( t ) ; μ 1 ( t ) , ... , μ K ( t ) ; Σ 1 ( t ) , ... , Σ K ( t ) ) \theta^{(t)}=(\phi_1^{(t)},\dots,\phi_K^{(t)};\mu_1^{(t)},\dots,\mu_K^{(t)};\Sigma_1^{(t)},\dots,\Sigma_K^{(t)}) θ(t)=(ϕ1(t),...,ϕK(t);μ1(t),...,μK(t);Σ1(t),...,ΣK(t)),计算:

γ n k ( t ) = ϕ k ( t ) ⋅ N ( X n ∣ μ k ( t ) , Σ k ( t ) ) ∑ j = 1 K ϕ j ( t ) ⋅ N ( X n ∣ μ j ( t ) , Σ j ( t ) ) \gamma_{nk}^{(t)}=\frac{\phi_k^{(t)}\cdot\mathcal{N}(X_n|\mu_k^{(t)},\Sigma_k^{(t)})}{\sum_{j=1}^K\phi_j^{(t)}\cdot\mathcal{N}(X_n|\mu_j^{(t)},\Sigma_j^{(t)})} γnk(t)=∑j=1Kϕj(t)⋅N(Xn∣μj(t),Σj(t))ϕk(t)⋅N(Xn∣μk(t),Σk(t))

(分子:样本 X n X_n Xn来自第 k k k分量的先验概率 × 似然;分母:样本 X n X_n Xn的总概率(全概率公式))

(3)M 步(更新参数 θ ( t + 1 ) \theta^{(t+1)} θ(t+1))

通过最大化 Q 函数,得到参数更新公式:

  1. 混合系数 ϕ k ( t + 1 ) \phi_k^{(t+1)} ϕk(t+1):第 k k k分量的 "有效样本数" 占总样本数的比例

    ϕ k ( t + 1 ) = 1 N ∑ n = 1 N γ n k ( t ) \phi_k^{(t+1)}=\frac{1}{N}\sum_{n=1}^N\gamma_{nk}^{(t)} ϕk(t+1)=N1∑n=1Nγnk(t)

  2. 均值 μ k ( t + 1 ) \mu_k^{(t+1)} μk(t+1):样本的加权平均(权重为 γ n k ( t ) \gamma_{nk}^{(t)} γnk(t))

    μ k ( t + 1 ) = ∑ n = 1 N γ n k ( t ) X n ∑ n = 1 N γ n k ( t ) \mu_k^{(t+1)}=\frac{\sum_{n=1}^N\gamma_{nk}^{(t)}X_n}{\sum_{n=1}^N\gamma_{nk}^{(t)}} μk(t+1)=∑n=1Nγnk(t)∑n=1Nγnk(t)Xn

  3. 协方差 Σ k ( t + 1 ) \Sigma_k^{(t+1)} Σk(t+1):样本偏差的加权平均(权重为 γ n k ( t ) \gamma_{nk}^{(t)} γnk(t))

    Σ k ( t + 1 ) = ∑ n = 1 N γ n k ( t ) ( X n − μ k ( t + 1 ) ) ( X n − μ k ( t + 1 ) ) T ∑ n = 1 N γ n k ( t ) \Sigma_k^{(t+1)}=\frac{\sum_{n=1}^N\gamma_{nk}^{(t)}(X_n-\mu_k^{(t+1)})(X_n-\mu_k^{(t+1)})^T}{\sum_{n=1}^N\gamma_{nk}^{(t)}} Σk(t+1)=∑n=1Nγnk(t)∑n=1Nγnk(t)(Xn−μk(t+1))(Xn−μk(t+1))T

相关推荐
workflower7 小时前
单元测试-例子
java·开发语言·算法·django·个人开发·结对编程
MicroTech20259 小时前
微算法科技(MLGO)研发突破性低复杂度CFG算法,成功缓解边缘分裂学习中的掉队者问题
科技·学习·算法
墨染点香10 小时前
LeetCode 刷题【126. 单词接龙 II】
算法·leetcode·职场和发展
aloha_78910 小时前
力扣hot100做题整理91-100
数据结构·算法·leetcode
Tiny番茄10 小时前
31.下一个排列
数据结构·python·算法·leetcode
挂科是不可能出现的10 小时前
最长连续序列
数据结构·c++·算法
前端小L11 小时前
动态规划的“数学之魂”:从DP推演到质因数分解——巧解「只有两个键的键盘」
算法·动态规划
RTC老炮12 小时前
webrtc弱网-ReceiveSideCongestionController类源码分析及算法原理
网络·算法·webrtc
21号 112 小时前
9.Redis 集群(重在理解)
数据库·redis·算法