你知道哪些情况下不该使用深度学习吗?

深度学习不适用于什么样的任务?依我之见,以下这些主要场景的深度学习弊大于利。

1、低成本或者低承诺问题

深网是非常灵活的模型,有着许多架构和节点类型,优化器和正则化策略。根据应用,你的模型可能会有卷基层(有多宽?使用什么汇集操作?)或者反复结构(有没有门?);他也有可能很深(沙漏,暹罗或其他许多架构?)又或者只是几个隐藏的层(有多少个单元?); 它可能使用整流线性单元或其他激活功能;它可能或可能没有流失dropout(在哪一层?哪一块?)占比应该是恰当的(l1,l2,或者是某些东西)。这只是一个部分列表,有很多其他类型的节点,连接,甚至丢失的功能等着我们尝试。

这些是调整和架构探索的很多超参数,当训练大型网络的一个实例时可能非常耗时。谷歌最近吹嘘自己的 AutoML 管道可以自动找到最好的架构,这是非常令人印象深刻的,但仍然需要超过 800 个 GPU,全天候工作数周,这对正常人来说是很难实现的。问题的关键在于训练深网需要大量的成本用于计算和调试。这种费用对于许多日常预测问题并没有意义,即使调整小型网络,调整网络的投资回报率也可能太低。即使有足够的预算和承诺,也没有理由不尝试基准替代方法。你可能会惊喜地发现,线性SVM真的是你需要的。

2、解释和传达模型参数对一般观众的重要性

深网另一个令人诟病的原因是其徒有高预测能力却很难解释清楚。尽管最近有很多工具,如 Saliency 地图和 Activation Differences(https://arxiv.org/abs/1704.02685),对某些领域而言是非常有用的,但它们并不会完全转移到所有应用程序上。

这主要是因为,当你想要确保网络不会通过记住数据集或专注于特定的虚假特征来欺骗你时,这些工具就能很好地工作,但是对于深层网络的整体决策来说,仍然难以将每个特征的重要性进行解释。在这个情况下,没有什么是可以真正的打败线性模型的,因为学习的难度与客户反应有直接的关系。当将这些解释传达给需要根据它们作出决定的一般观众时,这尤其重要。

举个例子,医生需要根据不同的数据来作出诊断,变量和结果之间的关系更简单更直接,医生则能更好的利用它,而不是低估/高估其价值。此外,有些情况下,模型的准确性(通常是深度学习所擅长的)并不像解释性那样重要。比如,决策者可能想知道人口变量对死亡率的影响,可能会对直接近似关系感兴趣,而不是预测的准确性。从以上两个例子,不难看出与更简单,更加渗透的方法相比,深度学习处于不利地位。

3、建立因果机制

模型解释的极端情况是当我们试图建立一个机械的模型,即一个实际捕获数据背后的现象的模型。好的例子包括试图猜测两个分子(例如药物,蛋白质,核酸等)是否在特定的细胞环境中相互作用,或者假设特定的营销策略如何对销售产生实际的影响。在这个领域没有什么能真正的击败专家的老式贝叶斯方法(可能不完美);他们是我们表达和推断因果关系的最好方法。Vicarious最近有一些很好的研究证明了为什么更有原则的手段比游戏任务中的深度学习更好。

4、从“非机构化”功能中学习

这一条可能有待争论。我发现深入学习擅长的一个领域是为特定任务找到有用的数据表示。一个很好的例子是上述的词语嵌入。自然语言具有丰富而复杂的结构,可以通过“上下文感知”来学习,每个单词都可以用向量来表示并编码其最常用的内容。为了NLP任务在大型语料库中学习使用单词嵌入有时可以在另一个语料库的特定任务中提升效果。

然而,如果所讨论的语料库是完全非结构化的,则可能没有任何用处。例如,假设你正在查看非结构化的关键字列表来对对象进行分类。由于关键字不是在任何特定的结构中使用(如在一个句子中),所以字嵌入不太可能有帮助。在这种情况下,数据是真正的一个单词,这种表示可能足以满足任务。与此相反的是,如果你预培训深度学习的话,并且可以更好地捕获关键字相似度,那么字嵌入的代价并不高。不过,我还是宁愿从一个词包的表示开始,看看能否得到很好的预测。毕竟,这个词包的每个维度都比对应的字嵌入更容易解读。

深度学习领域现在很热门,资金充足,并且正在快速发展。当你阅读一些在论坛上发表的论文的时候,它很可能又经历了两三次迭代并且已经不推荐了。

本文转自:CSDN学院,转载此文目的在于传递更多信息,版权归原作者所有。

推荐阅读