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

拟定一个物流网站的建设方案兰州市一地发布提醒

拟定一个物流网站的建设方案,兰州市一地发布提醒,源码管理 网站,如何做网络销售产品目录 一、引言二、PPO 算法原理2.1 策略梯度2.2 PPO 核心思想 三、PPO 算法公式推导3.1 重要性采样3.2 优势函数估计 四、PPO 算法代码实现#xff08;以 Python 和 PyTorch 为例#xff09;五、PPO 算法案例应用5.1 机器人控制5.2 自动驾驶 六、总结 一、引言 强化学习作为… 目录 一、引言二、PPO 算法原理2.1 策略梯度2.2 PPO 核心思想 三、PPO 算法公式推导3.1 重要性采样3.2 优势函数估计 四、PPO 算法代码实现以 Python 和 PyTorch 为例五、PPO 算法案例应用5.1 机器人控制5.2 自动驾驶 六、总结 一、引言 强化学习作为机器学习中的一个重要领域旨在让智能体通过与环境交互学习到最优的行为策略以最大化长期累积奖励。近端策略优化Proximal Policy OptimizationPPO算法是强化学习中的明星算法它在诸多领域都取得了令人瞩目的成果。本文将深入探讨 PPO 算法从原理到代码实现再到实际案例应用力求让读者全面掌握这一强大的算法。 二、PPO 算法原理 2.1 策略梯度 在强化学习里策略梯度是一类关键的优化方法你可以把它想象成是智能体在学习如何行动时的 “指南针”。假设策略由参数 θ \theta θ 表示这就好比是智能体的 “行动指南” 参数智能体在状态 s s s 下采取行动 a a a 的概率为 π θ ( a ∣ s ) \pi_{\theta}(a|s) πθ​(a∣s) 即根据当前的 “行动指南”在这个状态下选择这个行动的可能性。 策略梯度的目标是最大化累计奖励的期望用公式表示就是 J ( θ ) E s 0 , a 0 , ⋯ [ ∑ t 0 T γ t r ( s t , a t ) ] J(\theta)\mathbb{E}_{s_0,a_0,\cdots}\left[\sum_{t 0}^{T}\gamma^{t}r(s_t,a_t)\right] J(θ)Es0​,a0​,⋯​[t0∑T​γtr(st​,at​)] 这里的 γ \gamma γ 是折扣因子它的作用是让智能体更关注近期的奖励因为越往后的奖励可能越不确定就像我们在做决策时往往会更看重眼前比较确定的好处。 r ( s t , a t ) r(s_t,a_t) r(st​,at​) 是在状态 s t s_t st​ 下采取行动 a t a_t at​ 获得的奖励比如玩游戏时在某个游戏场景下做出某个操作得到的分数。 根据策略梯度定理策略梯度可以表示为 ∇ θ J ( θ ) E s , a [ ∇ θ log ⁡ π θ ( a ∣ s ) A ( s , a ) ] \nabla_{\theta}J(\theta)\mathbb{E}_{s,a}\left[\nabla_{\theta}\log\pi_{\theta}(a|s)A(s,a)\right] ∇θ​J(θ)Es,a​[∇θ​logπθ​(a∣s)A(s,a)] 这里的 A ( s , a ) A(s,a) A(s,a) 是优势函数它表示采取行动 a a a 相对于平均策略的优势。简单来说就是判断这个行动比一般的行动好在哪里好多少帮助智能体决定是否要多采取这个行动。 2.2 PPO 核心思想 PPO 算法的核心是在策略更新时限制策略的变化幅度避免更新过大导致策略性能急剧下降。这就好像我们在调整自行车的变速器如果一下子调得太猛可能车子就没法正常骑了。 它通过引入一个截断的目标函数来实现这一点 L C L I P ( θ ) E t [ min ⁡ ( r t ( θ ) A ^ t , clip ( r t ( θ ) , 1 − ϵ , 1 ϵ ) A ^ t ) ] L^{CLIP}(\theta)\mathbb{E}_{t}\left[\min\left(r_t(\theta)\hat{A}_t, \text{clip}(r_t(\theta), 1 - \epsilon, 1\epsilon)\hat{A}_t\right)\right] LCLIP(θ)Et​[min(rt​(θ)A^t​,clip(rt​(θ),1−ϵ,1ϵ)A^t​)] 其中 r t ( θ ) π θ ( a t ∣ s t ) π θ o l d ( a t ∣ s t ) r_t(\theta)\frac{\pi_{\theta}(a_t|s_t)}{\pi_{\theta_{old}}(a_t|s_t)} rt​(θ)πθold​​(at​∣st​)πθ​(at​∣st​)​ 是重要性采样比它反映了新策略和旧策略对于同一个状态 - 行动对的概率差异。 A ^ t \hat{A}_t A^t​ 是估计的优势函数 ϵ \epsilon ϵ 是截断参数通常设置为一个较小的值如 0.2 。这个截断参数就像是给策略更新幅度设定了一个 “安全范围”在这个范围内更新策略能保证策略既有所改进又不会变得太糟糕。 三、PPO 算法公式推导 3.1 重要性采样 重要性采样是 PPO 算法中的关键技术之一。由于直接从当前策略采样数据效率较低我们可以从旧策略 π θ o l d \pi_{\theta_{old}} πθold​​ 采样数据然后通过重要性采样比 r t ( θ ) r_t(\theta) rt​(θ) 来校正数据的分布。 E s ∼ π θ [ f ( s ) ] ≈ 1 N ∑ i 1 N π θ ( s i ) π θ o l d ( s i ) f ( s i ) \mathbb{E}_{s\sim\pi_{\theta}}[f(s)]\approx\frac{1}{N}\sum_{i 1}^{N}\frac{\pi_{\theta}(s_i)}{\pi_{\theta_{old}}(s_i)}f(s_i) Es∼πθ​​[f(s)]≈N1​i1∑N​πθold​​(si​)πθ​(si​)​f(si​) 比如我们要了解一群鸟的飞行习惯直接去观察所有鸟的飞行轨迹很困难那我们可以先观察一部分容易观察到的鸟旧策略采样然后根据这些鸟和所有鸟的一些特征差异重要性采样比来推测整个鸟群的飞行习惯。 3.2 优势函数估计 优势函数 A ( s , a ) A(s,a) A(s,a) 可以通过多种方法估计常用的是广义优势估计Generalized Advantage EstimationGAE A ^ t ∑ k 0 ∞ ( γ λ ) k δ t k \hat{A}_t\sum_{k 0}^{\infty}(\gamma\lambda)^k\delta_{t k} A^t​k0∑∞​(γλ)kδtk​ 其中 δ 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(st1​)−V(st​) 是 TD 误差 λ \lambda λ 是 GAE 参数通常在 0 到 1 之间。优势函数的估计就像是给智能体的行动打分告诉它每个行动到底有多好以便它做出更好的决策。 四、PPO 算法代码实现以 Python 和 PyTorch 为例 import torchimport torch.nn as nnimport torch.optim as optimimport gymclass Policy(nn.Module):def __init__(self, state_dim, action_dim):super(Policy, self).__init__()self.fc1 nn.Linear(state_dim, 64)self.fc2 nn.Linear(64, 64)self.mu_head nn.Linear(64, action_dim)self.log_std_head nn.Linear(64, action_dim)def forward(self, x):x torch.relu(self.fc1(x))x torch.relu(self.fc2(x))mu torch.tanh(self.mu_head(x))log_std self.log_std_head(x)std torch.exp(log_std)dist torch.distributions.Normal(mu, std)return distclass Value(nn.Module):def __init__(self, state_dim):super(Value, self).__init__()self.fc1 nn.Linear(state_dim, 64)self.fc2 nn.Linear(64, 64)self.v_head nn.Linear(64, 1)def forward(self, x):x torch.relu(self.fc1(x))x torch.relu(self.fc2(x))v self.v_head(x)return vdef ppo_update(policy, value, optimizer_policy, optimizer_value, states, actions, rewards, dones, gamma0.99,clip_epsilon0.2, lambda_gae0.95):states torch.FloatTensor(states)actions torch.FloatTensor(actions)rewards torch.FloatTensor(rewards)dones torch.FloatTensor(dones)values value(states).squeeze(1)returns []gae 0for i in reversed(range(len(rewards))):if i len(rewards) - 1:next_value 0else:next_value values[i 1]delta rewards[i] gamma * next_value * (1 - dones[i]) - values[i]gae delta gamma * lambda_gae * (1 - dones[i]) * gaereturns.insert(0, gae values[i])returns torch.FloatTensor(returns)old_dist policy(states)old_log_probs old_dist.log_prob(actions).sum(-1)for _ in range(3):dist policy(states)log_probs dist.log_prob(actions).sum(-1)ratios torch.exp(log_probs - old_log_probs)advantages returns - values.detach()surr1 ratios * advantagessurr2 torch.clamp(ratios, 1 - clip_epsilon, 1 clip_epsilon) * advantagespolicy_loss -torch.min(surr1, surr2).mean()optimizer_policy.zero_grad()policy_loss.backward()optimizer_policy.step()value_loss nn.MSELoss()(value(states).squeeze(1), returns)optimizer_value.zero_grad()value_loss.backward()optimizer_value.step()def train_ppo(env_name, num_episodes1000):env gym.make(env_name)state_dim env.observation_space.shape[0]action_dim env.action_space.shape[0]policy Policy(state_dim, action_dim)value Value(state_dim)optimizer_policy optim.Adam(policy.parameters(), lr3e-4)optimizer_value optim.Adam(value.parameters(), lr3e-4)for episode in range(num_episodes):states, actions, rewards, dones [], [], [], []state env.reset()done Falsewhile not done:state torch.FloatTensor(state)dist policy(state)action dist.sample()next_state, reward, done, _ env.step(action.detach().numpy())states.append(state)actions.append(action)rewards.append(reward)dones.append(done)state next_stateppo_update(policy, value, optimizer_policy, optimizer_value, states, actions, rewards, dones)if episode % 100 0:total_reward 0state env.reset()done Falsewhile not done:state torch.FloatTensor(state)dist policy(state)action dist.meannext_state, reward, done, _ env.step(action.detach().numpy())total_reward rewardstate next_stateprint(fEpisode {episode}, Average Reward: {total_reward})if __name__ __main__:train_ppo(Pendulum-v1)五、PPO 算法案例应用 5.1 机器人控制 在机器人控制领域PPO 算法可以用于训练机器人的运动策略。例如训练一个双足机器人行走机器人的状态可以包括关节角度、速度等信息行动则是关节的控制指令。通过 PPO 算法机器人可以学习到如何根据当前状态调整关节控制以实现稳定高效的行走。 5.2 自动驾驶 在自动驾驶场景中车辆的状态包括位置、速度、周围环境感知信息等行动可以是加速、减速、转向等操作。PPO 算法可以让自动驾驶系统学习到在不同路况和环境下的最优驾驶策略提高行驶的安全性和效率。 六、总结 PPO 算法作为强化学习中的优秀算法以其高效的学习能力和良好的稳定性在多个领域得到了广泛应用。通过深入理解其原理、公式推导结合代码实现和实际案例分析我们能够更好地掌握和运用这一算法为解决各种复杂的实际问题提供有力的工具。
http://www.tj-hxxt.cn/news/221574.html

相关文章:

  • 长沙公积金网站怎么做异动营销型网站建设页面
  • 网站建设流程体会襄阳网站seo厂家
  • 网站提供哪些服务放网站的图片做多大分辨率
  • 苏州建网站android软件开发下载
  • 门户网站建设管理工作的意见学做网站php吗
  • 用dw做网站的空格怎么打网站建设可以帮助企业
  • 定制建站公司dw做网站有哪些用处
  • 小鱼儿外贸建站招聘网找工作
  • 企业产品推广网站wordpress wp.media
  • 公司的网站建设费用怎么入账代理上网
  • 公司网站建设注意什么网站建设那家好
  • 网站开发询价单做网站的设计公司
  • 自助建站系统介绍网站公司如何推广网站
  • 网站建设个人主页图网站开发所需开发环境
  • 江苏省住房建设厅网站首页怎么做一个电商网站吗
  • 学校网站开发模式广州模板建站公司
  • 四川网站网页设计在手机上创建网站
  • 怎么做网站企业介绍萍乡公司做网站
  • 南通市住房和城乡建设厅网站wordpress标题调用
  • 网站建设与管理感想手机网站 禁止缩放
  • 快件网站建设网站制作西安
  • 济南网络建站模板百度排名竞价
  • 昆山建设网站上海网站排名优化价格
  • 当前主流的网站开发语言账号权重查询
  • 体育馆做网站公司网页报价单怎么做
  • 网站推广软件免费版可tv外贸网站建设视频教程
  • 网站登录注册页面模板wordpress图片中文不显示解决
  • 药品网站建设存在的问题农安县建设局官方网站
  • 网站制作网页制作网页建站如何保存分享
  • 网站建设既有书籍又有光盘网络建站 响应式网站