给人工智能降点温:深度学习不是万能良药
另一方面,如果减少学习参数,马尔科夫链可以慢慢的近似到狭义极小值,直到它收敛,这样就增加了某个特定区域的偏置。而另一个参数,随机梯度下降的批次大小,也可以控制算法收敛的区域是什么类型,小的批次收敛到较大区域,大的批次收敛到较小区域。 随机梯度下降根据学习速率或批尺寸来选择较大或狭义最小值 这样的复杂性意味着深度网络的优化器非常重要:它们是模型的核心部分,与层架构一样重要。这一点在机器学习的许多其他模型中并不常见。线性模型(甚至是正则化的,像 LASSO 算法)以及支持向量机(SVM) 都是凸优化问题,没有太多细微差别,并且只有一个最优解。这也就是为什么来自其它领域的研究人员在使用诸如 scikit-learn 这样的工具时会感到困惑,因为他们发现找不到简单地提供.fit() 函数的 API(尽管现在有些工具,例如 skflow,试图将简单的网络置入.fit() 中,我认为这有点误导,因为深度学习的全部重点就是其灵活性)。 什么时候不需要深度学习? 在什么情况下深度学习不是最理想的呢?在我看来,以下情况中,深度学习更多是一种阻碍,而不是福音。 低预算或低投资问题 深度网络是十分灵活的模型,有多种多样的结构和节点模型、优化器以及正则化方法。根据应用场景,你的模型或许要有卷积层(层尺寸多宽?有没有池化操作?),或者循环结构(有没有门控单元?);网络可能真的很深(hourglass,siamese,或其他结构?)还是只是具有很少的几个隐藏层(有多少单元?);它可能使用整流线性单元或其他激活函数;它可能会或可能不会有随机丢弃(在哪一层中?用什么比例?),并且权重应该是正则化的(L1、L2,或者是某些更奇怪的正则化方法?)。这只是一部分列表,还有很多其他类型的节点、连接,甚至损失函数可以去尝试。 即便只是训练大型网络的一个实例,调整许多超参数以及探索框架的过程也是非常耗时的。谷歌最近宣称自己的 AutoML 方法可以自动找到最好的架构,令人印象深刻,但仍然需要超过 800 个 GPU 全天候运行数周,这对于任何人来说几乎都是遥不可及的。关键在于训练深度网络时,在计算和调试部分都会花费巨大的代价。这种消耗对于许多日常预测问题并没有意义,并且调整深度网络的投资回报率太低,即使是调整小型网络。即使有足够的预算和投资,也没有理由不尝试替代方法,哪怕作为基准测试。你可能会惊喜地发现,线性 SVM 就够用了。 解释和传达模型参数或特征对一般受众的重要性 深度网络也是很有名的黑匣子,它具有高预测能力但可解释性不足。尽管最近有很多工具,诸如显著图(saliency maps)和激活差异(activation difference),它们对某些领域而言是非常有用的,但它们不会完全被应用到所有的应用中。主要是,当你想要确保网络不会通过记住数据集或专注于特定的虚假特征来欺骗你时,这些工具就能很好地工作,但仍然难以从每个特征的重要性解读出深度网络的整体决策。在这个领域,没有什么能够真正地打败线性模型,因为学习得到的系数与响应有着直接的关系。当将这些解释传达给一般受众,并且他们需要基于此做出决策时,这就显得尤为重要。 (编辑:西安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |