强化学习
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
价值函数:
下一状态的最大回报作为价值
策略函数:
能够达到价值最大的行为作为策略
目标价值:
目标价价值由当前回报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 table无法描述复杂问题,这里用神经网络作为Q函数,优化输出,直接生成<Q, action>,(由图一–>图二)
没有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’
- select an action a
- until terminated
3. A3C
-
Asynchronous 异步
DQN: 单个agent,单个神经网络,一个环境
A3C:一个全局神经网络,多个worker agent,每个agent复制一份神经网络,一个环境,单独优化,通过独立的进行多个worker agent训练,增加训练的多样性 -
Actor-Critic 演员 - 评论
演员:相当于一个policy,policy就是估计最好的action,即根据神经网络求出state下action的概率分布
评论:value,不同action能得到的回报
Value和policy结合,通过全连接层生成,类似于duelingDQN -
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(π)
流程图: