Py学习  »  机器学习算法

零基础入门深度学习工作原理?看本文就对了!

景略集智 • 5 年前 • 477 次点击  

零基础入门深度学习工作原理?看本文就对了!

昨天为大家推荐了几本入门深度学习的必看书籍,错过的朋友请戳这里

在入门学习深度学习之前,有必要先了解一下深度学习的工作原理。著名程序猿小哥 Radu Raicea 特意为入门学习者写了一篇文章,利用一个票价预测工具的例子解释深度学习的工作原理,不需要有多高深的数学知识,人人都能看懂

当前,人工智能和机器学习应该是最火爆的话题了,你估计经常听到有很多程序猿朋友说要去学 AI,很多公司宣布要应用AI技术,可是很多人其实并没有完全理解人工智能和机器学习。因此 Radu Raicea 觉得在解释深度学习原理之前,我们有必要了解几个基本术语,就当一个入门小测验好了:

你知道啥是机器学习吗?

机器学习指机器能够学习利用大数据集学习而不是硬编码规则,它是人工智能的核心,是使计算机具有智能的根本途径,主要使用归纳、综合而不是演绎。

机器学习能让电脑自我学习,这种学习类型得益于现代计算机强大的处理能力,可以轻易地处理大数据集。

你知道啥是监督学习吗?

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

当用监督学习训练AI的时候,我们需要给它输入值,并告诉它期望输出值。如果AI生成的输出值有误,它会调整自身计算。这个过程会随着数据集的更新而不断迭代,直到AI不再犯错。

监督学习的一个典型应用就是天气预报AI应用。AI利用历史数据学习如何预测天气。训练数据包括输入值(气压、湿度、风速等)和输出值(温度等)。

你知道啥是无监督学习吗?

无监督学习就是使用没有具体结构的数据集。

当使用无监督学习方法训练AI时,需要让AI对数据进行分类。

无监督学习的一个应用例子就是为电商网站预测消费行为。AI没有利用标记过的输入值和输出值数据集,相反它会对输入数据自己分类,从而能让网站知道顾客最喜欢买什么东西。

为啥要讲这两个概念呢?

因为监督学习和无监督学习正是深度学习中的两种学习方法

祝贺你通过入门小测验,现在我们开启深度学习的大门。

深度学习的概念源于人工神经网络的研究,是机器学习研究中的一个新的领域,目的是建立、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像,声音和文本。

作为一种机器学习方法,深度学习能让我们用给定的输入值训练AI预测输出值。监督学习和无监督学习都能用来训练AI

我们来看看 Radu Raicea 怎样用制作一个票价预测小工具的例子解释深度学习的工作原理,然后用监督式学习的方法训练它。

首先我们希望这个票价预测工具能用以下输入值预测票价(在这里先不考虑往返机票):

  • 出发机场

  • 到达机场

  • 出发时间

  • 航线

神经网络

我们来看看AI的大脑——神经网络。 和动物一样,这个票价预测AI的大脑也有神经元。下图中的圆圈代表神经元,它们相互连接:

神经元被分为三种不同的层级:

  • 输入层(input layer)

  • 隐藏层(可能有多个)(hidden layer)

  • 输出层(output layer)

输入层接收输入数据。在我们的票价预测AI中,输入层有4个神经元:出发机场,到达机场,出发日期和航线。输入层收到这些信息后会传递给第一个隐藏层。

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

深度学习中的“深度”俩字指的就是神经元中有不止一个隐藏层。

最后,输出层会返回输出数据,在这个例子中,就是AI预测出票价。

所以,这个AI工具到底是怎么计算出预测票价的呢?

当然是靠神奇的深度学习。

神经元之间的每个连接都和权重(weight)紧密相关,它决定了输入值的重要性。初始权重是随机设置的。 当预测某个航班的机票价格时,出发日期是最重要的因素之一,因此,出发日期神经元之间的连接会有很大的权重。

每个神经元都有一个激活函数。如果没有一定的数学知识,很难理解这些函数。不过,这篇文章面向入门者的,所以这里不再讲解深奥的数学知识。

简单来说,这些函数的目标之一就是将神经元的输出值“标准化”。

一旦一组输入数据通过神经网络的所有层级,AI会通过输出层返回输出值。

这不难理解,对吧?

训练神经网络

深度学习中最难的部分就是训练AI,为什么?

  • 你需要大数据集。

  • 你需要有满足训练所需的强大的计算能力。

拿我们要做的票价预测AI来说,我们需要有历史机票价格的数据。而且因为机场和出发日期的组合有很多种可能,因此这个票价列表信息会非常庞大。

要训练AI,我们需要为它提供来自数据集中的输入值,然后将AI的输出值与数据集的输出值相比较。由于AI还没有接受训练,因此输出值会有很多错误。

一旦将整个数据集中的所有数据输入完成,我们可以创建一个函数,为我们展示AI的输出值与真正的输出值差距有多大。这个函数就叫做“代价函数”(Cost Function)。

理想状态下,我们希望代价函数为零,但是只有AI的输出值和数据集的输出值一样的时候,才代表达到了这个状态。

那问题来了,怎样降低代价函数?

我们上文中提到了“权重”这个东东,还记得吗?在减少代价函数的操作中,权重起着至关重要的作用。改变神经元间的权重可以调整代价函数,我们可以随机改变它们直到代价函数接近0,但这种方法效率很低。

在这种情况下,一种叫做梯度下降(Gradient Descent)的神器隆重出场。

梯度下降是一种寻找函数最小值的方法,我们要找到机票价格模型中代价函数的最小值,就要靠梯度下降。

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

要想将代价函数最小化,我们需要多次迭代数据集,这就是为什么刚才说需要有强大的计算能力。

利用梯度下降更新权重可以自动完成,这就是深度学习的魔力所在!等我们训练完机票价格预测AI工具后,我们就可以用它来预测未来的机票价格了!

哦对了,神经网络也有很多类型,不同的AI使用的神经网络也不同,比如计算机视觉技术采用的是卷积神经网络(Convolutional Neural Networks),自然语言处理用的是循环神经网络(Recurrent Neural Networks)。

想学习更多知识?

了解深度学习的工作原理只是学习深度学习的第一步,我觉得接下来可以先看吴恩达在coursera上开设的深度学习课程

集智再补充一些资源,我们曾整理了一批机器学习、深度学习的网络资源,少年请拿去:戳这里

最后对深度学习做个总结:

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

  • 一个神经网络中有三种神经元层,即输入层、隐藏层(可有多个层级)和输出层。

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

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

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

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

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

深度学习的工作原理,这下理解了吧,那就快入坑学习吧!

但是如果害怕自己基础不好,学习AI技能感到吃力,怎么破?没关系!!

假如你是真正的小白,但又希望能以最高效的方式学习人工智能知识,我们这里正好有个免费学习AI的机会,让你从零到精通变身AI工程师,不了解一下?

机会传送门:戳这里!!

这可能是正点赶上AI这班车的最好机会,不要错过哦。


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/i4QNNWleI7
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/12770
 
477 次点击