当前位置: 首页 > news >正文

强化学习算法分类与介绍(含权重更新公式)

强化学习算法种类丰富,可按学习目标(基于价值 / 基于策略 / 演员 - 评论家)、数据使用方式(在线 / 离线)、是否依赖环境模型(无模型 / 有模型)等维度分类。以下按核心逻辑梳理常见算法,并补充各算法的权重更新公式:

一、基于价值的算法(Value-Based)

目标是学习 “状态 - 动作价值函数”(Q 函数),通过 Q 值指导动作选择(如选 Q 值最大的动作)。

  1. Q-Learning(表格型,1989):

    经典无模型离线(Off-policy)算法,用贝尔曼方程更新 Q 表格:Q(s,a)←Q(s,a)+α[r+γmax⁡a′Q(s′,a′)−Q(s,a)]Q(s,a) \leftarrow Q(s,a) + \alpha [r + \gamma \max_{a'} Q(s',a') - Q(s,a)]Q(s,a)Q(s,a)+α[r+γmaxaQ(s,a)Q(s,a)]

    其中,α\alphaα为学习率,γ\gammaγ为折扣因子,rrr为即时奖励,s′s's为下一状态。

    适合状态 / 动作空间小的场景(如网格世界)。

  2. SARSA(表格型,1994):

    在线(On-policy)算法,更新 Q 值时依赖实际选择的下一个动作(而非最大 Q 值):Q(s,a)←Q(s,a)+α[r+γQ(s′,a′)−Q(s,a)]Q(s,a) \leftarrow Q(s,a) + \alpha [r + \gamma Q(s',a') - Q(s,a)]Q(s,a)Q(s,a)+α[r+γQ(s,a)Q(s,a)]

    其中,a′a'a为实际执行的下一动作,更注重 “当前策略的一致性”,适合需要探索安全性的场景。

  3. DQN(Deep Q-Network,2013)

    深度强化学习里程碑,用神经网络近似 Q 函数(深度 Q 网络),解决高维状态空间问题(如 Atari 游戏)。

    核心改进:经验回放(Experience Replay,打破样本相关性)、目标网络(Target Network,稳定训练)。

    损失函数(更新 Q 网络权重θ\thetaθ):L(θ)=E[(r+γmax⁡a′Qθ−(s′,a′)−Qθ(s,a))2]L(\theta) = \mathbb{E}[(r + \gamma \max_{a'} Q_{\theta^-}(s',a') - Q_\theta(s,a))^2]L(θ)=E[(r+γmaxaQθ(s,a)Qθ(s,a))2]

    权重更新:θ←θ−β∇θL(θ)\theta \leftarrow \theta - \beta \nabla_\theta L(\theta)θθβθL(θ)β\betaβ为 Q 网络学习率,θ−\theta^-θ为目标网络权重,定期从θ\thetaθ复制)。

  4. Double DQN(DDQN,2015)

    解决 DQN 的 “过度估计 Q 值” 问题:用当前网络选动作,目标网络算 Q 值,避免单一网络既选又评的偏差。

    损失函数:L(θ)=E[(r+γQθ−(s′,arg⁡max⁡a′Qθ(s′,a′))−Qθ(s,a))2]L(\theta) = \mathbb{E}[(r + \gamma Q_{\theta^-}(s', \arg\max_{a'} Q_\theta(s',a')) - Q_\theta(s,a))^2]L(θ)=E[(r+γQθ(s,argmaxaQθ(s,a))Qθ(s,a))2]

    权重更新同 DQN。

  5. Dueling DQN(2015)

    将 Q 网络拆分为 “状态价值 V (s)” 和 “优势函数 A (s,a)”,输出 Q(s,a)=V(s)+A(s,a)−1∣A∣∑aA(s,a)Q(s,a) = V(s) + A(s,a) - \frac{1}{|A|}\sum_a A(s,a)Q(s,a)=V(s)+A(s,a)A1aA(s,a)(减去均值避免歧义)。

    损失函数同 DQN(用拆分后的 Q 值计算),权重更新:θ←θ−β∇θL(θ)\theta \leftarrow \theta - \beta \nabla_\theta L(\theta)θθβθL(θ)

  6. Prioritized Experience Replay(PER,2016)

    改进 DQN 的经验回放,给 “误差大的样本” 更高采样优先级(如 TD 误差δ=r+γmax⁡Q(s′,a′)−Q(s,a)\delta = r + \gamma \max Q(s',a') - Q(s,a)δ=r+γmaxQ(s,a)Q(s,a))。

    损失函数:L(θ)=∑iwi(ri+γmax⁡a′Qθ−(si′,a′)−Qθ(si,ai))2L(\theta) = \sum_i w_i (r_i + \gamma \max_{a'} Q_{\theta^-}(s'_i,a') - Q_\theta(s_i,a_i))^2L(θ)=iwi(ri+γmaxaQθ(si,a)Qθ(si,ai))2

    其中,wi=(1N⋅1P(i))ηw_i = (\frac{1}{N} \cdot \frac{1}{P(i)})^\etawi=(N1P(i)1)η为优先级权重(P(i)P(i)P(i)为样本iii的优先级,η\etaη为调整因子),权重更新同 DQN。

  7. Rainbow(2017)

    集成 DQN 的 6 种改进(Double DQN、Dueling DQN、PER、多步回报、C51、噪声网络),损失函数为集成后的综合损失,权重更新结合各组件优化逻辑。

  8. 分布型价值算法

  • C51(Categorical DQN,2017):学习 Q 值的概率分布p(z∣s,a)p(z|s,a)p(zs,a)zzz为离散回报值),目标分布为p′(z)=∑r+γz′=zp(r,s′∣s,a)pθ(z′∣s′,a′)p'(z) = \sum_{r + \gamma z' = z} p(r,s'|s,a) p_\theta(z'|s',a')p(z)=r+γz=zp(r,ss,a)pθ(zs,a)

    损失函数(交叉熵):L(θ)=−E[∑zp′(z)log⁡pθ(z∣s,a)]L(\theta) = -\mathbb{E}[\sum_z p'(z) \log p_\theta(z|s,a)]L(θ)=E[zp(z)logpθ(zs,a)],权重更新:θ←θ−β∇θL(θ)\theta \leftarrow \theta - \beta \nabla_\theta L(\theta)θθβθL(θ)

  • QR-DQN(Quantile Regression DQN,2017):用分位数回归估计 Q 值分布,损失函数为分位数 Huber 损失,权重更新同 C51。

二、基于策略的算法(Policy-Based)

直接学习策略函数 π(a∣s;θ)\pi(a|s;\theta)π(as;θ)(动作的概率分布),通过优化策略梯度最大化累积回报,适合连续动作空间。

  1. REINFORCE(1992)

    蒙特卡洛策略梯度算法,用完整轨迹的回报作为梯度更新权重,公式:∇θJ(θ)≈∑t=0T∇θlog⁡πθ(at∣st)⋅Gt\nabla_\theta J(\theta) \approx \sum_{t=0}^T \nabla_\theta \log \pi_\theta(a_t|s_t) \cdot G_tθJ(θ)t=0Tθlogπθ(atst)Gt

    其中,Gt=∑k=tTγk−trkG_t = \sum_{k=t}^T \gamma^{k-t} r_kGt=k=tTγktrk为从时刻ttt开始的累积回报。

    权重更新:θ←θ+α∇θJ(θ)\theta \leftarrow \theta + \alpha \nabla_\theta J(\theta)θθ+αθJ(θ)α\alphaα为策略学习率)。

    缺点:方差大(依赖完整轨迹)。

  2. Vanilla Policy Gradient(VPG,基础策略梯度)

    REINFORCE 的简化版,用累积回报直接更新策略,是多数策略算法的基础。

    梯度公式同 REINFORCE,权重更新:θ←θ+α∇θJ(θ)\theta \leftarrow \theta + \alpha \nabla_\theta J(\theta)θθ+αθJ(θ)

  3. TRPO(Trust Region Policy Optimization,2015)

    解决策略梯度 “更新步长难控制” 的问题,通过 “信任域” 限制策略更新幅度,保证性能单调提升。

    优化目标:max⁡θE[πθ(a∣s)πθold(a∣s)Aθold(s,a)]\max_\theta \mathbb{E}[ \frac{\pi_\theta(a|s)}{\pi_{\theta_{old}}(a|s)} A_{\theta_{old}}(s,a) ]maxθE[πθold(as)πθ(as)Aθold(s,a)],约束E[KL(πθold(⋅∣s),πθ(⋅∣s))]≤δ\mathbb{E}[ \text{KL}(\pi_{\theta_{old}}(\cdot|s), \pi_\theta(\cdot|s)) ] \leq \deltaE[KL(πθold(s),πθ(s))]δδ\deltaδ为信任域半径)。

    权重更新:通过共轭梯度法求解带约束优化问题,更新θ\thetaθ

  4. PPO(Proximal Policy Optimization,2017)

    TRPO 的简化高效版,用 “剪辑目标函数”(Clip Objective)限制新旧策略差异,训练稳定、实现简单。

    目标函数:LCLIP(θ)=E[min⁡(rt(θ)At,clip(rt(θ),1−ϵ,1+ϵ)At)]L_{CLIP}(\theta) = \mathbb{E}[ \min(r_t(\theta) A_t, \text{clip}(r_t(\theta), 1-\epsilon, 1+\epsilon) A_t) ]LCLIP(θ)=E[min(rt(θ)At,clip(rt(θ),1ϵ,1+ϵ)At)]

    其中,rt(θ)=πθ(at∣st)πθold(at∣st)r_t(\theta) = \frac{\pi_\theta(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)}rt(θ)=πθold(atst)πθ(atst)为策略比率,ϵ\epsilonϵ为剪辑系数(通常取 0.2),AtA_tAt为优势函数。

    权重更新:θ←θ+α∇θLCLIP(θ)\theta \leftarrow \theta + \alpha \nabla_\theta L_{CLIP}(\theta)θθ+αθLCLIP(θ)(多轮小批量更新)。

  5. DPG(Deterministic Policy Gradient,2014)

    针对连续动作空间,学习确定性策略 a=μ(s;θ)a = \mu(s;\theta)a=μ(s;θ)(而非概率分布),梯度计算更高效。

    策略梯度:∇θJ(θ)=E[∇θμ(s;θ)∇aQ(s,a;ϕ)∣a=μ(s;θ)]\nabla_\theta J(\theta) = \mathbb{E}[ \nabla_\theta \mu(s;\theta) \nabla_a Q(s,a;\phi) |_{a=\mu(s;\theta)} ]θJ(θ)=E[θμ(s;θ)aQ(s,a;ϕ)a=μ(s;θ)]ϕ\phiϕ为 Q 函数权重)。

    权重更新:θ←θ+α∇θJ(θ)\theta \leftarrow \theta + \alpha \nabla_\theta J(\theta)θθ+αθJ(θ)

三、演员 - 评论家算法(Actor-Critic,AC)

结合 “策略(Actor)” 和 “价值函数(Critic)”:Actor 负责输出动作,Critic 评估动作好坏(用 TD 误差替代蒙特卡洛回报),降低方差,提升效率。

  1. 基础 AC
  • Critic(V 函数,权重ϕ\phiϕ)更新:L(ϕ)=E[(Gt−Vϕ(st))2]L(\phi) = \mathbb{E}[(G_t - V_\phi(s_t))^2]L(ϕ)=E[(GtVϕ(st))2]ϕ←ϕ−β∇ϕL(ϕ)\phi \leftarrow \phi - \beta \nabla_\phi L(\phi)ϕϕβϕL(ϕ)

  • Actor(策略π\piπ,权重θ\thetaθ)更新:∇θJ(θ)=E[∇θlog⁡πθ(at∣st)(Gt−Vϕ(st))]\nabla_\theta J(\theta) = \mathbb{E}[ \nabla_\theta \log \pi_\theta(a_t|s_t) (G_t - V_\phi(s_t)) ]θJ(θ)=E[θlogπθ(atst)(GtVϕ(st))]θ←θ+α∇θJ(θ)\theta \leftarrow \theta + \alpha \nabla_\theta J(\theta)θθ+αθJ(θ)

  1. A2C(Advantage Actor-Critic,2016)

    用 “优势函数 A(s,a)=Q(s,a)−V(s)A(s,a) = Q(s,a) - V(s)A(s,a)=Q(s,a)V(s)” 替代 Critic 的原始回报,进一步降低方差。

  • Critic(V 函数)更新:同基础 AC,ϕ←ϕ−β∇ϕE[(r+γVϕ(s′)−Vϕ(s))2]\phi \leftarrow \phi - \beta \nabla_\phi \mathbb{E}[(r + \gamma V_\phi(s') - V_\phi(s))^2]ϕϕβϕE[(r+γVϕ(s)Vϕ(s))2]

  • Actor 更新:∇θJ(θ)=E[∇θlog⁡πθ(a∣s)A(s,a)]\nabla_\theta J(\theta) = \mathbb{E}[ \nabla_\theta \log \pi_\theta(a|s) A(s,a) ]θJ(θ)=E[θlogπθ(as)A(s,a)]θ←θ+α∇θJ(θ)\theta \leftarrow \theta + \alpha \nabla_\theta J(\theta)θθ+αθJ(θ)

  1. A3C(Asynchronous Advantage Actor-Critic,2016)

    A2C 的异步版本,多个线程并行探索,本地更新后同步到全局参数,更新公式同 A2C(异步执行)。

  2. DDPG(Deep Deterministic Policy Gradient,2015)

    结合 DQN 和 DPG,用于连续动作空间:

  • Critic(Q 网络,权重ϕ\phiϕ)更新:L(ϕ)=E[(r+γQϕ−(s′,μθ−(s′))−Qϕ(s,a))2]L(\phi) = \mathbb{E}[(r + \gamma Q_{\phi^-}(s', \mu_{\theta^-}(s')) - Q_\phi(s,a))^2]L(ϕ)=E[(r+γQϕ(s,μθ(s))Qϕ(s,a))2]ϕ←ϕ−β∇ϕL(ϕ)\phi \leftarrow \phi - \beta \nabla_\phi L(\phi)ϕϕβϕL(ϕ)ϕ−\phi^-ϕθ−\theta^-θ为目标网络权重)。

  • Actor(策略μ\muμ,权重θ\thetaθ)更新:∇θJ(θ)=E[∇aQϕ(s,a)∣a=μθ(s)∇θμθ(s)]\nabla_\theta J(\theta) = \mathbb{E}[ \nabla_a Q_\phi(s,a) |_{a=\mu_\theta(s)} \nabla_\theta \mu_\theta(s) ]θJ(θ)=E[aQϕ(s,a)a=μθ(s)θμθ(s)]θ←θ+α∇θJ(θ)\theta \leftarrow \theta + \alpha \nabla_\theta J(\theta)θθ+αθJ(θ)

  1. TD3(Twin Delayed DDPG,2018)

    改进 DDPG 的 “过度估计” 问题,双 Critic 网络取最小值:

  • Critic 更新:L(ϕi)=E[(r+γmin⁡j=1,2Qϕj−(s′,μθ−(s′))−Qϕi(s,a))2]L(\phi_i) = \mathbb{E}[(r + \gamma \min_{j=1,2} Q_{\phi_j^-}(s', \mu_{\theta^-}(s')) - Q_{\phi_i}(s,a))^2]L(ϕi)=E[(r+γminj=1,2Qϕj(s,μθ(s))Qϕi(s,a))2]ϕi←ϕi−β∇ϕiL(ϕi)\phi_i \leftarrow \phi_i - \beta \nabla_{\phi_i} L(\phi_i)ϕiϕiβϕiL(ϕi)i=1,2i=1,2i=1,2)。

  • Actor 延迟更新(每 2 次 Critic 更新后):同 DDPG 的 Actor 更新。

  1. SAC(Soft Actor-Critic,2018)

    最大熵强化学习代表,目标是 “最大化累积回报 + 策略熵”:

  • Critic(双 Q 网络)更新:L(ϕi)=E[(r+γ(min⁡j=1,2Qϕj−(s′,a′)−αlog⁡πθ−(a′∣s′))−Qϕi(s,a))2]L(\phi_i) = \mathbb{E}[ (r + \gamma (\min_{j=1,2} Q_{\phi_j^-}(s',a') - \alpha \log \pi_{\theta^-}(a'|s')) - Q_{\phi_i}(s,a))^2 ]L(ϕi)=E[(r+γ(minj=1,2Qϕj(s,a)αlogπθ(as))Qϕi(s,a))2]ϕi←ϕi−β∇ϕiL(ϕi)\phi_i \leftarrow \phi_i - \beta \nabla_{\phi_i} L(\phi_i)ϕiϕiβϕiL(ϕi)

  • Actor 更新:∇θJ(θ)=E[αlog⁡πθ(a∣s)−Qϕ1(s,a)]\nabla_\theta J(\theta) = \mathbb{E}[ \alpha \log \pi_\theta(a|s) - Q_{\phi_1}(s,a) ]θJ(θ)=E[αlogπθ(as)Qϕ1(s,a)]α\alphaα为温度参数),θ←θ+α∇θJ(θ)\theta \leftarrow \theta + \alpha \nabla_\theta J(\theta)θθ+αθJ(θ)

四、基于模型的强化学习(Model-Based)

先学习环境模型(状态转移概率 p(s′∣s,a)p(s'|s,a)p(ss,a) 和奖励函数 r(s,a)r(s,a)r(s,a)),再用模型指导策略学习,数据效率更高。

  1. Dyna-Q(1991)
  • 模型参数更新:用真实数据学习p^(s′∣s,a)\hat{p}(s'|s,a)p^(ss,a)r^(s,a)\hat{r}(s,a)r^(s,a)(如最小二乘拟合)。

  • Q 值更新:结合真实经验(同 Q-Learning)和模型生成的虚拟经验(s′∼p^(⋅∣s,a)s' \sim \hat{p}(\cdot|s,a)sp^(s,a)r=r^(s,a)r = \hat{r}(s,a)r=r^(s,a))。

  1. MBPO(Model-Based Policy Optimization,2019)
  • 模型更新:用神经网络拟合p(s′∣s,a)p(s'|s,a)p(ss,a),损失为预测误差L=E[∥s′−p^(s′∣s,a)∥2]L = \mathbb{E}[ \|s' - \hat{p}(s'|s,a)\|^2 ]L=E[sp^(ss,a)2]

  • 策略更新:用模型生成虚拟轨迹,通过 PPO 优化策略(同 PPO 公式)。

五、离线强化学习(Offine RL)

仅利用固定数据集训练策略,解决实际场景中 “交互成本高 / 危险” 的问题。

  1. BCQ(Batch-Constrained Q-Learning,2018)
  • Q 网络更新:L(ϕ)=E(s,a,r,s′)∼D[(r+γmax⁡a′∈Aϵ(s′)Qϕ−(s′,a′)−Qϕ(s,a))2]L(\phi) = \mathbb{E}_{(s,a,r,s') \sim D}[ (r + \gamma \max_{a' \in \mathcal{A}_\epsilon(s')} Q_{\phi^-}(s',a') - Q_\phi(s,a))^2 ]L(ϕ)=E(s,a,r,s)D[(r+γmaxaAϵ(s)Qϕ(s,a)Qϕ(s,a))2]Aϵ(s′)\mathcal{A}_\epsilon(s')Aϵ(s)为数据集动作附近的安全动作集)。

  • 权重更新:ϕ←ϕ−β∇ϕL(ϕ)\phi \leftarrow \phi - \beta \nabla_\phi L(\phi)ϕϕβϕL(ϕ)

  1. CQL(Conservative Q-Learning,2020)
  • Q 网络更新:L(ϕ)=DQNæY¨a˚¤±+λE[log⁡∑aexp⁡(Qϕ(s,a))−Qϕ(s,a)]L(\phi) = \text{DQN损失} + \lambda \mathbb{E}[ \log \sum_a \exp(Q_\phi(s,a)) - Q_\phi(s,a) ]L(ϕ)=DQNæY¨a˚¤±+λE[logaexp(Qϕ(s,a))Qϕ(s,a)](第二项为保守项,压低未见过的动作 Q 值),ϕ←ϕ−β∇ϕL(ϕ)\phi \leftarrow \phi - \beta \nabla_\phi L(\phi)ϕϕβϕL(ϕ)

六、多智能体强化学习(MARL)

多个智能体在同一环境中交互,需考虑智能体间的协作 / 竞争关系。

  1. MADDPG(Multi-Agent DDPG,2017)
  • 智能体iii的 Actor 更新:同 DDPG,梯度依赖全局 Critic 对联合动作的评估。

  • 全局 Critic 更新:L(ϕ)=E[(r+γQϕ−(s′,a1′,...,aN′)−Qϕ(s,a1,...,aN))2]L(\phi) = \mathbb{E}[ (r + \gamma Q_{\phi^-}(s',a'_1,...,a'_N) - Q_\phi(s,a_1,...,a_N))^2 ]L(ϕ)=E[(r+γQϕ(s,a1,...,aN)Qϕ(s,a1,...,aN))2]ϕ←ϕ−β∇ϕL(ϕ)\phi \leftarrow \phi - \beta \nabla_\phi L(\phi)ϕϕβϕL(ϕ)

  1. QMIX(2018)

    全局 Q 值Qtotal(s,a1,...,aN)=MIX(q1(s,a1),...,qN(s,aN);ω)Q_{total}(s,a_1,...,a_N) = \text{MIX}(q_1(s,a_1),...,q_N(s,a_N); \omega)Qtotal(s,a1,...,aN)=MIX(q1(s,a1),...,qN(s,aN);ω)MIX\text{MIX}MIX为混合网络,ω\omegaω为权重)。

  • 混合网络更新:L(ω)=E[(r+γmax⁡a′Qtotal(s′,a′)−Qtotal(s,a))2]L(\omega) = \mathbb{E}[ (r + \gamma \max_{a'} Q_{total}(s',a') - Q_{total}(s,a))^2 ]L(ω)=E[(r+γmaxaQtotal(s,a)Qtotal(s,a))2]ω←ω−β∇ωL(ω)\omega \leftarrow \omega - \beta \nabla_\omega L(\omega)ωωβωL(ω)

其他重要算法

  • N-step TD:用 N 步回报更新,如 V 函数更新:V(st)←V(st)+α[Gt:t+n−V(st)]V(s_t) \leftarrow V(s_t) + \alpha [G_{t:t+n} - V(s_t)]V(st)V(st)+α[Gt:t+nV(st)],其中Gt:t+n=∑k=tt+n−1γk−trk+γnV(st+n)G_{t:t+n} = \sum_{k=t}^{t+n-1} \gamma^{k-t} r_k + \gamma^n V(s_{t+n})Gt:t+n=k=tt+n1γktrk+γnV(st+n)

  • H-DQN(分层):高层策略选子目标,低层策略更新同 DQN,高层策略梯度依赖低层目标达成的回报。

这些算法的权重更新公式体现了各自的优化逻辑,从简单的表格更新到深度网络的梯度下降,从单步更新到多步规划,共同推动强化学习在复杂场景中的应用。

(注:文档部分内容可能由 AI 生成)

http://www.dtcms.com/a/342230.html

相关文章:

  • 从vue2到vue3
  • VASPKIT模版INCAR笔记
  • K8s快速上手-微服务篇篇
  • 【ZeroNews】OpenWrt路由器小存储开启内网穿透
  • 2025年8月新算法—云漂移优化算法(Cloud Drift Optimization Algorithm, CDO)
  • C++ this 指针
  • 2025-08-21 Python进阶2——数据结构
  • Rancher部署的K8S集群服务节点上执行 kubectl 命令
  • JavaCV + Spring 实现高效 RTSP 视频流帧缓存与管理
  • MybatisPlusAutoConfiguration源码阅读
  • 稀土元素带来农业科技革命
  • Qt5 数据库编程详解
  • “Data + AI Agent”技术架构解析:衡石科技如何重塑数据智能演进路径?
  • YggJS RToast(科技风全局消息通知库) 使用教程 v0.1.0(详细教学)
  • RoPE, 2D RoPE, 3D RoPE和复数
  • 安卓app、微信小程序等访问多个api时等待提示调用与关闭问题
  • 为什么会“偶发 539/500 与建连失败”
  • 如何通过传感器选型优化,为设备寿命 “续航”?
  • 微服务介绍及Nacos中间件
  • java⽇志体系
  • 桌面挂件不能承受之重——GIF
  • Windows 系统中,添加打印机主要有以下几种方式
  • 聚铭安全管家平台2.0实战解码 | 安服篇(四):重构威胁追溯体系
  • 新手向:Python开发简易网络服务器
  • 解决springai 项目中引入多个chatModel存在冲突问题
  • 服务器间大文件迁移
  • SparkSQL、FlinkSQL与普通sql比较
  • Git项目报错git@gitlab.com: Permission denied (publickey).【已解决】
  • Jenkins+GitLab在CentOS7上的自动化部署方案
  • iOS混淆工具实战 金融支付类 App 的安全防护与合规落地