首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Q深度学习算法不起作用

Q深度学习算法不起作用
EN

Stack Overflow用户
提问于 2016-12-09 16:28:09
回答 1查看 382关注 0票数 2

我一直在尝试实现一个Q深度学习算法,虽然有一个问题,但它不起作用,在玩了10万次游戏并使用1000次迭代来训练每一步之后(尽管我已经尝试了更低的数字),它仍然不是学习。网络和游戏在链接的图像中,http://imgur.com/a/hATfB是在每个训练步骤中发生的事情:

代码语言:javascript
复制
double maxQval;
double[] inputvec;
int MaxQ = GetRandDir(state, out maxQval, out inputvec);//input vec is board
double[] QtarVec = new double[] { 0, 0, 0, 0 };
double r = GetR((int)state[0], (int)state[1]); // GetR is reward
QtarVec[MaxQ] = Qtar(r, maxQval); // backprop vector of 0's except Qtar replaces a value

associator.Train(50, new double[][] { inputvec }, new double[][] { QtarVec });​

backprop的训练数据对是(输入I链接在图像中,QTarget =r+γ* MaxQ),MaxQ是最大网络输出层激活或随机激活(epsilon greedy)。R是从每次移动中获得的奖励,障碍为-10,目标为10。(尽管我只尝试了10个目标,其他所有的都是0。这是训练代码。

代码语言:javascript
复制
public void Train(int nTrails)
{
    double[] state = new double[] { 1, 1 }; // inital position
    int its = 0;
    for (int i = 0; i < nTrails; i++)
    {
        while (((state[0] < 4) && (state[1] < 4))&&((state[0] * 100 >0) && (state[1] * 100 >0)) && (state[0] != 3 && state[1] != 3))//while on board and not at goal     postion
        {
            double temp = r.NextDouble();
            int next = -1;
            lines.Add(new Vector2((float)(state[0] * 100), (float)(state[1] * 100)));
            if (temp < epsilon)
            {
                next = TrainRandIt(state); // move random direction, backprop
            }
            else
            {
                next = TrainMaxIt(state); // move in max activation direction, backprop
            }
            if (next == 0) .//updating postion
            {
                state[0]++;
            }
            else if (next == 1)
            {
                state[0]--;
            }
            else if (next == 2)
            {
                state[1]++;
            }
            else if (next == 3)
            {
                state[1]--;
            }
        }
    }
    state[0] = 1;
    state[1] = 1; // resetting game

}

感谢您的帮助。

EN

回答 1

Stack Overflow用户

发布于 2017-04-18 15:18:13

从您提供的链接图像来看,它就像是一个迷宫游戏,其中有玩家位置的输入和玩家应该移动到的方向(上、下、左或右)的输出。

这里有一个机器学习引擎,它能够准确地解决这一问题,甚至更多问题-- Ryskamp Learning Machine。与您到目前为止可能尝试过的典型机器学习引擎相比,RLM有一种不同的方法,所以我建议您转到我提供的链接,了解更多关于它的信息以及它的不同之处。

它是用C#编写的,我们有一个迷宫游戏的例子,就像你正在尝试的那个一样,你可以通过我们的Github page浏览,甚至可以通过克隆/下载源代码和提供的示例应用程序来亲自尝试。

有关文档,您可以参考提供的Documentations files,甚至可以通过github wiki获取文档。

RLM也可以通过Nuget获得。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41056103

复制
相关文章

相似问题

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