增强学习(2) Q Learning

MachineLearninginMarketing

Q Learning
家长都会反对小朋友一边看电视一边吃饭,不过小朋友为了抓紧时间提供效率往往会选择一边看电视一边吃饭。所以生活中有许多准则。也就是吃完饭再看电视会得到奖励反而会得到训斥。
其实根据家长反馈我们会决定是

  • 先吃饭看电视
  • 看电视同时吃饭
    这是两种选择,如果没有随后家长反馈,我们的选择是随意。不过随后家长反馈会影响小朋友以后决策。这也就是 QLearning。
    用数据也就是计算机能够理解来分析一下小朋友成长过程,现在吃饭(状态 s1)接下来可能有两个行为看电视(a1)还是继续吃饭(a2)。不过接下来行为会获得潜在奖励我们用 Qtable 来表示

从上面表格来看 Q(s1,a1) 小于 Q(s1,a2),所以我们选择行为 a2 是 s1 状态的行为,然后就进入到下一个状态 s2 ,同样我们可以查询在 s2 中我们行为的

同样我们需要查询 Q 表来决定我们在 s2 状态选择的行为,因为 S2 状态是我们预测出来实际上还没有到达 s2 状态。所以我们需要将在 s2 做出选择后的奖励值乘以一个衰减值r 然后加上在 s1 实实在在得到奖励值 R 也就是 R+rmaxQ(s2)
我们将 R+r
maxQ(s2) 作为现实中Q(s1,a2) 的值,在 Q 表上的值都是估计值,之前 Q(s1,a2)是我们估计出来的值。
将新的 Q(s1,a2) = 老 Q(s1,a2) + a*差距(差距是现实值减去估计值)
Q Learning 是一种 value-base 方法,学习结果是评价现在行为有多好或者有多不好,是一种增强学习的一种。
通过动手实践是最好的学习手段,

import gym

创建环境

env = gym.make("MountainCar-v0")

初始化环境

env.reset()
done = False

while not done:
    action = 2
    # volecity positon
    new_state, reward, done, _ = env.step(action)
    print(new_state)
    env.render()
env.close()

这里定义 3 个动作来操作小车,0 推动小车左移动 1 不做任何操作而 2 表示推动小车右移动。这里定义 2 表示向右给小车一个力。step 表示每一步都进行操作(action)返回 new_state 表示小车的当前状态位置和速度。打印()数据如下

[-0.3553034   0.00149003]
[-0.35402264  0.00128076]
[-0.35295955  0.00106309]
[-0.35212108  0.00083847]

我们的目标让小车通过学习达到小旗的位置。

print(env.observation_space.high)
print(env.observation_space.low)
print(env.action_space.n)

我们打印出一些与环境相关的参数。

[0.6  0.07]
[-1.2  -0.07]
3

3 表示 3 操作我们可以用到,上面已经提到了,observation_space 表示我们观察空间间隔,这里我们需要调整一下。来得到我们想要大小 Q table。

DISCRETE_OS_SIZE = [20] * len(env.observation_space.high)
discrete_os_win_size = (env.observation_space.high - env.observation_space.low) / DISCRETE_OS_SIZE

print(discrete_os_win_size)

创建 Q table

    new_state, reward, done, _ = env.step(action)
    print(reward,new_state)

如果我们输出 reward 会发现 reward 总是 -1,当我们小车达到目标时候才会得到反馈 0

(-1.0, array([-0.16686211,  0.0038182 ]))
(-1.0, array([-0.16423716,  0.00262495]))
(-1.0, array([-0.16281484,  0.00142232]))
(-1.0, array([-0.16260018,  0.00021466]))
(-1.0, array([-0.16359394, -0.00099376]))
(-1.0, array([-0.16579261, -0.00219867]))
(-1.0, array([-0.16918837, -0.00339576]))
(-1.0, array([-0.17376895, -0.00458059]))
q_table = np.random.uniform(low=-2,high=0,size=(DISCRETE_OS_SIZE + [env.action_space.n]))
(20, 20, 3)
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 157,298评论 4 360
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,701评论 1 290
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 107,078评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,687评论 0 202
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,018评论 3 286
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,410评论 1 211
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,729评论 2 310
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,412评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,124评论 1 239
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,379评论 2 242
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,903评论 1 257
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,268评论 2 251
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,894评论 3 233
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,014评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,770评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,435评论 2 269
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,312评论 2 260