我尝试使用本文https://arxiv.org/abs/1712.01815中描述的方法来使算法学习新游戏。
只有一个问题不直接适合这种方法。我正在努力学习的游戏没有固定的电路板尺寸。因此,目前输入张量具有尺寸m*n*11
,其中m和n是游戏板的尺寸,并且每次玩游戏时都可以变化。首先,我需要一个能够利用这种不同输入大小的神经网络。
输出的大小也是电路板尺寸的函数,因为它有一个矢量,其中包含电路板上每个可能移动的条目,因此如果电路板尺寸增加,输出矢量将更大。
我已经阅读过关于循环和递归神经网络但它们似乎都与NLP有关,而且我不确定如何将其转换为我的问题。
任何有关能够处理我案件的NN架构的想法都会受到欢迎。
答案 0 :(得分:4)
您需要的是指针网络(https://arxiv.org/abs/1506.03134)
以下是关于该帖子的引言:
指针网络是一种新的神经体系结构,可学习指向输入序列中位置的指针。这是新的,因为现有技术需要具有固定数量的目标类别,而这通常是不适用的,请考虑“旅行推销员问题”,其中类别数等于输入数。另一个示例是对大小可变的序列进行排序。 -https://finbarr.ca/pointer-networks/
它是一个基于注意力的模型。
基本上,指针网络用于预测返回到输入的指针,这意味着您的输出层实际上不是固定的,而是可变的。
我使用它们的一个用例是将原始文本转换为SQL查询。
诸如此类的原始文本的问题是,仅对特定表有意义(在这种情况下,汽车表在汽车销售方面具有一组变量,类似于您的棋盘游戏不同的棋盘)。意思是,如果问题不能成为唯一输入。因此,实际上进入指针网络的输入是-
的组合输入-
所有这些都附加到一起。
然后,输出层简单地指向输入的特定索引。它指向国家和年份(从元数据中的列名),指向美国和1983(从类别列的词汇中的标记),从输入的SQL语法组件中指向SELECT,WHERE等。
然后,将这些索引在附加索引中的顺序用作计算图的输出,并使用作为WIKISQL数据集存在的训练数据集对其进行优化。
您的情况非常相似,您需要将输入,游戏的元数据以及所需的内容作为附加索引传递到输出中。然后,指针网络仅从输入(指向它们的输入)中进行选择。
答案 1 :(得分:0)
您需要回到固定的输入/输出问题。
在应用于图像/时间序列时解决此问题的常用方法是使用滑动窗口缩小尺寸。也许这可以应用到你的游戏中。
答案 2 :(得分:0)
完全卷积神经网络能够做到这一点。卷积层的参数是卷积核。卷积内核不太在乎输入大小(是的,在步幅,填充输入和内核大小方面存在某些限制)。
典型的用例是一些卷积层,然后是最大池化,并一次又一次地重复,直到过滤器变平并连接到致密层的某个点。密集层是一个问题,因为他希望输入的大小固定。如果还有另一个conv2图层,您的输出将是另一个具有适当大小的要素图。
此类网络的示例可以是YOLOv3。例如,如果以图像416x416x3进行输入,则输出可以是例如13x13x的过滤器数量(我知道YOLOv3具有更多的输出层,但由于简单起见,我将只讨论其中之一)。如果为YOLOv3提供256x256x3图像,则输出将为特征图6x6x过滤器数量。
因此,网络不会崩溃并不会产生结果。效果会好吗?我不知道,也许是,也许不是。我从来没有以这种方式使用它,我总是将图像调整为推荐的尺寸或重新训练网络。