首页 文章

如何创建具有动态输入的神经网络?

提问于
浏览
2

这个问题很难: How can I feed a neural network, a dynamic input?

回答这个问题肯定有助于现代人工智能的发展,使用深度学习计算机视觉和语音识别以外的应用 . 我将进一步为神经网络上的外行人解释这个问题 .

Let's take this simple example for instance:

假设你需要知道在“tic-tac-toe”游戏中获胜,失败或吸引的可能性 .

所以我的 input 可能是一个代表状态的[3,3]矩阵(1-You,2-Enemy,0-Empty):

[2. 1. 0.]  
[0. 1. 0.] 
[2. 2. 1.]

假设我们已经有一个 previously trained hidden layer ,一个[3,1]权重矩阵:

[1.5]  
[0.5]  
[2.5]

因此,如果我们使用一个简单的激活函数,它基本上由两个 y(x)=W*x 之间的矩阵相乘,我们在 output 中得到这个[3,1]矩阵:

[2. 1. 0.]     [1.5]     [3.5]
[0. 1. 0.]  *  [0.5]  =  [0.5]
[2. 2. 1.]     [2.5]     [6.5]

即使没有softmax功能,你也可以看出最高的概率就是平局 .

But what if I want this same neural network to work for a 5x5 game of tic-tac-toe?

它具有与3x3相同的逻辑,它只是更大 . 神经网络 should 能够处理它

我们会有类似的东西:

[2. 1. 0. 2. 0.]
[0. 2. 0. 1. 1.]     [1.5]     [?]
[2. 1. 0. 0. 1.]  *  [0.5]  =  [?]                           IMPOSSIBLE
[0. 0. 2. 2. 1.]     [2.5]     [?]
[2. 1. 0. 2. 0.]

但这个乘法将是 impossible to compute . 我们必须 add more layers and/or change our previously trained oneRETRAIN 它,因为未经训练的权重(在这种情况下用0初始化)会导致神经网络失败,如下所示:

input            1st Layer        output1
[2. 1. 0. 2. 0.]     [0.  0. 0.]     [6.5 0. 0.]
[0. 2. 0. 1. 1.]     [1.5 0. 0.]     [5.5 0. 0.]
[2. 1. 0. 0. 1.]  *  [0.5 0. 0.]  =  [1.5 0. 0.]
[0. 0. 2. 2. 1.]     [2.5 0. 0.]     [6.  0. 0.]
[2. 1. 0. 2. 0.]     [0.  0. 0.]     [6.5 0. 0.]

   2nd Layer           output1      final output
                     [6.5 0. 0.]
                     [5.5 0. 0.]
[0. 0. 0. 0. 0.]  *  [1.5 0. 0.]  =  [0. 0. 0.]                POSSIBLE
                     [6.  0. 0.]
                     [6.5 0. 0.]

因为我们扩展了第一层并添加了一个零重量的新层,我们的 result is obviously inconclusive . 如果我们应用softmax函数,我们将意识到神经网络对于每个可能的结果返回33.3%的几率 . We would need to train it again .

显然我们想要创建能够适应不同输入大小的通用神经网络,但是我还没有想到解决这个问题的方法!所以我想也许stackoverflow可以帮助 . 成千上万的人比一个人更好 . Any ideas?

1 回答

  • 0

    除了将输入调整为固定大小之外,还有卷积神经网络的解决方案 .

    Spatial Pyramid Pooling允许您训练和测试具有可变大小图像的CNN,并且它通过引入动态池层来实现,其中输入可以是任何大小,并且输出具有固定大小,然后可以完全馈送到连接层 .

    汇集非常简单,在每个维度(例如7x7)中定义了多个区域,然后图层在非重叠的7x7区域中拆分每个要素图,并在每个区域上进行最大池化,输出49个元素向量 . 这也可以在多个尺度上应用 .

相关问题