到目前为止,在计算机视觉或自然语言处理中有许多有趣的深度学习应用。
在其他更传统的领域中情况如何?例如,我有传统的社会人口统计学变量以及可能的大量实验室测量结果,并且希望预测某种疾病。如果我有很多观察,这将是深度学习应用程序吗?我认为如何在这里构建网络,我认为所有花哨的层(卷积层等)都没有必要?只是使它更深?
在我的特定数据集上,我尝试了一些常见的机器学习算法,例如随机森林,gbm等,但在准确性方面存在混合结果。我在图像识别方面的深度学习经验有限。
到目前为止,在计算机视觉或自然语言处理中有许多有趣的深度学习应用。
在其他更传统的领域中情况如何?例如,我有传统的社会人口统计学变量以及可能的大量实验室测量结果,并且希望预测某种疾病。如果我有很多观察,这将是深度学习应用程序吗?我认为如何在这里构建网络,我认为所有花哨的层(卷积层等)都没有必要?只是使它更深?
在我的特定数据集上,我尝试了一些常见的机器学习算法,例如随机森林,gbm等,但在准确性方面存在混合结果。我在图像识别方面的深度学习经验有限。
Answers:
是的,您可以使用深度学习技术来处理非图像数据。但是,在信号处理和相关任务之外,其他模型类与神经网络的竞争仍然非常激烈。
要对非信号/非序列数据使用深度学习方法,通常使用简单的前馈多层网络。不需要卷积层或池化层。最好的架构需要通过交叉验证来探索,并且发现很耗时,因为深度NN需要大量的计算才能进行训练。
以我的经验,尝试在Kaggle比赛中使用较深的(-ish,通常〜5层)神经网络:
辍学对于正则化和提高准确性仍然非常有效
输入归一化-通常表示0,标准偏差1,非常重要
隐藏层激活功能可以有所作为。尽管ReLU减少了梯度消失的一些问题,但以我的经验,它对非信号数据的鲁棒性较差,您将需要其他形式。如果只有几层,则S型或tanh仍然可以正常工作。否则,请检查泄漏的ReLU,PReLU,ELU和其他ReLU变体,以尝试用“死”神经元修补其问题。
利用针对深度学习而设计的优化器,例如Adam,Adagrad或RMSProp
使用适合深度学习的权重初始化方法,例如Glorot。
考虑使用批处理规范化层。我没有很多经验,但是我已经看到其他人在这种方法上做得很好。
尽管如此,与之相比,XGBoost可以通过最少的调整和培训工作常规轻松地击败深层NN(当然取决于问题和所拥有的数据)。如果精确度对您来说至关重要,则尽管(但不能保证)准确性,但深度神经网络和其他模型(如XGBoost)的集成可能会比其中任何一个性能更好。