一、Crossentropy method
场景1:平衡游戏
问题:已知在一组status下,进行对应一组action时,最终的reward。
解决方案1:
- 创建一个初始的policy表,表示每一个status下选择某一个action的概率
- 找1000组status,根据policy表,得到对应的action组;
- 根据status:action组,带入模型场景,得到对应的reward
- 找其中reward最好的200组
- 计算其中status:action组合,在对应status下的出现概率
- 按一定的alpha值,更新原始的policy表
- 利用新的policy表,获取新的1000组status对应的action值
解决方案2:
- 使用一个神经网络/分类算法代替原来的policy,输入status,得到action。
二、Reward价值衰减和转换
1、怎么计算价值:
空调持续恒温问题,reward的结果是无限的
方案:,其中0<a<1,reward在当前的价值最大,在未来逐渐衰减
2、价值概念:
价值模型可以进行特定的变形(除于某个不为0的正数,减去一个基于新旧status的结构数据),并不影响模型的应用结果
三、Bellman equation贝尔曼方程
1、status_value function:
给定status对应的value的函数
变量说明:s-status、r-return、π-policy、a-action
backup diagram
2、action_value function:
给定status下进行某个action对应的value的函数
四、policy iteration 策略模型迭代进化
1、policy evaluation策略评估过程:
已知policy,计算v(s)
计算过程:初始化所有状态的v(s)=0,然后按照bellman expectation公式逐个更新每一个v(s)值
直到每一个v(s)都稳定不再变化
数组计算方法:
2、policy improvement策略进化过程:
计算过程:根据已知的v(s),获得action_value function;使用贪婪算法找到可以让action_value最大的action,以此调整policy值
3、iteration
基本流程:评估policy(status value),通过action贪婪算法提升policy
根据评估policy的方法,分为policy iteration(一直更新v(s)直到不再变化)和value iteration(只更新一遍v(s))
policy iteration
value iteration
一般来说,如果status比较多,建议采用vi,减少每次迭代的复杂度;相反,采用pi会减少迭代次数
五、Model-free Learning
之前的计算中,我们都默认假设 P(s',r|s,a) 也就是模型本身是可以被观察和获取到的(如下图);
但在实际现实当中,很多情况下,模型对我们来说是黑箱的。我们并不能预先知道在当前status下进行某个action,模型给我们的反馈结果是怎么样的。
通常,我们也不能充分测试模型中的所有场景,只能获取到某个status-action-reward的序列片段
最终,问题转换为了:如何通过以上序列片段,得到Q(s,a)的问题,其中Q(s,a) = r(s,a)+*v(a')
(因为知道了Q(s,a),就可以根据使得Q最大的a,来得到最终的行动策略)
1、Q-learning基础算法
2、进阶算法-增加变化
只有当机器可以不拘泥现有的最佳方案,而尝试去采用新的action去测试是否带来更好结果,这样,算法才有意义。
我们需要在采用当前最佳方案和尝试探索新方案之间的平衡。
如果采用以上 greedy的方法,可以逐迭代的收敛 greedy到一个最小值(每个迭代*0.99),这样,模型才能最终收敛到一个稳定的状态。(除非模型环境本身是不断动态变化的,如互联网广告)
3、SARSA-用期望取代MAX
防止,算法会为了获得最高奖励,不顾风险。
4、SARSA和Q-Learning的区别
Q-Learning假设环境是稳定不变的,适用于稳定的环境,不用担心环境变化产生的风险,只需要最求最优结果。
SARSA适用于变化中的环境,需要考虑到环境变化带来的潜在风险,选择期望最佳的结果。
5、两种模型训练方式:on-policy和off-policy
on-policy:类似在线学习,在环境中边尝试边训练(sarsa)
off-policy:类似迁移学习,把专家的操作record预训练模型,再进行自我训练(q-learning)
6、模型优化Experience Replay
The catch is that you can train Q-learning and EV-SARSA on <s,a,r,s'>
tuples even if they aren't sampled under current agent's policy. So here's what we're gonna do:
提升迁移学习的训练效率;基于<s,a,r,s'>
与当前的策略policy无关,只与环境本身有关(即是说<s,a,r,s'>
在训练p的过程中永远是对的);所以,可以反复使用<s,a,r,s'>
在不同的p值下来计算新的p
六、Approximate Value Based Methods近似价值模型算法
之前描述的都是tabular method,就是会有一个p矩阵,我们的核心工作就是优化这个p策略矩阵;但在现实情况下,因为status存在无限多的可能性(video game),导致tabular method并不适用。
另一个问题在于,在tabular method中,我们认为每一个p(s,a)都是相互独立的,没有关联性;但在现实场景下,其内在都必然有着相关性。
所以,在这些需求场景下,我们选择优化q(s,a,w)神经网络模型,将问题转化为一个机器学习问题(有监督学习)。
1、先介绍2种算法
-
Monte-carlo update:游戏开始后, 要等待游戏结束, 然后再总结这一回合中的所有转折点, 再更新行为准则。(offline)
-
Temporal-difference update:在游戏进行中每一步都在更新, 不用等待游戏的结束, 这样就能边玩边学习了。(方差较小,online)
-
online and offline policy
2、基于以上两种算法,需要计算q,类比一般的机器学习方法(有监督学习):
1、input:s,a
2、output:q(s,a,w)
3、target:
方案1:MC,所有进程结束后,通过抽样近似获取的q(s,a),q(s);但是通过抽样近似的方法获取target存在需要大量抽样的情况,且一旦环境比较复杂,抽样的结果方差性会很大。
方案2:TD,每进行一步,就计算更新一次q(s,a),q(s);
4、loss function: mean-square error
不同status的权重不一样,重点优化比较好/成功相关的status,因为我们并不想经历那些bad status;计算权重p(s,a)的方法也是采用抽样近似的形式
5、强化学习的loss计算方法,是在sgd随机梯度下降发的基础上,采用semi-gradient decent的算法
特点是:将上式种的g(s,a)也就是goals视为固定值(实际上环境是一直变化的)
4、semi-gradient decent梯度计算:
SARSA is based on Bellman expectation equation
Q-learning is based on Bellman optimality equation
3、强化学习和一般的有监督学习的差异
很难有合适的训练数据集,因为强化学习的模型,比如玩一个游戏,你遇到的场景(status)是受你进行的操作(policy)影响而动态变化的。训练集是无法有效覆盖到所有可能的场景的,因为他没办法尝试所有的操作序列
有监督学习中,x的细微差异一般不会很大影响到y值的结果。但是在强化学习中,status的一些微小差异,比如多了一颗子弹,就会极大的影响到q(s,a)的结果
4、DQN Deep Q-learning Network
1、数据预处理
1)initial image:210*160*3
2)色彩灰度和压缩:110*84*1
3)切片:84*84*1
4)stack4frames:84*84*4
2、神经网络
1)input layer:84*84*4
2)卷积1:20*20*32,relu
3)卷积2:9*9*64,relu
4)卷积3:7*7*64,relu
5)dense:512,liner
6)输出层(q-values):18
3、注意点
1)不使用池化层:节约运算时间
2)使用4个frame:因为当前的action判断应该基于多张recent image,单一图片无法有效决策(例如判断小球飞行轨迹)
4、优化方案
1)通过reply池来处理存在相互关系的序列数据源
优劣势
2)policy oscillation 波动:target network
分成2个神经网络,一个target network,一个q-learning神经网络。其中前者的w是后者的移动平均值、
3)reward标准化(可选,因为这样不利于区分好和特别好)
5、double Q-learning
以上方法使用的max方法,会导致最终生成的q(s,a)的分布比正常的更大,为了解决这个问题,
提出了独立训练两个q模型的方法
并进一步用target model (老的q)做为另一个独立模型的方法,模型演变如下:
6、Dueling DQN
7、Bootstrap DQN
七、Police-Based Method
1、value-based method(model-based)存在的问题
1)现实中,需要一个很长的序列之后,才能知道当前的决策好不好(即无法准确判断当前action的reward)
2)在DQN中计算误差的方法是计算平均方差,这种计算方式,会导致部分方差很大的q值影响最终的结果
2、随机策略梯度算法(stochastic-policy-gradient)
police-based 是基于已知π(s,a)出现的分布,来更新策略模型π(a|s)
value-based 是基于价值模型q(s,a),来更新策略模型 π(a|s)