强化学习之 Q-learning

强化学习的作用在于通过当前的环境做出相应的action,得到最大的value
如TensorFlow实战中的例子:


在5x5的游戏棋盘中,蓝色的代表人物。绿色的代表奖励。红色的代表惩罚。人物可以选择向上,下,左,右,四个方向行走,每走到绿色位置加10,红色位置-10,其余位置不加也不减。我们针对这个原则来制定最佳的行走方案来使奖励最多。
我们可以把整个Q-learning的学习工程写成下面的这个式子:


即当前环境下某位置的价值Q可以通过原来的Q和下一步能走的位置的最大值之间进行计算后训练获得。
通俗来讲,我们知道某一个位置是绿色,它的价值就会比较大,相同地,它的上,下,左,右,方向的四个位置,由于靠近绿色位置,所以价值也会比普通位置大。
红色附近的位置,由于靠近红色位置,价值也会比一般位置小。
而相同的,都是绿色,如图中第一行的绿色位置由于靠近两个红色,所以比较起来第三行的绿色位置,由于附近还有绿色位置。前者的价值将会小得多。
为了求出价值Q,我们首先根据每个位置的价值初始化矩阵 ,将初始矩阵都设置为0,reward矩阵设为:

[[-10,10,-10,0,0],
[0,0,0,0,10],
[0,0,0,0 ,0],
[10,0,0,0,0],
[0,10,0,0,0]]

α为0.01,γ为0.8,进行训练。

import numpy as np
GAMMA = 0.8
ALPHA = 0.01
num_steps = 10000
SIZE = 5
R = np.asarray([[-10, 10, -10, 0, 0],
                [0, 0, 0, 0, 10],
                [0, 0, 0, 0, 0],
                [10, 0, 0, 0, 0],
                [0, 10, 0, 0, 0]])
Q = np.zeros([SIZE, SIZE], np.float32)


def getMaxQ(statex, statey):
    state = []
    if statex > 0:
        state.append(Q[statex-1, statey])
    if statey > 0:
        state.append(Q[statex, statey-1])
    if statex < SIZE-1:
        state.append(Q[statex+1, statey])
    if statey < SIZE-1:
        state.append(Q[statex, statey+1])
    return max(state[:])


def QLearning():
    for statex in range(SIZE):
        for statey in range(SIZE):
            Q[statex, statey] = (1-ALPHA)*Q[statex, statey] + ALPHA* (R[statex, statey]+GAMMA * getMaxQ(statex, statey))

count = 0
while count < num_steps:
    QLearning()
    count += 1

print(Q)

得到Q值矩阵:

[[ 12.22179413  27.77730179  12.22179413  17.77730179  22.22174644]
 [ 17.77730179  22.22174644  17.77730179  22.22174644  27.77730179]
 [ 22.22174644  17.77730179  14.22179413  17.77730179  22.22174644]
 [ 27.77730179  22.22174644  17.77730179  14.22179413  17.77730179]
 [ 22.22174644  27.77730179  22.22174644  17.77730179  14.22179413]]

有了期望获取的最大价值Q,我们的最佳策略就是站在每一个state下,选择Q值最高的action来执行。

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

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,112评论 18 139
  • Q-Learning,学习Action对应期望值(Expected Utility)。1989年,Watkins提...
    利炳根阅读 1,292评论 1 0
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,222评论 0 17
  • 雪与春天的约会 文/我心飞翔 拉开窗帘 满眼的洁白 一场 与春天 约会的雪 在静静的夜里光顾 你飘来的瞬间 我又错...
    我心飞翔XFJ阅读 341评论 8 4
  • 在知乎看到一个问题,“如何简化生活?”,高票回答是张佳伟的答案: 想谋求任何东西前,先问自己:我真想要这个东西,还...
    老杜还在阅读 255评论 0 2