增强学习(Reinforcement Learning)
1. 增强学习基础
什么是增强学习
通过训练学到最优的state -action映射关系的过程,使得agent得到最好的value/reward。
- Agent:要学习的智能程序;
- Policy:程序知道所处某状态后采取行为的策略(复杂情况DL,简单情况lookup table)
- Environment:智能程序交互外界环境,接受action产生状态变化,返回reward,可以是真实世界,游戏模拟器,棋牌等。
激励方程 – reward function
某次行为结果产生的激励,如分数的增加;
定义增强学习的目的。
价值方程 – value function
agent 能够带来的长期累计回报,如累计的时间转换为价值;
激励方程短期,价值方程长期。
环境模型 – Model of the environment
环境模拟模型,模拟action作用之后环境返回的价值、激励以及状态的变化,模拟器中不需要,真实世界中有知道训练意义。
增强学习中的问题
- 策略学习policy learning
policy梯度学习
(每一个策略的概率不同,好的策略概率大) - 价值、回报迭代学习
确定方法:Q-learning;DQN,DQN扩展。
(确定策略执行后得到回报的概率) - 环境模型学习
知道此刻的状态以及行为(s,a)预测下一刻的状态以及回报,模拟真实的环境反馈。
Q-learning
- 下一状态最大回报作为价值
Q(st,at)=maxRt+1 - 能够达到价值最大的行为作为策略
π(s)=argmaxaQ(s,a) - 目标价值由当前回报和t+1时刻的价值
Q(s,a)=r+γmaxa′Q(s′,a′)
算法:
initialize Q[num_states, num_actions] arbitrarily
observe initial state s
repeat
select and carry out an action a
ovserve reward R and new state s'
Q(s,a) = R(s,a)+r*max(Q(s',ai))
until terminated
Q-learning 实例
假设我们在建筑物中连接了5个房间,如下图所示。 我们将每个房间的号码从0到4编号。建筑物的外部可以被认为是一个大的房间(5)。 注意,门1和4可以从5室(外部)进入建筑物。
我们可以在图表上表示房间,每个房间作为一个节点,每个门作为一个链接。
对于这个例子,我们想把智能体放在任何房间里,从那个房间里到外面去(这将是我们的目标房间)。 换句话说,目标房间是第5号。为了将这个房间设定为目标,我们将把每个门的奖励值(即节点之间的链接)相关联。 直接导向目标的门立刻得到100,其他没有直接连接到目标房间的门没有奖励。 因为门是双向的(0可以到4,4也可以到0),每个房间分配两个箭头。 每个箭头包含即时奖励值,如下所示:
Q-Learning中包括术语“state”和“action”。
我们会称每个房间为“state”,智能体从一个房间到另一个房间的运动将是一个“action”。 在我们的图中,“state”被描绘为一个节点,而“action”由箭头表示。
我们可以将状态图和即时奖励值构成奖励表矩阵R,如下所示:
我们将首先设置学习参数
γ=0.8
的值,将初始状态设置为Room 1。
将矩阵Q初始化为零矩阵:
- 假设:当前状态s:1,下一步随机到s:5。
Q(1,5)=R(1,5)+0.8∗max[Q(5,1),Q(5,4),Q(5,5)]=100+0.8∗0=100
下一个状态5,现在变成当前状态。 因为5是目标状态,所以我们完成了一步。 智能体的大脑现在包含一个更新的矩阵Q:
- 假设:当前状态s:3,下一步随机到s:1。
Q(3,1)=R(3,1)+0.8∗max[Q(1,2),Q(1,5)]=0+0.8∗max(0,100)=80
更新的Q矩阵变为:
- 每次保持不变,policy,Q具有可累积。
多次迭代计算后Q趋于稳定,变为:
一旦矩阵Q接近到收敛状态,我们知道智能体已经学到了目标状态的最佳路径。 可以直接用于求最优解。
Q-learning总结
- 直接用表格查询形式确定回报,适应简单任务;
- 回报矩阵R不变,价值矩阵不断更新,价值矩阵描述了从某状态出发的action的不同选择的回报信息;
- 理论上如果信息能够可以用查询表格(lookup table)表示,Q-learning能够学到最优的Policy。
2. DQN 深度增强学习
- DQN,2015年 Nature,用于Atari 2600游戏的自动学习;
- 同Q-learning的过程类似,迭代优化;
- Action-Reward 不是简单的table,是深度模型要学习的目标;
- 添加了经验回放(experience reply),用于模型的训练。
DQN和Q-learning的比较
- Q matrix无法描述复杂问题;
- 神经网络作为Q函数;
- 优化输入输出直接生成Q+a。
DQN的基本结构
没有pooling层:位置信息很重要,不希望被弱化。
DQN loss以及优化
- Loss
L=12[R+maxa′Q(s′,a′)target−Q(s,a)prediction]2 - 训练过程:给定一个
transition<s,a,r,s′>
- 1.前向计算当前状态s,得到action-value列表;
- 2.前向计算下一状态s’,得到 maxa′(s′,a′) ;
- 3.设置target值,2中action对应Q更新,其他同Q(s,a)一致;
- 4.反向计算梯度。
DQN经验回放
- 将 <s,a,r,s′> 进行存储;
- 只用最近变化的话,数据较少,容易收敛到局部极值,所以要把以前的信息存储起来;
- 使得训练更像监督学习;
- 中间过程可反复使用,进而帮助训练过程;
- 很像针对性的练习。
DQN 深度探索-随机尝试
- 深度探索(exploration)
一直在优化自己最初的方向,但有可能是错的,类似贪婪算法; - 随机尝试(exploitation)
按照一点概率允许尝试不同的可能性
DQN算法
initialize replay memory D
initialize action-value function Q with random weights
observe initial state s
repeat
select an action a
with probability e select a random action
otherwise select a = argmaxQ(s,a')
carry out action a
ovserve reward r and new state s'
store experience <s,a,r,s'> in replay memory D
sample random transitions <ss,aa,rr,ss'> from replay memory D
calculate target for each minibatch transition
if ss' is terminal state then tt = rr
otherwise tt = rr + gamma*maxQ(ss',aa')
train the Q network using (tt - Q(ss, aa))^2 as loss
s = s'
until terminated
3. DQN 该进模型
DQN可能存在的问题:
在目标
max(Q(s′,a;))
确定过程中,选用的方法是直接找到value-action列表的最大值,由于模型的不稳定性,最大值不一定是最优值。
改进方法
Double DQN
训练两个独立的模型 Q1,Q2
Q1(s,a)−>r+γQ2(s′,argmaxaQ1(s′,a))Q2(s,a)−>r+γQ1(s′,argmaxaQ2(s′,a))
tatget与prediction分别用不同的模型生成。优先回放PER
训练过程中,每个batch的reply对训练的贡献并不相同,target和prediction预测差别大的有更大的贡献。
误差: error=|Q(s,a)−T(S)|
比例: p=(error+ε)α
概率: Pi=pi∑kpk
Double DQN改进的效果
经过Double DQN的改进以后,loss的大小会减小,效果得到改进。
Dueling DQN
原理:
对loss function进行改造。
* 最终的一个value loss没有学习过程的某些中间量没有引导作用;
* 中间层分出value,advantage层Q(s,a)=V(s)+A;
* 最终输出均为action-value。
结构特点:
训练中侧重于有用信息。
4. A3C 模型
Asynchronous Advantage Actor-Critic
Asynchronous 异步
属于分布式训练,不仅仅在一个模型中训练。
DQN:单个agent,单个神经网络,一个环境。
A3C:一个全局神经网络,多个worker agent,每个agent复制一份神经网络,一个环境,单独进行优化;通过独立的进行多个worker agent训练,增加训练的多样性。
Advantage
不仅考虑模型的回报,还要考虑某一个具体行为带来的贡献有多大。
A = R -V(s);
- A:advantage;
- R:reward;
- V(s):Vaule方程,
advantage用于value loss的形成。
Actor-Critic 演员-评论
- 演员:policy,根据神经网络推出state下应有的行为的概率分布;
- 评论:value,不同行为能够得到的回报;
- value和policy结合,通过fc layer 生成。
5. 实例:自动游戏机器人
DQN +GYM+Tensorflow
fork代码请参见:https://github.com/KoalaTree/dqn
本文介绍了增强学习的基础概念,包括激励方程、价值方程和环境模型,并深入探讨了Q-learning。接着,文章重点讨论了深度Q网络(DQN)如何解决Q-learning在处理复杂问题时的局限性,详细阐述了DQN的结构、损失函数、经验回放等关键特性。此外,还提到了DQN的改进方法,如Double DQN和Dueling DQN。最后,通过自动游戏机器人的实例展示了DQN在实践中的应用。

1万+

被折叠的 条评论
为什么被折叠?



