当前位置:   article > 正文

强化学习概括_policy loss

policy loss

1. 概括图

在这里插入图片描述

2. 基本方式

1. 策略学习 Policy learning

state->action 叫做一个policy
相当于每个state做了个action的分类,即找到最好的policy

input: state(界面,图片等)
output: <action0, 70%>, <action1, 20%>, <action2, 10%>…

2. 价值迭代学习

确定方法:Q-learning; DQN及其扩展
目的就是学习价值最大

input: state(界面,图片等)
output: value(<action0, value0>, <action1, value1>…)

3. 环境模型学习 Environment modeling

直到此刻的装态以及行为,预测下一刻的状态以及回报,模拟真实的环境反馈


3. 常见算法

1. Q learning

价值函数:
在这里插入图片描述
下一状态的最大回报作为价值,所以是off-policy。
更新Q值时所使用的方法是沿用既定的策略(on-policy)如sarsa,还是使用新策略(off-policy)如Q-learning
策略函数:
在这里插入图片描述
能够达到价值最大的行为作为策略

目标价值:
在这里插入图片描述

目标价价值由当前回报r和t+1价值组成

算法:

  • Initialize Q[num_states, num_actions] ( Q(s,a) ) arbitrarily
  • Repeat (for each episode) :
    • Initialize s (observe state)
    • Repeat (for each step of episode) :
      • choose a from s using policy derived from π()
      • take action a, observe r, s’
      • Q(s , a) <- Q(s , a) + α[ r + γmaxa’ Q(s’ , a’) - Q(s, a) ]
      • s <- s’
      • Until s is terminal

例子:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

补充:

  • 直接用表格查询形式确定回报,适应简单任务
  • 回报矩阵R不变,价值矩阵Q不断更新,价值矩阵描述了从某状态出发的action的不同选择的回报信息
  • 理论上如果信息能够可以用查表(lookup table)表示,Q-learning能够学到最优的policy
2. DQN

同Q-learning的过程类似,迭代优化,Action-Reward不是简单的table,是深度模型学习的目标,并且添加了 experience replay,用于模型训练,解决了Q值太多Q-learning无法有效学习的问题。

Q table无法描述复杂问题,这里用神经网络作为Q函数,优化输出,直接生成<Q, action>,(由图一–>图二)

state
network
action
Q-value
state
network
Q-value, action1
Q-value, action2
Q-value, action3

没有pooling层,因为需要保留位置信息
基本结构:conv1(ReLu)->conv2(ReLu)->conv3(ReLu)->fc4(ReLu)->fc5(Linear)

Loss:

  • loss:
    在这里插入图片描述

算法:

  • initialize replay memory D
  • initialize action-value function Q with random weights
  • repeat
    • select an action a
      • with probability ε select a random action
      • otherwise select a = argmaxa’(s,a’)
    • carry out action a
    • observe reward r and new state s’
    • store experience <s, a, r, s’> in replay memory D
    • sample random transitions <ss, aa, rr, ss’> in replay memory D
    • calculate target for each minibatch transition
      • if ss’ is terminal state than tt = rr
      • otherwise tt = rr + γmaxa’Q(ss’, aa’)
    • train the Q network using (tt - Q(ss, aa))² as loss
    • s = s’
  • until terminated
3. Policy Gradient

解决了DQN无法输出连续动作空间的问题

  1. policy gradient 的常见算法如REINFORCE是基于回合episode数据更新,而不是q-learning那种单步更新的方式,这样会造成学习效率低,以下是REINFORCE算法的更新方式:
    在这里插入图片描述
    即:如果一个动作得到的reward多,那么我们就使其出现的概率增加,如果一个动作得到的reward少,我们就使其出现的概率减小。
  2. 结合神经网络可以+算法连续动作的输出,可以用在很多需要连续动作空间的应用上,如汽车转向控制上。
  3. 与基于值函数的深度强化学习算法不同,基于值函数的算法每一步都可以作为数据集进行学习,而策略梯度因为严格意义没有误差,所选取的误差函数必须在一回合结束后才能获得奖励值。
    故策略梯度只能在回合结束时更新策略梯度网络。而每一步的选择都对网络有影响,故还需要用数组将所出现的状态,选取的动作,获得的奖励用数组储存起来,在回合结束时一并作为数据集经行网络更新
4. A3C

Actor是policy gradient 网络, critic是value-based网络。
借助value-based网络来实时的给policy gradient网络反馈,这样就可以进行单步更新,因此解决了policy gradient 无法单步更新,效率低下的问题

  1. Asynchronous 异步
    DQN: 单个agent,单个神经网络,一个环境
    A3C:一个全局神经网络,多个worker agent,每个agent复制一份神经网络,一个环境,单独优化,通过独立的进行多个worker agent训练,增加训练的多样性

  2. Actor-Critic 演员 - 评论
    演员:相当于一个policy,policy就是估计最好的action,即根据神经网络求出state下action的概率分布
    评论:value,不同action能得到的回报
    Value和policy结合,通过全连接层生成,类似于duelingDQN

  3. Advantage 不仅考虑模型的回报,还考虑某个具体action带来的贡献的大小
    A = R - V(s)
    A: advantage,R:当前reward,V(s):value函数,advantage用于value loss的计算

三个A结合:

  • value loss:L = ∑(R - V(s))²
  • policy loss:L = log(π(s)) * A(s) + β*H(π)

流程图:

5. DDPG

Deep Deterministic Policy Gradient
Deep:指的是这里的actor和critic网络都采用DQN的现实+估计+经验回放的方式
Deterministic:指的是用直接输出动作,替换policy gradient输出各个action+概率,一下是两种方式的对比:

  • 随机性策略,∑π(a|s)=1 策略输出的是动作的概率,使用正态分布对动作进行采样选择,即每个动作都有概率被选到;优点,将探索和改进集成到一个策略中;缺点,需要大量训练数据。
  • 确定性策略,π(s)S→A 策略输出即是动作;优点,需要采样的数据少,算法效率高;缺点,无法探索环境。然而因为我们引用了DQN的结构利用offPolicy采样,这样就解决了无法探索环境的问题

提高了A3C的收敛性和稳定性

总体框架
在这里插入图片描述

6. DDPO

Distributed Proximal Policy Optimization
OpenAI 提出的一种解决 Policy Gradient 不好确定 Learning rate (或者 Step size) 的问题. 因为如果 step size 过大, 学出来的 Policy 会一直乱动, 不会收敛, 但如果 Step Size 太小, 对于完成训练, 我们会等到绝望. PPO 利用 New Policy 和 Old Policy 的比例, 限制了 New Policy 的更新幅度, 让 Policy Gradient 对稍微大点的 Step size 不那么敏感.

算法:
在这里插入图片描述
总的来说 PPO 是一套 Actor-Critic 结构, Actor 想最大化 J_PPO, Critic 想最小化 L_BL. Critic 的 loss 好说, 就是减小 TD error. 而 Actor 的就是在 old Policy 上根据 Advantage (TD error) 修改 new Policy, advantage 大的时候, 修改幅度大, 让 new Policy 更可能发生. 而且他们附加了一个 KL Penalty (惩罚项, 不懂的同学搜一下 KL divergence), 简单来说, 如果 new Policy 和 old Policy 差太多, 那 KL divergence 也越大, 我们不希望 new Policy 比 old Policy 差太多, 如果会差太多, 就相当于用了一个大的 Learning rate, 这样是不好的, 难收敛.

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/秋刀鱼在做梦/article/detail/809887
推荐阅读
相关标签
  

闽ICP备14008679号