Q-Learning值过高

时间:2016-05-30 11:24:36

标签: go floating-point reinforcement-learning q-learning

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

以下是我如何在m,n,k游戏环境中实施解决方案: 在每个给定时间t,代理持有最后一个状态动作(s, a)以及获得的奖励;代理根据Epsilon-greedy政策选择移动a'并计算奖励r,然后继续更新Q(s, a)的值t-1

func (agent *RLAgent) learn(reward float64) {
    var mState = marshallState(agent.prevState, agent.id)
    var oldVal = agent.values[mState]

    agent.values[mState] = oldVal + (agent.LearningRate *
        (agent.prevScore + (agent.DiscountFactor * reward) - oldVal))
}

注意:

  • agent.prevState在采取行动之后并且在环境响应之前(即在代理人移动并且在其他玩家移动之前)之后立即保持先前状态我使用该状态代替状态-action元组,但我不确定这是否是正确的方法
  • agent.prevScore持有以前的州行动奖励
  • reward参数代表当前步骤的状态操作(Qmax)的奖励

使用agent.LearningRate = 0.2agent.DiscountFactor = 0.8,由于状态操作值溢出,代理无法达到100K集。 我正在使用golang的float64(标准IEEE 754-1985双精度浮点变量),它在±1.80×10^308左右溢出并产生±Infiniti。我说的那个价值太大了!

这是一个模型的状态,其学习率为0.02,折扣因子为0.08,通过2M集(自己有1M场比赛):

Reinforcement learning model report
Iterations: 2000000
Learned states: 4973
Maximum value: 88781786878142287058992045692178302709335321375413536179603017129368394119653322992958428880260210391115335655910912645569618040471973513955473468092393367618971462560382976.000000
Minimum value: 0.000000

奖励功能返回:

  • 代理赢了:1
  • 代理人丢失:-1
  • 画:0
  • 游戏继续:0.5

但是你可以看到最小值为零,最大值太高。

值得一提的是,通过更简单的学习方法,我在python脚本中找到的工作非常精细,感觉实际上更加智能!当我玩它时,大部分时间结果都是平局(如果我不经意地玩,它甚至会赢),而使用标准的Q-Learning方法,我甚至不能让它获胜!

agent.values[mState] = oldVal + (agent.LearningRate * (reward - agent.prevScore))

有关如何解决此问题的任何想法? Q-Learning中这种状态 - 行为值是否正常?!

更新 在阅读了Pablo的答案以及Nick为此问题提供的轻微但重要的编辑后,我意识到问题是prevScore包含上一步的Q值(等于oldVal)而不是上一步的奖励(在本例中,-1,0,0.5或1)。

在更改之后,代理现在正常运行,在2M集之后,模型的状态如下:

Reinforcement learning model report
Iterations: 2000000
Learned states: 5477
Maximum value: 1.090465
Minimum value: -0.554718
在与代理商的5场比赛中,我有2场胜利(经纪人没有认出我连续有两块石头)和3场平局。

2 个答案:

答案 0 :(得分:2)

奖励功能可能是问题所在。强化学习方法试图最大化预期总奖励;它对游戏中的每一个步骤都有积极的回报,因此最佳策略是尽可能长时间玩!定义值函数的q值(在一个状态下采取行动然后表现最佳的预期总奖励)正在增长,因为正确的期望是无限的。为了激励胜利,你应该每次都有负面的奖励(有点像告诉代理人快点赢了)。

参见强化学习中的目标和奖励:简介,以更深入地了解奖励信号的目的和定义。你面临的问题实际上是书中的练习3.5。

答案 1 :(得分:1)

如果我理解得很好,在您的Q学习更新规则中,您正在使用当前奖励和之前的奖励。但是,Q学习规则仅使用一个奖励(x是州,u是行动): enter image description here

另一方面,您假设当前奖励与Qmax值相同,这是不正确的。所以你可能误解了Q学习算法。