首页 > 解决方案 > 神经网络可以学会充当多路复用器吗?

问题描述

假设我的输入是 A 和 B。输入大致是这样的,A = [10, 5, 30, 2] 可以在 [1,100] 和 B = [0, 1, 0, 0 范围内具有任意值] 这是一个热向量。预期输出 C = [5],即两个输入向量的点积 C = AB

同样,对于 A = [10, 5, 30, 2] 和 B = [0, 0, 1, 0],输出将为 C = [30]。

本质上,我希望神经网络充当 4 路多路复用器(https://en.wikipedia.org/wiki/Multiplexer)。

我已经实现了一个具有两个隐藏层的神经网络。虽然它适用于训练数据,但它无法泛化除此之外。

是否有一个潜在的原因表明这个问题对于神经网络来说会很困难?

标签: pythontensorflowneural-networkmultiplexing

解决方案


根据通用逼近定理,具有单个隐藏层的全连接神经网络可以“实际上”成为通用逼近器(给定一系列条件和考虑)。

更多内容:https ://en.wikipedia.org/wiki/Universal_approximation_theorem

所以,是的,网络确实可以近似一个多路复用器。你必须考虑几个因素。也许你可以尝试标准化或规范化你的输入数据(不同尺度的输入数据会扰乱网络学习过程),你可以在这里找到一些信息:

https://stats.stackexchange.com/questions/10289/whats-the-difference-between-normalization-and-standardization

另外,看看您的输入空间,您有 100^4 乘以 4 个可能的输入(大约 4 x 10^8,基于此,您必须考虑训练数据的大小,因为几千个示例不会切入,因为数据非常分散(训练样本中的示例可能与验证数据中的示例非常不同)。


推荐阅读