尤其是在kaggle竞赛中,我注意到模型的性能完全取决于特征选择/工程。虽然我可以完全理解为什么在处理更传统/较旧的ML算法时会出现这种情况,但我不明白为什么在使用深度神经网络时会出现这种情况。
引用深度学习书:
深度学习通过引入以其他更简单的表示形式表示的表示形式,解决了表示学习中的这一核心问题。深度学习使计算机可以从更简单的概念中构建复杂的概念。
因此,我一直认为,如果“信息包含在数据中”,则在足够的训练时间下,足够深,参数齐全的神经网络将获得正确的特征。
尤其是在kaggle竞赛中,我注意到模型的性能完全取决于特征选择/工程。虽然我可以完全理解为什么在处理更传统/较旧的ML算法时会出现这种情况,但我不明白为什么在使用深度神经网络时会出现这种情况。
引用深度学习书:
深度学习通过引入以其他更简单的表示形式表示的表示形式,解决了表示学习中的这一核心问题。深度学习使计算机可以从更简单的概念中构建复杂的概念。
因此,我一直认为,如果“信息包含在数据中”,则在足够的训练时间下,足够深,参数齐全的神经网络将获得正确的特征。
Answers:
如果“足够深度”的网络非常庞大,或者使模型训练过于昂贵(AWS费用加起来!),或者因为您需要在资源受限的环境中部署网络,该怎么办?
先验地知道网络的参数设置如何?找到运行良好的网络可能需要大量的实验。
如果您使用的数据对标准分析方法“不友好”,例如包含数千或数百万个位的二进制字符串,而每个序列具有不同的长度,该怎么办?
如果您对用户级数据感兴趣,但又被迫使用仅收集事务级数据的数据库怎么办?
我们希望生活在一个数据分析是“交钥匙”的世界中,但是这类解决方案通常仅在特殊情况下存在。开发深层CNN进行图像分类的工作量很大-先前的工作已将每个图像转换成固定长度的矢量。
特征工程使从业者可以将有关问题的知识直接转换为适合前馈网络的固定长度向量。特征选择可以解决包括如此多不相关特征的问题,以至于任何信号都会丢失,并且可以大大减少模型的参数数量。
这里的关键词是先验和规模。举一个简单的例子,假设您正在尝试根据照片预测一个人的年龄。借助图像和年龄的数据集,您可以训练深度学习模型来进行预测。这在客观上实际上是效率低下的,因为90%的图像是无用的,并且实际上只有与人在一起的区域才有用。特别是人的脸,身体甚至衣服。
另一方面,您可以改用预先训练好的物体检测网络来首先为人提取边界框,裁剪图像,然后将其通过网络。由于以下几个原因,此过程将大大提高模型的准确性:
1)所有网络资源(即权重)都可以专注于年龄预测的实际任务,而不是必须先找到该人。这点尤其重要,因为人的脸部具有有用的特征。否则,您需要的更好的功能可能会在前几层中丢失。从理论上讲,一个足够大的网络可以解决此问题,但效率极低。裁剪的形象也大大比原始图像更经常。尽管原始图像有大量噪点,但可以认为裁切图像中的差异与物镜高度相关。
2)可以将裁剪后的图像规格化为相同的比例。这有助于第二个网络处理缩放问题,因为在原始图像中,人们可能会靠近或远离。预先对比例尺进行归一化可以确保裁剪后的图像中充满整个裁剪后的图像的人(尽管距离较远则会像素化)。为了了解如何帮助缩放,裁剪后的物体是原始图像的宽度和高度的一半,因此要处理的像素减少了4倍,因此,应用于此图像的同一网络在每一层的接收域将是原始网络的4倍。
例如,在kaggle肺部竞赛中,最佳解决方案中的一个共同主题是对肺部图像进行某种预处理,以尽可能多地裁剪它们并隔离每个肺部的成分。这在3D图像中尤为重要,因为效果是立体的:通过删除每个尺寸的20%,您将摆脱几乎一半的像素!