正文
神经元被分成三组不同的层级:
-
输入层
-
隐含层
-
输出层
输入层
接收输入数据。在我们的例子中,输入层有四个神经元:始发机场、目的地机场、启程日期和航空公司。输入层将输入传递给第一个隐含层。
隐含层
对输入数据进行数学计算。创建神经网络所面临的挑战之一是决定隐含层的数目,以及每个层的神经元数目。
深度学习中的“深度”指的就是因为它有一个以上的隐藏层。
输出层
返回输出数据。在我们的例子中,它给了我们对于价格的预测。
那么深度学习系统如何给出对于价格的预测呢?
这就是深度学习的魔力所在。
在每个神经元之间都有一个“
权重
”。这个权重描述了输入数据的重要性,初始权重是随机设置的。
当预测机票价格的时候,启程日期是一个重要的因素。因此,启程日期神经元连接将会有高的权重。
每个神经元都有一个激活函数。如果没有数学推到,这些函数很难理解。
简单来说,激活函数的目的是标准化来自神经元的输出。
一旦一个数据集被传入到神经网络的所有的层,激活函数将通过输出层返回数据。
这没什么难的,对吧?
训练人工智能是深度学习中最困难的部分。为什么?
-
你需要一个
很大的数据集
。
-
你需要
强大
的
计算能力
。
对于我们的机票价格估计系统,我们需要找到机票价格的历史数据。由于机场和起飞日期的可能组合有很多,因此我们需要一个非常大的机票价格清单。
为了训练人工智能,我们需要从数据集中输入它,并将其输出与数据集的输出进行比较。由于人工智能还未经训练,其输出将是错误的。
一旦我们完成了整个数据集,我们就可以创建一个函数,告诉我们人工智能系统的输出与我们需要的输出的差距有多大。这个函数叫做成本函数。
理想情况下,我们希望我们的成本函数为零。这要求人工智能的输出数据和数据集的输出数据完全相同。
我们可以改变神经元之间的权重。我们可以随机地改变权重,直到我们的成本函数是低的,但这个方法效率不高。
相反,我们将使用一种称为梯度下降的技术。
梯度下降是一种允许我们找到函数最小值的技术。在我们的例子中,我们在寻找最小的成本函数。
它通过在
每次数据集迭代后
以较小的增量
改变权重
。在一定的权重集上通过计算成本函数曲线的导数(或梯度),我们可以看到降低成本函数的方向是什么。
为了最小化成本函数,你需要多次迭代你的数据集。这就是为什么你需要大量的计算能力。
使用梯度下降调整权重是
自动完成
的。这就是深度学习的魔力!
一旦我们训练了我们的机票价格估计AI,我们就可以用它来预测机票未来的价格。
还有许多其他类型的神经网络:用于计算机视觉的卷积神经网络和用于自然语言处理的递归神经网络。
如果你想学习深度学习的技术方面,我建议你参加一个在线网络课程。
目前,学习深度学习最好的课程是吴恩达(Andrew Ng)的深度学习课程。如果你对获得证书不感兴趣,你不需要为课程付钱。你可以免费旁听。
如果你有任何的问题,或者需要更多的技术概念的解释,请在下面询问。