翻译/校对: Mika
本文为 CDA 数据分析师原创作品,转载需授权
Google Cloud发布了名为"AI Adventures"的系列视频,用简单易懂的语言让初学者了解机器学习的方方面面。今天让我们来看到第六讲深度神经网络。
观看更多国外公开课,点击"阅读原文"
回顾之前内容:
本期视频如下:
AI Adventures--第六讲深度神经网络
针对不方便打开视频的小伙伴,CDA字幕组也贴心的整理了文字版本,如下:
在本期的AI Adventures中,我们将学习如何将线性模型转换为深度神经网络,从而训练越来越复杂的数据集。
随着线性模型中特征列的数量增加,在训练实现高正确率变得越来越难,因为不同列之间的交互越来越复杂。 这是一个已众所周知的问题,对于数据科学家来说,特别有效的解决方案是使用深度神经网络。
为什么要用深度神经网络
深度神经网络能够适应更复杂的数据集,更好地推广到新数据中。由于有许多层,因此被称为”深”。 这些层能让它们比线性模型,更能适应复杂的数据集。
然而值得权衡的是,若用到深度神经网络,模型则需要更长的训练时间,规模也更大,解释性更低。 那么为什么要用呢?
因为这会带来更高的正确性。
深度学习一个棘手的方面是: 要让所有参数“恰到好处”。
根据数据集,这些配置看几乎是无限制的。 但是,TensorFlow内置的Deep Classifier和Regressor提供了一些合理的默认值,你可以立即开始使用,从而快速轻松地进行操作。
从线性到深度
我们来看一个例子,如何将鸢尾花的例子从线性模型更新到深度神经网络(通常缩写为DNN)。
我不打算展示DNN处理的2000列模型…因此我只打算使用我们之前用到的4列模型。当中的机制都是一样的。
主要的变化来自于用DNN分类器替换线性分类器。 这将为我们创建一个深度神经网络。
其他变化
其他的内容几乎都保持不变! 深度神经网络还需要一个额外的参数,这是之前我们没有涉及的。
由于深层神经网络有多个层,每层有不同数量的节点,我们将添加一个`hidden_units`参数。
`hidden_units`能够让你为每个图层提供有具有节点数量的数组。 这能让你在创建神经网络时,只需考虑它的大小和形状,而不是从头考虑方方面面。 添加或删除层就像在数组中添加或删除元素一样简单!
更多的选择
当然,对于任何预先构建的系统,这确实很方便,但是往往缺乏可定制性。 DNN分类器通过让你选择许多其他参数来解决这个问题。有些合理的默认值会被使用 。 例如,优化器,激活函数和退出率都等都可以自定义。
将模型从线性转换为深度,还需要做些什么?
没了!
这就是使用估算器框架的美妙之处。这是整理数据、训练、评估和模型导出的一种常见方式,同时还可以灵活地尝试不同的模型和参数。
深度神经网络,让问题更简单
有时,深度神经网络效果要优于线性模型。 在这种情况下,通过使用估算器框架替换一个函数,TensorFlow可以轻松地从线性模型切换到深度模型,而只需要更改少数的代码。
这意味着你能够用更多的时间来处理数据、模型和参数,而不是反复进行训练循环。 对于简单的深度神经网络问题,快使用TensorFlow估算器吧!
下期预告
当训练数据太大,我们的机器无法承载;或者训练模型需要好几个小时,那么是时候考虑其他的选择了。下一期我们将降到在云端训练大数据模型。