从零使用强化学习训练AI玩儿游戏(3)——使用Q-learning

        本文目前主要是写给自己的一个笔记,接下来这段时间会逐步记录我是怎么通过学习使用TensorFlow+Keras训练神经网络自己玩儿游戏,如果能间接帮助到他人就最好不过了,不喜勿喷。

        上一篇我们已经找到了需要输入神经网络的数据(也就是observation 是GYM提供的代表一定意义的数,每个游戏不同),和神经网络需要输出的值(也就是action 需要控制游戏的值

        这一篇我们就来看看怎么样写一个强化学习的简单算法Q-Learn,并且运用到之前的最简单的游戏中。

        在这里找到一个莫烦大神优酷的视频集锦,上面不止讲了Keras,还讲了各种关于机器学习的视频,简单易懂,非常有帮助!

        看了一个DQN的视频,非常简短有力的介绍了我们需要怎么样搭建一个神经网络来玩游戏。

        接下来开始用Q-learning来写程序,如图所示是Q-learning算法的伪码。


import numpy as np
import pandas as pd
import time

np.random.seed(2)  # reproducible

N_STATES = 6   # the length of the 1 dimensional world
ACTIONS = ['left', 'right']     # available actions
EPSILON = 0.9   # greedy police
ALPHA = 0.1     # learning rate
GAMMA = 0.9    # discount factor
MAX_EPISODES = 13   # maximum episodes
FRESH_TIME = 0.3    # fresh time for one move


def build_q_table(n_states, actions):
    table = pd.DataFrame(
        np.zeros((n_states, len(actions))),     # q_table initial values
        columns=actions,    # actions's name
    )
    # print(table)    # show table
    return table


def choose_action(state, q_table):
    # This is how to choose an action
    state_actions = q_table.iloc[state, :]
    if (np.random.uniform() > EPSILON) or ((state_actions == 0).all()):  # act non-greedy or state-action have no value
        action_name = np.random.choice(ACTIONS)
    else:   # act gr
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值