如何以前进的方式训练神经网络并以后向方式使用它

时间:2017-09-05 10:43:22

标签: machine-learning neural-network

我有一个神经网络,输入层有10个节点,一些隐藏层和一个只有一个节点的输出层。然后我在输入层中放置一个模式,经过一些处理后,它输出输出神经元中的值,该值是从110的数字。在训练之后,这个模型能够获得输出,提供输入模式。

现在,我的问题是,如果可以计算逆模型:这意味着,我从输出端提供一个数字(即使用输出端作为输入),然后从那些{{1获取随机模式输入神经元(即使用输入作为输出端)。

我想这样做是因为我将首先根据模式的难度训练网络(输入是模式,输出很难理解模式)。然后我想用一个数字为网络提供数据,以便根据难度创建随机模式。

1 个答案:

答案 0 :(得分:2)

我希望我能正确理解你的问题,所以我会用自己的语言总结一下:你有一个给定的模型,并想确定产生给定输出的输入。

假设这是正确的,至少有一种我所知道的方式,你如何做到这一点。这种方式很容易实现,但可能需要一段时间来计算一个值 - 可能有更好的方法来做到这一点,但我不确定。 (几周前我在强化学习的主题中需要这种技术,并且与此相比没有找到更好的方法):让我们假设您的模型将输入映射到输出{{ 3}}。我们现在必须创建一个新模型,我们将调用:此模型稍后将计算模型的反函数,以便它为您提供产生特定输出的输入。要构建,我们将创建一个新模型,该模型由一个普通Dense图层组成,该图层具有与输入相同的维度m。此图层现在将连接到模型的输入。接下来,你使的所有权重都不可训练(这非常重要!)。

现在我们设置为已经找到一个反向值:假设您想要找到输出y对应的输入(这里相应的意思是:它创建输出,但不是唯一的)。您必须创建一个新的输入向量v,它是的统一。然后创建一个由(v, y)组成的输入输出数据对。现在,您使用任何希望让输入 - 输出 - 训练数据通过网络传播的优化器,直到误差收敛到零。一旦发生这种情况,您可以计算实际输入,通过这样做得出输出y:假设,如果新输入层被调用为w,则偏差为{{1} }},所需的输入bu(其中u = w*1 + b ) 你可能会问这个等式的原因,所以让我试着回答一下:你的模型将尝试学习新输入层的权重,这样作为输入的统一将创建给定的输出。由于只有新添加的输入图层是可训练的,因此只会更改此权重。因此,该向量中的每个权重将表示所需输入向量的对应分量。通过使用优化器并最小化所需输出与反模型的输出之间的1距离,我们将最终确定一组权重,这将为您提供良好的输入近似值向量。