美文网首页
强化学习之 Q-learning

强化学习之 Q-learning

作者: 碧影江白 | 来源:发表于2018-02-08 18:31 被阅读8427次

强化学习的作用在于通过当前的环境做出相应的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来执行。

相关文章

  • 用一个小游戏入门深度强化学习

    今天我们来用深度强化学习算法 deep Q-learning 玩 CartPole 游戏。 强化学习是机器学习的一...

  • 强化学习之Sarsa

    在强化学习中,Sarsa和Q-Learning很类似,本次内容将会基于之前所讲的Q-Learning的内容。 目录...

  • 《深入浅出机器学习》之强化学习

    机器学习中的强化学习:Q-learning学习指南 所谓强化学习就是智能系统从环境到行为映射的学习,以使奖励信号(...

  • 《深入浅出机器学习》之强化学习

    机器学习中的强化学习:Q-learning学习指南 所谓强化学习就是智能系统从环境到行为映射的学习,以使奖励信号(...

  • 2019-04-18派森学习第150天

    想要用强化学习改进派工算法。 强化学习在之前学习过一个Q-learning算法。 强化学习的基本写法和神经网络很相...

  • Proximal Policy Optimization Alg

    Introduction 目前深度强化学习主要有deep Q-learning、policy gradient m...

  • 强化学习之 Q-learning

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

  • 强化学习之Q-learning

    部分专有名词在上一篇文章有介绍,本文不作过多赘述。 目录 前言 算法思想 算法详解 算法公式 探险者寻宝藏实战(一...

  • 基于Policy的强化学习算法

    在文章基于Value的强化学习算法中,介绍了Q-learning和SARSA两种经典的强化学习算法。在本篇文章中,...

  • 2018-04-21

    【入门必备】史上最全的深度学习资源汇总,速藏! 入门 | 通过 Q-learning 深入理解强化学习 学界 | ...

网友评论

      本文标题:强化学习之 Q-learning

      本文链接:https://www.haomeiwen.com/subject/vcsazxtx.html