0基础怎样理解深度学习的工作原理?做个票价预测工具就懂了-阿里云开发者社区

开发者社区> 量子位> 正文

0基础怎样理解深度学习的工作原理?做个票价预测工具就懂了

简介:
本文来自AI新媒体量子位(QbitAI)


这篇文章颇!具!人!气!

软件工程专业的学生Radu Raice近日发表了文章《Want to know how Deep Learning works? Here’s a quick guide for everyone》,不到两天时间就在外网《Medium》上收获了6.9k个赞。

零基础没关系,Raice通过用深度学习搭建预测机票价格模型,教你直观理解深度学习的工作原理。

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

 Radu Raice

入学测验

莫急莫急,想学习深度学习的工作原理,你得先通过一个入学测试才行。

0?wx_fmt=gif&wxfrom=5&wx_lazy=1

Q1:你了解监督学习吗?

点击下方空白区域查看答案

监督学习应用了包含输入和期望输出的标记数据集。

用监督学习训练AI时,我们需要给它输入并告诉它期望输出值。当AI输出有误时,它将重新调整计算。这个过程在数据集中反复进行,直到AI不再犯错。


Q2:你了解无监督学习吗?

点击下方空白区域查看答案

用无监督学习训练数据时,你让AI对数据进行分类。

比如用AI预测网店的销量,没有标记了输入和输出的数据集供它使用,它将创造自己的输入数据分类,告诉你哪种类型的用户更可能购买哪些不同的产品。

比如用AI预测网店的销量,没有标记了输入和输出的数据集供它使用,它将创造自己的输入数据分类,告诉你哪种类型的用户更可能购买哪些不同的产品。

关于机器学习/深度学习的入门知识,量子位近期还报道过这些文章,请依个人实际情况自取:

两个月入门深度学习,全靠动手实践!一位前端小哥的经验分享

从零开始学习神经网络 | 视频教程

想成为机器学习工程师?这份自学指南你值得收藏

给你一个卷积神经网络工作原理最直观的解释

搞机器学习/AI有什么必备的数学基础?| 经验之谈+资源大全

万字长文|如何直观解释卷积神经网络的工作原理?

深度学习的工作原理

恭喜通过入学测试!

其实,深度学习是机器学习里的一个分支,让我们在给定输入上训练AI预测输出。训练AI需要会用到监督学习和无监督学习。

在这篇文章中,我们通过构建一个机票价格预测工具了解机器学习的原理,之后用监督学习的方法训练它。

为了对新手友好,我们排除了往返机票等复杂情况,仅用以下四种输入:

  1. 出发机场
  2. 到达机场
  3. 出发日期
  4. 航线名

神经网络

神经网络好比AI的大脑。

与动物类似,这个AI机票价格预测工具的大脑也有神经元。下图中的圆圈就代表神经元,它们是互相连接的。

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

这些神经元被分为三种不同类型的层:

输入层(input layer)

隐藏层(hidden layer)

输出层(output layer)

输入层负责接收输入数据。在这个预测工具中,输入层主要包含四个神经元,分别为起始机场、到达机场、出发日期和航线名。接收到这些信息后,它将输入数据传递到第一个隐藏层。

隐藏层负责对输入数据进行数学运算。如何决定隐藏层的数量、以及每层神经元的数量仍是构建神经网络的挑战。

输出层返回输出数据。在本例中,它会给出预测的机票价格。

640?wx_fmt=png&wxfrom=5&wx_lazy=1

所以,这个工具到底是怎样计算机票价格的呢?答案是深度学习。

每个神经元间靠权重(weight)连接,它决定了输入值的重要性。初始权重是随机设置的。

在预测机票价格时,出发日期是对价格影响较大的因素。所以,出发日期神经元连接的权重会比较大。

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

每个神经元都有一个激活函数。不过,因为这篇文章是新手友好向,我们不讲解相关的数学推理。

简单来说,激活函数的目的是将神经元的输出“标准化”。

一旦一组输入数据传递到了神经元的所有层,它将会通过输出层再将输出数据返回。

训练神经网络

走到训练这一步,你又要开始新挑战了,训练难就难在你不仅没有大数据集,而且还很难满足所需的强大计算能力。

想做机票价格预测工具,我们必须找到票价信息的历史数据。由于机场和出发日期的组合有很多种可能,因此这个票价列表信息也非常庞大。

为了训练AI,我们需要给它提供来自数据集的输入,并将AI的输出和数据集中的真实输出做对比。因为还没有经过训练,所以AI的输出还是错误的。

一旦将整个数据集中所有数据输入完成,我们就可以创建一个代价函数,它能显示AI的输出与实际输出的差异。

理想情况下,我们希望代价函数是0,此时AI的输出就等于真实输出。

怎样降低代价函数?

还记得上面章节中提到的权重吗,在减少代价函数的操作中,权重起着至关重要的作用。

改变神经元间的权重可以调整代价函数,我们可以随机改变它们直到代价函数接近0,但这种方法很低效。

在这种情况下,梯度下降(Gradient Descent)闪亮登场。

梯度下降是一种寻找函数最小值的方法,寻找机票价格模型中的代价函数最小值也得用它。

梯度下降的工作原理是在数据集的每次迭代后,以很小的增量改变权重。通过计算确定权重代价函数的导数(或梯度),我们可以看到最小值的方向。

640?wx_fmt=png&wxfrom=5&wx_lazy=1

为了使代价函数最小,我们需要用强大的计算力多次循环访问数据集。

深度学习的魔力就在于,使用梯度下降法更新权重是自动完成的。就这样,我们的机票价格预测小工具就完成了。

想了解更多?

这篇文章只是入门深度学习的第一步,入坑深度学习任重而道远,还有许多其他类型的神经网络需要你了解,比如计算机视觉的卷积神经网络和自然语言处理的递归神经网络等。

如果你想了解深度学习的应用技术,建议你选择一门在线课程。我觉得Andrew Ng的Deeplearning.ai课程不错。

总结

深度学习需要神经网络模仿动物的智力。

一个神经网络中有三种神经元层,即输入层、隐藏层和输出层。

神经元之间的连接与权重有关,它决定了输入值的重要性。

将激活函数应用到数据中,可以使神经元的输出标准化。

为了训练神经网络,你需要一个大数据集。

迭代数据集和对比输出将产生一个代价函数,显示AI的输出与真实输出之间的差异。

数据集的每一次迭代后,神经元之间的权重会通过梯度下降的方式,降低代价函数的值。

想进一步讨论,可以在文章下方留言。

附原文地址:

https://medium.freecodecamp.org/want-to-know-how-deep-learning-works-heres-a-quick-guide-for-everyone-1aedeca88076

深度学习的工作原理你了解了吗?

—  —

本文作者:安妮
原文发布时间:2017-10-29

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
+ 订阅

官方博客
官网链接