参与:Jane W、黄小天 近日来自美国海军研究室人工智能应用研究中心的 Leslie N.Smith 总结了一份报告,本报告对希望在没有用过深度学习算法应用软件上进行深度神经网络尝试的人群提供了实用建议。为了使项目更易于管理,这些建议被分成了几个阶段,每个阶段都包含了帮助新手的大量建议和见解。读者可点击阅读原文下载此论文。
本报告针对的群体是应用程序的主题专家,但是在深度学习方面还是新手。它对希望在没有用过深度学习算法的应用软件上进行深度神经网络尝试的人群提供了实用建议。为了使你的项目更易于管理,我们建议将其分成几个阶段。对于每个阶段,本报告包含了帮助新手的大量建议和见解。 导语 虽然我的研究重点是深度学习 ( DL ),但是我发现我越发频繁地被要求帮助没有多少深度学习经验却想要在其全新应用中尝试深度学习的团体。这个 NRL 报告的动机来自于我注意到对所有这些群体的大部分建议和指导是相似的。因此,本报告讨论了更普遍相关的深度学习应用的方面。 虽然有几个有用的机器学习最佳实践建议资源 [1-5],但与本报告所涉及的深度学习有一些差异。不过,我建议读者阅读并熟悉这些参考资料,因为其中包含许多宝贵的信息。此外,有很多关于软件工程和敏捷方法学(agile methodology)(我认为读者已经熟悉)的最佳实践资源(例如 [6,7])。本报告中最为重要的内容可参见「深度学习」第 11 章「实践方法论」,但我在本报告中还讨论了该教材未涵盖的若干因素和见解。 你可以在下面看到,一个深度学习的应用项目被分为若干个阶段。然而,在实践中,你可能会发现回到较早的阶段会更有帮助。例如,在阶段 3 中找到类比时,你可能会发现你在第 1 阶段未考虑过的新指标。在项目进行时所有这些最佳实践都暗示着通过迭代返回某个阶段以及持续的提升。 阶段 1:开始准备 在本报告中,我假设你是(或可以取得)应用程序的主题专家。你应该熟悉解决相关问题的文献和研究,并了解最先进的解决方案和性能水平。我建议你从一开始考虑这一点,如果深度学习解决方案是值得的。你必须考虑现有技术的性能水平很高,是否值得在本报告中提出的建议下进行逐步改进。不要因为只是看起来像最新最伟大的方法而进行深度学习。你还应该考虑你是否有计算机资源,因为每个训练一个深度网络的进程可能需要几天或几周时间。我在自己的研究中充分利用了国防部的 HPC 系统。此外,你应该考虑机器学习是否合适——请记住,训练深度网络需要大量标签数据,如阶段 2 中所述。 第一步是量化地定义成功的情形。无论是由人类还是机器完成,如果它是成功的,你会看到什么?这有助于定义你的评估指标。想想哪些指标很重要?哪些不太重要?你需要指定在本项目成功中发挥作用的所有定量值,并确定如何权衡其中的每一个的权重。你还需要为你的指标定义目标;你的目标是否超过了人类的表现?你的目标将强烈影响项目进展。从数量上了解人在这一任务中的表现是什么将有助于指导你的目标;最先进的技术与人类的表现相比如何?同样,了解人类如何解决这个任务将提供有关机器如何解决其任务的有价值信息。 这些指标中的一些也可以用来设计损失函数(loss function),这有助于指导网络训练。不要仅仅使用 softmax / cross 熵/ log,因为这是最常见的损失函数,尽管你应该从它们开始。从定义上看,你的评估指标是对你的应用程序重要的数量。准备好将这些指标作为损失函数的加权组成部分进行测试,以指导训练(见阶段 6)。 尽管你可能出于其强大能力而考虑深度学习,那么考虑一下如何使网络的「工作」尽可能简单。这是反直觉的,但由于它是深度网络的力量,可能会激励你尝试。然而,网络必须执行的工作越简单,训练越容易,性能越好。你(或最先进的技术)目前使用的启发法/物理学是否可以在这里使用?可以预处理数据吗?虽然网络可以学习复杂的关系,但请记住:「网络工作越简单,执行效果就越好」。所以值得花时间考虑从以前的工作你可以借鉴的内容以及网络需要为你做些什么。假设你希望改进物理学高度近似的复杂过程(即「球形牛」情况);你可以选择将数据输入深度网络,以便(希望)输出所需的结果,或者你可以训练网络以在近似结果中查找更正。后一种方法几乎肯定会超过前者。另一方面,不要依赖人工努力来定义潜在的启发法——最稀缺的资源是人力时间,所以让网络学习它的表征,而不需要任何固定的人工预处理。 此外,你可能需要记下你对这一最先进的过程的任何假设或期望,因为它将证明自己的效果。 阶段 2:准备你的数据 (责任编辑:本港台直播) |