栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

【莫烦Python】强化学习 RL 自学笔记(1)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【莫烦Python】强化学习 RL 自学笔记(1)

什么是 Q Leaning - 强化学习 Reinforcement Learning | 莫烦Python

Q-Learning 决策

状态s

行为 a

在行为准则Q 表中寻找 Q(s1, a1) Q(s1, a2) 的值, 并比较他们的大小, 选取较大的一个.

Epsilon greedy 是用在决策上的一种策略, 比如 epsilon = 0.9 时, 就说明有90% 的情况我会按照 Q 表的最优值选择行为, 10% 的时间使用随机选行为. alpha是学习率, 来决定这次的误差有多少是要被学习的, alpha是一个小于1 的数. gamma 是对未来 reward 的衰减值. 我们可以这样想象.

Q-learning 算法更新 - 强化学习 Reinforcement Learning | 莫烦Python

Q-learning 算法更新

RL是分两部分:env和brain;

brain内含有Qlearningtable更新表

这里还有一个运行模块test,在这里指的是如何提升循环

        env-maze

        黄色的是天堂 (reward 1), 黑色的地狱 (reward -1)

        可以先不做

        brain

        这就是整个 Qlearning 最重要的迭代更新部分啦.

test

def update():是这里的更新方法

episode 声明回合数量
observation = env.reset() 初始点的信息(坐标)

以上都是已知的信息

下面开始循环

 action = RL.choose_action(str(observation)) 基于现有的s0,也就是observation,得出在s0情况下的a0-an

observation_, reward, done = env.step(action)探索者在环境中实施这个 action, 并得到环境返回的下一个 state 观测值, reward 和 done,得出s0,a0-an,Q(s0,a0)-Q(s0,a0),得出Q表(s0)

RL.learn(str(observation), action, reward, str(observation_))也就是在Q表中得到学习

observation = observation_ 从s0跳转至s1,并且将s1再次视为s0

RL:这里是tkinter编写,在main函数运行时定义,在这里是选择了一种学习方式

 RL = QLearningTable(actions=list(range(env.n_actions)))

需要传入一个action,通过QLearingTable执行

env.after(100, update)
env.mainloop()
tkinter的操作需要

Q-learning 思维决策 - 强化学习 Reinforcement Learning | 莫烦Python

Q-learning 思维决策

首先关注前面的算法更新需要的方法

分别有
action = RL.choose_action(str(observation))
RL.learn(str(observation), action, reward, str(observation_))

所以在brain的QLearningTable有

    # 选行为
    def choose_action(self, observation):
    # 学习更新参数
    def learn(self, s, a, r, s_):

在加上def __init__(self, actions, learning_rate=0.01, reward_decay=0.9, e_greedy=0.9):

由于,环境有可能重复,所以

    # 检测 state 是否存在
    def check_state_exist(self, state):

总共四个模块

1.对于模块__init__

self负责在这里的定义操作,在init中被声明

2.对于模块learn(self, s, a, r, s_)

q_target = r + self.gamma * self.q_table.loc[s_, :].max()  

这是Q-Learning算法的部分

3.对于模块choose_action(self, observation)

要负责选择action,同一个 state, 可能会有多个相同的 Q action value, 所以我们乱序一下
            action = np.random.choice(state_action[state_action == np.max(state_action)].index)
 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/461491.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号