入门学习深度学习之前,有必要先了解一下深度学习的工作原理。著名程序猿小哥 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)。
最后对深度学习做个总结:
深度学习需要神经网络模仿动物的智力。
一个神经网络中有三种神经元层,即输入层、隐藏层(可有多个层级)和输出层。
神经元之间的连接与权重有关,它决定了输入值的重要性。
将激活函数应用到数据中,可以使神经元的输出值“标准化”。
要训练神经网络,你需要一个大数据集。
迭代数据集和将AI输出与数据集输出进行对比,将产生一个代价函数,显示AI的输出与真实输出之间的差异。
数据集的每一次迭代后,神经元之间的权重会通过梯度下降的方式,降低代价函数的值。
评论
查看更多