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

上海城市建设大学网站2017企业网站建设方案

上海城市建设大学网站,2017企业网站建设方案,程序员做外包网站,网站描述优化1 Introduction 1.1 Policy-Based Reinforcement Learning 1.2 Value-based and policy based RL 基于值的强化学习 在基于值的 RL 中#xff0c;目标是找到一个最优的值函数#xff0c;通常是 Q 函数或 V 函数。这些函数为给定的状态或状态-动作对分配一个值#xff0c;表…1 Introduction 1.1 Policy-Based Reinforcement Learning 1.2 Value-based and policy based RL 基于值的强化学习 在基于值的 RL 中目标是找到一个最优的值函数通常是 Q 函数或 V 函数。这些函数为给定的状态或状态-动作对分配一个值表示从该状态开始或在该状态下执行特定动作的预期回报。通过这种方式智能体可以选择那些具有最高值的动作。 Q-Learning 和 Deep Q Network (DQN) 就是基于值的 RL 的例子。这些方法都试图优化 Q 函数从而间接地优化策略。 基于策略的强化学习 在基于策略的 RL 中目标是直接找到最优策略无需通过值函数。这通常通过参数化策略并使用优化算法如梯度上升来最大化预期回报来实现。 基于策略的方法可以处理连续的、高维的动作空间这在基于值的方法中往往很难处理。Policy Gradient 和 Actor-Critic 是基于策略的 RL 的例子。 区别和联系 基于值的 RL 和基于策略的 RL 的主要区别在于前者通过优化值函数间接优化策略而后者直接优化策略。 然而这两种类型的 RL 也可以结合在一起形成所谓的 Actor-Critic 方法。在这种方法中策略Actor和值函数Critic都是显式表示的而且都在学习过程中更新。Critic 评估 Actor 的策略性能而 Actor 根据 Critic 的反馈来更新策略。这种方法结合了基于值和基于策略的 RL 的优点。 我们之前接触到的mento carlo和sarsa( λ \lambda λ)都属于value based RL. Policy based RL 1.3 examples rock-paper-scissors game alias gridworld game 对于没有全局定位的机器人来说两种灰色的状态是类似的alias state value based RL 的值函数为每个状态-动作对分配一个值。然而在这两个别名化的状态中智能体应该采取不同的行动但由于状态看起来是相同的智能体会将同一个值分配给这两个状态这导致智能体无法正确行动。 举例来说对于右侧grey state应该向左移动但是对于左侧的grey state如果还往左移动就出错了。这就是value based RL的最大局限性。 采用policy based RL 在灰色状态的时候采用随机概率就可能能达到最终目标。 1.4 Policy Search 看一个cartpole的问题试图控制一个小车使其上方的倒立杆保持直立。如果杆开始倾斜我们需要移动小车以防止杆倒下。问题的目标是使杆尽可能长时间地保持直立。 这个问题的状态是一个四维向量包含小车的位置、小车的速度、杆的角度和杆的角速度。每一步我们可以选择两个动作之一向左或向右推小车。 在策略梯度中我们直接优化参数化的策略以获取更多的奖励。这是通过在每个时间步中对策略的参数应用梯度上升来完成的其中梯度是奖励信号的函数。 代码的整体思路通过收集到的经验(奖励和行为)来改进策略。 这是通过计算策略梯度并使用优化器对策略进行梯度上升来实现的。这个过程的背后有一个关键的概念我们想要增加我们得到好奖励的动作的概率减少我们得到坏奖励的动作的概率。 在函数中首先初始化一个总回报R为0并创建一个空的策略损失列表。然后我们遍历所有的奖励从最后一步开始反向遍历对每一步计算一个折扣回报R并将这个回报乘以那一步的动作的负log概率。这个值被加入到策略损失列表中。这个过程实际上就是在计算策略梯度的公式 策略梯度方法中我们使用参数化的策略 πθ其中 θ 是神经网络的参数。我们希望找到一组参数 θ使得在这个策略下累积回报的期望值最大。πθ其中 θ 是神经网络的参数。 在训练过程中我们基于已经采取的动作和得到的回报计算策略梯度然后使用这个梯度来更新神经网络的参数。具体来说我们计算每一步的策略梯度为 ∇ θ l o g π θ ( a t ∣ s t ) G t ∇_θlogπ_θ(a_t|s_t)G_t ∇θ​logπθ​(at​∣st​)Gt​然后将所有步骤的策略梯度加起来作为整个轨迹的策略梯度。这就相当于计算了一个误差信号这个误差信号表示在当前策略下如何改变参数 θ 才能使得回报的期望值增大。 在策略梯度中我们定义的“损失函数”实际上是一个优化目标这个目标是基于经验回报的。具体来说我们使用的损失是 − l o g π θ ( a t ∣ s t ) G t −logπ_θ(a_t|s_t)G_t −logπθ​(at​∣st​)Gt​其中 Gt 是从时间步 t 到轨迹结束的累积回报 π θ ( a t ∣ s t ) π_θ(a_t|s_t) πθ​(at​∣st​) 是在状态 st 下采取动作 at 的概率负号表示我们希望最大化这个量因为优化算法通常是最小化损失函数。 − l o g π θ ( a t ∣ s t ) G t −logπ_θ(a_t|s_t)G_t −logπθ​(at​∣st​)Gt​其中 Gt 是从时间步 t 到轨迹结束的累积回报 π θ ( a t ∣ s t ) π_θ(a_t|s_t) πθ​(at​∣st​) 是在状态 st 下采取动作 − l o g π θ ( a t ∣ s t ) G t −logπ_θ(a_t|s_t)G_t −logπθ​(at​∣st​)Gt​ 这样定义损失函数的原因是我们希望在策略产生好的结果高回报时增加导致这个结果的动作的概率反之如果策略产生的结果不好低回报我们希望降低导致这个结果的动作的概率。而 − l o g π θ ( a t ∣ s t ) G t −logπ_θ(a_t|s_t)G_t −logπθ​(at​∣st​)Gt​这个量的梯度正好满足这个需求 import gym import torch import torch.nn as nn import torch.optim as optimclass Policy(nn.Module):def __init__(self):super(Policy, self).__init__()self.affine1 nn.Linear(4, 128)self.dropout nn.Dropout(p0.6)self.affine2 nn.Linear(128, 2)def forward(self, x):x self.affine1(x)x self.dropout(x)x torch.relu(x)action_scores self.affine2(x)return torch.softmax(action_scores, dim1)def select_action(policy, state):state torch.from_numpy(state).float().unsqueeze(0)probs policy(state)m torch.distributions.Categorical(probs)action m.sample()return action.item(), m.log_prob(action)def train(policy, optimizer, rewards, log_probs):R 0policy_loss []for r in rewards[::-1]:R r 0.99 * Rpolicy_loss.append(-log_prob * R)optimizer.zero_grad()policy_loss torch.cat(policy_loss).sum()policy_loss.backward()optimizer.step()def main():env gym.make(CartPole-v0)policy Policy()optimizer optim.Adam(policy.parameters(), lr1e-2)for i_episode in range(1000):state env.reset()rewards []log_probs []for t in range(10000): # Dont infinite loop while learningaction, log_prob select_action(policy, state)state, reward, done, _ env.step(action)rewards.append(reward)log_probs.append(log_prob)if done:breaktrain(policy, optimizer, rewards, log_probs)env.close()if __name__ __main__:main()1.4.1 policy objective functions policy objective functions: 收集数据 优化模型 2 Finite Difference policy Gradient 2.1 Policy Gradient 通过policy gradient 方法进行数值迭代 通过数值差分的方法计算gradient进行优化 对于刚才那个神经网络的问题定义loss function进行神经网络的训练。 2.2 AIBO example 2.3 Likelihood Ratios score function 通过似然比技巧将策略梯度的表达式转换成更容易处理的形式。由技巧 Δ θ f ( x ) f ( x ) ∗ Δ θ l o g ( f ( x ) ) \Delta_{\theta} f(x)f(x) * \Delta_{\theta} log(f(x)) Δθ​f(x)f(x)∗Δθ​log(f(x)) 可以得到转换后的policy gradient 在我们刚才那个例子中通过pytorch的log_prob来实现 def select_action(policy, state):state torch.from_numpy(state).float().unsqueeze(0)probs policy(state)m torch.distributions.Categorical(probs)action m.sample()return action.item(), m.log_prob(action)softmax policy 我们首先定义动作的概率分布为softmax函数的形式。假设我们有动作值函数 Q(s,a;θ)对于状态 s 和动作 a动作概率被定义为 π ( a ∣ s ; θ ) e x p ( Q ( s , a ; θ ) ) ∑ a ′ e x p ( Q ( s , a ′ ; θ ) ) \pi(a|s;\theta)\frac{exp(Q(s,a;\theta))}{\sum_{a}exp(Q(s,a;\theta))} π(a∣s;θ)∑a′​exp(Q(s,a′;θ))exp(Q(s,a;θ))​ 在这种情况下策略梯度定理会稍微变形。在softmax策略下策略梯度的形式为 Δ θ J ( θ ) E π [ Δ θ l o g π ( a ∣ s ; θ ) ∗ Q π ( s , a ) ] \Delta_{\theta}J(\theta)E_{\pi}[\Delta_{\theta}log \pi(a|s;\theta) * Q^{\pi}(s,a)] Δθ​J(θ)Eπ​[Δθ​logπ(a∣s;θ)∗Qπ(s,a)] 得到score function是 根据GPT给出的推导的过程 然而这个形式在实践中并不好计算因为计算动作值函数 Qπ(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) 这里的 Vπ(s) 是状态值函数。优势函数表示选择动作 a 而不是平均情况下的预期回报。因此策略梯度定理在实践中常常被写为Vπ(s) 是状态值函数。优势函数表示选择动作 a 而不是平均情况下的预期回报 Δ π J ( θ ) E π [ Δ θ l o g π ( a ∣ s ; θ ) ∗ A π ( s , a ) ] \Delta_{\pi}J(\theta)E_{\pi}[\Delta_{\theta} log\pi(a|s;\theta)*A^{\pi}(s,a)] Δπ​J(θ)Eπ​[Δθ​logπ(a∣s;θ)∗Aπ(s,a)] 对于线性feature ϕ ( s , a ) T θ \phi(s,a)^T\theta ϕ(s,a)Tθ, 根据score function的公式可以得到下面的结论 Gaussian policy 推导过程如下 2.4 policy gradient theorem one-step MDPs 替换公式中的瞬时reward到long-term value Q π ( s , a ) Q^{\pi}(s,a) Qπ(s,a) 作用 在某些强化学习算法中会同时训练两个网络一个用来近似价值函数通常是动作价值函数Q(s,a)另一个用来近似策略函数。这种方法通常被称为Actor-Critic方法。Q(s,a)另一个用来近似策略函数。这种方法通常被称为Actor-Critic方法 在Actor-Critic方法中“Actor”部分是用来近似策略函数的网络它根据当前状态s选择动作a而“Critic”部分是用来近似价值函数的网络它评估在给定状态s下采取动作a的预期回报。Critic通过计算TD-error来更新价值函数而Actor则通过使用策略梯度方法如您之前提到的 Q π ( s , a ) Q^π(s,a) Qπ(s,a)来更新策略函数。s选择动作a而“Critic”部分是用来近似价值函数的网络它评估在给定状态s下采取动作a的预期回报。Critic通过计算TD-error来更新价值函数而Actor则通过使用策略s选择动作a而“Critic”部分是用来近似价值函数的网络它评估在给 Actor-Critic方法确实可以说是混合了value based和policy based的RL方法因为它同时使用了价值函数和策略函数。这种方法的优点在于它可以利用价值函数的稳定性和策略函数的灵活性从而在强化学习任务中实现更好的性能。 3 Monte Carlo Policy Gradient 3.1 mente-carlo policy gradient import gym import numpy as np import torch import torch.nn as nn import torch.optim as optimclass PolicyNetwork(nn.Module):def __init__(self, n_inputs, n_outputs):super(PolicyNetwork, self).__init__()self.model nn.Sequential(nn.Linear(n_inputs, 64),nn.ReLU(),nn.Linear(64, n_outputs),nn.Softmax(dim-1))def forward(self, x):return self.model(x)def train(env, policy, optimizer, gamma0.99, max_episodes1000):for episode in range(max_episodes):state env.reset()log_probs []rewards []# Generate an episodedone Falsewhile not done:state torch.FloatTensor(state)action_probs policy(state)action_dist torch.distributions.Categorical(action_probs)action action_dist.sample()log_prob action_dist.log_prob(action)state, reward, done, _ env.step(action.item())log_probs.append(log_prob)rewards.append(reward)# Compute discounted returnsreturns []R 0for r in rewards[::-1]:R r gamma * Rreturns.insert(0, R)returns torch.tensor(returns)returns (returns - returns.mean()) / (returns.std() 1e-5)# Compute policy gradientpolicy_loss []for log_prob, R in zip(log_probs, returns):policy_loss.append(-log_prob * R)policy_loss torch.cat(policy_loss).sum()# Update policyoptimizer.zero_grad()policy_loss.backward()optimizer.step()if episode % 100 0:print(Episode {}\tLoss: {:.2f}.format(episode, policy_loss.item()))def main():env gym.make(CartPole-v0)policy PolicyNetwork(env.observation_space.shape[0], env.action_space.n)optimizer optim.Adam(policy.parameters(), lr1e-2)train(env, policy, optimizer)if __name__ __main__:main()4 Actor Critic Policy Gradient 4.1 说明 Reducing Variance using a Critic Estimating the action-value function Action-Value Actor-Critic 对于Actor-Critic方法我们需要同时更新Actor和Critic。其中Actor负责选择动作Critic负责评估当前状态-动作对的值。这个过程可以看作是一种动态的、交互式的过程Actor基于Critic的反馈来更新自己的策略而Critic则基于Actor的动作来更新状态-动作对的估计值。 在这个CartPole问题中我们采用的Sarsa(λ)算法它是一种时序差分学习方法这意味着它在更新状态-动作对的值时同时考虑了当前的奖励和下一个状态-动作对的估计值。 在代码中每一个episode开始时我们首先重置环境和资格迹。在每一步中我们首先根据当前的状态选择一个动作然后执行这个动作并观察环境的反馈。接着我们计算TD误差这是实际的奖励和我们的估计值之间的差距。然后我们使用这个TD误差来更新Critic的参数。 对于Actor的更新我们使用了策略梯度方法。这里的损失函数是-log(action_prob) * td_error这实际上就是对策略梯度公式的一种实现。在计算损失函数后我们使用反向传播来计算梯度然后应用这个梯度来更新Actor的参数。 需要注意的是在更新Actor的参数时我们使用了资格迹。这是因为在Sarsa(λ)中我们不仅考虑了当前的状态-动作对还考虑了之前的状态-动作对。这样可以更好地将未来的奖励反向传播到之前的状态-动作对从而提高学习效率。 在实际训练的过程中通过储存replay buffer复用过去的经验来更新网络。用这种方式sarsa(\lambda)也可以使用batch training的方法来更新q-table的网络和policy \theta的网络。 两者分别用value error和 policy gradient来更新网络。 import torch import torch.nn as nn import torch.optim as optim import gym import numpy as np from collections import deque import randomclass Actor(nn.Module):def __init__(self, input_dim, output_dim):super(Actor, self).__init__()self.linear1 nn.Linear(input_dim, 128)self.linear2 nn.Linear(128, output_dim)def forward(self, state):x torch.relu(self.linear1(state))x torch.softmax(self.linear2(x), dim-1)return xclass Critic(nn.Module):def __init__(self, input_dim, output_dim):super(Critic, self).__init__()self.linear1 nn.Linear(input_dim, 128)self.linear2 nn.Linear(128, output_dim)def forward(self, state):x torch.relu(self.linear1(state))x self.linear2(x)return xclass ActorCritic:def __init__(self, input_dim, action_dim, gamma0.99):self.actor Actor(input_dim, action_dim)self.critic Critic(input_dim, 1)self.optimizer_actor optim.Adam(self.actor.parameters())self.optimizer_critic optim.Adam(self.critic.parameters())self.gamma gammaself.replay_buffer deque(maxlen10000)def get_action(self, state):state torch.tensor(state, dtypetorch.float).unsqueeze(0)probs self.actor(state)action np.random.choice(len(probs[0]), pprobs.detach().numpy()[0])return actiondef update(self, batch_size):if len(self.replay_buffer) batch_size:returnminibatch random.sample(self.replay_buffer, batch_size)states, actions, rewards, next_states, dones zip(*minibatch)states torch.tensor(states, dtypetorch.float)actions torch.tensor(actions, dtypetorch.long)rewards torch.tensor(rewards, dtypetorch.float)next_states torch.tensor(next_states, dtypetorch.float)dones torch.tensor(dones, dtypetorch.float)Q_vals self.critic(states).squeeze()next_Q_vals self.critic(next_states).squeeze()Q_target rewards self.gamma * next_Q_vals * (1 - dones)# update criticloss_critic nn.MSELoss()(Q_vals, Q_target.detach())self.optimizer_critic.zero_grad()loss_critic.backward()self.optimizer_critic.step()# update actoraction_probs self.actor(states)chosen_action_probs action_probs.gather(1, actions.unsqueeze(1)).squeeze()loss_actor -torch.sum(torch.log(chosen_action_probs) * Q_target.detach())self.optimizer_actor.zero_grad()loss_actor.backward()self.optimizer_actor.step()def store_transition(self, state, action, reward, next_state, done):self.replay_buffer.append((state, action, reward, next_state, done))def main():env gym.make(CartPole-v0)input_dim env.observation_space.shape[0]action_dim env.action_space.nagent ActorCritic(input_dim, action_dim)num_episodes 500batch_size 32for ep in range(num_episodes):state env.reset()total_reward 0done Falsewhile not done:action agent.get_action(state)next_state, reward, done, _ env.step(action)agent.store_transition(state, action, reward, next_state, done)agent.update(batch_size)state next_statetotal_reward rewardprint(fEpisode {ep}, Reward: {total_reward})if __name__ __main__:main()4.2 Compatible function Approximation bias in actor-critic algorithms Compatible Function Approximation Proof of Compatible Function Approximation Theorem Compatible Function Approximation是一个在强化学习中用来确保策略梯度有一个良好性质的方法。这个性质就是当我们使用一个特定类型的值函数近似时具体来说这个值函数近似和我们的策略有一定的兼容性策略梯度就是真实的策略梯度的一个无偏估计。这意味着在平均意义下我们的策略梯度的估计是准确的。 这个方法的关键思想就是我们的值函数近似Q函数应该和我们的策略有一定的兼容性。具体来说我们的值函数近似的梯度应该与我们的策略的梯度有关。为了满足这个条件我们使用以下的值函数近似 策略网络和值函数网络往往是独立的它们各自有自己的参数它们的梯度不一定有任何直接的关系。但这并不妨碍我们使用Compatible Function Approximation的理论去指导我们的算法设计。 首先需要明确的是Compatible Function Approximation的理论并不一定需要在实际应用中严格遵守。这个理论是一个理想的情况它给出了一个理想的值函数近似应该满足的性质。在实际应用中我们可能无法或者不需要严格满足这些性质但我们可以尽量接近它。 其次尽管在实际应用中我们的策略网络和值函数网络可能是独立的但我们可以通过训练过程去使它们尽量接近Compatible Function Approximation的理论。具体来说我们可以通过以下方式去做 我们可以通过优化目标函数去促使策略网络和值函数网络的梯度尽可能接近。具体来说我们可以使用一个目标函数它包含了策略网络和值函数网络的梯度的差的平方。这样我们的优化过程就会尽量使得策略网络和值函数网络的梯度接近。我们可以在训练过程中共享一部分网络结构。具体来说我们的策略网络和值函数网络可以共享一部分底层的网络结构这样它们的梯度就有可能更接近。 需要注意的是这些都是尽量接近Compatible Function Approximation的理论的方法它们并不能保证我们的策略网络和值函数网络的梯度完全一致。但在实际应用中这些方法已经足够好了它们可以使我们的训练过程更稳定更容易收敛。 4.3 Advantage Function Critic Reducing Variance Using a Baseline Advantage Function的直观理解是在状态s下采取动作a相比于在状态s下按照策略π采取动作的平均优势。 减少方差相比于使用原始的回报reward-to-go或者Q值使用Advantage Function可以减少方差使得学习过程更加稳定。因为Advantage Function已经减去了值函数V(s)这相当于减去了一个基线baseline可以减少估计的方差。 更好的指导策略优化Advantage Function可以更好地指导策略优化。因为Advantage Function表示的是采取某个动作相对于平均水平的优势所以我们在优化策略的时候应该更倾向于增加那些有正优势positive advantage的动作的概率减少那些有负优势negative advantage的动作的概率。 有助于解决探索与利用的问题通过使用Advantage Function我们可以更好地平衡探索与利用的问题。因为Advantage Function可以指示我们哪些动作可能比平均水平更好哪些动作可能比平均水平更差这可以帮助我们在选择动作的时候既考虑到利用已知的知识也考虑到探索未知的动作。 4.3.1 estimating the advantage function 直接法 计算advantage function通过直接计算Q值和V值然后相减。 通过TD间接计算 在实际应用中我们确实需要计算动作值函数Q和状态值函数V来获取优势函数Advantage Function。然而直接计算Q值和V值可能需要大量的样本和计算资源因此在实践中我们通常采用一些近似的方法。 一个常见的方法是使用Temporal Difference (TD) 学习的方法估计Advantage Function。这种方法不需要显式地计算Q值和V值而是通过对即时奖励和未来奖励的估计进行比较来计算Advantage Function。具体来说TD学习的优势函数可以通过以下公式进行定义 A(s, a) r(s, a) γV(s’) - V(s) 其中r(s, a)是采取动作a在状态s下获得的即时奖励γ是折扣因子V(s’)是在下一状态s’下的值函数估计V(s)是在当前状态s下的值函数估计。 这种方法的好处是它不需要显式地计算Q值可以直接通过TD误差来估计Advantage Function从而大大减少了计算和存储的需求。但是它也有一个缺点那就是它需要对环境的动态性有一个较好的估计以便计算出准确的TD误差。 使用TD( λ \lambda λ)计算advantage function. 其中α_w和α_θ分别是值函数和策略的学习率γ是折扣因子λ是资格迹参数e是资格迹量。 这种方法的一个主要优点是它可以利用资格迹量来有效地处理迟延奖励问题即当奖励在时间步上被延迟时通过保持一个资格迹量来“记住”过去的状态和动作并利用这些信息来更新值函数和策略。 4.4 Eligibility Traces 4.4.1 Critic at different time-scale 另一个常见的方法是使用Actor-Critic方法来估计Advantage Function。在这种方法中我们使用一个称为Actor的模型来估计策略使用另一个称为Critic的模型来估计值函数。通过这种方式我们可以在每个时间步中同时更新策略和值函数从而更准确地估计Advantage Function。 4.4.2 actors at Different Time-scales 4.4.3 policy gradient with eligibility traces 4.5 Natural Policy Gradient 4.5.1 Alternative Policy Gradient Directions Natural Policy Gradient是一种优化策略的方法它是Policy Gradient的一种变体。它的主要思想是在优化策略时不仅要考虑奖励的增加还要考虑策略改变的大小也就是说它试图在保证策略改变不大的情况下最大化奖励。为了衡量策略改变的大小Natural Policy Gradient引入了一种名为Fisher信息度量的概念它能够在某种意义上度量两个策略之间的距离。 具体来说普通的Policy Gradient方法是基于梯度上升的思想来优化策略的它每一步都沿着梯度的方向改变策略参数。然而这种方法可能会导致策略改变过大从而影响到学习的稳定性。相比之下Natural Policy Gradient则是通过在优化过程中引入Fisher信息度量来限制策略改变的大小从而提高了学习的稳定性。 Natural Policy Gradient的优点主要包括 1.它能够提高学习的稳定性。通过限制策略改变的大小它可以避免策略的过度更新从而使学习过程更加稳定。 2.它能够更好地利用信息。由于它考虑了策略改变的大小因此它能够在一定程度上利用更多的信息来优化策略。 Natural Policy Gradient主要适用于那些需要保持策略稳定性的场景特别是在复杂的、连续的动作空间中Natural Policy Gradient通常可以提供更好的性能。此外由于它的优化过程涉及到Fisher信息度量的计算因此它在计算资源有限的情况下也可能会表现得更好。 G θ G_{\theta} Gθ​ 是 Fisher Information Matrix G θ G_{\theta} Gθ​^(-1) 是 G θ G_{\theta} Gθ​ 的逆矩阵。通过这种方式NPG 能够考虑到参数空间的结构从而使得更新步骤在所有方向上都更加均衡。 直观地说标准的 Policy Gradient 方法可能会在参数空间的某些方向上更新过快而忽略了其他方向。而 Natural Policy Gradient 方法则能够保证在所有方向上都有均匀的更新从而使得学习过程更加稳定。 4.5.2 natural actor-critic 4.5.3 summary of policy Gradient Algorithms
http://www.dnsts.com.cn/news/58228.html

相关文章:

  • 网站自动弹窗代码wordpress 例子
  • 苏州哪个网站建设最好网站教学视频
  • 光谷网站建设wordpress grace主题
  • 网站经营网络备案信息wordpress后车头
  • dede网站源码 如何修改惠州seo网站排名
  • 建网站-湛江市网站建设颜色搭配
  • 青岛建设交易中心网站环保企业的网站怎么做
  • 电商网站开发 文献综述做游戏模板下载网站有哪些
  • 网站发帖百度收录市政公司宣传册设计样本
  • 自己做网站域名国内用什么做网站
  • 中国好公司网站建设公司变更注册地址的流程
  • 做牙网站0基础多久学会网站架构
  • 如何做婚庆公司的网站特色直播app下载
  • 模板建站和自助建站奇客影院wordpress
  • 北京建设工程教育中心网站手机网站营销页
  • 做PPT素材图片网站 知乎协会网站建设
  • 网站视频做栏目一般一期多钱北京网站建设公司拟
  • 企业门户网站建设行情建设网站价钱
  • dede网站根目录寿宁建设局网站
  • 常平东莞网站建设个人免费注册公司
  • 简历制作网站免费wordpress视频网站主题
  • 东莞企网站建设建网站 京公网安
  • 厦门同安区建设局网站佛山网站优化建设
  • 网站设计的大公司主要是WordPress
  • 网站建设哪里专业新鸿儒网站建设
  • 网站建设都讲哪些内容网站维护 网站建设属于什么
  • 网站建设 万网做网站买个域名多少钱
  • 网站优化软件wordpress网站如何与关联
  • 安全的网站建设推广医院网站
  • 在哪里可以免费做个人网站建设学校网站的意义