首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用强化学习选择最接近源头的点

用强化学习选择最接近源头的点
EN

Stack Overflow用户
提问于 2017-04-13 01:19:14
回答 1查看 76关注 0票数 2

我试图使用强化学习选择最近的点从给定的一组点反复,直到一个复杂的(和无关的)结束条件到达。(这是我主要问题的简化。)

将包含可能点的二维阵列传递给强化学习算法,该算法可以选择它认为最理想的点。

代码语言:javascript
复制
A [1,  10]
B [100, 0]
C [30, 30]
D [5,   7]
E [20, 50]

在这种情况下,D将是真正的最佳选择。(理想情况下,该算法应该输出3,从范围04。)

然而,每当我训练算法时,它似乎并不知道“概念”是什么,而只是选择,比方说,C通常是最好的选择,所以它应该总是这样选择。

代码语言:javascript
复制
import numpy as np
import rl.core as krl


class FindOriginEnv(krl.Env):

    def observe(self):
        return np.array([
            [np.random.randint(100), np.random.randint(100)] for _ in range(5)
        ])

    def step(self, action):

        observation = self.observe()

        done = np.random.rand() < 0.01  # eventually

        reward = 1 if done else 0

        return observation, reward, done, {}

    # ...

我应该如何修改我的算法,这样它才能真正了解它想要达到的目标呢?

  • 观察形状?
  • 奖励功能?
  • 行动选择?

Keras代码将受到赞赏,但并不是必需的;纯粹的算法解释也会非常有用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-14 06:32:43

从您的描述中勾勒出MDP,有几个问题:

  • 您的观察函数似乎返回5点,这意味着状态可以是0,99中的10个整数的任意配置。这是100^10种可能的状态!你的状态空间需要小得多。正如所写的,observe似乎正在生成可能的操作,而不是状态观察。
  • 您建议您从0,4中选择操作,其中每个操作本质上都是对代理可用的一系列点的索引。这个动作空间的定义并不能给代理提供足够的信息来区分您想要的内容(更小的震级点更好),因为您只根据点的索引来操作!如果您想稍微调整一下公式以使其工作,您将定义一个操作来选择一个2D点,每个维度在0,99中。这意味着您将有100^2可能的操作,但是为了维护多选择方面,您将限制代理在给定步骤(5个可能的操作)中根据当前状态在子集中进行选择。
  • 最后,在终止之前提供零报酬的奖励函数意味着允许大量可能的最优策略。本质上,任何终止的政策,无论花费多长时间,都是最优的!如果你想要鼓励那些迅速终止的政策,你应该在每一步中用一个小小的负面奖励来惩罚代理人。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43382046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档