小编Cos*_*gan的帖子

马尔可夫决策过程:价值迭代,它是如何运作的?

我最近一直在阅读很多关于Markov Decision Processes(使用价值迭代)的内容,但我根本无法理解它们.我在互联网/书籍上找到了很多资源,但他们都使用的数学公式对我的能力来说过于复杂.

由于这是我上大学的第一年,我发现网上提供的解释和公式使用的概念/术语对我来说太复杂了,他们认为读者知道我从未听说过的某些事情. .

我想在2D网格上使用它(填充墙壁(无法实现),硬币(可取)和移动的敌人(必须不惜一切代价避免)).整个目标是收集所有硬币而不触及敌人,我想使用马尔可夫决策过程(MDP)为主要玩家创建AI .以下是它的部分外观(请注意,与游戏相关的方面在这里并不是很重要.我只是想了解一般的MDP):

在此输入图像描述

根据我的理解,MDP的粗略简化是它们可以创建一个网格,它保持我们需要去的方向(指向我们需要去的地方的"箭头"网格的类型,从网格上的某个位置开始)达到某些目标并避免某些障碍.具体到我的情况,这意味着它允许玩家知道去哪个方向收集硬币并避开敌人.

现在,使用MDP术语,这意味着它创建了一个状态集合(网格),它保存某个特定状态的某些策略(要采取的操作 - >上,下,右,左)(网格上的一个位置) ).这些政策由每个州的"效用"值决定,这些价值本身是通过评估在短期和长期内获得多少益处来计算的.

它是否正确?还是我完全走错了路?

我至少想知道以下等式中的变量在我的情况中代表什么:

U_ {i + 1}(s)\ longleftarrow R(s)+\gamma\max\sum\limits_ {s'} T(s,a,s')U_i(s')\,.

(取自Russell&Norvig的"人工智能 - 现代方法"一书)

我知道这s将是网格中所有方块的列表,a将是一个特定的动作(上/下/右/左),但其余的呢?

如何实施奖励和效用函数?

如果有人知道一个简单的链接,显示伪代码以非常慢的方式实现与我的情况相似的基本版本,那将是非常好的,因为我甚至不知道从哪里开始.

谢谢你宝贵的时间.

(注意:随意添加/删除标签或在评论中告诉我是否应该提供有关某些内容或类似内容的更多详细信息.)

language-agnostic algorithm artificial-intelligence markov

40
推荐指数
3
解决办法
3万
查看次数

强化学习的良好实施?

对于一个ai级项目,我需要实现一个强化学习算法,该算法击败了一个简单的俄罗斯方块游戏.游戏是用Java编写的,我们有源代码.我知道强化学习理论的基础知识,但是想知道SO社区中是否有人亲身体验过这类事情.

  1. 对于在俄罗斯方块游戏中实施强化学习,您的推荐读数是什么?
  2. 是否有任何良好的开源项目可以完成类似的事情,值得一试?

编辑:越具体越好,但欢迎关于该主题的一般资源.

跟进:

我觉得如果我发布一个后续内容会很好.

这是我为任何未来的学生最终得到的解决方案(代码和写作):).

/代码

language-agnostic artificial-intelligence machine-learning reinforcement-learning

22
推荐指数
1
解决办法
5770
查看次数

Flask-RESTful 如何添加资源并传递非全局数据

此处发布的Flask-RESTful示例应用程序中,集合是一个全局变量。TODOS

Todo 资源注册后:

api.add_resource(Todo, '/todos/<string:todo_id>')
Run Code Online (Sandbox Code Playgroud)

这些方法在处理 Web 请求时Todo访问全局变量。TODOS

相反,我想在类中实例化 API 并传递一个TODOS作为类变量而不是全局变量的集合。

使用Flask-RESTful时,允许Resource类中的方法在不使用全局变量的情况下访问调用类提供的变量的正确方法是什么?

python flask

8
推荐指数
2
解决办法
1万
查看次数

Theano教程中的澄清

我正在阅读Theano文档主页上提供的本教程

我不确定梯度下降部分给出的代码.

在此输入图像描述

我对for循环有疑问.

如果将' param_update '变量初始化为零.

param_update = theano.shared(param.get_value()*0., broadcastable=param.broadcastable)
Run Code Online (Sandbox Code Playgroud)

然后在剩下的两行中更新其值.

updates.append((param, param - learning_rate*param_update))
updates.append((param_update, momentum*param_update + (1. - momentum)*T.grad(cost, param)))
Run Code Online (Sandbox Code Playgroud)

我们为什么需要它?

我想我在这里弄错了.你们能帮助我吗!

python numpy gradient-descent theano deep-learning

7
推荐指数
1
解决办法
3472
查看次数

Theano元素明智的最大值

我试图找到s=max(ele, 0)在theano中的矩阵上找到元素的价值 .我对theano没有多少经验.

到目前为止我有

x = theano.tensor.dmatrix('x')
s = (x + abs(x)) / 2  # poor man's trick
linmax = function([x], s)
Run Code Online (Sandbox Code Playgroud)

这有效,但不漂亮,我认为我应该可以使用theano.tensor.maximum它.

在matlab中,为了做我想做的事,我会写 linmax=@(x) max (x, zeros (size (x)))

python numpy theano

5
推荐指数
1
解决办法
3374
查看次数

使用 gcc 在 Linux 上运行线程构建块 (Intel TBB)

我正在尝试为线程构建块构建一些测试。不幸的是,我无法配置 tbb 库。链接器找不到库 tbb。我试过在 bin 目录中运行脚本,但没有帮助。我什至尝试将库文件移动到 /usr/local/lib/ ,这又失败了。任何的意见都将会有帮助。

c c++ multithreading tbb c++11

4
推荐指数
2
解决办法
5025
查看次数

线程构建块(TBB)使用lambda排队任务

TBB的文档提供了这个例子中使用与parallel_for时lambda表达式,但不提供使用与lambda表达式的例子tbb::task::enqueue.

我正在寻找一个tbb::task::enqueue使用lambda表达式的简单示例.

c++ lambda multithreading tbb c++11

2
推荐指数
1
解决办法
1041
查看次数