揭秘深度学习

11分钟阅读

本文是其中的一部分神秘的人工智能(试图)消除围绕人工智能的术语和神话的歧义。

今天,深度学习这似乎是英国科幻小说作家阿瑟·c·克拉克的名言:“任何足够先进的技术都与魔法无异。”在过去的几年里,深度学习已经被证明具有创造能力非现有人的现实形象,识别人脸和语音指令,合成听起来近乎自然的声音,以及(假装)理解自然语言。

深度学习的显着壮举使它似乎是神奇的,遥不可及的。然而,在心里,任何深度学习模式都只是简单的数学组件的组合。在这篇文章中,我会(尝试)向您展示深度学习如何通过作品构建它。

深度神经网络的放大视图

深度学习算法使用不同的配置深神经网络大多数书籍和文章将其描述为对生物大脑的粗略模仿(这个类比肯定无助于简化这个概念,不是吗?)

深层神经网络由多层神经网络构成人工神经元堆叠在彼此之上。每个神经元在下一层中连接到几个神经元。当输入数据通过网络时,它通过每个层中的神经元进行处理并将其传递到下一个层,直到它到达输出层。这是深度学习模式的模型分类图片例如,将语音转换为文本,预测股票价格,以及执行许多其他复杂的任务。

深度神经网络人工智能

从远处看到的时候,深神经网络看起来很艰巨。它似乎是炼金术,将一种信息转化为完全不同类型的信息。

但是很近,事情变得更加简单。

的线性变换

深度神经网络的最小组成部分是人工神经元。每个神经元都是一个线性变换的函数,一个你们在高中学过的非常简单的操作。简而言之,线性变换通过将输入数乘以一个或多个来修改输入数重量并添加A.偏见价值。重量和偏差也称为参数神经元。

事实上,最简单的神经网络是由一个神经元组成的,它对多个输入值中的一个执行一个线性变换。

例如,为了创建一个简单的神经元,将温度测量从摄氏度转换为华氏度,我们将参数设置为以下内容:w= 1.8,b= 32。

教授人工神经元未知的功能

在摄氏度到华氏度转换神经元的例子中,我们已经知道了转换的公式。但我们想用深度学习来解决只有观测结果而不知道函数参数值的问题。

例如,假设我们要创建机器学习模型预测博物馆里出售瓶装水的自动售货机的销量。我们已经登记了参观博物馆的人数,天气温度,以及50天内售出的瓶子数量。以下是一个包含十个观察样本的表格:

当绘制在图表上时,数据看起来是这样的:

正如这两个图表所示,参观博物馆的人数和温度都会影响瓶子的销量。现在,我们想看看能否训练一个人工神经元来预测自动售货机的销量。

我们从一个神经元开始,它只接受一个输入,即参观博物馆的人数。(为了简单起见,我们将放弃这种偏见,但我们也知道,我们不需要它,因为如果没人来参观,我们就卖不出任何瓶子。)

我们不知道神经元的体重,所以我们将从随机值开始,说0.5。我们通过神经元运行我们的第一个数据点(105),我们获得以下结果:

销售= 105*0.5 = 52.5

实际售出的瓶子是21瓶,所以我们太离谱了,需要调整重量。这就是学习发生的地方。

神经网络中的误差测量

神经网络通过制定预测,测量误差和调整权重来学习。在上一节中,我们的神经元预测我们将卖52瓶,但实际上我们卖了21件,所以我们的模型错过了31岁的目标。这是我们的模型错误

看看我们的结果,我们可以很快看到,如果我们将权重调整为0.21,它将准确预测销售(0.2 * 105 = 21)。但是,如果我们在神经元中运行下一行数据(Num people = 90, Sales = 21),我们的模型的预测将如下:

销售= 0.21 * 121 = 18.9

现在我们的预测差了2。我们可以调整权重为0.23,以适应这个观测结果,但这样我们的模型就会在第一次观测中出现错误。因此,神经网络学习的目标是找到一种系统的方法来调整权值,使总体误差最小化。

梯度下降,损失函数和学习速率

梯度下降局部最小值
在培训阶段,神经网络优化了他们的参数,以找到最大限度的配置,最大限度地减少其预测和地面真理之间的差异(图像来源:Paperspace)

当我们想要在几个观测值上训练我们的神经网络时,我们永远不能将它的参数调整为单个例子。这将导致过度拟合在美国,一个网络在有限的输入上表现很好,但在其他输入上表现很差。相反,我们希望权重处于一个最优点,在这个点上它们会导致最小的总体误差。

要找到最佳配置,我们将使用梯度下降法是一项学习算法,其中我们不断测量模型的准确性并进行小调整,直到我们达到最小误差。

梯度下降的第一步是测量我们模型的整体精度。要做到这一点,我们通过将访问者数量乘以初始权重来预测每次观察的销售额。然后我们从我们的预测中减去观察到的销售额来计算误差。我们也会记录平方误差,基本上就是误差乘以自身。平方误差可以防止负误差和正误差相互抵消。它也更加强调较大的错误,这对训练是有好处的。下面是我们在初始权重(0.5)下的预测的示例。

当训练神经网络时,重要的是要有一个单一的度量来衡量模型的整体性能。这个度规叫做损失函数。对于我们当前的问题,我们将使用均方误差(MSE),即误差平方和除以观测数。我们现在的MSE是671.58。我们训练的目的是使损失函数最小化。

所以,我们现在知道我们的体重并不是应该的。但是我们如何决定是否应该减少或增加重量?一种简单的(和低效)的方式,即在两个方向上进行小的移动并保持减少MSE的那个。

我们调整重量的金额被称为学习率.选择网络的正确学习率非常重要。如果学习速度太大,您将过冲,这意味着您将通过单一步骤跳过最佳配置。如果学习率太小,它将需要很长时间才能达到最佳点。

在我们的问题中,我们将选择0.01作为学习率。首先,我们将权重添加为0.01,将其设置为0.51。重新计算预测后,我们看到我们的均方误差上升到723.72。

接下来,我们从重量中减少0.01,将其设置为0.49。在重新处理计算后,我们的MSE现在达到621.41。这表明正确的方向是减轻重量。

当我们对整个训练数据进行一次检查并对神经网络的权重进行调整时,我们就完成了一次时代的训练。神经网络的全面训练将跨越许多时代。

Epoch和学习率被称为普遍存在,这意味着你必须在训练你的机器学习模型之前设置它们。神经网络的权值为学参数,因为他们在训练的时候会调整。

经过几个时代,我们意识到当我们的人工神经元的权值设置为0.24时,我们的均方误差处于最低点,进一步减小它将导致MSE增加。在这一点上,我们可以说我们的机器学习模型融合,这意味着它已经达到了最小的误差。

请注意,这只是一个简单的解释,并不是训练网络的最有效的方法。有一些技巧可以帮助防止冗余计算(如查找降低或增加学习率是否会减少错误)并加快学习过程(如动态改变学习率)。但基本原理保持不变:预测数值、测量误差、调整权重。

添加另一个输入

通过使用游客的数量,我们能够训练神经元来对我们的自动售货机销售的瓶子数量的体面预测。如果我们将我们的机器学习模型策划以前的观察,我们将看到线路通过我们的数据中间良好地通过。

但正如我们在前面的图表中看到的,温度和售出的瓶子数量之间也有关联。因此,如果我们将温度集成到我们的机器学习模型中,应该会提高它的性能。

向我们的人工神经元添加温度与添加另一对重量和输入一样简单。我们的机器学习模式现在将由以下公式表示:

销售=客流量* w0 +温度* w1

用多个输入来训练机器学习模型是有细微差别的。您不希望在每个阶段以相同的数量更新所有权重。然而,训练过程与我们在前一节中看到的并没有什么不同:我们从随机权重开始,预测结果,与实际情况进行比较,然后调整权重。

在训练结束时,你会得到一个性能更好的模型因为它现在考虑了所有关于问题的信息。机器学习模型不会达到完美的准确性,因为在现实中,还有许多其他因素我们没有包括在内,也无法预测(例如,突然停电导致博物馆和自动售货机关闭一整天)。但我们的预测与现实相符。

现在,我们可以根据明天的天气预报和网上售出的门票数量提前预测自动售货机的瓶装水是否会用完。

添加更多的层

虽然我们探讨了人工神经元和神经网络的基本运作,但到目前为止我们所做的一切都没有深度学习.事实上,我们创造的是一个简单的线性回归模型,一个古老但非常有效的机器学习工具。当你把几个人工神经元放在一起,并将它们层层堆叠起来时,深度学习展现了它的真正威力(回到本文开头的放大图片,你可能已经看过无数次了)。

但是为什么我们希望将几个人造神经元一起装在一起?因为世界很少是线性的,并且不能用单个神经元建模。想一想计算机视觉任务,例如对手写数字的图像进行分类。有无数种方法可以用一组像素来表示一个数字,无论你如何调整你的神经元的权重,你永远都不可能为每个数字类创建一个公平的表示。

当人工神经元堆叠在一起时,它们可以为自己的问题空间建立复杂的非线性模型。这是它工作原理的简化版本。

最简单的神经网络包括一个隐层和一个输出层。在下面的示例中,隐层包含两个神经元,输出层包含单个神经元。神经元的结构与我们在上一节中所探讨的单个神经元相似(有一个小的不同,我们稍后会讲到)。隐层中的神经元处理输入数据并将其传递给输出层的神经元,然后输出层执行自己的线性转换并产生输出。

为什么这项工作?有两个原因。首先,用不同的随机值初始化每个神经元的重量。因此,当输入通过隐藏层中的神经元进行时,它们产生不同的结果。

其次,在隐藏的神经元将结果传递到输出层之前,它们会通过一个激活功能.激活函数对数据执行非线性变换,对帮助深度学习模型从其训练数据提取复杂模式至关重要。有各种激活功能,但是三个非常受欢迎的是Tanh,Sigmoid和Relu,如下所示。

有趣的是,分层神经元和激活功能的结合可以完成许多简单的线性机器学习模型不可能完成的任务,包括识别手写数字。通过向深度学习模型添加更多的层和神经元,您将增加它的复杂性和学习更复杂任务的能力。

高级深度学习概念

我们在这篇文章中讨论的主题包含了所有深度学习系统的核心。但它们只是你在探索深度学习时遇到的概念的一小部分。过去几十年见证了新技术和新架构的爆炸式发展,所有这些都使神经网络在执行复杂任务时更加高效和强大。

你在这篇文章中看到的是一个由一个神经网络组成的致密层在这里,下层的每个神经元都直接连接到下一层的所有神经元。另一个流行的建筑是卷积层,神经元对前一层的矩形数据块进行操作。卷积特别适合处理视觉数据。递归神经网络是另一种适用于顺序数据(如文本和音频数据字符串)的体系结构。更高级的神经网络包括长时间的短期记忆(LSTM)和变形金刚

还有一些其他技术可以使神经网络更有效地泛化它们所学习的内容,避免对训练数据的过拟合。例子包括马克斯池辍学层。

希望这篇文章能帮助你认识到,深度学习虽然很吸引人,但并不是不可思议的。它是由小而简单的部件组成的,它们一起就能完成非凡的壮举。

订阅以获得TechTalks的最新更新

5个评论

  1. 我不太了解DL,但是这篇文章对我很有帮助。我真的很想知道更多关于人工智能的事情。

  2. 这是可怕的。你的演讲很好,这让我的论文开始了。非常感谢。
    我问你一个问题
    你能给我解释一下如何“实现深度学习的通信系统”吗?

留下一个回复

本网站使用AkisMet减少垃圾邮件。了解如何处理评论数据