对于应用深度学习需要思考什么的问题,我们无法统一答复,因为答案会随着你要解决的问题的不同而不同。但是我们希望以下的问答将成为一个帮助你如何在初期选择深度学习算法和工具的清单。
我的问题是有监督类型还是无监督类型?如果是有监督类型的,是分类还是回归?有监督学习会有个“老师”, 它会通过训练数据集的形式,在输入和输出的数据之间建立相关性。例如,给图片设定标签,对于分类问题,输入的数据是原始像素,输出的将是图片中对应位置有设定标签的名字。对于回归问题,你需要训练一个神经网络来预测一组连续的数值例如基于建筑面积的房价。无监督学习可以通过分析非标记数据,帮助你检测数据的相似性和差异性。无监督学习没有“老师”,它可以应用于如图片搜索和欺诈检测等用户场景。
对于有监督类型,需要处理多少个标记?如果你要精确处理,那么就需要更多的标记,但这意味着需要更多的计算密度。例如,ImageNet的训练数据集有1000个分类,Iris的数据集只有3个分类。
batch size要多大?batch是指一组数据集的采样,例如一组图片。在训练过程中,同一个batch中的所有采样数据都将输入神经网络,通过神经网络计算,取同一batch中所有采样数据的平均误差值,然后用这个值来更新模型的权重值。batch size越大,意味着你需要等待更长的时间来完成每次的更新,或者说有更长的学习步长。而batch size越小,神经网络从每个batch获取到的数据信息越少。对于某些问题,批处理大小为1000是比较好的选择。如果你有大量的数据,你需要选择一个明智的batch size。
需要处理多少个特征值?你需要更多的内存来处理的更多的特征值。比如图片,第一层的特征值是图片的像素的数目,以MNIST的28x28像素的图片为例,那么就会有784个特征值。在医学图像分析领域,需要分析的像素将会达到1400万像素。
同一个问题的另一面:如何架构特征值?最近,Resnet(Microsoft Research Net)赢得了ImageNet大赛,它拥有150个的特征值分层。在相同的条件下,添加分层,就意味着处理的特征值会更多,需要更多的内存来支撑。多层感知器的高密度层所拥有的特征值要比卷积层多得多。人们之所以使用二次采样的卷积网络是因为他们想要削减用于计算的特征值数量。
如何调优神经网络?调优神经网络对于很多人来说是一种黑暗艺术。但是我们还是有些方法可以用来调优的。
① 首先你可以根据经验进行调优,观察你的神经网络的F1分值,然后调整超参数的值。
② 其次,你还可以使用超参数优化工具来进行调优,使用这类工具或多或少会提高自动调优的水平。
③ 最后,你可以使用GUI工具比如heuristics, 使用这类工具可以很直观地展示误差是如何快速降低,可视化地呈现活化分布。
训练模型需要多少数据?应该如何发掘这些数据?
硬件问题:使用GPUs、CPUs或者两者皆用?使用GPU单机系统还是分布式系统?许多的研究是使用1-4GPUs。企业级的解决方案通常需要更多的资源,所以不得不使用大规模CPU集群系统。
要使用什么数据管道?如何进行规划提取、传输和加载数据(ETL)?是放在Oracle数据库里面,还是放着Hadoop集群?是保存在本地还是云端?
要如何提取数据的特征值?尽管深度学习是自主提取特征值的,你仍可以通过使用不同的特征值提取方式来减轻计算负载和加快训练速度,特别当特征值比较少的时候。
应该使用哪种非线性算法和损失函数,选择哪种初始化权重值的方法?非线性算法是把深度学习网络的每层连接起来的激活函数。它也许是Sigmoid、Rectified Linear或者其他。特定的非线性算法常常伴随着特定的损失函数。
最简单的特征值架构是什么?不是每个人愿意或者能够应用Resnet进行图片分类。
计算网络放在哪里进行训练?数据模型要部署到哪里?它需要和哪些组件集成?大多数人不会问这些问题直到他们有了一个可以使用的原型。这个时候他们又不得不用扩展性更好的工具来重新设计他们的计算网络。所以你需要在这之前就要问自己到底是要使用Spark、AWS或者Hadpoop等其他平台。
原文标题:Questions to Ask When Applying Deep Learning
原文链接: http://deeplearning4j.org/questions.html(编译/Jason 责编/周建丁)
本文转自: 人工智能头条,转载此文目的在于传递更多信息,版权归原作者所有。