为什么神经网络需要特征选择/工程?

机器算法验证 神经网络 深度学习 特征选择 特征工程
2022-02-02 18:54:04

特别是在 kaggle 比赛的背景下,我注意到模型的性能完全取决于特征选择/工程。虽然我可以完全理解为什么在处理更传统/老式的 ML 算法时会出现这种情况,但我不明白为什么在使用深度神经网络时会出现这种情况。

引用深度学习的书:

深度学习通过引入用其他更简单的表示表示的表示来解决表示学习中的这个核心问题。深度学习使计算机能够从简单的概念中构建复杂的概念。

因此,我一直认为,如果“信息存在于数据中”,那么一个足够深、参数化良好的神经网络会在足够的训练时间下获得正确的特征。

3个回答
  • 如果“足够深”的网络非常庞大,或者使模型训练过于昂贵(AWS 费用加起来!),或者因为您需要在资源受限的环境中部署网络,该怎么办?

  • 你怎么能先验地知道网络参数化得很好?找到一个运行良好的网络可能需要大量的实验。

  • 如果您使用的数据对标准分析方法不“友好”,例如包含数千或数百万位的二进制字符串,其中每个序列具有不同的长度,该怎么办?

  • 如果您对用户级数据感兴趣,但您被迫使用只收集事务级数据的数据库怎么办?

  • 假设你的数据是等整数的形式,而你的任务是预测数字的总和,那么这个例子中的目标是将每个数字解析为数组然后对数组求和(“特征工程”)非常简单,但在其他方面具有挑战性。12,32,486,73,5,18,7

我们希望生活在一个数据分析是“交钥匙”的世界中,但这类解决方案通常只存在于特殊情况下。许多工作都在开发用于图像分类的深度 CNN - 之前的工作有一个步骤,将每个图像转换为一个固定长度的向量。

特征工程让从业者直接将有关问题的知识转换为适合前馈网络的固定长度向量。特征选择可以解决包含太多不相关特征而导致任何信号丢失的问题,并且可以显着减少模型的参数数量。

这里的关键词是先验规模举个简单的例子,假设你正试图从一张照片中预测一个人的年龄。使用图像和年龄数据集,您可以训练深度学习模型来进行预测。这在客观上是非常低效的,因为 90% 的图像是无用的,只有人的区域才是真正有用的。特别是人的脸,他们的身体,也许还有他们的衣服。

另一方面,您可以改为使用预先训练的对象检测网络来首先提取人的边界框,裁剪图像,然后将其传递给网络。由于以下几个原因,此过程将显着提高模型的准确性:

1)所有的网络资源(即权重)都可以专注于年龄预测的实际任务,而不是必须先找到人。这一点尤其重要,因为人的面部包含有用的特征。否则,您需要的更精细的功能可能会在前几层中丢失。从理论上讲,一个足够大的网络可能会解决这个问题,但它的效率会非常低。裁剪后的图像也原始图像更规则。虽然原始图像有大量噪声,但可以说裁剪图像中的差异与目标高度相关。

2)裁剪后的图像可以归一化为具有相同的比例这有助于第二个网络处理缩放问题,因为在原始图像中,人可以出现在附近或远处。预先对比例进行归一化可以确保裁剪后的图像中有一个人可以填充整个裁剪后的图像(尽管如果他们离得很远,则会被像素化)。为了了解这如何帮助缩放,一个宽度和高度为原始图像一半的裁剪后的身体需要处理的像素要少 4 倍,因此应用于该图像的相同网络在每一层的感受野将是原始网络的 4 倍。

例如,在 kaggle 肺部比赛中,最佳解决方案的一个共同主题是对肺部图像进行某种预处理,尽可能地裁剪它们并隔离每个肺部的成分。这在 3D 图像中尤为重要,因为效果是立方的:通过删除每个维度的 20%,您可以去除近一半的像素!

我对这种现象的直觉与要学习的模型的复杂性有关。理论上,深度神经网络确实可以逼近任何函数,但是参数空间的维数可以非常大,比如以百万计。所以,实际上找到一个好的神经网络真的很困难。我喜欢将特征工程视为算法的先行者,为它提供一些关于数据表示的额外信息,这在某种意义上已经足够好了。当然,这不是一个正式的解释,这个问题可能真的很难用科学的严谨性来回答。

其它你可能感兴趣的问题