如何告诉神经网络:“你的第 i 个输入是特殊的”

人工智能 深度学习 张量流 喀拉斯 前馈神经网络
2021-10-28 03:11:41

假设我有一个完全连接的网络,它接收一个包含1025元素的向量。第一个1024元素与大小的输入图像有关32 x 32 x 1,vector( 1025-th element) 中的最后一个元素是一个控制位,我称之为特殊输入

当该位为zero时,网络应预测图像中是否存在a cat,当该位为 时,网络应预测图像中one是否存在a dog

那么我如何告诉网络你1025-th element应该对你特别,你应该更加关注它呢?

请注意,这只是一个示例,实际问题比这更复杂。所以请不要通过使用这个例子的特殊技巧来绕过这个问题的目标。任何想法都值得赞赏。

2个回答

深度学习的主要好处是您不必手动设计功能。

经典机器学习算法总是包括特征工程步骤,而神经网络能够在学习过程中自动提取特征。典型的例子是 CNN。在第一层,它创建表示线条的简单特征,最后一层表示抽象特征。当然,有些任务确实需要特征工程(例如信号处理)。

在您的情况下,如果您想利用 CNN 网络,您还可以为标志添加一个额外的输入层(例如,作为 one-hot 向量)。这是取自此答案的插图。

在此处输入图像描述

假设图像可以包含类对象C1Cc. 假设一组附加输入具有问题的含义,如“包含 C_i 或 C_j 或 ...?”的图像。

该系统的主要问题是将图像分类Ci. 第二个问题是回答剩余输入提出的隐含问题。

因此,最好结合两个 NN:

  • 第一个是对象识别器,输入图像数据。
  • 第二个神经网络将回答隐含在剩余位中的问题,输入前一个神经网络的输出和“问题”位。

具体以问题描述的示例为例:

  • 一个神经网络,用于从 32x32 图像中对狗/猫进行分类。狗和猫的概率的两个输出。或者只是一个二进制输出0:“是一只狗”,1:“是一只猫”。
  • 第二个 NN 具有“1025”二进制输入(0:“寻找狗”,1:“寻找猫”)并从前一个输出。在这种情况下,如果一切正常,它会推断出逻辑“a==b”:“是一只狗”和“找狗”或“是一只猫”和“找猫”。

请注意,如果您尝试使用具有所有输入(示例中为 1025)的全连接 NN 直接解决问题,您将失去使用 CNN 和最大池层等的可能性。此外,拆分减少了训练时间,加入主题“以指数方式”增加它们。不是一个有前途的方法。