强化学习(3)

建模成马尔可夫决策过程,动态规划方法,一般或者最优策略,对状态转移概率清楚,遍历并选择策略,评价策略好坏,更新策略

现实中无法知道环境,不知道状态,不知道概率,对于这类序列决策问题

蒙特卡洛学习 Monte-Carlo Prediction

目标:Agent Environment

寻找最优策略 使得期望Q(S,W)最大化

动态规划知道所有环境,我们需要知道环境的一个近似,MC方法从episodes开始学习,model free是生活中大多数的模型,RL分为基于值函数的学习,或者基于策略的学习。

MC complete episodes no bootstrapping

MCuses simplest possible idea value= mean return

Caveat can only apply MC to episodic MDPs

terminate

蒙特卡洛学习全球十大算法排名第二,对多次环境的采样对环境进行模拟。

Monte-Carlo Prediction: 评价当前策略好坏,一般思想:对于任意给定策略π,agent 执行action,估计相应的状态值。我们需要通过执行episode 中出现状态s的数目N(s),多次reward 值得平均值来计算相应的动作值或者状态值。计算有两种方式:第一次预见蒙特卡洛策略的评价,和每次预见蒙特卡洛的评价。

First Visit

做实验 假如每次以1/4概率选取四个选择之一,得到很多状态s,first只取预见第一个s时的at, value is estimated by mean return 趋近于标准期望。

相对于动态规划是绝对贪婪策略,找到最大的return 先用策略得到Q表 然后找到最佳策略,再去更新Q table 再更新策略。

考虑策略的方法是绝对贪婪的


蒙特卡洛 control

绝对贪婪策略的不足:

reward改变的情况下,过去积累的reward印象策略,给策略选择一个微小的随机性,

Epsilon Greedy Policy 给策略选择一个微小的随机性,使agent 更可能选择时使Q最大

Control

目的获得最优策略

On-policy learning:策略评估和改善是同步进行的,求得目标最优Q值,然后选取某一个策略,蒙特卡洛基于两步走。一套episode 系统同时探索和策略改进

Off-policy learning 两套系统 策略评估和改善不直接用于产生agent的policy 一个探索学习并成为optimal policy 另一个用来逼近上述策略。

On-policy learning 通过探索和利用Exploitation 交替迭代完成

先策略评估 e-greedy(Q)更新策略,e如何选取?

e如何选取?在agent与环境刚开始交互时,agent对环境知之甚少,这时需要大量探索;为了尽可能更多了解环境,agent动作选取需要多样化(随机选取)。2 后面的迭代 agent对环境了解足够多,后面需要选择greedy policy

e选取只要满足条件 状态度量空间是无线的 策略收敛到argmaxQk agent就是一定达到最优策略。e=1/i

算法步骤

1)初始化变量

2)通过Epsilon-greedy获得起始策略

3)进行策略评估

4)进行策略迭代

5)不断重复上述步骤直到达到收敛

Incremental Mean 增量均值

采样之后 相加求均值,写成计算机语言 需要遍历每一个episode,每一次的变化迭代,μk=μk-1 + 1/k (xk-μk-1)

满足GLIE Monte-Carlo Control算法 每次生成新的策略再不断迭代直到生成收敛的结果
GLIE Monte-Carlo Control2个policy 一个是target policy 一个是behavior policy 前者学习成为optimal policy 后者用于探索Exploration。

因此学习过程变化为behavior policy 不断更新参数,target policy 去逼近前者分布

21点

def generate_episode_from_limit_stochastic(bj_env):
episode = []
state = bj_env.reset()
while True:
probs = [0.8, 0.2] if state[0] > 18 else [0.2, 0.8]
action = np.random.choice(np.arange(2), p=probs)
next_state, reward, done, info = bj_env.step(action)
episode.append((state, action, reward))
state = next_state
if done:
break
return episode

episode (state, action, reward)是list,每次得到的结果都放入该list

初始选择概率是0.8和0.2,当点数>18 以0.8停牌…

每次调用一个函数得到一个episode

计算折扣系数:

discounts = np.array([gamma**i for i in range(len(rewards)+1)])

采样episode:

episode = generate_episode(env)

增量均值公式:

returns_sum[state][actions[i]] += sum(rewards[i:]*discounts[:-(1+i)])
N[state][actions[i]] += 1.0
Q[state][actions[i]] = returns_sum[state][actions[i]] / N[state][actions[i]]

随着迭代次数增加,Q趋于平衡

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值