Q-Learning值太高 [英] Q-Learning values get too high

查看:206
本文介绍了Q-Learning值太高的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

最近我尝试在Golang中实现一个基本的Q-Learning算法。请注意,我是一般的钢筋学习和人工智能的新手,所以错误可能是我的。



以下是我如何实现m,n, K游戏环境:
在每个给定时间 t ,代理保存最后的状态动作(s,a)和获得的奖励;该代理根据Epsilon-greedy策略选择一个移动 a'并计算奖励 r ,然后继续更新时间 t-1
$ b的值 Q(s,a) $ b

  FUNC(剂* RLAgent)学会(奖励float64){
变种mState = marshallState(agent.prevState,agent.id)
变种OLDVAL = agent.values [mState]

agent.values [mState] = OLDVAL +(agent.LearningRate *
(agent.prevScore +(agent.DiscountFactor *奖励) - OLDVAL))







$ ul

  • agent.prevState 在采取行动之后以及在环境响应之前(即在代理人移动之后,在另一个玩家做出移动)我使用它来代替状态动作元组,但是我不太确定这是否正确的方法
  • agent.prevScore 对以前的状态行动持有奖励
    奖励参数代表当前步骤的状态动作( Qmax


    agent.LearningRate = 0.2 agent.DiscountFactor = 0.8 我正在使用golang的 float64 (标准IEEE 754-1985双精度浮点变量),它在±1.80×10 ^ 308 并产生±英菲尼迪。这个值太大了我会说!

    以下是学习率为 0.02 以及通过2M集(本身1M游戏)获得的 0.08 的折扣因子:

     强化学习模型报告
    迭代:2000000
    得知状态:4973
    最大值:88781786878142287058992045692178302709335321375413536179603017129368394119653322992958428880260210391115335655910912645569618040471973513955473468092393367618971462560382976.000000
    最小值:0.000000


    奖励函数返回:

  • 查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆