浅谈深度学习的工作原理

浅谈深度学习的工作原理

关于深度学习工作原理这个问题,我们可以通过“机票价格预测服务”的例子来简单阐述一下,在该过程中,我们会用到监督学习方法来训练它。

我们希望,飞机票价格估算器可以利用以下几个输入值来预测飞机票价格(为防止太过复杂,这里不包括返程票):

出发机场

目的地机场

出发日期

航线


神经网络(Neural networks)

我们来看一看AI大脑。

和动物一样,我们的估算器AI大脑也有神经元。在下图中,这些神经元由一个一个圆圈表示,并且彼此间之间存在着联系。

神经元被分为三个不同类型的层:

1. 输入层(Input Layer)

2. 隐藏层(Hidden Layer)

3. 输出层(Output Layer)

输入层接收输入数据。在本例中,输入层有四个神经元:出发机场,目的地机场,出发时间以及航线。输入层将输入数据传输到第一个隐藏层。

隐藏层对输入数据执行数学计算过程。决定隐藏层的数量,以及每一层的神经元数量,是神经网络创建时的一个挑战。

深度学习中的“深度”指的是隐藏层不止一个。

输出层返回输出数据。在本例中,输出层返回价格估算值。

那么,它是如何计算价格估算值的呢?

神经元之间的每一个连接都有一定的权重。权重值表明了输入值的重要性。一开始,权重一般都是随机设置的。

在预测飞机票价格时,出发日期是比较重要的一个因素。因此,出发日期神经元连接拥有较高的权重。

每一个神经元都有一个激活功能(Activation Function)。如果没有数学推理知识,还是很难理解这些功能的。

简单的说,激活功能的目的之一是将神经元的输出值“标准化”。

一旦输入数据通过神经网络的各个层时,它就会通过输出层返回输出数据。

一点都不复杂,是吧?

训练神经网络

为什么训练AI是深度学习中最困难的部分呢?原因在于:

1. 你需要一个很大的数据集

2. 你需要强大的计算能力

在机票价格预测中,我们需要搜集机票价格的历史数据。由于机场和出发日期组合存在多种可能性,我们需要大量的机票价格列表。

为了训练AI,我们需要从数据集里提炼输入值,并将该输入值带来的输出值与数据集里的输出值进行比较。此时因为AI还没有被训练,所以它的输出值应该是错误的。

一旦走完所有数据集,我们就可以创建一个函数,通过这个函数,我们可以知道AI的输出值与真实的输出值的差异有多大。这个函数被成为“成本函数”(Cost Function).

理想情况下,我们希望成本函数为0,这通常发生在AI输出值与数据集输出值相同的情况下。

如何缩小成本函数?

我们可以改变神经元之间的权重。

我们可以随机去改变神经元之间的权重,直到成本函数降低,但这么做,效率着实不高。

因此,我们可以利用梯度下降法(Gradient Descent)来实现这一目标。

通过梯度下降法,我们可以找到函数的最小值。在这个例子种,我们寻求的是成本函数的最小值。

那么如何实现呢?

我们可以在每次数据集迭代以后,改变小增量中的权重。通过计算成本含函数在某个特定权重中的导数(或梯度),我们能够找到最小值。

为了减小成本函数,你需要多次重复数据集。这也就是为什么你需要大量的计算能力的原因了。

利用梯度下降法升级权重是可以自动完成的,这就是深度学习的魔力所在。

一旦我们训练出机票价格预测器AI,我们就可以利用它来预测未来的机票价格。


编译 | AI搬运工

文章链接 | Know How Deep Learning Works? Here's A Quick Guide For All Engineer


大家好,我是AI搬运工

致力于将国外的AI好文,翻译成大家都懂的中国话!

喜欢就请点个赞哦~

近期回顾:

国外有哪些比较好的网站可以自学深度学习和机器学习?
深度学习主要应用在哪些领域?
如何在6个月内入门深度学习
深度学习与普通机器学习有什么区别
普通人如何正确学习人工智能
学习数据科学,这5本非技术书籍不可错过哦~
通过 Q-learning 深入理解强化学习(下)
通过 Q-learning 深入理解强化学习(上)
用有趣的文字,教你强化学习入门知识(下)
用有趣的文字,教你强化学习入门知识(上)
发布于 2019-04-08

文章被以下专栏收录