我使用Java中的DL4J创建了一个前馈神经网络。
假设为了简化问题,这个神经网络是一个用于区分正方形和圆形的二元分类器。
输入是一个特征向量,由5个不同的变量组成,例如:
[number_of_corners,number_of_edges,area,height,width]
到目前为止,我的二元分类器在给定完整特征向量的情况下,能够很好地区分这两种形状。
我的问题是:是否可以只输入其中的2到3个特征?甚至是1个?我明白这样做会导致结果的准确性降低,我只是需要知道是否可以这样做。
如果可以,如何实现?
如果输入向量有213个不同的特征,我该如何操作?
回答:
假设你知道area
、height
和width
这三个特征(所以你不知道number_of_corners
和number_of_edges
这两个特征)。
如果你知道一个形状最多可以有10个角和10条边,你可以输入10个特征向量,这些向量具有相同的面积、高度和宽度,但每个向量在number_of_corners
和number_of_edges
特征上具有不同的值。然后,你可以对网络的10个输出进行平均,并四舍五入到最接近的整数(这样你仍然可以得到一个二元值)。
同样,如果你只知道area
特征,你可以对网络的输出进行平均,这些输出是基于多个随机组合的输入值,其中唯一固定的值是area
,而其他所有特征的值都是随机变化的。(即,每个向量的area
特征相同,但其他所有特征的值都是随机的。)
这可能是一种“技巧”,但我认为随着(几乎)随机向量的数量增加,平均值会趋向于一个值。
编辑
如果特征很多,我的解决方案可能不是一个好的选择。在这种情况下,你可以尝试使用深度信念网络或某种自编码器来推断给定少量特征时其他特征的值。例如,深度信念网络可以“重建”一个噪声输出(当然,前提是你对其进行了足够的训练);然后,你可以尝试将重建后的输入向量提供给你的前馈网络。