TowardsDataScience 博客中文翻译 2020(五百八十四)

原文:TowardsDataScience Blog

协议:CC BY-NC-SA 4.0

前馈网络—第 2 部分

原文:https://towardsdatascience.com/lecture-notes-in-deep-learning-feedforward-networks-part-2-c91b53a4d211?source=collection_archive---------54-----------------------

FAU 讲座笔记深度学习

如何训练网络?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

FAU 大学的深度学习。下图 CC BY 4.0 来自深度学习讲座

这些是 FAU 的 YouTube 讲座 深度学习 的讲义。这是与幻灯片匹配的讲座视频&的完整抄本。我们希望,你喜欢这个视频一样多。当然,这份抄本是用深度学习技术在很大程度上自动创建的,只进行了少量的手动修改。如果你发现了错误,请告诉我们!

航行

上一讲 / 观看本视频 / 顶级 / 下一讲

欢迎来到深度学习!所以在这个小视频中,我们想继续深入了解神经网络的一些基本功能。特别是,我们希望研究 softmax 函数,并研究一些关于我们如何潜在地训练深度网络的想法。好的,让我们从分类的激活函数开始。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

不同类型标签编码策略综述。 CC 下的图片来自深度学习讲座的 4.0 。

到目前为止,我们已经通过标签-1 和+1 描述了基本事实,但是当然,我们也可以有类 0 和 1。如果我们只在两个类之间做决定,这真的只是一个定义的问题。但是如果你想进入更复杂的情况,你希望能够分类多个类。在这种情况下,你可能想要一个输出向量。这里,基本上每个类 K 有一个维度,其中 K 是类的数量。然后,您可以将基本事实表示定义为一个向量,该向量除了一个位置之外都是零,这就是真实类。这也被称为一键编码,因为向量的其他部分都是 0。只有一个有 1。现在,你试着计算一个分类器,它将产生我们各自的向量,有了这个向量,你就可以继续进行分类了。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

softmax 函数允许将任意向量缩放到 0 到 1 之间的值。来自深度学习讲座CC BY 4.0 下的图片。

所以本质上就像我在猜测每个类的输出概率。特别地,对于多类问题,这已经被证明是解决这些问题的更有效的方式。问题是你想得到一种接近 0 和 1 的概率输出,但是我们通常有一些可以任意缩放的输入向量 x 。所以,为了产生我们的预测,我们使用了一个技巧。诀窍是我们使用指数函数,因为它会将一切映射到一个正空间。现在,您要确保可以达到的最大值正好是 1。因此,对所有的类都这样做,并计算所有输入元素的所有指数的和。这就给了你这种转换所能达到的最大值。然后,将所有给定的输入除以这个数,这将始终缩放到[0,1]域。产生的向量也将具有这样的性质,如果你将所有元素相加,它将等于 1。这是 Kolmogorov 提出的概率分布的两个公理。所以,这允许我们把网络的输出,总是当作一种概率。如果您在文献和软件示例中查找,有时 softmax 函数也称为归一化指数函数。这是一回事。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一个典型的多类问题以及如何计算它的 softmax 函数。 CC 下的图片来自深度学习讲座的 4.0 。

现在,让我们看一个例子。假设这是我们对神经网络的输入。所以,你在左边看到这个小图像。现在,你为这三类问题引入标签。等等,少了点什么!是四级问题!所以,你为这个四类问题引入标签。然后,您有一些任意输入,显示在 x 下标 k 列中。因此,它们的范围是从-3.44 到 3.01。这不是很好,所以我们用指数函数。现在,所有的东西都被映射成正数,这些数字之间有很大的差别。因此,我们需要重新调整它们的比例,你可以看到,在这张图片中,重金属返回的概率当然是最高的!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

交叉熵可以用来度量两个概率分布之间的差异。来自深度学习讲座CC BY 4.0 下的图片。

那么,让我们继续讨论一下损失函数。所以损失函数是一种告诉你一个网络的预测有多好的函数。一个非常典型的就是所谓的交叉熵损失。在两个概率分布之间计算交叉熵。所以,你有你的基本事实分布和你正在估计的。然后,您可以计算交叉熵,以确定它们的连接程度,即它们相互对齐的程度。然后,你也可以用这个作为损失函数。在这里,我们可以使用这样的属性:除了 true 类之外,所有的元素都为零。所以我们只需要确定 y hat 下标 k 的负对数,这里 k 是真类。这大大简化了计算,我们去掉了上面的求和。顺便说一下,这有几个更有趣的解释,我们将在下一个视频中讨论它们。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

softmax 损失将 softmax 函数与交叉熵损失相结合。 CC 下的图片来自深度学习讲座的 4.0 。

现在,如果你这样做,我们可以插入 softmax 函数,并构建所谓的 softmax 损失。你可以看到,我们有 softmax 函数,然后我们只对有真类的元素取负对数。这是在网络训练中经常使用的东西。这种 softmax 损失非常常用,对一个热编码的地面真相非常有用。它也代表了一个直方图。它与统计和分布有关。此外,所有的多类问题都可以用这种方法一次性解决。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

更改单个权重将影响所有其他后续权重。 CC 下的图片来自深度学习讲座的 4.0 。

我想在这个视频中谈论的另一件事是优化。所以,我们根本没有考虑的一件大事是我们实际上如何训练这些网络。我们已经看到这些无法直接观察到的隐藏层。这给我们带来了一个非常困难的情况,你可能会认为右边的图像与左边的非常相似:如果你改变了这一系列事件中的任何事情,它可能会从本质上摧毁整个系统。所以,你必须非常小心地调整路径上的任何东西,因为你必须考虑到所有其他的处理步骤。这真的很难,你必须小心调整什么。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在最优化问题中训练神经网络。来自深度学习讲座CC BY 4.0 下的图片。

现在,我们将走简单的路,我们将把它公式化为一个优化问题。我们已经讨论过,我们需要某种损失函数。损失函数告诉我们预测与实际训练数据的拟合程度。输入是权重 wx 输入向量和 y 它们是我们的基本事实标签。我们必须考虑所有 M 个训练样本,这允许我们描述某种损失。因此,如果我们这样做,我们就可以计算出损失的期望值,它实际上是所有观测值的总和。然后,这个缩放的总和被用于确定整个训练数据集的拟合度。现在,如果我们想要创建一组最优的权重,我们要做的是选择在整个训练数据集上最小化关于 w 的损失函数。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用沿着负梯度方向的迭代更新找到更好的权重。 CC 下的图片来自深度学习讲座的 4.0 。

现在我们有了一些数学原理,告诉我们该怎么做,我们知道最小化。让我们尝试一个显而易见的选择:梯度下降。因此,我们选择找到最小化所有训练样本损失的最小值 w 。为了做到这一点,我们计算梯度,我们需要对 w 进行一些初步猜测。有许多不同的方式来初始化 w 。有些人只是使用随机初始化的权重,然后你继续做梯度下降。所以,你一步一步地沿着负梯度方向,直到你到达某个最小值。所以在这里,你可以看到这个初始的 w ,这个步骤可能是随机的。然后在步骤 2 中,迭代直到收敛。因此,计算损失函数相对于 w 的梯度。那么你需要一些学习率η。η实际上告诉你这些单个箭头的步长。然后,你沿着这个方向,直到你到达一个最小值。现在,η通常被称为学习率。有趣的是,这种方法非常简单,你总能找到最小值。它可能只是一个局部函数,但是您可以最小化该函数。很多人做的是运行几次随机初始化。这些随机初始化然后被用来寻找不同的局部最小值。然后,他们简单地为他们的最终系统取最好的局部最小值。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

网络是典型的嵌套函数,这使得梯度计算有点困难。来自深度学习讲座的 4.0CC 下的图片。

我们试图优化的这个 L 是什么?嗯, L 是在输出层计算的。因此,我们将输入输入到整个网络的网络流程中,然后,最终,我们计算出与我们期望的输出之间的差异、拟合度或损耗。所以你可以说,如果第一层是 f 第二层是 g ,那么我们感兴趣的是计算某些输入的Lx 和 w 。我们使用 w 下标 f 计算 f ,然后使用权重 w 下标 g ,计算 g ,最后,我们计算 gy 之间的拟合度。这就是我们需要在损失函数中计算的。

你会发现这有点困难,而且对于更深的网络来说会变得更加困难。因此,我们将看到,我们需要能够有效地做到这一点。有一种非常有效的算法可以解决这类问题,它被称为反向传播算法,这将是我们下节课的主题。所以,非常感谢大家的收听,下期视频再见!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在这个深度学习讲座中,更多令人兴奋的事情即将到来。 CC 下的图片来自深度学习讲座的 4.0 。

如果你喜欢这篇文章,你可以在这里找到更多的文章,或者看看我们的讲座。如果你想在未来了解更多的文章、视频和研究,我也会很感激你在 YouTube、Twitter、脸书、LinkedIn 上的鼓掌或关注。本文以 Creative Commons 4.0 归属许可发布,如果引用,可以转载和修改。

参考

[1] R. O .杜达,P. E .哈特和 D. G .斯托克。模式分类。约翰威利父子公司,2000 年。
[2]克里斯托弗·m·毕晓普。模式识别和机器学习(信息科学和统计学)。美国新泽西州 Secaucus 出版社:纽约斯普林格出版社,2006 年。
[3]f·罗森布拉特。"感知器:大脑中信息存储和组织的概率模型."摘自:《心理评论》65.6 (1958),第 386-408 页。
【4】WS。麦卡洛克和 w .皮茨。"对神经活动中固有思想的逻辑演算."发表于:数学生物物理学通报 5 (1943),第 99-115 页。[5] D. E .鲁梅尔哈特、G. E .辛顿和 R. J .威廉斯。"通过反向传播误差学习表征."载于:自然 323 (1986),第 533-536 页。
[6]泽维尔·格洛特,安托万·博德斯,约舒阿·本吉奥。“深度稀疏整流器神经网络”。《第十四届国际人工智能会议论文集》第 15 卷。2011 年,第 315-323 页。
[7]威廉·h·普雷斯、索尔·a·特乌考斯基、威廉·t·维特林等《数值计算方法》第三版:科学计算的艺术。第三版。美国纽约州纽约市:剑桥大学出版社,2007 年。

前馈网络—第 3 部分

原文:https://towardsdatascience.com/lecture-notes-in-deep-learning-feedforward-networks-part-3-d2a0441b8bca?source=collection_archive---------52-----------------------

FAU 讲座笔记深度学习

反向传播算法

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

FAU 大学的深度学习。下图 CC BY 4.0 来自深度学习讲座

这些是 FAU 的 YouTube 讲座 深度学习 的讲义。这是与幻灯片匹配的讲座视频&的完整抄本。我们希望,你喜欢这个视频一样多。当然,这份抄本是用深度学习技术在很大程度上自动创建的,只进行了少量的手动修改。如果你发现了错误,请告诉我们!

航行

上一讲 / 观看本视频 / 顶级 / 下一讲

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

对于今天的示例函数,我们将计算数值导数和解析导数。 CC 下的图片来自深度学习讲座的 4.0 。

欢迎大家来深度学习!谢谢收听。今天的主题是反向传播算法。所以,你可能会对我们如何在复杂的神经网络中计算这些导数感兴趣。让我们看一个简单的例子。我们真正的函数是 2 x ₁加 3 x ₂的 2 加 3 次方。现在,我们要计算 f( x )在位置(1 3)ᵀ相对于 x ₁.)的偏导数有两种算法可以非常有效地做到这一点。第一个是有限差分。第二个是解析导数。因此,我们将在这里浏览两个示例。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

有限差分使用小的 h 找到形式导数定义的近似值。 CC 下的图片来自深度学习讲座的 4.0 。

对于有限差分,想法是你在某个位置 x 计算函数值。然后,将一个非常小的增量 h 加到 x 上,并在那里对函数求值。你也可以计算 at 函数 f(x) 并取两者之差。然后,你除以 h 的值。所以这其实就是导数的定义:它是 f(x+h)f(x) 之差除以 h 其中我们让 h 趋近于 0。现在,问题是这不是对称的。所以,有时候你想要一个对称的定义。我们不是精确地在 x 处计算这个值,而是回到 h/2 处,再回到 h/2 处。这允许我们精确地计算位置 x 处的导数。然后,还是要分过 h 。这是一个对称的定义。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用 h = 0.02,我们可以在数值上逼近导数。 CC 下的图片来自深度学习讲座的 4.0 。

对于我们的示例,我们可以这样做。我们来试着评价一下这个。我们取我们原来的定义(2 x ₁+ 3 x ₂) + 3。我们想看看位置(1 3)ᵀ.让我们使用上面的+ h/2 定义。这里,我们将 h 设置为一个小值,比如 2 ⋅ 10⁻。我们把它插上,你可以在这一排看到。所以这将是((2(1+10⁻ +9) + 3),当然,我们也要减去第二项的小值。然后,我们也除以较小的值。因此,我们将得到大约 124.4404 减去 123.5604。这大约是 43.9999。因此,我们可以计算任何函数的这个值,即使我们不知道函数的定义,例如,如果一个函数只有一个我们无法访问的软件模块。在这种情况下,我们可以用有限差分来近似偏导数。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用有限差分的简短总结。 CC 下的图片来自深度学习讲座的 4.0 。

实际上,我们在适合浮点精度的 1⋅ 10⁻⁵范围内使用 h 。根据您的计算系统的精度,您还可以确定 h 的合适值。你可以在参考文献 7 中找到答案。我们看到这真的很好用。我们可以对任何函数求值,我们不需要知道正式的定义,但是,当然,这在计算上是低效的。假设你想确定一个维数为 100 的函数的所有偏导数的集合的梯度。这意味着你必须对函数求值 101 次来计算整个梯度。因此,对于一般优化来说,这可能不是一个很好的选择,因为它可能会变得低效。但是当然,这是一个非常酷的方法来检查你的实现。想象你实现了分析版本,有时你会犯错误。然后,你可以以此为窍门,检查你的解析导数是否正确实现。这也是您将在这里的练习中详细了解的内容。如果你想调试你的实现,这真的很有用。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

计算解析梯度的四个规则。来自深度学习讲座的 4.0CC 下的图片。

好,我们来谈谈解析梯度。现在解析梯度,我们可以用一组解析微分规则来推导。所以第一条规则是常数的导数是 0。那么,我们的算符是一个线性算符,这意味着如果我们有不同分量的和,我们可以重新排列它。接下来,我们还知道单项式的导数。如果你有一些ⁿ,导数将是⋅xⁿ⁻。如果您有嵌套函数,则链规则适用。这本质上是我们反向传播算法需要的关键思想。你会看到,某个嵌套函数对 x 的导数,将是该函数对 g 的导数乘以函数 gx 的导数。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们应用前面的四个规则来计算函数的解析导数。来自深度学习讲座的 4.0CC 下的图片。

好的,让我们把它们放在右上方。我们将在接下来的几张幻灯片中用到它们。让我们来计算一下,这里你会看到,f( x )对 x ₁的偏导数在(1 3)ᵀ.)然后,我们可以插入定义。所以,这将是(2 x ₁+9)的偏导数。我们已经可以写出 9,因为我们已经可以插入 3,然后乘以 3 得到 9。在下一步中,我们可以计算外函数的偏导数。现在。这是链式法则的应用,我们引入这个新变量 z 。在下一步中,我们可以计算 z 的 2 次方的偏导数,其中我们必须将指数减少 1,然后乘以这个指数。所以,这将是 2(2 x ₁+9)乘以 2 x ₁+9.的偏导数所以,我们可以进一步简化。你可以看到,如果我们对 2 x ₁+9 求导, x ₁抵消了。减去常数 9,只剩下 2。所以最后,我们得到 2(2 x ₁+9)乘以 2。现在如果你代入 x₁= 1,你会看到我们的导数等于 44。在我们之前评估过的数值实现中,您可以看到我们有 43.9999。所以,我们很亲密。当然,解析梯度更精确。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们对解析梯度的观察总结。 CC 下的图片来自深度学习讲座的 4.0 。

现在的问题是:“我们能自动做到这一点吗?”答案当然是肯定的。我们使用这些规则,链式规则、线性和其他两个规则来分解神经网络的复杂功能。我们不手动这样做,但我们在反向传播算法中完全自动这样做。这将比有限差分计算效率更高。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

简单来说就是反向传播。来自深度学习讲座CC BY 4.0 下的图片。

因此,你可以在这里简单地描述反向传播算法:对于每个神经元,你需要有输入 x ₁, x ₂,当然还有输出 y hat。然后,你可以计算——绿色的——向前传球。你在某个地方计算损失函数,然后你得到关于 y 的导数,它来自于后向通道。然后,对于网络图中的每个元素,你需要知道相对于输入的导数,这里是 x₁和 x₂.当然,我们在图中缺少的是可训练的重量。对于可训练的权重,我们还需要计算关于它们的导数,以便计算参数更新。因此,对于每个模块或节点,你需要知道相对于输入的导数和相对于权重的导数。如果你对每个模块都有,那么你就可以组成一个图,有了这个图,你就可以计算非常复杂函数的任意导数。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们例子中的向前传球。来自深度学习讲座的 4.0CC 下的图片。

让我们回到我们的例子,并应用反向传播。那么,我们该怎么办?我们先计算向前传球。为了能够计算正向传递,我们插入中间定义。所以我们现在把它分解成 2 倍于₁的 a 和 3 倍于₂.的 b 然后,我们可以计算这些:我们得到值 2 和 9 为 ab 。这使得我们可以计算出两者之和 c 。这相当于 11。然后,我们可以计算出 e ,它不是别的,而是 c 的 2 次方。这给了我们 121,现在我们最终计算出 g ,也就是 e 加 3。所以,我们得到了 124。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

对于我们的例子,反向传播的反向传递。 CC 下的图片来自深度学习讲座的 4.0 。

好,现在我们需要反向传播。所以我们需要计算偏导数。这里, g 相对于 e 的偏导数将为 1。然后,我们计算 ec 的偏导数,你会看到这是 2 c 。当 c 为 11 时,计算结果为 22。然后,我们需要 c 相对于 a 的偏导数,也是 1。现在,我们需要 a 关于 x₁.的偏导数如果你看这个方块,你可以看到这个偏导数是 2。所以我们必须把所有的偏导数从右到左相乘,才能得到结果:1 乘以 22 乘以 1 乘以 2,这将是 44。这就是应用于我们例子的反向传播算法。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

长链的增殖受到正反馈的影响。正反馈反馈会导致灾难CC 下的图片来自深度学习讲座的 4.0 。

现在,我们确实有一个稳定性问题。在反向传播算法的范围内,我们相当频繁地与可能的高值和低值相乘。这就给我们带来了正反馈的问题,这会导致灾难。这个小视频展示了正反馈的一个例子,以及它是如何导致灾难的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

权重的迭代更新构成了反馈回路。来自深度学习讲座CC BY 4.0 下的图片。

现在,我们能做些什么呢?这本质上是一个反馈循环。我们有这个控制器和输出,在这里我们计算梯度。你可以看到η的值。所以,如果η太高,就会产生正反馈。这将导致我们的更新价值非常高,然后我们的损失可能会增长或真正爆炸。因此,如果它太大,我们甚至可能会增加损失函数,尽管我们试图将其最小化。还可能发生的是,如果你把η选得太小,那么你会得到蓝色曲线。这就是所谓的消失梯度,我们的步长太小,我们没有很好的收敛。所以没有减少损失。也是一个叫做“消失渐变”的问题。所以,只有选择合适的η,你才会获得很好的学习率。有了一个好的学习率,损耗应该会随着这条绿色曲线的多次迭代而快速下降。然后我们应该进入某种收敛,当我们不再有变化时,我们基本上处于训练数据集的收敛点。然后我们可以停止更新我们的权重。所以,我们看到 EDA 的选择对我们的学习是至关重要的,只有你说得恰当,你才会得到一个良好的培训过程。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

反向传播算法综述。来自深度学习讲座的 4.0CC 下的图片。

所以让我们总结一下反向传播:它是围绕链式法则建立的。它使用向前传球。一旦我们结束并评估损失函数——本质上是与我们学习目标的差异——我们就可以反向传播。使用动态编程方法,这些计算非常有效。反向传播不是一种训练算法。这只是一种计算梯度的方法。当我们在下节课中讨论损失和优化时,你会看到实际的培训计划。一些非常重要的结果是:我们有一个偏导数的乘积,这意味着数值误差增加了。这可能会很成问题。也是因为偏导数的乘积,我们会得到消失或爆炸的光栅。因此,当值非常低,接近于零时,开始将它们相乘,就会出现指数衰减,导致梯度消失。如果你有非常高的数字,当然,你也可以很快达到指数增长——爆炸梯度。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

符号激活功能。 CC 下的图片来自深度学习讲座的 4.0 。

我们看到梯度对我们的训练至关重要。所以我们来谈谈激活函数和它们的导数。其中一个经典的例子是符号函数。我们已经在感知器里有了。现在,你可以看到它是对称的,并在 1 和-1 之间归一化。但是请记住,我们正在讨论偏导数,以便计算权重更新。所以,这个函数的导数有点问题,因为除了点 0,它在任何地方都是 0,这里的值基本上是无穷大。所以把这个和梯度下降结合起来用并不是很好。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

乙状结肠函数。来自深度学习讲座CC BY 4.0 下的图片。

那么人们一直在做什么呢?他们转换到不同的函数,其中一个流行的是 sigmoid 函数。因此,这是一个 s 形函数,它在分母中使用负指数函数来缩放 0 到 1 之间的所有内容。好的一面是,如果你计算它的导数,这基本上就是 f(x)乘以 1 — f(x)。所以,至少导数可以很有效地计算出来。在向前传递时,你总是要处理指数函数,这也是一个问题。同样,如果你在-3 到 3 之间看这个函数,你会得到适合反向传播的梯度。一旦你远离-3 或 3,你会发现这个函数的导数将非常接近于零。所以,我们有饱和,如果你期望有一对 sigmoid 函数,那么它很可能会产生非常低的值。这也会导致渐变消失。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

校正的线性单位。 CC 下的图片来自深度学习讲座的 4.0 。

那么人们做了什么来战胜它呢?嗯,他们引入了一个分段线性激活函数,称为“整流线性单元”(ReLU),它是零和 x 的最大值。所以,所有低于零的都被削波为零,其他的都保持不变。这很好,因为我们可以非常有效地计算。这里不涉及指数函数,如果 x 大于零,而其他地方都是零,那么导数就是 1。所以,消失的梯度要小得多,因为基本上整个正半空间都可以用于梯度下降。ReLU 也有一些问题,我们将在讨论激活函数时详细讨论。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在这个深度学习讲座中,更多令人兴奋的事情即将到来。 CC 下的图片来自深度学习讲座的 4.0 。

好了,现在你理解了反向传播算法的许多基本概念。但是我们仍然必须讨论更复杂的情况,特别是在特定的层。所以现在,我们在神经节点水平上做了所有的事情。如果你想在神经元水平上做所有的反向传播,这是非常困难的,你会很快失去监督。因此,我们将在下节课中介绍层抽象,看看如何计算整个层的梯度。所以敬请关注,继续收看!我希望你喜欢这个视频,并看到你在下一个。谢谢大家!

如果你喜欢这篇文章,你可以在这里找到更多的文章,或者看看我们的讲座。如果你想在未来了解更多的文章、视频和研究,我也会很感激你在 YouTube、Twitter、脸书、LinkedIn 上的鼓掌或关注。本文以 Creative Commons 4.0 归属许可发布,如果引用,可以转载和修改。

参考

[1] R. O .杜达,P. E .哈特和 D. G .斯托克。模式分类。约翰威利父子公司,2000 年。
[2]克里斯托弗·m·毕晓普。模式识别和机器学习(信息科学和统计学)。美国新泽西州 Secaucus 出版社:纽约斯普林格出版社,2006 年。
[3]f·罗森布拉特。"感知器:大脑中信息存储和组织的概率模型."摘自:《心理评论》65.6 (1958),第 386-408 页。
[4] WS。麦卡洛克和 w .皮茨。"对神经活动中固有思想的逻辑演算."发表于:数学生物物理学通报 5 (1943),第 99-115 页。
[5]d . e .鲁梅尔哈特、G. E .辛顿和 R. J .威廉斯。"通过反向传播误差学习表征."载于:自然 323 (1986),第 533-536 页。
[6] Xavier Glorot,Antoine Bordes,Yoshua Bengio。“深度稀疏整流器神经网络”。《第十四届国际人工智能会议论文集》第 15 卷。2011 年,第 315-323 页。
[7]威廉·h·普雷斯、索尔·a·特乌考斯基、威廉·t·维特林等《数值计算方法》第三版:科学计算的艺术。第三版。美国纽约州纽约市:剑桥大学出版社,2007 年。

前馈网络—第 4 部分

原文:https://towardsdatascience.com/lecture-notes-in-deep-learning-feedforward-networks-part-4-65593eb14aed?source=collection_archive---------75-----------------------

FAU 讲座笔记深度学习

层抽象

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

FAU 大学的深度学习。下图 CC BY 4.0 来自深度学习讲座

这些是 FAU 的 YouTube 讲座 深度学习 的讲义。这是与幻灯片匹配的讲座视频&的完整抄本。我们希望,你喜欢这个视频一样多。当然,这份抄本是用深度学习技术在很大程度上自动创建的,只进行了少量的手动修改。如果你发现了错误,请告诉我们!

航行

上一讲 / 观看本视频 / 顶级 / 下一讲

欢迎大家观看我们下一个关于深度学习的视频!所以,今天我们要再次讨论前馈网络。在第四部分中,主要的焦点将放在层抽象上。当然,我们讨论了这些神经元和单个节点,但对于更大的网络来说,这变得非常复杂。所以我们想在梯度的计算中引入这个分层的概念。这真的很有用,因为我们可以直接谈论整个层的梯度,而不需要去所有不同的节点。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

每个神经元在应用非线性之前计算两个向量的内积。 CC 下的图片来自深度学习讲座的 4.0 。

那么,我们该如何表达呢?让我们回忆一下我们的单个神经元在做什么。单个神经元本质上是在计算其权重的内积。顺便说一下,我们跳过了这个偏差符号。所以,我们将这个向量扩展了一个额外的元素。这使我们能够描述偏差和内积,如幻灯片所示。这真的很好,因为这样你就可以看到输出 y hat 只是一个内积。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

完全连接的层可以用矩阵乘法来表示。来自深度学习讲座CC BY 4.0 下的图片。

现在考虑我们有 M 个神经元的情况,这意味着我们得到一些 y 帽子指数 m 。都是内积。所以,如果你把这个带入向量符号,你可以看到向量 y hat 就是矩阵 x 与矩阵 W 的乘法运算。你看一个全连通的层不是别的,就是矩阵乘法。因此,我们基本上可以使用这个全连接层来表示任意连接和拓扑。然后,我们还应用逐点非线性,以便我们得到非线性效果。矩阵符号的好处是,我们现在可以用矩阵运算来描述整个层的导数。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

具有三个输入的双神经元全连接层。 CC 下的图片来自深度学习讲座的 4.0 。

因此,我们的全连接层将得到以下配置:三个输入元素和每个神经元的权重。假设你有两个神经元,然后我们得到这些权重向量。我们将两者乘以 x 。在正向传递中,我们已经使用矩阵为整个模块确定了这个 y hat。如果你想计算梯度,那么我们需要两个偏导数。这些和我们已经提到的一样,我们需要关于重量的导数。这将是相对于 W 的偏导数和相对于 x 的偏导数,用于反向传播,以将其传递到下一个模块。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

简而言之,全连通层的偏导数。 CC 下的图片来自深度学习讲座的 4.0 。

那么我们如何计算呢?嗯,我们有一层是 y 帽子等于Wx。所以在正向传递中有一个矩阵乘法。然后,我们需要对重量求导。现在你可以看到,我们需要做的是,我们需要一个矩阵导数。y 相对于 w 的导数就是ᵀ.因此,如果我们有损失进入我们的模块,我们的权重更新将是这个损失向量乘以 x ᵀ.所以,我们有一些损失向量和ᵀ,这意味着你有一个外积。由于转置,一个是列向量,另一个是行向量。所以,如果你把两者相乘,你会得到一个矩阵。上述相对于 W 的偏导数将总是产生一个矩阵。然后你看最下面一行,你需要 y hat 相对于 x 的偏导数。顺便说一句,你也可以在矩阵食谱中找到。它非常非常有用。你可以在这本书里找到各种矩阵导数。所以如果你这样做,你可以看到上面的方程,相对于 x 的偏角是 W ᵀ.现在,你有了ᵀ,再乘以一些损失向量。这个损失向量乘以一个矩阵,会变成一个向量。这是您将在反向传播过程中传递给下一个更高层的向量。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

单层线性网络仅仅是矩阵乘法。 CC 下的图片来自深度学习讲座的 4.0 。

好,让我们来看一些例子。我们先有一个简单的例子,然后是一个多层的例子。因此,这个简单的例子将是我们已经拥有的同一个网络。这是一个没有任何非线性的网络 W x 。现在,我们需要一些损失函数。这里,我们不取交叉熵,而是取 L2 损失,这是一个常见的向量范数。它只需将网络输出减去所需输出,然后计算 L2 范数。这意味着我们对不同的向量值进行元素平方,并将它们相加。最后,我们将不得不取一个平方根,但是我们想省略它。所以,我们用它的 2 次方。当我们现在计算这个 L2 范数的 2 次幂的导数时,当然,我们有一个 2 的因子出现。这将在开始时被这个因子 1/2 抵消。对了,这是回归损失,也有统计关系。我们将在更详细地讨论损失函数时讨论这一点。L2 损失的好处是,你还可以找到它的矩阵衍生物矩阵食谱。我们现在计算 L 相对于 y hat 的偏导数。这将为我们提供 Wxy ,我们可以继续计算权重的更新。所以权重的更新是我们用损失函数的导数计算出来的。损失函数相对于输入的导数是 Wxy 乘以 xᵀ 。这将为我们提供矩阵权重的更新。我们要计算的另一个导数是损失相对于 x 的偏导数。因此,正如我们在上一张幻灯片中看到的那样,这将是 W ᵀ乘以来自损失函数的向量: Wxy,,正如我们在幻灯片的第三行中所确定的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

线性三层网络作为逐层导数计算的例子。 CC 下的图片来自深度学习讲座的 4.0 。

好吧,让我们添加一些层,并改变我们的估计到三个嵌套函数。这里,我们有一些线性矩阵。所以,这是一个学术上的例子:你可以看到,通过将₁的 W 、₂的 W 和₃的 W 相乘,它们会简单地折叠成一个矩阵。尽管如此,我还是觉得这个例子很有用,因为它向您展示了在反向传播过程的计算中实际发生了什么,以及为什么这些特定的步骤真的很有用。所以,我们再次采用 L2 损失函数。这里,我们有三个矩阵。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

最后一层的导数只需要链式法则的一次应用。来自深度学习讲座的 4.0CC 下的图片。

接下来,我们要继续计算导数。现在对于衍生产品,我们从第三层开始,最外层。你可以看到,我们现在计算损失函数相对于₃.的偏导数第一,链式法则。然后,我们必须计算损失函数相对于 f₃( x 哈特相对于₃.w的偏导数损失函数的偏导数也是 L2 范数的内部部分。那么这个w₃t18】w₂wx——y也是如此。网络的偏导数将会是(wwx),正如我们在上一张幻灯片中看到的。注意,我用一个点来表示矩阵操作符的亲和力。对于矩阵来说,是从左乘还是从右乘是有区别的。两个乘法方向都不一样。因此,我表示你必须从右边计算这个乘积。现在,让我们这样做,我们结束了对 W₃的最后更新,这是简单地从这两个表达式计算出来的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

更深层次的衍生工具需要多重应用链式法则。 CC 下的图片来自深度学习讲座的 4.0 。

现在,对₂的偏导数有点复杂,因为我们要应用链式法则两次。所以,我们必须再次计算损失函数对 f₃(xhat 的偏导数。然后,我们需要 f₃(xhat 对 W ₂的偏导数,这意味着我们必须再次应用链式法则。所以我们必须展开 f₃(xhat 相对于 f₂(xhat 的偏导数,然后展开 f₂(xhat 相对于₂.w的偏导数这个变化不大。损失项与我们以前使用的相同。现在,如果我们计算 f₃(xhat 相对于 f₂(xhat 的偏导数——还记得 f₂(x)=wwx吗——它将是 W ,我们必须从左侧将其相乘。然后,我们继续计算 f₂(xhat 相对于w₂.的偏导数你继续留在(wx)。所以,最终的矩阵导数是这三项的乘积。我们可以对最后一层重复这个步骤,但是现在我们必须再次应用链式法则。我们已经看到预先计算的两个部分,但我们必须再次应用它。这里我们得到了 f₂(xhat 相对于 f₁(xhat 的偏导数,以及 f₁(xhat 相对于₁w的偏导数,这就产生了我们之前用过的两个项。f₂( x 帽子相对于 f₁( x 帽子的偏导数,即 Wx ,将会是 W 。然后,我们还要计算 f₁( x 相对于 W ₁.的偏导数这将是 xᵀ的比赛。所以,我们最终得到这个偏导数的四项乘积。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

偏导数越深,需要相乘的项就越多。 CC 下的图片来自深度学习讲座的 4.0 。

现在,你可以看到,如果我们做反向传播算法,我们会以非常相似的方式处理。首先,我们计算整个网络的转发路径,并评估损失函数。然后,我们可以看看不同的偏导数,根据我想去的地方,我必须计算各自的偏导数。对于最后一层的更新,我必须计算损失函数的偏导数,并将其乘以最后一层相对于权重的偏导数。现在,如果我进入倒数第二层,我必须计算损失函数的偏导数、最后一层相对于输入的偏导数以及倒数第二层相对于权重的偏导数,以获得更新。如果我想去第一层,我必须计算整个层的所有相应的反向传播步骤,直到我在第一层上完成相应的更新。您可以看到,我们可以预先计算许多这些值,并重复使用它们,这使我们能够非常有效地实现反向传播。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

偏导数的分层计算总结。来自深度学习讲座CC BY 4.0 下的图片。

让我们总结一下到目前为止我们所看到的。我们已经看到,我们可以将 softmax 激活函数与交叉熵损失结合起来。然后,我们可以很自然地处理多类问题。我们使用梯度下降作为训练网络的默认选择,并且我们可以使用该策略实现局部最小值。当然,我们只能通过有限差分来计算梯度,这对于检查你的实现非常有用。这是你在练习中绝对需要的东西!然后,我们使用反向传播算法非常有效地计算梯度。为了能够更新完全连接的层的权重,我们已经看到它们可以被抽象为一个完整的层。因此,我们也可以计算逐层导数。因此,不需要在节点级别计算所有内容,但您可以真正进入层抽象。你也看到了矩阵演算非常有用。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在这个深度学习讲座中,更多令人兴奋的事情即将到来。 CC 下的图片来自深度学习讲座的 4.0 。

深度学习下一次会怎样?我们会看到,现在,我们只有有限的损失函数。因此,我们将看到问题适应回归和分类的损失函数。我们现在讨论的非常简单的优化,只有一个η,可能不是正确的方法。所以,有更好的优化程序。它们可以适应每一个参数的需要。然后,我们还将看到一个论点,为什么神经网络不应该表现得那么好,以及一些最近的见解,为什么它们实际上表现得相当好。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一些备考的综合题。来自深度学习讲座CC BY 4.0 下的图片。

我也有几个综合问题。所以你绝对应该能够为多类分类命名不同的损失函数。如果你想和我一起参加口试,一键编码是每个人都需要知道的。你必须能够描述这一点。然后,当然,我可能不会在考试中问,但对你的日常工作非常有用的事情是,你使用有限差分,并使用它们进行实现检查。你必须能够描述反向传播算法,老实说,我认为这是一种学术方法,但这种描述反向传播算法的多层抽象方法非常有用。如果你想解释考试情况下的反向传播,这也很好。你还能描述出什么?爆炸和消失梯度的问题是:如果你选择的η太高或太低会发生什么?什么是丢失的曲线,它在迭代中是如何变化的?看看这些图表。它们真的很重要,它们还能帮助你了解你的训练过程中出了什么问题。所以你需要意识到这些,现在你也应该清楚为什么符号函数不是激活函数的好选择。这篇文章下面有很多参考资料。所以,我希望你仍然喜欢这些视频。请继续观看,下期视频再见!

如果你喜欢这篇文章,你可以在这里找到更多的文章,或者看看我们的讲座。如果你想在未来了解更多的文章、视频和研究,我也会很感激你在 YouTube、Twitter、脸书、LinkedIn 上的鼓掌或关注。本文以 Creative Commons 4.0 归属许可发布,如果引用,可以转载和修改。

参考

[1] R. O .杜达,P. E .哈特和 D. G .斯托克。模式分类。约翰威利父子公司,2000 年。
[2]克里斯托弗·m·毕晓普。模式识别和机器学习(信息科学和统计学)。美国新泽西州 Secaucus 出版社:纽约斯普林格出版社,2006 年。
[3]f·罗森布拉特。"感知器:大脑中信息存储和组织的概率模型."摘自:《心理评论》65.6 (1958),第 386-408 页。
【4】WS。麦卡洛克和 w .皮茨。"对神经活动中固有思想的逻辑演算."发表于:数学生物物理学通报 5 (1943),第 99-115 页。[5] D. E .鲁梅尔哈特、G. E .辛顿和 R. J .威廉斯。"通过反向传播误差学习表征."载于:自然 323 (1986),第 533-536 页。
[6]泽维尔·格洛特,安托万·博德斯,约舒阿·本吉奥。“深度稀疏整流器神经网络”。《第十四届国际人工智能会议论文集》第 15 卷。2011 年,第 315-323 页。
[7]威廉·h·普雷斯、索尔·a·特乌考斯基、威廉·t·维特林等《数值计算方法》第三版:科学计算的艺术。第三版。美国纽约州纽约市:剑桥大学出版社,2007 年。

简介—第 1 部分

原文:https://towardsdatascience.com/lecture-notes-in-deep-learning-introduction-part-1-5a1729abd580?source=collection_archive---------37-----------------------

FAU 讲座笔记深度学习

激励和高调应用

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

FAU 大学的深度学习。来自深度学习讲座CC BY 4.0 下的图片。

这些是 FAU 的 YouTube 讲座 深度学习 的讲义。这是讲座视频&配套幻灯片的完整抄本。我们希望,你喜欢这个视频一样多。当然,这份抄本是用深度学习技术在很大程度上自动创建的,只进行了少量的手动修改。如果你发现了错误,请告诉我们!

航行

上一讲 / 观看本视频 / 顶级 / 下一讲

欢迎大家参加这学期的深度学习讲座!如你所见,我不在演讲厅。像你们中的许多人一样,我在我的家庭办公室,为了阻止当前的疫情,我们必须在家工作。

因此,我决定把这些讲座录下来,然后放到网上,这样每个人都可以自由使用。您将看到我们对此格式做了一些更改。首先,我们缩短了讲座的时间。我们不再连续走 90 分钟。相反,我们决定将长度缩减成更小的部分,这样你可以在 15 到 30 分钟内一次看完,然后停下来继续下一节课。这意味着我们必须引入一些变化。当然,像每个学期一样,我们也更新了所有的内容,这样我们就真正呈现了当前研究的最新水平。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

深度学习流行语。 CC 下的图片来自深度学习讲座的 4.0 。

这第一堂课将是关于深度学习的介绍,我们将在这堂课中讨论各种各样的主题——首先也是最重要的,当然是深度学习。我们在这里总结了一些你可能已经听过的流行语。我们涵盖了从监督学习到非监督学习的主题。当然,我们谈到了神经网络、特征表示、特征学习、大数据、人工智能、机器表示学习,但也包括分类、分割、回归和生成等不同的任务。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

导言的大纲。来自深度学习讲座CC BY 4.0 下的图片。

让我们简短地看一下大纲。所以首先,我们从一个动机开始,为什么我们对深度学习感兴趣。我们看到,在过去的几年里,我们已经取得了巨大的进步,因此,研究一些应用和已经取得的一些突破将是非常有趣的。然后在接下来的视频中,我们想谈谈机器学习和模式识别,以及它们与深度学习的关系。当然,在第一节课中,我们也想从最基础的开始。我们会谈到感知器,我们还会谈到一些组织问题,你们会在第五段视频中看到。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

英伟达股票市值。 CC 下的图片来自深度学习讲座的 4.0 。

所以让我们来看看动机,以及现在正在发生的有趣的事情。首先也是最重要的,我想给你看这个关于英伟达股票市值的小图表。您可以在这里看到,在过去几年中,特别是自 2016 年以来,市值一直在增长。这种增长惊人的一个原因是,深度学习发现始于 2012 年,大约在 2016 年真正起飞。所以,你可以看到很多人需要额外的计算硬件。Nvidia 正在制造通用图形处理器,允许在其主板上进行任意计算。与每两年将计算能力增加一倍的传统硬件相比,图形卡在大约 14 到 16 个月内将计算能力增加一倍,这意味着它们拥有相当惊人的计算能力。这使我们能够训练真正深度的网络和最先进的机器学习方法。

你可以看到在 2019 年/2018 年底左右有一个相当大的下降。在这里,你可以看到,推动英伟达市场份额价值的不仅仅是深度学习。同时还有另一件非常有趣的事情正在发生,那就是比特币挖掘。在这段时间,比特币的价值确实下降了,Nvidia 股票的市值也下降了。所以这也部分与比特币有关,但你可以看到价值再次上升,因为深度学习对计算能力有巨大的需求。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图像网络挑战。 CC 下的图片来自深度学习讲座的 4.0 。

现在,我们可以瞄准哪些有趣的应用呢?因此,深度学习的大爆炸伴随着所谓的图像网络挑战而来。这是一个非常庞大的数据集,这个庞大的数据集有大约 1400 万张图片,被标记为大约 20,000 个同义词集。所以。这个图像网大规模视觉识别的挑战正在使用大约一千个类。在 image net 挑战之前,分类成一千个类别基本上被认为是完全不可能的。这里使用的图片都是从网上下载的,每张图片都有一个标签。所以,这是一个非常大的数据库,它允许我们将大量的类别分配到单独的图像中。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图像净结果。 CC 下的图片来自深度学习讲座的 4.0 。

现在是 2012 年,Alex Network 的胜利向前迈进了一大步。AlexNet 真的把错误率减半了。因此,如果我们看一下我们在 image net 挑战范围内获得的不同错误率,您可以看到,对于前 5 名错误,我们开始时的错误率约为 25%。所以在 2011 年和之前几年,我们大约在 25%左右,你可以看到这在过去几年里停滞不前。2012 年,第一个卷积神经网络(CNN)在这里推出,CNN 几乎将错误率减半。这是一个很大的惊喜,因为当时没有人能做到。您可以看到,不仅在 2012 年有所进步,而且在 2013 年等错误率越来越下降,直到我们基本上达到了与人类大致相同的水平。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图像净结果。来自深度学习讲座CC BY 4.0 下的图片。

因此,那里的神经网络报告了第一批结果,人们声称已经有了超人的表现。那么,真的是超人的表现吗?嗯,没有多少人真正评估过整个测试集。所以,你实际上可以说超人的表现应该是超级卡帕西——一种表现,因为他实际上经历了整个测试数据集。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

ImageNet 示例。 CC 下的图片来自深度学习讲座的 4.0 。

现在有问题吗?是的,ImageNet 有几个问题。上面第一行可能是相当简单的例子,但是如果你看下面一行,也有一些非常困难的例子。所以,如果你只展示了图像的一部分,或者特别是如果你看到樱桃上也有一只狗,你很难区分这些图像。当然,如果每张图片只有一个标签,这就成问题了。也许一个标签不足以描述一幅完整的图像。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

深度学习行业用户。 CC 下的图片来自深度学习讲座的 4.0 。

所有这些东西现在都在工业中使用。有大量部署用户,包括谷歌、苹果、IBM、Deep Mind,但也有许多其他公司从这里开始。所以你可以看到深度学习已经部分解决了网飞挑战。这是一个 100 万美元的挑战,实际上是建立一个推荐系统,推荐你真正喜欢的电影。你可以看到医疗保健正在进入:西门子和通用电气。但戴姆勒等汽车制造商和许多其他汽车制造商也在前往那里,因为自动驾驶是一个巨大的趋势。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

游戏的突破。来自深度学习讲座CC BY 4.0 下的图片。

让我们来看看几个非常好的突破。例如,人们一直试图在各种游戏中击败人类,我们从 1997 年就知道我们可以在国际象棋中击败人类。所以在 1997 年,IBM 的“深蓝”打败了国际象棋世界冠军加里·卡斯帕罗夫。但是解象棋要简单一点,因为它没有那么复杂的走法。他们解决这个游戏的方法是,他们有一个开始移动的字典。然后,他们在游戏的中间部分对整个游戏进行了一次强力搜索,在游戏快结束时,他们再次使用了字典。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

阿尔法星打塞拉勒。完整视频可以在这里找到。使用 gifify 生成的图像。

现在围棋是一个更难的挑战,因为在游戏的每一步中,你都可以在棋盘的每一部分放置一块石头。这意味着,如果你真的想进行彻底的搜索,寻找游戏中所有不同的机会,只有在走了几步后,实际的走法数量才会因为大的分支因子而激增。以目前的计算能力,我们无法暴力破解整个游戏。但是,2016 年 AlphaGo,一个深度思维创造的系统,真的打败了一个职业围棋手。2017 年,AlphaGo Zero 甚至超越了每一个人类,而且仅仅是靠自我对弈。不久之后,AlphaGo Zero 推广到了其他一些棋盘游戏。他们甚至设法开发了其他不同于典型棋盘游戏的游戏。在 AlphaStar 中,他们击败了职业星际玩家。因此,这确实是一项非常有趣的技术。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

谷歌深梦。 CC 下的图片来自深度学习讲座的 4.0 。

在谷歌的深层梦想中,有一种理解网络内部运作的尝试,他们对网络在展示图像时会梦到什么感兴趣。因此,他们的想法是显示一些任意的输入图像或噪声作为输入,然后不是调整网络参数,而是将输入调整到网络的高激活状态。这取决于我们在看非常有趣的图像。因此,你可以创建非常令人印象深刻的神秘图像,如这里的右手边所示,有了这些输入和网络的改进。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

更深的梦。来自深度学习讲座CC BY 4.0 下的图片。

或者你甚至可以放入蓝天,然后调整成神经元。然后你可以看到天空中突然出现了各种各样的东西,如果你仔细观察,你可以看到出现了像海军上将狗、猪蜗牛、骆驼鸟或狗鱼这样的动物。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

显示 Yolo 能力的示例序列。完整的序列可以在这里找到。使用 gifify 生成的图像。

那么,还有什么有趣的呢?嗯,也有实时物体检测成为可能的方法,如 Yolo (你只看一次)。他们使用多个区域,检测边界框,并非常快速地对它们进行分类,这是实时运行的。它不仅仅适用于像 image net 这样的单个场景图像,在 image net 中,每个图像基本上只有一个对象,但它适用于完全混乱的场景。你甚至可以看到这些检测器对看不见的输入进行处理,比如电影场景。现在,你可能会说这些都是非常有趣的例子,但是我们能每天都使用它吗?或者仅仅是研究产生了奇特的视频?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Siri 使用深度学习技术。来自深度学习讲座CC BY 4.0 下的图片。

真的很好用。您可能已经看到语音识别界面已经有了巨大的改进。此外,借助深度学习技术,Siri 语音识别现在可以识别大约 99.7%的口语单词。所以在 100 个单词中,不到一个单词被错误识别,你可以看到 Siri 正在被使用。许多人在手机上使用它。他们用它来发号施令,它甚至可以在各种环境下工作。此外,在户外的路上环境中,当有背景噪音并且 Siri 仍然工作时。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Alexa 正在使用深度学习。 CC 下的图片来自深度学习讲座的 4.0 。

亚马逊现在也在部署一些非常有趣的东西。你可以看到,现在很多人家里都有这个亚马逊产品,他们可以远程控制不同的东西。他们可以点餐,通常效果很好。但是,当然,口音很重的用户仍然会遇到麻烦。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

谷歌翻译使用深度学习。 CC 下的图片来自深度学习讲座的 4.0 。

我猜你们中的许多人也一直在使用谷歌翻译,这是一个非常好的翻译工具,在过去的两年里已经有了很大的改进。也许两年前,他们的性能确实有所提高,这是因为他们转向了一种通用的深度学习方法,在这种方法中,他们不仅学习单对语言,而且同时使用所有语言来训练深度翻译软件。如果你看看今天的谷歌翻译,很多东西都可以自动翻译,通常只需要在输出中做一些改变,这样你就有一个非常好的翻译。所以,这些是我们今天看到的深度学习令人兴奋的高调应用。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在这个深度学习讲座中,更多令人兴奋的事情即将到来。来自深度学习讲座CC BY 4.0 下的图片。

所以,下一次在《深度访谈》中,我想向你们展示一些不仅仅发生在谷歌和大公司身上的事情。实际上,在埃尔兰根小镇,我们也有一些令人兴奋的发展,我认为值得展示。所以,希望你喜欢这个视频,下次在深度学习上再见。

如果你喜欢这篇文章,你可以在这里找到更多的文章,或者看看我们的讲座。如果你想在未来了解更多的文章、视频和研究,我也会很感激你在 YouTube、Twitter、脸书、LinkedIn 上的鼓掌或关注。本文以 Creative Commons 4.0 归属许可发布,如果引用,可以转载和修改。

参考

[1]大卫·西尔弗、朱利安·施利特维泽、卡伦·西蒙扬等,“在没有人类知识的情况下掌握围棋”。载于:自然 550.7676 (2017),第 354 页。
【2】David Silver,Thomas Hubert,Julian Schrittwieser 等《用通用强化学习算法通过自玩掌握国际象棋和松木》。载于:arXiv 预印本 arXiv:1712.01815 (2017)。
[3] M. Aubreville,M. Krappmann,C. Bertram 等,“一种用于组织学细胞分化的导向空间转换器网络”。载于:ArXiv 电子版(2017 年 7 月)。arXiv: 1707.08525 [cs。简历】。
[4]大卫·伯内克、克里斯蒂安·里斯、伊里·安杰罗普洛斯等,“利用天空图像进行连续短期辐照度预报”。载于:太阳能 110 (2014),第 303–315 页。
【5】Patrick Ferdinand Christ,Mohamed Ezzeldin A Elshaer,Florian Ettlinger 等,“使用级联全卷积神经网络和 3D 条件随机场在 CT 中自动分割肝脏和病灶”。国际医学图像计算和计算机辅助施普林格会议。2016 年,第 415–423 页。
[6] Vincent Christlein,David Bernecker,Florian hnig 等,“使用 GMM 超向量和样本支持向量机进行作家识别”。载于:《模式识别》63 期(2017),第 258–267 页。
[7]弗罗林·克里斯蒂安·盖苏,波格丹一世·乔格斯库,托马索·曼西等,“医学图像中解剖标志检测的人工代理”。发表于:医学图像计算和计算机辅助介入——MICCAI 2016。雅典,2016 年,第 229-237 页。
[8]贾登,魏东,理查德·索彻等,“Imagenet:一个大规模的层次化图像数据库”。载于:计算机视觉和模式识别,2009 年。CVPR 2009。IEEE 会议。2009 年,第 248-255 页。
[9]卡帕斯和飞飞。“用于生成图像描述的深层视觉语义对齐”。载于:ArXiv 电子版(2014 年 12 月)。arXiv: 1412.2306 [cs。简历】。
[10]亚历克斯·克里热夫斯基、伊利亚·苏茨基弗和杰弗里·E·辛顿。“使用深度卷积神经网络的 ImageNet 分类”。神经信息处理系统进展 25。柯伦咨询公司,2012 年,第 1097-1105 页。
【11】Joseph Redmon,Santosh Kumar Divvala,Ross B. Girshick 等《你只看一次:统一的、实时的物体检测》。载于:CoRR abs/1506.02640 (2015 年)。
[12] J .雷德蒙和 a .法尔哈迪。YOLO9000:更好、更快、更强。载于:ArXiv 电子版(2016 年 12 月)。arXiv: 1612.08242 [cs。简历】。
[13]约瑟夫·雷德蒙和阿里·法尔哈迪。“YOLOv3:增量改进”。In: arXiv (2018)。
[14]弗兰克·罗森布拉特。感知器——感知和识别自动机。85–460–1.康奈尔航空实验室,1957 年。
[15] Olga Russakovsky,Jia Deng,苏浩等,“ImageNet 大规模视觉识别挑战赛”。载于:《国际计算机视觉杂志》115.3 (2015),第 211–252 页。
【16】David Silver,Aja Huang,Chris J .等《用深度神经网络和树搜索掌握围棋博弈》。载于:《自然》杂志 529.7587 期(2016 年 1 月),第 484–489 页。
[17] S. E. Wei,V. Ramakrishna,T. Kanade 等,“卷积姿态机器”。在 CVPR。2016 年,第 4724–4732 页。
【18】Tobias würfl,Florin C Ghesu,Vincent Christlein,等《深度学习计算机断层成像》。国际医学图像计算和计算机辅助斯普林格国际出版会议。2016 年,第 432–440 页。

简介—第 2 部分

原文:https://towardsdatascience.com/lecture-notes-in-deep-learning-introduction-part-2-acabbb3ad22?source=collection_archive---------53-----------------------

FAU 讲座笔记深度学习

FAU 的亮点

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

FAU 大学的深度学习。来自深度学习讲座CC BY 4.0 下的图片。

这些是 FAU 的 YouTube 讲座 深度学习 的讲义。这是与幻灯片匹配的讲座视频&的完整抄本。我们希望,你喜欢这个视频一样多。当然,这份抄本是用深度学习技术在很大程度上自动创建的,只进行了少量的手动修改。如果你发现了错误,请告诉我们!

航行

上一讲 / 观看本视频 / 顶级 / 下一讲

所以,非常感谢你再次收听,欢迎来到我们深度学习讲座的第二部分,特别是导言。所以,在介绍的第二部分,我想给你们看一些我们在模式识别实验室做的研究,在德国 FAU。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

今天的汽车是巨大的传感器系统。 CC 下的图片来自深度学习讲座的 4.0 。

我想强调的第一个例子是与奥迪的合作,我们正在与辅助和自动驾驶合作。我们正在研究汽车中的智能传感器。你可以看到今天的奥迪 A8 本质上是一个巨大的传感器系统,它有摄像头和不同的传感器。数据被实时处理,以便弄清楚关于环境的事情。它有停车辅助等功能。还有一些功能可以在驾驶和交通堵塞时为你提供支持,这些都是通过传感器系统完成的。当然,这涉及到许多检测和分割任务。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在线道路场景分析。完整视频可以在这里找到。使用 gifify 生成的图像。

您可以在这里看到一个示例,我们显示了汽车记录的一些输出。这是一个正面视图,我们实际上是在环顾四周,必须检测汽车。你还必须检测——这里用绿色显示——你实际上可以开车去的自由空间,所有这些都必须被检测到,其中许多事情都是通过深度学习完成的。当然,今天有一个巨大的挑战,因为我们需要测试算法。通常这是在模拟环境中完成的,然后产生大量数据以使它们可靠。但最终,这必须在路上运行,这意味着你必须考虑一年中不同的时期和不同的日光条件。这让一切变得异常艰难。你在研究中看到的是,许多检测结果都是在阳光明媚的好天气下进行的。一切都很好,所以算法工作得很好。

但真正的挑战实际上是在多雨的天气条件下,夜晚,冬天,雪,你仍然希望能够检测,当然,不仅仅是汽车,还有交通标志和地标。然后你分析你周围的场景,这样你就可以对你的自动驾驶系统有一个可靠的预测。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

可再生能源系统中的智能设备。来自深度学习讲座CC BY 4.0 下的图片。

我们还研究了智能设备,当然,这里有些非常有趣的话题是可再生能源和电力。我们通常面临的一个问题是在生产时,没有足够的风吹或者没有足够的阳光照射。然后,你必须启动备用发电厂,当然,你不想生产过剩,因为那会产生不能很好储存的能量。现在能量的储存效率不是很高。有一些想法可以解决这个问题,比如实时价格,但你需要的是能够识别和预测在不久的将来会产生多少电力的智能设备。

我们来看一个智能设备的例子。比方说,你有一台冰箱或一台洗衣机,你可以对它们进行编程,让它们在消耗能源的时候灵活变化。当价格较低时,你也可以在一夜之间或一小时内开始洗涤。因此,如果你有可以预测当前价格的智能设备,那么你将能够在本质上平衡能源系统的节点,同时消除峰值条件。假设有很多风在吹。那么,很多人冷却冰箱、洗碗或洗衣服就说得通了。当然,这可以通过递归神经网络来完成,然后预测将产生多少电力,并在客户端使用它来平衡电力生产。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

太阳能发电厂依赖于当地可能快速变化的天气条件。 CC 下的图片来自深度学习讲座的 4.0 。

这个例子展示了一个太阳能发电厂。他们对预测短期电力生产感兴趣,以便通知其他设备或启动备用发电厂。这里的关键时间大约是 10 分钟。因此,这里的想法是监测天空,检测云,估计云的运动,然后直接从当前的天空图像预测,在接下来的 10 分钟内将产生多少电力。所以,假设有一朵云很快就要遮住太阳了。然后,你想启动发电机或通知设备不要消耗这么多能量。现在云真的很难用算法来描述,但我们在这里所做的是,我们正在使用一个深度网络来尝试学习这种表示。这些深度学习功能可以预测电力生产,我们实际上成功地产生了大约 10 分钟的可靠预测。使用传统的模式识别技术,我们只能进行大约 5 分钟的预测。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

深度表示学习支持稳定的电力生产预测。 CC 下的图片来自深度学习讲座的 4.0 。

我今天想展示的另一个非常激动人心的话题是作家认可。现在这里的任务是,你有一篇文章,你想找出是谁写了这篇文章。因此,我们不是在识别写了什么,而是在识别谁写了文本。这里的想法是再次训练一个深度网络,这个深度网络然后学习描述一个人如何写作的抽象特征。所以它只看字母周围的小块,这些字母周围的小块被用来预测谁实际上写了这篇文章。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

作家一代可以创作手写文字。更多细节可以在文森特的博客中找到。来自深度学习讲座的 4.0CC 下的图片。

我的一位同事刚刚提交了一份非常好的材料,他刚刚提交给一个国际会议,他也能够生成特定人的独特笔迹。像许多方法一样,你可以看到这些深度学习方法当然可以用于非常好的目的,比如识别一个人在历史文本中写了什么。但是你也可以用非常相似的方法制造假货和传播错误信息。所以你可以看到,在很多技术中,当然这也是伦理在深度学习领域非常重要的原因。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

深度学习支持肿瘤诊断。 CC 下的图片来自深度学习讲座的 4.0 。

我们正在做的大部分工作实际上都与医疗应用有关。深度学习的一个非常酷的应用是你想要筛选非常大部分的数据。所以我的一个同事开始研究整张幻灯片。这是用于肿瘤诊断的,例如,你有兴趣弄清楚癌症的侵袭性。如果你观察某个时间点上正在进行的细胞分裂的数量,你就可以知道癌症的侵袭性。所以,你实际上感兴趣的不仅仅是找出癌细胞,而是你想知道这些癌细胞实际上经历有丝分裂的频率,即细胞分裂。检测到的有丝分裂的数量表明了这种特定癌症的侵袭性。现在,这些完整的幻灯片图像非常大,你不想单独查看每个细胞。你可以做的是,你可以训练一个深度网络来观察所有的细胞,然后在临床常规中对整个载玻片进行分析。目前,人们并没有看到整张幻灯片。他们在观察高能量场,就像你在这张图片上看到的一小部分。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

临床常规目前只能看几个高倍放大来估计有丝分裂数。 CC 下的图片来自深度学习讲座的 4.0 。

这是一个高功率场。在临床常规中,他们计算视野内的有丝分裂。所以当然,他们只是不在单一的高功率场做它。他们通常观察十个高倍场来评估癌症的侵袭性。使用深度学习方法,你可以处理所有的幻灯片。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用空间转换器进行细胞定位和计数。来自深度学习讲座CC BY 4.0 下的图片。

这就是深度学习方法的样子。你在网络中有一部分定位细胞,然后网络的另一部分对细胞进行分类,不管是有丝分裂细胞,正常细胞还是癌细胞。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

血管造影术允许使用静脉造影剂来显现血管。 CC 下的图片来自深度学习讲座的 4.0 。

非常有趣的事情也可以用缺陷像素插值来完成。这里,我们看到一个小场景,展示了心脏的冠状动脉。典型地,这些冠状动脉不是静止的。它们在移动,因为它们在移动,所以很难看到和分析它们。因此,为了创建清晰的冠状动脉图像,通常要做的是注射造影剂,而你之所以能在这张图像中看到冠状动脉,是因为它们现在充满了碘基造影剂。否则,因为血液在 X 射线吸收方面非常接近水,所以你什么也看不到。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

呼吸和心脏运动使得心脏减影成像困难。来自深度学习讲座CC BY 4.0 下的图片。

使动脉可视化的一种非常普通的技术是拍摄两幅图像:一幅有造影剂,一幅没有。现在,如果你减去两者,你只会看到造影剂。在心脏介入治疗中,这是非常困难的,因为心脏一直在运动,而患者在呼吸。因此很难应用像数字减影血管造影术这样的技术。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用深度学习技术的缺陷像素插值允许虚拟数字减影血管造影的计算。 CC 下的图片来自深度学习讲座的 4.0 。

这里我们提出分割检测到的血管。因此,我们使用深度学习框架,实际上是分割血管。一旦我们有了血管分割,我们就用它作为掩模。然后,如果没有造影剂,我们使用深度学习方法来预测掩模的像素。这将使这些像素从图像中消失。现在,你可以把这张虚拟的非对比图像从原始投影中减去,你就得到一张数字减影血管造影照片。这项技术也适用于动态图像。因此,没有深度学习的技术,这是做不到的。插值的实际实现是由 U-Net 完成的。在这节课的后半部分,当我们讨论图像分割时,你们会听到这种情况,它通常会用到。U-Net 是一个通用的图像到图像转换器。你也可以用它来产生无对比度的图像。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

强化学习允许类似放射科医生的标志检测。图片由 Florin Ghesu 提供。

在全身图像中经常做的另一个重要部分是,你想要定位不同的器官。我的同事 Florin Ghesu 开发了一种聪明的方法来找出不同器官的位置。所以,我们的想法是以一种非常类似于放射科医生的方式来处理图像:你从查看图像的一小部分开始,然后你试图预测你必须去哪里找到感兴趣的特定器官。当然,在单一分辨率水平上这样做是不够的。因此,您还可以在更小的分辨率级别上细化搜索,以便获得器官质心的非常精确的预测。这种预测非常快,因为你只看体积的一小部分。所以你可以在大约两秒钟内完成 200 个解剖标志。另一个非常有趣的部分是,你产生了一条也可以被解释的路径。即使在体积中不存在特定标志的情况下,这种方法也不会失败。因此,假设您在一个甚至没有显示臀部的体积中寻找髋骨。然后,您将看到虚拟代理试图离开该卷,它不会预测错误的位置。相反,它会告诉你髋骨会低得多,你必须把音量留在这个位置。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

深度学习地标检测也适用于 X 射线投影。图片由 Bastian Bier 提供。

正如我的同事 Bastian Bier 所演示的那样,地标检测也可以用于投影图像。他开发了一种非常有趣的方法,利用地标的三维位置。利用三维位置,您可以创建地标的虚拟投影,并训练基于投影图像的分类器。使用基于投影图像的分类器,您可以在感兴趣的特定解剖结构的任意视图中检测界标。在这里,我们展示了一个髋骨的例子,你可以看到,如果我们向前投影,并试图检测界标,这实际上是一个非常困难的任务。使用 Bastion 设计的方法,我们能够跟踪整个髋骨,并直接从投影视图中找到髋骨上的特定标志。所以这里的想法是,你用一个卷积姿态机。这里,我们基本上单独处理每个地标,然后通知在第一部分中已经检测到的不同地标关于相应的其他地标的位置。然后,你一次又一次地处理,直到你有一个最终的地标位置。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

根据患者体表数据从内部器官进行预测。 CC 下的图片来自深度学习讲座的 4.0 。

我的同事夏忠一直致力于器官位置的预测,他一直在做的是,他基本上是使用一个三维相机来检测病人的表面。然后,他想预测器官在体内的实际位置。现在,这非常有趣,因为我们可以利用这些信息来预测不同器官将会受到多少辐射剂量。因此,如果我知道器官在哪里,那么我就可以调整我的放射治疗计划,甚至是成像,以便选择 x 射线设备的位置,使风险器官的剂量最小。这可以帮助我们减少器官的剂量和在相应治疗后发生癌症的风险。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

基于主体的器官分割。来自深度学习讲座CC BY 4.0 下的图片。

现在,这种仅从表面信息预测器官位置的方法也可以用于在介入 CT 中执行器官分割。因此,这里的想法是,你从一个器官的初始点云开始,然后像前面基于代理的方法一样对它进行优化。我们逐步修改网格,使其与特定图像中的器官形状相匹配。你可以在左边看到一些手术前的 CT 图像,从这里,我们可以训练算法并产生点云。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

基于智能体的器官分割。图片由夏忠提供。

然后,您可以训练一个网络来对这些点云进行变形,并生成新的形状,使它们与实际的图像外观相匹配。有趣的是,这种方法预先知道器官的形状,只对器官做微小的改变,以匹配当前的图像。这允许我们在介入数据中产生非常快速和非常准确的器官分割。因此,我们用常规的 CT 数据进行训练,但它也适用于用移动 C 型臂或血管造影系统完成的图像,这些图像的质量要低得多。这些图像在介入环境中用于引导目的。我们可以在比如说 0.3 到 2.6 秒内应用我们的方法,这比传统的 U-Net 方法快大约 50 到 100 倍,在传统的 U-Net 方法中,你可以进行完全的 3-D 处理。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在这个深度学习讲座中,更多令人兴奋的事情即将到来。来自深度学习讲座CC BY 4.0 下的图片。

所以,下一次在深度学习中,我们不仅会谈论成功,还会谈论深度学习的局限性。此外,我们还想讨论几个可能有助于减少这些限制的未来方向。非常感谢您的观看,希望在下一段视频中见到您。

如果你喜欢这篇文章,你可以在这里找到更多的文章,或者看看我们的讲座。如果你想在未来了解更多的文章、视频和研究,我也会很感激你在 YouTube、Twitter、脸书、LinkedIn 上的鼓掌或关注。本文以 Creative Commons 4.0 归属许可发布,如果引用,可以转载和修改。

参考

[1]大卫·西尔弗、朱利安·施利特维泽、卡伦·西蒙扬等,“在没有人类知识的情况下掌握围棋”。载于:自然 550.7676 (2017),第 354 页。
【2】David Silver,Thomas Hubert,Julian Schrittwieser 等《用通用强化学习算法通过自玩掌握国际象棋和松木》。载于:arXiv 预印本 arXiv:1712.01815 (2017)。
[3] M. Aubreville,M. Krappmann,C. Bertram 等,“一种用于组织学细胞分化的导向空间转换器网络”。载于:ArXiv 电子版(2017 年 7 月)。arXiv: 1707.08525 [cs。简历】。
[4]大卫·伯内克、克里斯蒂安·里斯、伊里·安杰罗普洛斯等,“利用天空图像进行连续短期辐照度预报”。载于:太阳能 110 (2014),第 303–315 页。
【5】Patrick Ferdinand Christ,Mohamed Ezzeldin A Elshaer,Florian Ettlinger 等,“使用级联全卷积神经网络和 3D 条件随机场在 CT 中自动分割肝脏和病灶”。国际医学图像计算和计算机辅助施普林格会议。2016 年,第 415–423 页。
[6] Vincent Christlein,David Bernecker,Florian hnig 等,“使用 GMM 超向量和样本支持向量机进行作家识别”。载于:《模式识别》63 期(2017),第 258–267 页。
[7]弗罗林·克里斯蒂安·盖苏,波格丹一世·乔格斯库,托马索·曼西等,“医学图像中解剖标志检测的人工代理”。发表于:医学图像计算和计算机辅助介入——MICCAI 2016。雅典,2016 年,第 229-237 页。
[8]贾登,魏东,理查德·索彻等,“Imagenet:一个大规模的层次化图像数据库”。载于:计算机视觉和模式识别,2009 年。CVPR 2009。IEEE 会议。2009 年,第 248-255 页。
[9]卡帕斯和飞飞。“用于生成图像描述的深层视觉语义对齐”。载于:ArXiv 电子版(2014 年 12 月)。arXiv: 1412.2306 [cs。简历】。
[10]亚历克斯·克里热夫斯基、伊利亚·苏茨基弗和杰弗里·E·辛顿。“使用深度卷积神经网络的 ImageNet 分类”。神经信息处理系统进展 25。柯伦咨询公司,2012 年,第 1097-1105 页。
【11】Joseph Redmon,Santosh Kumar Divvala,Ross B. Girshick 等《你只看一次:统一的、实时的物体检测》。载于:CoRR abs/1506.02640 (2015 年)。
[12] J .雷德蒙和 a .法尔哈迪。YOLO9000:更好、更快、更强。载于:ArXiv 电子版(2016 年 12 月)。arXiv: 1612.08242 [cs。简历】。
[13]约瑟夫·雷德蒙和阿里·法尔哈迪。“YOLOv3:增量改进”。In: arXiv (2018)。
[14]弗兰克·罗森布拉特。感知器——感知和识别自动机。85–460–1.康奈尔航空实验室,1957 年。
[15] Olga Russakovsky,Jia Deng,苏浩等,“ImageNet 大规模视觉识别挑战赛”。载于:《国际计算机视觉杂志》115.3 (2015),第 211–252 页。
【16】David Silver,Aja Huang,Chris J .等《用深度神经网络和树搜索掌握围棋博弈》。载于:《自然》杂志 529.7587 期(2016 年 1 月),第 484–489 页。
[17] S. E. Wei,V. Ramakrishna,T. Kanade 等,“卷积姿态机器”。在 CVPR。2016 年,第 4724–4732 页。
【18】Tobias würfl,Florin C Ghesu,Vincent Christlein,等《深度学习计算机断层成像》。国际医学图像计算和计算机辅助斯普林格国际出版会议。2016 年,第 432–440 页。

简介—第 3 部分

原文:https://towardsdatascience.com/lecture-notes-in-deep-learning-introduction-part-3-22142caad28a?source=collection_archive---------65-----------------------

FAU 讲座笔记深度学习

深度学习的局限性和未来方向

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

FAU 大学的深度学习。来自深度学习讲座CC BY 4.0 下的图片。

这些是 FAU 的 YouTube 讲座 深度学习 的讲义。这是与幻灯片匹配的讲座视频&的完整抄本。我们希望,你喜欢这个视频一样多。当然,这份抄本是用深度学习技术在很大程度上自动创建的,只进行了少量的手动修改。如果你发现了错误,请告诉我们!

航行

上一讲 / 观看本视频 / 顶级 / 下一讲

感谢收看深度学习的下一期视频。所以,我想在这个视频中展示给你的是深度学习的一些局限性。所以,你可能想知道有什么限制吗?我们说完了吗?我们不是在这里学到了可以解决所有问题的东西吗?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图像字幕的正面例子。 CC 下的图片来自深度学习讲座的 4.0 。

当然也有一些限制。例如,像图像字幕这样的任务会产生令人印象深刻的结果。你可以看到网络能够识别棒球运动员,穿着粉色裙子在空中跳跃的女孩,甚至是弹吉他的人。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

图像字幕中的错误。 CC 下的图片来自深度学习讲座的 4.0 。

所以我们来看一些错误。在左边,你可以看到,这显然不是棒球棒。此外,这不是一只猫在中心的形象,他们也像在右手边的一个轻微的错误:在行李箱顶部的猫不是黑色的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

清除图像字幕中的错误:来自深度学习讲座CC 下的图像 4.0

有时它们甚至是简单的错误,比如左图中的这个:我没有看到路中间有一匹马,右图中也没有一个女人在镜子前抱着一只泰迪熊。

这当然是因为有几个挑战,其中一个主要挑战是训练数据。深度学习应用需要巨大的人工标注数据集,而这些数据集很难获得。注释既费时又费钱,而且常常含糊不清。所以,正如你在 image net challenge 中已经看到的,有时不清楚分配哪个标签,显然你必须分配标签的分布。此外,我们看到,即使在人工注释中,也存在典型的错误。为了得到一个真正好的标签,你需要做的是,你实际上需要请两个甚至更多的专家来完成整个贴标过程。然后,您可以找到标签分布非常明显的实例。这些是典型的原型,标签的广泛分布是人们不确定的图像。如果我们有这样的问题,那么我们的性能通常会显著下降。因此,问题是我们能在多大程度上进行模拟,例如扩展训练数据。

当然,也存在信任和可靠性方面的挑战。因此,对于高风险的应用程序来说,验证是强制性的,监管机构对此可能会非常严格。他们真的想了解那些高风险系统中发生了什么。端到端学习本质上禁止识别各个部分是如何工作的。因此,监管者很难判断哪个部分做了什么,以及这个系统实际上为什么会工作。在这一点上,我们必须承认,这在很大程度上还没有解决。很难区分网络的哪个部分在做什么。基于经典算法的模块化方法可能是未来解决这些问题的一种方法。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

经典的 CT 重建使用滤波和反投影来生成 CT 切片图像。 CC 下的图片来自深度学习讲座的 4.0 。

这就把我们带到了未来的方向,我们在埃尔兰根喜欢做的事情是学习算法。例如,你可以看看经典的计算机断层摄影,它是用滤波反投影公式表示的。你必须沿着投影方向过滤,然后在角度上求和,以产生最终图像。所以这个卷积和反投影实际上可以用线性算子来表示。因此,它们本质上是矩阵乘法。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

滤波反投影可以在数学上等同地映射到具有三层的神经网络上。来自深度学习讲座CC BY 4.0 下的图片。

现在,这些矩阵乘法可以作为一个神经网络来实现,这样你就有了一个算法或网络设计,可以为特定目的进行训练。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

扇形束几何形状的重构网络。 CC 下的图片来自深度学习讲座的 4.0 。

因此,在这里,我们扩展了这种方法,以便将其应用于扇束投影数据。这是对算法的一个微小修改。也有像限角情况这样无法解决的情况。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

完整的 CT 扫描。来自深度学习讲座的 4.0CC 下的图片。

在这个图像中,你看到一个完整的扫描,这产生了一个合理的 CT 图像。然而,如果你只错过了 20 度的旋转,你已经看到了严重的伪像:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这个 CT 扫描只少了 20 度的旋转。 CC 下的图片来自深度学习讲座的 4.0 。

现在,如果你把你的重建算法转换成一个神经网络,并用一些训练数据重新训练它。这里只有 15 幅图像,您可以看到,即使在看不见的数据上,我们也能够恢复大部分丢失的信息:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

已知的 CT 重建能够补偿丢失的 20 度旋转。来自深度学习讲座CC BY 4.0 下的图片。

现在,如果你看这张图片的顶部,你可以看到质量减少了。我们显示了右侧左图中红线后的线图:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

不同 CT 重建的线轮廓比较。 CC 下的图片来自深度学习讲座的 4.0 。

现在这里是绿色,你可以看到基本上没有受到影响的参考图像。一旦引入角度限制,就会出现红色曲线,在图像的顶部显示这些伪像。现在,如果你进一步采取我们的深度学习方法,你会得到蓝色曲线,这大大减少了角度和限制带来的问题。现在,有趣的部分是因为我们的算法受到了传统 CT 重建算法的启发,所有这些层都有解释:它们与特定的功能相关联。在如此短的扫描中,你通常会做什么,就是对测量了两次的射线进行加权,这样相对的射线正好加在一起。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

用于网络初始化的经典 Parker 权重。来自深度学习讲座的 4.0CC 下的图片。

你可以看到图中帕克的体重。现在,如果我们训练我们的算法,主要的变化是帕克权重。发生的情况是,我们可以看到重量的增加,特别是在训练后穿过具有角度限制的区域的光线中:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

训练算法后的冗余权重。 CC 下的图片来自深度学习讲座的 4.0 。

因此,网络学会了在那些没有被测量的射线中使用来自稍微不同方向的信息。你甚至可以继续,然后将这种重建方法与额外的去条纹和去噪步骤结合起来,我们将在这节课结束时展示。因此,我们也可以在低对比度信息中显著改善。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

额外的去条纹和去噪声进一步改善了重建。来自深度学习讲座CC BY 4.0 下的图片。

在这里,您可以在左上角看到全扫描参考的图像,在右上角看到仍有明显条纹的神经网络输出,在右下角,您可以看到条纹减少网络。它能够真正减少那些由角度限制引起的条纹。与左下方的去噪方法相比,您可以看到这些条纹会减少,但仍然存在。只有这样一个训练有素的方法,了解问题是什么,实际上能够有效地减少那些伪像。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在这个深度学习讲座中,更多令人兴奋的事情即将到来。 CC 下的图片来自深度学习讲座的 4.0 。

所以下一次在深度学习中,我们想看看基本的模式识别和机器学习。有哪些基本规则,这与深度学习有什么关系?然后,我们想继续讨论感知器,它是神经网络的基本单元。从这些感知器,你可以建立那些真正的深度网络,我们一直在这个和以前的视频中。所以,我希望你喜欢这个视频,如果你下次收听的话,那就太好了。谢谢大家!

如果你喜欢这篇文章,你可以在这里找到更多的文章,或者看看我们的讲座。如果你想在未来了解更多的文章、视频和研究,我也会很感激你在 YouTube、Twitter、脸书、LinkedIn 上的鼓掌或关注。本文以 Creative Commons 4.0 归属许可发布,如果引用,可以转载和修改。

参考

[1]大卫·西尔弗、朱利安·施利特维泽、卡伦·西蒙扬等,“在没有人类知识的情况下掌握围棋”。载于:自然 550.7676 (2017),第 354 页。
【2】David Silver,Thomas Hubert,Julian Schrittwieser 等《用通用强化学习算法通过自玩掌握国际象棋和松木》。载于:arXiv 预印本 arXiv:1712.01815 (2017)。
[3] M. Aubreville,M. Krappmann,C. Bertram 等,“一种用于组织学细胞分化的导向空间转换器网络”。载于:ArXiv 电子版(2017 年 7 月)。arXiv: 1707.08525 [cs。简历】。
[4]大卫·伯内克、克里斯蒂安·里斯、伊里·安杰罗普洛斯等,“利用天空图像进行连续短期辐照度预报”。载于:太阳能 110 (2014),第 303–315 页。
【5】Patrick Ferdinand Christ,Mohamed Ezzeldin A Elshaer,Florian Ettlinger 等,“使用级联全卷积神经网络和 3D 条件随机场在 CT 中自动分割肝脏和病灶”。国际医学图像计算和计算机辅助施普林格会议。2016 年,第 415–423 页。
[6] Vincent Christlein,David Bernecker,Florian hnig 等,“使用 GMM 超向量和样本支持向量机进行作家识别”。载于:《模式识别》63 期(2017),第 258–267 页。
[7]弗罗林·克里斯蒂安·盖苏,波格丹一世·乔格斯库,托马索·曼西等,“医学图像中解剖标志检测的人工代理”。发表于:医学图像计算和计算机辅助介入——MICCAI 2016。雅典,2016 年,第 229-237 页。
[8]贾登,魏东,理查德·索彻等,“Imagenet:一个大规模的层次化图像数据库”。载于:计算机视觉和模式识别,2009 年。CVPR 2009。IEEE 会议。2009 年,第 248-255 页。
[9]卡帕斯和飞飞。“用于生成图像描述的深层视觉语义对齐”。载于:ArXiv 电子版(2014 年 12 月)。arXiv: 1412.2306 [cs。简历】。
[10]亚历克斯·克里热夫斯基、伊利亚·苏茨基弗和杰弗里·E·辛顿。“使用深度卷积神经网络的 ImageNet 分类”。神经信息处理系统进展 25。柯伦咨询公司,2012 年,第 1097-1105 页。
【11】Joseph Redmon,Santosh Kumar Divvala,Ross B. Girshick 等《你只看一次:统一的、实时的物体检测》。载于:CoRR abs/1506.02640 (2015 年)。
[12] J .雷德蒙和 a .法尔哈迪。YOLO9000:更好、更快、更强。载于:ArXiv 电子版(2016 年 12 月)。arXiv: 1612.08242 [cs。简历】。
[13]约瑟夫·雷德蒙和阿里·法尔哈迪。“YOLOv3:增量改进”。In: arXiv (2018)。
[14]弗兰克·罗森布拉特。感知器——感知和识别自动机。85–460–1.康奈尔航空实验室,1957 年。
[15] Olga Russakovsky,Jia Deng,苏浩等,“ImageNet 大规模视觉识别挑战赛”。载于:《国际计算机视觉杂志》115.3 (2015),第 211–252 页。
【16】David Silver,Aja Huang,Chris J .等《用深度神经网络和树搜索掌握围棋博弈》。载于:《自然》杂志 529.7587 期(2016 年 1 月),第 484–489 页。
[17] S. E. Wei,V. Ramakrishna,T. Kanade 等,“卷积姿态机器”。在 CVPR。2016 年,第 4724–4732 页。
【18】Tobias würfl,Florin C Ghesu,Vincent Christlein,等《深度学习计算机断层成像》。国际医学图像计算和计算机辅助斯普林格国际出版会议。2016 年,第 432–440 页。

简介—第 4 部分

原文:https://towardsdatascience.com/lecture-notes-in-deep-learning-introduction-part-4-2e86af0498ce?source=collection_archive---------58-----------------------

FAU 讲座笔记深度学习

模式识别短期课程

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

FAU 大学的深度学习。来自深度学习讲座CC BY 4.0 下的图片。

这些是 FAU 的 YouTube 讲座 深度学习 的讲义。这是与幻灯片匹配的讲座视频&的完整抄本。我们希望,你喜欢这个视频一样多。当然,这份抄本是用深度学习技术在很大程度上自动创建的,只进行了少量的手动修改。如果你发现了错误,请告诉我们!

航行

上一讲 / 观看本视频 / 顶级 / 下一讲

欢迎来到我们的深度学习讲座。我们现在在引言的第 4 部分。现在,在第四条道路上,我们想谈谈机器学习和模式识别,首先我们必须介绍一些术语和符号。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这节课的注释。 CC 下的图片来自深度学习讲座的 4.0 。

所以,在整个系列讲座中,我们将使用下面的符号:矩阵是粗体大写的。所以,这里的例子有 MA 。向量是粗体的,小写的例子有 vx 。标量是斜体和小写的:y,w,α。对于函数的梯度,我们使用梯度符号∇,对于偏导数,我们使用偏导数符号∂.此外,我们有一些关于深度学习的细节。因此,可训练权重通常称为 w。特征或输入为 x 。它们是典型的向量。然后,我们有基本事实标签,即 y。我们有一些估计输出,即 y hat,如果我们有一些迭代正在进行,我们通常在上标上,并将其放入括号中。这里是一个迭代索引:变量 x 的迭代 I。当然,这是一个非常粗略的符号,我们将在整个讲座中进一步发展它。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

经典图像处理流水线。来自深度学习讲座的 4.0CC 下的图片。

如果你听过我们组以前的讲座,那么你应该知道模式识别的经典图像处理流水线。它通过采样进行记录,然后进行模数转换。然后是预处理、特征提取和分类。当然,在分类这一步,你还得做训练。模式识别管道的第一部分将在我们的讲座介绍模式识别中介绍。分类的主要部分包含在模式识别中。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

经典特征提取。下图 CC BY 4.0 来自深度学习讲座

现在,你在这幅图像中看到的是一个经典的图像识别问题。比方说,你想区分苹果和梨。现在,你可以做的一个想法是,你可以围绕它们画一个圆,然后测量长轴和短轴的长度。所以,你会认出苹果是圆的,梨更长。所以,它们的椭圆在长轴和短轴上有所不同。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

向量空间中的苹果和梨。 CC 下的图片来自深度学习讲座的 4.0 。

现在,你可以把这两个数字表示成一个向量值。然后,你进入一个二维空间,这基本上是一个向量空间表示,你会发现所有的苹果都位于 x 轴的对角线上。如果它们的直径和一个方向增加,另一个方向的直径也增加。你的梨偏离了这条直线,因为它们的短轴和长轴不同。现在,你可以找到一条线把这两者分开,这就是你的第一个分类系统。

现在,许多人对大数据处理如何工作的看法显示在这个小图中:

“那么,这是你的机器学习系统?”

“是的,把数据倒入这一大堆线性代数中,然后收集另一边的答案。”

“如果答案是错的呢?”

“搅拌这堆东西,直到它们看起来合适为止!”

KXCD 机器学习

所以,你可以在这张图中看到,当然这是许多人认为他们接近深度学习的方式。你只需将数据输入,最后你只需稍微搅拌一下,就能得到正确的结果。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

深度学习中的管道。 CC 下的图片来自深度学习讲座的 4.0 。

但实际上并不是这样。提醒他们你想做的是你想建立一个学习分类的系统。这意味着从你的测量你首先要做一些预处理,如减少噪音。你必须得到一幅有意义的图像,然后进行特征提取,从中你可以进行分类。现在,与深度学习的不同之处在于,你把所有的东西都放在一个单一的引擎中。因此,预处理、特征提取和分类只需一步即可完成。你只需要使用训练数据和测量来产生那些系统。现在,这已被证明在许多应用中有效,但正如我们在上一个视频中已经讨论过的,您必须拥有正确的数据。你不能只是倒入一些数据,然后搅拌,直到它开始看起来正确。你必须有一个适当的数据集,一个适当的数据收集,如果你没有以适当的方式这样做,你只会得到废话。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

模式识别的前两个假设。 CC 下的图片来自深度学习讲座的 4.0 。

当然,我们有几个假设,这些假设也适用于深度学习领域。所以在经典模式识别中,我们遵循这些假设。所以,第一个假设是,有代表性的抽样模式的可变性,这些抽样模式在课堂和问题域ω中给出。这里,您有所有这些类别的培训示例,它们具有代表性。所以,这意味着如果你有一个新的观察,它将与你已经收集的那些模式相似。下一个假设是,存在一个简单模式,这个简单模式具有一些特征,这些特征描述了某个类的成员资格。所以,你必须能够以某种方式处理数据,从而得到这个抽象的表示。有了这种表示,您就可以在分类器中派生出类。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

模式识别的公设 3。来自深度学习讲座CC BY 4.0 下的图片。

此外,同一类的特征在特征域中应该是紧凑的。所以,这意味着不同类的特征,它们应该与其他类分开,而同一类的特征应该彼此靠近。因此,理想情况下,你需要的是较小的组内方差和较大的组间距离。此图中显示了一些示例。所以左上角是一个非常简单的例子。中间那个也是可解的。第三个变得更难,当然,你仍然可以用一个非线性的边界把它们分开。左下角的情况更复杂,因为这里的类是混杂的,你需要在这些类周围画出区域。它们也可能非常紧密地交织在一起,但仍然是可分的,当然,你可能会有数据,但很难弄清楚哪一部分属于哪一部分。通常情况下,如果您遇到像右下方这样的情况,您没有一个非常好的特征表示,您需要考虑是否没有找到更好的特征。今天许多人做的是他们只是说:“哦,让我们去深度学习,只是学习一个合适的表示,然后就可以了。”

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

模式识别排在#4 到#6 之后。 CC 下的图片来自深度学习讲座的 4.0 。

因此,一个复杂的模式由彼此之间有一定关系的简单成分组成,并且该模式可以被分解成这些部分。此外,复杂的图案具有特定的结构,并且不是每个简单部分的排列都给出有效的图案,并且许多图案可以用相对较少的部分来表示。当然,如果简单零件的特征仅略有不同,则两种模式是相似的。看到模式识别的这些基本假设后,我们将看到其中许多仍然适用于深度学习的世界。然而,我们看不到事物是如何分解的。相反,我们建立系统来逐渐简化输入,这样你就可以将它们分解成部分和更好的表示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

生物神经元。来自深度学习讲座CC BY 4.0 下的图片。

现在,让我们从最基本的开始。感知器是大多数神经网络中的基本单元,也是人们对感知器非常感兴趣的原因。实际上,当罗森布拉特在 20 世纪 50 年代介绍它们的时候,人们真的很兴奋,因为罗森布拉特把这种感知机和生物神经元很好地联系在一起。现在,一个生物神经元通过突触与其他神经元相连,并计算传入的兴奋性和抑制性激活的总和。如果它们足够大,那么神经元就会放电,如果你有某个超过阈值的电位,它就会放电。然后,它传递信息,这是典型的全有或全无反应,这意味着如果你有一个更高的刺激,你超过了阈值,这并不意味着它会引起更高的反应。它要么开火,要么不开火。所以它本质上是一个二元分类器。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

感知。 CC 下的图片来自深度学习讲座的 4.0 。

这个概念可以很容易地转换成矢量表示。他设计了一个系统,输入向量由输入值 x₁到 x_n 指定,然后加上一个偏差。在这里,你把它们乘以权重,然后加起来。然后,你有一个激活函数,要么激活,要么不激活,这里为了简单起见,我们可以简单地用符号函数。所以,如果你有一个积极的激活,你就发射。如果你有一个负面的激活,你不会开枪。这可以用符号函数来表示。现在,这导致了一个相当有问题的训练程序。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

分类器训练的感知器目标函数。来自深度学习讲座CC BY 4.0 下的图片。

当然,如果你想训练,你需要有各自类的观察元组。这是你的训练数据集,然后你需要确定误分类特征向量的集合 M。这些向量中,预测的数字 y 和实际的类成员 yᵢ.不匹配如果你计算神经元的输出。现在,如果你有这个集合 M,它必须在训练迭代的每一步之后被确定,那么你试图最小化下面的优化问题:描述你的错误分类的问题本质上是所有你的错误分类样本的总和,其中你计算你的实际神经元的输出。然后乘以真实的类成员。因为两者不匹配,意味着这一定是负的。然后,将上述项乘以负 1,以便为大量错误分类创建一个高值。你试图将这一项最小化。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

感知器权重更新程序。 CC 下的图片来自深度学习讲座的 4.0 。

这基本上导致了一个优化过程,你有一个迭代过程。因此,这种迭代优化必须为权重确定更新的梯度步长。一旦更新了权重,就必须再次确定错误分类的向量集。现在的问题是,在每一次迭代中,M 的组合基数可能会改变,因为每一步你都会有更多的错误分类。你实际上计算的是函数相对于权重的梯度,它只是输入向量乘以正确的类减一。这会给你一个重量的更新。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

感知学习的权重更新策略。来自深度学习讲座CC BY 4.0 下的图片。

现在,如果您计算这个梯度,策略 1 将处理所有样本,然后执行权重更新。策略 2 是在每个丢失的分类样本之后采取更新步骤,然后直接更新权重。因此,每次迭代都有一个更新规则,简化为:旧的权重加上错误分类的样本乘以类成员。这给了你新的权重。现在,您优化到收敛或预定义的迭代次数。这个非常简单的程序有许多缺点,我们将在本课程的稍后部分讨论。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在这个深度学习讲座中,更多令人兴奋的事情即将到来。 CC 下的图片来自深度学习讲座的 4.0 。

所以,在下节课中,如果你想获得一个证书,我们想看看几个重要的组织事项。此外,我们将对您到目前为止看过的四个视频进行一个简短的总结。希望你喜欢这个视频,希望下次再见!

如果你喜欢这篇文章,你可以在这里找到更多的文章,在这里找到更多关于机器学习的教育材料,或者看看我们的深度 学习 讲座。如果你想在未来了解更多的文章、视频和研究,我也会很感激你在 YouTube、Twitter、脸书、LinkedIn 或 T21 上的掌声或关注。本文以 Creative Commons 4.0 归属许可发布,如果引用,可以转载和修改。

参考

[1]大卫·西尔弗、朱利安·施利特维泽、卡伦·西蒙扬等,“在没有人类知识的情况下掌握围棋”。载于:自然 550.7676 (2017),第 354 页。
【2】David Silver,Thomas Hubert,Julian Schrittwieser 等《用通用强化学习算法通过自玩掌握国际象棋和松木》。载于:arXiv 预印本 arXiv:1712.01815 (2017)。
[3] M. Aubreville,M. Krappmann,C. Bertram 等,“一种用于组织学细胞分化的导向型空间转换器网络”。载于:ArXiv 电子版(2017 年 7 月)。arXiv: 1707.08525 [cs。简历】。
[4]大卫·伯内克、克里斯蒂安·里斯、伊里·安杰罗普洛斯等,“利用天空图像进行连续短期辐照度预报”。载于:太阳能 110 (2014),第 303–315 页。
【5】Patrick Ferdinand Christ,Mohamed Ezzeldin A Elshaer,Florian Ettlinger 等,“使用级联全卷积神经网络和 3D 条件随机场在 CT 中自动分割肝脏和病灶”。国际医学图像计算和计算机辅助施普林格会议。2016 年,第 415–423 页。
[6] Vincent Christlein,David Bernecker,Florian hnig 等,“使用 GMM 超向量和样本支持向量机进行作家识别”。载于:《模式识别》63 期(2017),第 258–267 页。
[7]弗罗林·克里斯蒂安·盖苏,波格丹一世·乔格斯库,托马索·曼西等,“医学图像中解剖标志检测的人工代理”。发表于:医学图像计算和计算机辅助介入——MICCAI 2016。雅典,2016 年,第 229-237 页。
[8]贾登,魏东,理查德·索彻等,“Imagenet:一个大规模的层次化图像数据库”。载于:计算机视觉和模式识别,2009 年。CVPR 2009。IEEE 会议。2009 年,第 248-255 页。
[9]卡帕斯和飞飞。“用于生成图像描述的深层视觉语义对齐”。载于:ArXiv 电子版(2014 年 12 月)。arXiv: 1412.2306 [cs。简历】。
[10]亚历克斯·克里热夫斯基、伊利亚·苏茨基弗和杰弗里·E·辛顿。“使用深度卷积神经网络的 ImageNet 分类”。神经信息处理系统进展 25。柯伦咨询公司,2012 年,第 1097-1105 页。
【11】Joseph Redmon,Santosh Kumar Divvala,Ross B. Girshick 等《你只看一次:统一的、实时的物体检测》。载于:CoRR abs/1506.02640 (2015 年)。
[12] J .雷德蒙和 a .法尔哈迪。YOLO9000:更好、更快、更强。载于:ArXiv 电子版(2016 年 12 月)。arXiv: 1612.08242 [cs。简历】。
[13]约瑟夫·雷德蒙和阿里·法尔哈迪。“YOLOv3:增量改进”。In: arXiv (2018)。
[14]弗兰克·罗森布拉特。感知器——感知和识别自动机。85–460–1.康奈尔航空实验室,1957 年。
[15] Olga Russakovsky,Jia Deng,苏浩等,“ImageNet 大规模视觉识别挑战赛”。载于:《国际计算机视觉杂志》115.3 (2015),第 211–252 页。
【16】David Silver,Aja Huang,Chris J .等《用深度神经网络和树搜索掌握围棋博弈》。载于:《自然》杂志 529.7587 期(2016 年 1 月),第 484–489 页。
[17] S. E. Wei,V. Ramakrishna,T. Kanade 等,“卷积姿态机器”。在 CVPR。2016 年,第 4724–4732 页。
【18】Tobias würfl,Florin C Ghesu,Vincent Christlein,等《深度学习计算机断层成像》。国际医学图像计算和计算机辅助斯普林格国际出版会议。2016 年,第 432–440 页。

简介—第 5 部分

原文:https://towardsdatascience.com/lecture-notes-in-deep-learning-introduction-part-5-a3b9faacd313?source=collection_archive---------41-----------------------

FAU 讲座笔记深度学习

练习与展望

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

FAU 大学的深度学习。来自深度学习讲座CC BY 4.0 下的图片。

这些是 FAU 的 YouTube 讲座 深度学习 的讲义。这是与幻灯片匹配的讲座视频&的完整抄本。我们希望,你喜欢这个视频一样多。当然,这份抄本是用深度学习技术在很大程度上自动创建的,只进行了少量的手动修改。如果你发现了错误,请告诉我们!

航行

上一讲 / 观看本视频 / 顶级 / 下一讲

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一种快进到逐层的反向传播。别担心,我们会解释所有的细节。 CC 下的图片来自深度学习讲座的 4.0 。

感谢再次收听,欢迎来到深度学习!在这个小视频中,我们将了解组织事项并结束介绍。那么,让我们来看看组织事项。现在,你能在 FAU 这里得到的模块总共由五个 ECTS 组成。这是讲课加练习。所以,仅仅观看所有这些视频是不够的,你必须通过练习。在练习中,您将使用 Python 实现我们在这里讨论的所有内容。我们将从零开始,所以你将实现感知器神经网络,直到深度学习。最终,我们甚至会朝着 GPU 实现和大型深度学习框架前进。所以,这是必修部分,仅仅通过口试是不够的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们还将在练习中实现最大池。 CC 下的图片来自深度学习讲座的 4.0 。

练习的内容是 Python。如果你从未使用过 python,你将对它做一个介绍,因为 Python 是深度学习实现今天使用的主要语言之一。你真的会从零开始开发一个神经网络。会有前馈神经网络,会有卷积神经网络。您将研究正则化技术,以及如何实际调整权重,使它们具有特定的属性。你将会看到如何用某些或正则化技术来克服过度拟合。当然,我们也将实现循环网络。稍后,我们将使用 Python 框架并将其用于大规模分类。对于这些练习,您应该具备 Python 和 NumPy 的基础知识。你应该了解矩阵乘法等线性代数。图像处理是一个明确的优势。你应该知道如何处理图像——当然——这门课的要求是模式识别基础知识,并且你已经参加过模式识别的其他课程。如果您还没有,您可能需要参考其他参考资料才能跟上这个课程。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

你应该对这门课的练习编码充满热情。照片由马库斯·斯皮斯克派克斯拍摄。

你应该带着对编码的热情,你必须做很多编码,但是你也可以在练习中学习。如果你在这门课之前没有做过大量的编程工作,你会在练习上花很多时间。但是如果你完成了这些练习,你将能够在深度学习框架中实现一些东西,这是非常好的训练。学完本课程后,您不仅可以从 GitHub 下载代码并在自己的数据上运行,还可以:

  • 你也了解网络的内部运作,
  • 如何编写自己的层和
  • 如何在非常低的水平上扩展深度学习算法。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在本课程的练习中,你也将有机会使用真正的大数据集。图片由 Marc Aubreville 提供。点击查看完整视频。

所以,注意细节,如果你不太习惯编程,这将花费一些时间。整个学期将有五次练习。除了最后一个练习,所有的练习都有单元测试。因此,这些单元测试应该可以帮助你实现,在最后一个练习中,将有一个 PyTorch 实现,你将面临一个挑战:你必须解决图像识别任务,以便通过练习。截止日期在各自的练习环节中公布。所以,你必须在学生宿舍为他们注册。

到目前为止,我们在讲座中看到的是,深度学习越来越多地出现在日常生活中。所以,这不仅仅是研究中的一项技术。我们已经看到这种技术真正出现在许多不同的应用中,从语音识别、图像处理等等到自动驾驶。这是一个非常活跃的研究领域。如果你在做这个讲座,你已经为与我们的实验室或行业或其他合作伙伴的研究项目做了很好的准备。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在这个深度学习讲座中,更多令人兴奋的事情即将到来。来自深度学习讲座CC BY 4.0 下的图片。

到目前为止,我们研究了感知机及其与生物神经元的关系。所以,下一次关于深度学习,我们将从下一节课开始,这意味着,我们将把感知器扩展为通用函数逼近器。我们将研究这些模型的基于梯度的训练算法,然后我们还将研究梯度的有效计算。

现在,如果你想准备口语考试,最好想几个综合问题。问题可能是

  • “模式识别的六个假设是什么?”
  • “什么是感知器目标函数?”
  • “你能说出深度学习成功解决的三个应用吗?”

当然,我们还有很多进一步的阅读材料。所以你可以在幻灯片上找到链接,我们也会在这篇文章下面贴上链接和参考资料。

如果你有任何问题,

  • 你可以在练习中请教老师,
  • 你可以给我发邮件,
  • 或者如果你正在 youtube 上看这个,你可以使用评论功能提出你的问题。

所以,有很多联系方式,当然,我们有很多前五个视频的参考资料。现在阅读它们太快了,但你可以暂停视频,然后查看它们,我们也会在这篇文章下面的参考资料中发布这些参考资料。所以,我希望你喜欢这个视频,下次在深度学习中再见!

注意:FAU 的练习材料很广泛。为了了解我们的练习,我们在 GitHub 上创建了 这些例子。完整的锻炼计划目前只对 FAU 的学生开放。如果您对 GitHub 上的练习以外的其他练习感兴趣,请联系我。

如果你喜欢这篇文章,你可以在这里找到更多的文章,或者看看我们的讲座。如果你想在未来了解更多的文章、视频和研究,我也会很感激你在 YouTube、Twitter、脸书、LinkedIn 上的鼓掌或关注。本文以 Creative Commons 4.0 归属许可发布,如果引用,可以转载和修改。

参考

[1]大卫·西尔弗、朱利安·施利特维泽、卡伦·西蒙扬等,“在没有人类知识的情况下掌握围棋”。载于:自然 550.7676 (2017),第 354 页。
【2】David Silver,Thomas Hubert,Julian Schrittwieser 等《用通用强化学习算法通过自玩掌握国际象棋和松木》。载于:arXiv 预印本 arXiv:1712.01815 (2017)。
[3] M. Aubreville,M. Krappmann,C. Bertram 等,“一种用于组织学细胞分化的导向空间转换器网络”。载于:ArXiv 电子版(2017 年 7 月)。arXiv: 1707.08525 [cs。简历】。
[4]大卫·伯内克、克里斯蒂安·里斯、伊里·安杰罗普洛斯等,“利用天空图像进行连续短期辐照度预报”。载于:太阳能 110 (2014),第 303–315 页。
【5】Patrick Ferdinand Christ,Mohamed Ezzeldin A Elshaer,Florian Ettlinger 等,“使用级联全卷积神经网络和 3D 条件随机场在 CT 中自动分割肝脏和病灶”。国际医学图像计算和计算机辅助施普林格会议。2016 年,第 415–423 页。
[6] Vincent Christlein,David Bernecker,Florian hnig 等,“使用 GMM 超向量和样本支持向量机进行作家识别”。载于:《模式识别》63 期(2017),第 258–267 页。
[7]弗罗林·克里斯蒂安·盖苏,波格丹一世·乔格斯库,托马索·曼西等,“医学图像中解剖标志检测的人工代理”。发表于:医学图像计算和计算机辅助介入——MICCAI 2016。雅典,2016 年,第 229-237 页。
[8]贾登,魏东,理查德·索彻等,“Imagenet:一个大规模的层次化图像数据库”。载于:计算机视觉和模式识别,2009 年。CVPR 2009。IEEE 会议。2009 年,第 248-255 页。
[9]卡帕斯和飞飞。“用于生成图像描述的深层视觉语义对齐”。载于:ArXiv 电子版(2014 年 12 月)。arXiv: 1412.2306 [cs。简历】。
[10]亚历克斯·克里热夫斯基、伊利亚·苏茨基弗和杰弗里·E·辛顿。“使用深度卷积神经网络的 ImageNet 分类”。神经信息处理系统进展 25。柯伦咨询公司,2012 年,第 1097-1105 页。
【11】Joseph Redmon,Santosh Kumar Divvala,Ross B. Girshick 等《你只看一次:统一的、实时的物体检测》。载于:CoRR abs/1506.02640 (2015 年)。
[12] J .雷德蒙和 a .法尔哈迪。YOLO9000:更好、更快、更强。载于:ArXiv 电子版(2016 年 12 月)。arXiv: 1612.08242 [cs。简历】。
[13]约瑟夫·雷德蒙和阿里·法尔哈迪。“YOLOv3:增量改进”。In: arXiv (2018)。
[14]弗兰克·罗森布拉特。感知器——感知和识别自动机。85–460–1.康奈尔航空实验室,1957 年。
[15] Olga Russakovsky,Jia Deng,苏浩等,“ImageNet 大规模视觉识别挑战赛”。载于:《国际计算机视觉杂志》115.3 (2015),第 211–252 页。
【16】David Silver,Aja Huang,Chris J .等《用深度神经网络和树搜索掌握围棋博弈》。载于:《自然》杂志 529.7587 期(2016 年 1 月),第 484–489 页。
[17] S. E. Wei,V. Ramakrishna,T. Kanade 等,“卷积姿态机器”。在 CVPR。2016 年,第 4724–4732 页。
【18】Tobias würfl,Florin C Ghesu,Vincent Christlein,等《深度学习计算机断层成像》。国际医学图像计算和计算机辅助斯普林格国际出版会议。2016 年,第 432–440 页。

损失和优化—第 1 部分

原文:https://towardsdatascience.com/lecture-notes-in-deep-learning-loss-and-optimization-part-1-f702695cbd99?source=collection_archive---------64-----------------------

FAU 讲座笔记深度学习

分类和回归损失

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

FAU 大学的深度学习。下图 CC BY 4.0 来自深度学习讲座

这些是 FAU 的 YouTube 讲座 深度学习 的讲义。这是与幻灯片匹配的讲座视频&的完整抄本。我们希望,你喜欢这个视频一样多。当然,这份抄本是用深度学习技术在很大程度上自动创建的,只进行了少量的手动修改。如果你发现了错误,请告诉我们!

航行

上一讲 / 观看本视频 / 顶级 / 下一讲

欢迎大家来深度学习!所以,今天我们想继续讨论不同的损失和优化。我们想继续讨论这些有趣问题的更多细节。先说损失函数吧。损失函数通常用于不同的任务,不同的任务有不同的损失函数。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

分类和回归是深度学习的两个常见任务。 CC 下的图片来自深度学习讲座的 4.0 。

我们面临的两个最重要的任务是回归和分类。因此,在分类中,您希望为每个输入估计一个离散变量。这意味着你要在左边的两类问题中决定它是蓝点还是红点。所以,你需要建立一个决策边界的模型。

在回归中,想法是你想要建模一个解释你的数据的函数。所以,你有一些输入函数,比如说 x₂,你想用它来预测 x₁。为此,您需要计算一个函数,该函数将为任何给定的 x₂.生成适当的 x₁值在这个例子中,你可以看到这是一个直线拟合。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

损失函数和最后激活函数之间的差异很重要。 CC 下的图片来自深度学习讲座的 4.0 。

我们讨论了激活函数,最后一次激活为 softmax,以及交叉熵损失。不知何故,我们把它们结合起来,很明显,我们网络中最后一个激活函数和损失函数是不同的。最后一个激活函数应用于每批中的单个样品 x。它也会在培训和测试时出现。因此,最后一个激活函数将成为网络的一部分,并保留在那里以产生输出/预测。它通常会产生一个矢量。

现在,损失函数结合了所有 M 个样本和标签。在它们的组合中,它们产生了一个损失,这个损失描述了拟合度有多好。因此,它只在训练期间出现,损失通常是一个标量值,描述拟合的好坏。所以,你只在训练时间需要它。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

大多数训练损失与使用最大似然估计的概率解释有关。来自深度学习讲座CC BY 4.0 下的图片。

有趣的是,许多损失函数可以放在一个概率框架中。这就导致了最大似然估计。在最大似然估计中——提醒一下——我们认为一切都是概率性的。因此,我们有一组观察值 X ,它们由单独的观察值组成。然后,我们有相关的标签。它们也来源于某种分布,观察值表示为 Y 。当然,我们需要一个条件概率密度函数来描述 yx 之间的关系。特别是,在给定一些观察值 x 的情况下,我们可以计算出 y 的概率。这将是非常有用的,例如,如果我们想决定一个特定的类。现在,我们必须以某种方式模拟这个数据集。它们是从一些分布中提取的,然后给定数据集的联合概率可以作为单个条件概率的乘积来计算。当然,如果它们是独立的,并且分布相同,您可以简单地将它们作为整个训练数据集的大型产品。所以,你得到了所有 M 个样本的乘积,这只是条件的乘积。这很有用,因为我们可以通过最大化整个训练数据集的联合概率来确定最佳参数。我们必须通过评估这个大型产品来完成。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

负对数似然将乘积转换成总和,最大值转换成最小值。来自深度学习讲座的 4.0CC 下的图片。

现在,这个大型产品有几个问题。特别是,如果我们有高值和低值,它们可能会很快抵消掉。因此,将整个问题转换到对数域可能会很有趣。因为对数是一个单调的变换,它不会改变最大值的位置。因此,我们可以使用对数函数和负号将最大化转化为最小化。我们可以不看似然函数,而是看负对数似然函数。然后,我们的大乘积突然变成了所有观测值的和乘以条件概率的负对数。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

让我们假设一个单变量高斯模型作为统计基础。 CC 下的图片来自深度学习讲座的 4.0 。

现在,我们可以看看单变量高斯模型。现在我们又是一维的,可以用正态分布来建模,然后选择网络的输出作为期望值,1/β作为标准差。如果我们这样做,我们可以找到以下公式:β的平方根除以 2π的平方根乘以负β的指数函数乘以标签减去对 2 的幂的预测除以 2。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

只需几个步骤,我们就可以转换高斯分布的对数似然。来自深度学习讲座CC BY 4.0 下的图片。

好的,让我们继续,把它放进我们的对数似然函数。记住这是真的东西,你应该在口语考试中知道。每个人都需要知道正态分布,每个人都需要能够将这种宇宙高斯分布转换成损失函数。如果我们这样做,你会看到我们可以使用对数。它非常方便,因为它允许我们在这里分割产品。然后,我们还看到对数与指数函数相抵消。我们简单地得到这个β乘以 2 乘以 y 下标 m 减去 y hat 下标 m 的 2 次方。我们可以通过应用对数并求出平方根 2π来进一步简化第一项。然后,我们看到前两项的和不依赖于 M,所以我们可以简单地乘以 M,以便去掉和,只将和移到最后一项。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

最后,我们到达 L2 损失。 CC 下的图片来自深度学习讲座的 4.0 。

现在,你可以看到,这里只有最后一部分实际上取决于 w。其他所有东西甚至都不包含 w。因此,如果我们寻求朝着 w 优化,我们可以简单地忽略前两部分。然后,我们只剩下右边的部分。你会看到,如果我们现在假设β为 1,我们最终得到的是 1/2,和是差的平方根。这正是 L2 的标准。如果你用向量符号来写,你会得到这个。当然,这相当于一个方差均匀的多维高斯分布。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

其他 Lp 范数也可以作为损失函数。 CC 下的图片来自深度学习讲座的 4.0 。

好吧,这不仅仅是 L2 的损失。L1 也有损失。所以,我们也可以替换它们,我们也会在几个视频中看到不同 L 范数的一些性质。这通常是一个非常好的方法,并且它对应于最小化预期的错误分类概率。这可能会导致收敛缓慢,因为它们不会惩罚严重的错误分类概率,但在极端的标签噪声中它们可能是有利的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

对于分类,我们假设分类分布。来自深度学习讲座CC BY 4.0 下的图片。

现在,让我们假设我们想要分类。然后,我们的网络会给我们提供一些概率输出。比方说,我们只分为两类。然后,我们可以将它建模为伯努利分布,其中有 0 类和 1 类。当然另一类的概率简单来说就是一减 p 。这给了我们概率分布 p ʸ时报(1-p)⁻ʸ.通常,我们不会只有两个类。这意味着我们需要推广到多元或分类分布。那么 y 通常再次被建模为独热编码向量。然后,我们可以将分类分布记为所有类别的概率与基础事实标签的幂(零或一)的乘积。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

分类分布的一个例子。 CC 下的图片来自深度学习讲座的 4.0 。

让我们看一个分类分布的例子。我们想举的例子是伯努利试验,抛硬币。我们将头部编码为(1)0)ᵀ,尾部编码为(0)1)ᵀ.然后,我们有一个不公平的硬币,这个不公平的硬币偏好概率为 0.7 的尾部。头的可能性是 0.3。然后,我们观察到真正的标签 y 是尾部。现在,我们可以使用上面的等式,并插入那些观察值。这意味着我们得到 0.3 的 0 次方和 0.7 的 1 次方。某事物的 0 次方总是等于 1。那么 0.7 的 1 次方当然是 0.7。这给了我们 0.7,这意味着我们的不公平硬币观察到尾部的概率是 70%。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用 softmax 函数,我们总是可以将任意比例的值转换为 0 和 1。这使得分类分布能够用作损失函数。来自深度学习讲座的 4.0CC 下的图片。

我们总是可以使用网络中的 softmax 函数将一切转换成概率。现在,我们可以看看这在我们的分类分布式系统中是如何表现的。这里,我们简单地用分类分布代替条件分布。这就给了我们一个负的对数似然函数。同样,我们在这里做的与口试高度相关。因此,每个人都应该能够解释如何利用分类分布,从概率假设得出相应的损失函数。所以在这里,我们再次应用负对数似然。我们插入分类分布的定义,它就是我们所有 y 下标 k 的乘积与基础真值标签的幂。这可以进一步简化,因为乘积可以通过移动对数转换成和。如果我们这样做,你可以看到地面真理标签的力量实际上可以拉到对数前面。我们看到我们最终得到了交叉熵。现在,如果您再次使用一键编码的技巧,您可以看到,我们最终会得到交叉熵损失,即整组观察值之和乘以输出的对数,正好是基本事实标签为 1 的位置。因此,我们忽略了类和中的所有其他项。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

交叉熵及其与 KL 散度的关系。 CC 下的图片来自深度学习讲座的 4.0 。

有趣的是,这也可以与 Kullback Leibler (KL)散度联系起来。KL 散度是一个非常常见的构造,你可以在许多机器学习论文中找到。在这里,你可以看到定义。本质上,我们在 x 的整个区域上有一个积分,它是对 p(x)乘以 p(x)的对数除以 q(x)的概率的积分。q(x)是要比较的参考分布。现在,您可以看到,您可以使用对数的属性将二者分成两部分。所以,我们得到了右手边的负部分,也就是交叉熵。左手边就是熵。因此,我们可以看到,这个训练过程本质上等同于最小化交叉熵。所以,为了最小化 KL 散度,我们可以最小化交叉熵。你应该记住,这种关系在机器学习论文中经常出现。所以,如果你把这些东西记在心里,你会发现它们更容易理解。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

交叉熵的使用指南。来自深度学习讲座CC BY 4.0 下的图片。

现在,我们可以用交叉熵进行回归吗?嗯,是的,我们当然能做到。但是你必须确保你的预测,对于所有的类,都在[0,1]的范围内。例如,您可以使用 sigmoid 激活函数来实现这一点。那么你必须小心,因为在回归中,通常你不再是一个热编码。所以,这是你必须妥善处理的事情。如前所述,这种损失相当于最小化 KL 发散。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

本单元总结。 CC 下的图片来自深度学习讲座的 4.0 。

让我们总结一下到目前为止我们所看到的。所以 L2 损失通常用于回归。交叉熵损失通常用于分类,通常与独热编码结合使用。当然,你可以从严格概率假设的最大似然估计中得到它们。所以我们现在做的完全符合概率论。在缺乏更多领域知识的情况下,这些是我们的首选。如果你有额外的领域知识,那么,当然,用它来构建一个更好的估算器是一个好主意。交叉熵损失本质上是多元的。所以,我们不仅仅被两类问题所困。我们也可以去多维回归和分类问题。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在这个深度学习讲座中,更多令人兴奋的事情即将到来。 CC 下的图片来自深度学习讲座的 4.0 。

下一次在深度学习中,我们想深入一些关于损失函数的细节,特别是,我们想强调铰链损失。这是一个非常重要的损失函数,因为它允许您嵌入约束。我们将会看到,与经典的机器学习和模式识别也有一些关系,特别是支持向量机。所以我希望你喜欢这个视频,我期待着在下一个视频中见到你!

如果你喜欢这篇文章,你可以在这里找到更多的文章,或者看看我们的讲座。如果你想在未来了解更多的文章、视频和研究,我也会很感激你在 YouTube、Twitter、脸书、LinkedIn 上的鼓掌或关注。本文以 Creative Commons 4.0 归属许可发布,如果引用,可以转载和修改。

参考

[1]克里斯托弗·贝肖普。模式识别和机器学习(信息科学和统计学)。美国新泽西州 Secaucus 出版社:纽约斯普林格出版社,2006 年。
[2]安娜·乔洛曼斯卡,米凯尔·赫纳夫,迈克尔·马修等人,“多层网络的损耗面”在:AISTATS。2015.
【3】Yann N Dauphin,Razvan Pascanu,卡格拉尔·古尔切赫勒等《高维非凸优化中鞍点问题的识别与攻击》。神经信息处理系统进展。2014 年,第 2933–2941 页。
[4]宜川唐。“使用线性支持向量机的深度学习”。载于:arXiv 预印本 arXiv:1306.0239 (2013 年)。
[5]萨尚克·雷迪、萨延·卡勒和桑基夫·库马尔。《论亚当和超越的趋同》。国际学习代表会议。2018.
[6] Katarzyna Janocha 和 Wojciech Marian Czarnecki。“分类中深度神经网络的损失函数”。载于:arXiv 预印本 arXiv:1702.05659 (2017)。
【7】Jeffrey Dean,Greg Corrado,Rajat Monga 等,《大规模分布式深度网络》。神经信息处理系统进展。2012 年,第 1223-1231 页。
[8]马人·马赫瑟雷奇和菲利普·亨宁。“随机优化的概率线搜索”。神经信息处理系统进展。2015 年,第 181–189 页。
【9】杰森·韦斯顿,克里斯·沃特金斯等《多类模式识别的支持向量机》在:ESANN。第 99 卷。1999 年,第 219-224 页。
[10]·张,Samy Bengio,Moritz Hardt 等,“理解深度学习需要反思泛化”。载于:arXiv 预印本 arXiv:1611.03530 (2016)。

损失和优化—第 2 部分

原文:https://towardsdatascience.com/lecture-notes-in-deep-learning-loss-and-optimization-part-2-11b08f842aa7?source=collection_archive---------43-----------------------

FAU 讲座笔记深度学习

支持向量机打败深度学习了吗?

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

FAU 大学的深度学习。下图 CC BY 4.0 来自深度学习讲座

这些是 FAU 的 YouTube 讲座 深度学习 的讲义。这是与幻灯片匹配的讲座视频&的完整抄本。我们希望,你喜欢这个视频一样多。当然,这份抄本是用深度学习技术在很大程度上自动创建的,只进行了少量的手动修改。如果你发现了错误,请告诉我们!

航行

上一讲 / 观看本视频 / 顶级 / 下一讲

欢迎回到深度学习!那么,让我们继续我们的讲座。我们想谈谈损失和优化。今天,我们想谈谈损失函数和最优化。我想看看更多的优化问题,其中一个优化问题,我们已经在感知器案例中见过了。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

感知器能够通过引入一组错误分类来优化符号激活函数。 CC 下的图片来自深度学习讲座的 4.0 。

你还记得我们最小化了所有错误分类样本的总和。我们选择这个是因为我们可以以某种方式摆脱符号函数,只查看与错误分类相关的样本。此外,请注意,这里我们没有 0/1 类别,而是-1/1,因为这允许我们与类标签相乘。这将总是导致错误分类样本中的负数。然后我们在最开始加上这个负号,这样我们总是以一个正值结束。这个正值越小,我们的损失就越小。所以,我们寻求最小化这个函数。在这个准则中,我们没有符号函数,因为我们找到了一种优雅的方式来表达这个损失函数。现在,如果它在,我们会遇到问题,因为这只会计算错误分类的数量,我们不会区分它是远离决策边界还是靠近决策边界。我们将简单地以计数结束。如果我们观察梯度,它基本上会在任何地方消失。所以这不是一个简单的优化问题。我们不知道往哪个方向走,所以找不到好的优化。上次我们是怎么做的?嗯,我们需要放松这一点,也有办法解决这个问题。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

铰链损耗是符号函数的凸松弛。 CC 下的图片来自深度学习讲座的 4.0 。

一种方法是将所谓的铰链损耗包括在内。现在,有了铰链损耗,我们可以将这个 0/1 函数放宽到在一个较大的域上表现为线性。这个想法是,我们基本上使用一条线,它在 x 轴上的位置是 1,在 y 轴上的位置也是 1。如果我们这样做,我们可以简单地用 max 函数重写。因此,如果我们的值大于 1,那么铰链损耗就是所有样本之和,基本上等于 0。所以,我们不得不重写右边的部分,重新表述一下。我们取 1-y 下标 m 乘以 y hat。在这里,你可以看到我们将有相同的约束。如果我们有相反的边界,这一项将是负的,通过符号,它当然会翻转,这样我们最终会有大量的错误分类的大值。我们摆脱了必须找到误分类集 m 的问题。现在,我们可以通过使用此 max 函数来获取完整的样本集,因为满足此约束的所有内容都将自动箝位到 0。所以,它不会影响这个损失函数。因此,这是表述同一问题的一种非常有趣的方式。我们隐式地得到了在这个损失函数中只考虑误分类样本的情况。可以看出,铰链损失是我们先前考虑的误分类损失的凸近似。这类优化问题的一个重要因素当然是梯度。这个损失函数有一个拐点。因此,导数在点 x = 1 处不连续。所以不清楚导数是什么,现在你可以说:“好的,我不能计算这个函数的导数。所以,我在劫难逃了!”

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如果你必须最小化导数不连续的损失函数,那么次梯度可以节省时间。 CC 下的图片来自深度学习讲座的 4.0 。

幸运的是,次梯度扭转了局面。让我们引入这个概念,为了这样做,我们来看看凸可微函数。据此,我们可以说,在任意点 f( x ,我们基本上可以找到 f( x )的一个下界,它由某个 f( x₀ )加上 f( x₀ )的梯度乘以从 xx₀ 的差来表示。那么,让我们看一个图表来展示这个概念。如果你在这里看这个函数,你可以看到我可以取任意一点 x₀ 并计算梯度,或者在这种情况下,它只是构造的切线。这样做,你会看到在切线的任何一点都将是整个函数的下限。如果我沿着切线方向,我在哪里取这个点并不重要,我总是在构造一个下界。现在,这种定义更适合我们。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

次梯度允许我们计算凸函数的下界,即使它们没有连续导数。来自深度学习讲座的 4.0CC 下的图片。

所以,现在让我们扩展一下梯度,进入次梯度的方向。在次梯度中,我们定义了保持这种性质但不一定是梯度的东西。所以向量 g 是凸函数 f( x₀ )的次梯度,如果我们有相同的性质。所以,如果我们沿着次梯度方向,乘以 xx₀ 之差,那么我们总是有一个下界。这样做的好处是,我们基本上可以放松计算梯度的要求。可能有多个 g 满足这个属性。所以, g 不要求唯一。所有这些次梯度的集合称为次微分。那么次微分就是一组满足上述性质的次梯度。如果 f( x )在 x₀ 可微,我们可以简单地说,包含所有次微分的集合就是包含梯度的集合。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

ReLU 的子梯度。 CC 下的图片来自深度学习讲座的 4.0 。

现在我们来看一个不成立的例子。在这个例子中,我们有一个整流线性单元(ReLU ),它也有完全相同的问题。这又是一个凸函数,这意味着在扭结点,我们可以找到很多次梯度。实际上,你看到的是绿线和红线。它们都是可行的次梯度,而且它们满足这一性质,即它们是各自函数的下界。这意味着我们现在可以定义一个次微分,我们的次微分本质上是 1,其中 x₀大于 0。我们有 0,这里它比 0 小。我们正好有 g——在位置 x₀ =0 处,g 可以是 0 到 1 之间的任何数字。这很好,因为我们现在可以基本上沿着这个次梯度方向。只是曲线的不同部分对梯度的定义不同。特别是在扭结位置,我们有这种情况,我们会有多种可能的解决方案。但是对于我们的优化,只需要知道其中一个子梯度就足够了。我们不必计算整个集合。因此,我们现在可以简单地扩展我们的梯度下降算法,以推广到次梯度。有证据表明,对于凸问题,使用次梯度理论仍然可以找到全局最小值。所以,我们现在可以说:“我们正在看的函数,它们是局部凸的。”这允许我们找到局部最小值,即使有 ReLUs 和铰链损耗。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

子梯度是梯度的一种推广,它允许最小化非光滑函数。 CC 下的图片来自深度学习讲座的 4.0 。

所以,让我们总结一下:次梯度是对凸非光滑函数梯度的推广。梯度下降算法被这些函数各自的次梯度算法所取代。尽管如此,这允许我们继续我们之前对分段连续函数所做的。你只是选择了一个特定的次梯度,你可能甚至没有注意到差异。好的一面是,我们不只是把它作为一个“工程解决方案”来做,而且有一个坚实的数学理论证明这确实是可行的。因此,我们可以用它来计算 ReLU 和铰链损耗。这在数学上是合理的,我们可以继续前进,不用太担心。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

不应该用支持向量机代替深度学习吗? CC 下的图片来自深度学习讲座的 4.0 。

如果人们说“哦,支持向量机(SVMs)比你正在做的要好得多,因为它们总是达到全局最小值,”会怎么样那么,使用 SVM 不是更好吗?那么,让我们来看看 SVM 实际上是做什么的。支持向量机计算最优分离超平面。它也在计算某个平面,这个平面将两个类分开,它想最大化两个集合之间的间隔。所以,你试着找到平面,或者在这个简单的例子中,产生最大余量的线。超平面或决策边界是黑线,虚线表示这里的边界。因此,SVM 试图在分离这些类时找到最大的边距。通常所做的是,你找到这个最小化问题,其中 w 是我们的超平面的法向量。然后我们最小化法向量的大小。请注意,这个法向量没有缩放,这意味着如果你增加 w 的大小,你的法向量会变长。如果你想计算带符号的距离,通常要除以法向量的大小。这意味着如果你增加这个法向量的长度,你的距离会变小。如果你想最大化距离,你可以最小化法向量的长度。显然,你可以把它压缩到零,然后你就有了无限远的距离。仅仅最小化 w 会导致平凡解 w = 0 。为了防止这种情况,你把它放在一个约束优化中,要求所有样本的所有观测值 m 都被投影到决策边界的右侧。这是由这里的约束最小化引入的。因此,您希望带符号的距离乘以真实标注减去 1,使其小于 0。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

软间隔支持向量机允许轻微的误分类。 CC 下的图片来自深度学习讲座的 4.0 。

现在,我们可以把它扩展到这两类在所谓的软边缘 SVM 中不是线性可分的情况。这里的技巧是我们引入一个松弛变量ξ,它允许一个错误的分类。ξ被加到决策边界的距离上。这意味着,如果分类不正确,我可以将单个点移回决策边界。为了限制ξ的过度使用,我假设ξ都小于或等于 0。此外,我假设所有ξ的总和需要最小化,因为我希望尽可能少的错误分类。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

软裕度 SVM 可以使用具有铰链损耗的目标函数来重新表达。 CC 下的图片来自深度学习讲座的 4.0 。

这就引出了软裕度 SVM 的完整公式,如果我想在联合优化中这样做,就要把它转换成拉格朗日对偶函数。为了做到这一点,你引入拉格朗日乘数λ和ν。你可以看到,上一张幻灯片中的约束现在接受乘数λ和ν。当然,还有一个额外的新 m,它是针对单个约束而引入的。现在,你看到这形成了一个相当复杂的优化问题。尽管如此,我们仍然有一个单一的拉格朗日函数,可以寻求最小化所有的 w ,ξ,λ和ν。这里引入了很多参数。我们可以稍微重新排列一下,将许多参数合并成一个总和。如果我们放弃支持向量解释,我们可以把这个和看作一个常数。因为我们知道所有的 lambdas 都大于或等于 0,这意味着所有将被错误分类或比 1 更接近决策边界的事物都将产生正损失。如果用最大值函数代替 lambda 项,会得到同样的结果。在错误分类的情况下,或者如果你在边缘区域内,优化将总是产生零或更大的值。在这个技巧中,我们通过引入 max 函数来抑制小于 0 的所有内容,即,在正确的边上和边距之外,来近似这个。现在,你可以看到,我们可以非常优雅地将它表示为铰链损耗。因此,你可以证明支持向量机和铰链损耗公式与那些约束等价于一个总的乘法常数,如参考文献[1]所示。如果别人说:“哦,你做不了深度学习。拿个 SVM 来代替吧!”。好吧,如果你选择了正确的损失函数,你也可以将支持向量机纳入你的深度学习框架。这实际上是一个很好的观察。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

关于深度学习和支持向量机的开放点。来自深度学习讲座的 4.0CC 下的图片。

好吧,一些开放点:离群值受到线性惩罚。铰链损耗有一个变种,它对异常值的惩罚更强。举例来说,你可以通过引入正方形来实现。所以也是一个很常见的选择见参考文献[4]。因此,我们也可以将这种铰链损耗应用于多类问题,我们在这里引入的只是一个简单的加法,然后我们做一对多。所以,我们不只是对一个阶级进行分类,而是对一个阶级和其他阶级进行分类。这里介绍了新的分类器。最终,这会导致多级铰链损耗。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如参考文献[4]所示,支持向量机和深度学习是兼容的。 CC 下的图片来自深度学习讲座的 4.0 。

所以,让我们总结一下:我们已经看到,我们可以将支持向量机整合到神经网络中。我们可以用铰链损耗来实现,铰链损耗是一个损耗函数,可以放入各种约束条件。你甚至可以将强迫选择实验作为损失函数。这就是所谓的用户流失。因此,这是一个非常灵活的功能,允许你在深度学习的框架内制定各种约束优化问题。你也可以将各种约束优化放入深度学习框架中。你学习了次梯度,以及为什么我们可以处理非光滑的目标函数,这也很酷。所以这也是一个非常有用的部分,如果你遇到一个数学家,他们告诉你“哦,这里有一个弯折,你不能计算梯度!”。所以从现在开始,你说:“嘿,次梯度拯救世界!”。这样,我们只需要找到一个可能的梯度,然后它仍然有效。这真的很好。如果有人接近你说 ReLUs 在你的梯度下降程序中不合适,请查阅我们的参考资料。这是有证据的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在这个深度学习讲座中,更多令人兴奋的事情即将到来。来自深度学习讲座CC BY 4.0 下的图片。

下一次在深度学习中,我们想继续深入研究优化。到目前为止,我们考虑过的所有优化程序,它们只有这个η,不知何故对所有变量都是一样的。现在,我们已经看到,不同的层参数可能会有很大的不同,因此不应该一视同仁。其实这样会导致大麻烦。但是,如果你研究更高级的优化程序,他们有一些很酷的解决方案,如何自动处理不同的个体权重。敬请关注!我希望你喜欢这个讲座,并希望在下一个视频中再次欢迎你!

如果你喜欢这篇文章,你可以在这里找到更多的文章,或者看看我们的讲座。如果你想在未来了解更多的文章、视频和研究,我也会很感激你在 YouTube、Twitter、脸书、LinkedIn 上的鼓掌或关注。本文以 Creative Commons 4.0 归属许可发布,如果引用,可以转载和修改。

参考

[1]克里斯托弗·贝肖普。模式识别和机器学习(信息科学和统计学)。美国新泽西州 Secaucus 出版社:纽约斯普林格出版社,2006 年。
[2]安娜·乔洛曼斯卡,米凯尔·赫纳夫,迈克尔·马修等人,“多层网络的损耗面”在:AISTATS。2015.
【3】Yann N Dauphin,Razvan Pascanu,卡格拉尔·古尔切赫勒等《高维非凸优化中鞍点问题的识别与攻击》。神经信息处理系统进展。2014 年,第 2933–2941 页。
[4]宜川唐。“使用线性支持向量机的深度学习”。载于:arXiv 预印本 arXiv:1306.0239 (2013 年)。
[5]萨尚克·雷迪、萨延·卡勒和桑基夫·库马尔。《论亚当和超越的趋同》。国际学习代表会议。2018.
[6] Katarzyna Janocha 和 Wojciech Marian Czarnecki。“分类中深度神经网络的损失函数”。载于:arXiv 预印本 arXiv:1702.05659 (2017)。
【7】Jeffrey Dean,Greg Corrado,Rajat Monga 等,《大规模分布式深度网络》。神经信息处理系统进展。2012 年,第 1223-1231 页。
[8]马人·马赫瑟雷奇和菲利普·亨宁。“随机优化的概率线搜索”。神经信息处理系统进展。2015 年,第 181–189 页。
【9】杰森·韦斯顿,克里斯·沃特金斯等《多类模式识别的支持向量机》在:ESANN。第 99 卷。1999 年,第 219-224 页。
[10]·张,Samy Bengio,Moritz Hardt 等,“理解深度学习需要反思泛化”。载于:arXiv 预印本 arXiv:1611.03530 (2016)。

损失和优化—第 3 部分

原文:https://towardsdatascience.com/lecture-notes-in-deep-learning-loss-and-optimization-part-3-dc6280284fc1?source=collection_archive---------37-----------------------

FAU 讲座笔记深度学习

使用 ADAM 和超越进行优化…

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

FAU 大学的深度学习。下图 CC BY 4.0 来自深度学习讲座

这些是 FAU 的 YouTube 讲座 深度学习 的讲义。这是与幻灯片匹配的讲座视频&的完整抄本。我们希望,你喜欢这个视频一样多。当然,这份抄本是用深度学习技术在很大程度上自动创建的,只进行了少量的手动修改。如果你发现了错误,请告诉我们!

航行

上一讲 / 观看本视频 / 顶级 / 下一讲

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

到目前为止,我们认为优化主要是直接梯度下降法。 CC 下的图片来自深度学习讲座的 4.0 。

欢迎大家参加我们下一次关于深度学习的讲座!今天,我们想谈谈优化。让我们更详细地看看梯度下降法。所以,我们已经看到梯度本质上优化了经验风险。在这个图中,你可以看到我们朝着这个局部最小值前进了一步。我们有这个预定义的学习率η。因此,梯度当然是针对每个样本计算的,然后保证收敛到局部最小值。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

梯度下降的不同采样策略。 CC 下的图片来自深度学习讲座的 4.0 。

当然,这意味着对于每次迭代,我们必须使用所有样本,这被称为批量梯度下降。所以你必须查看每一次迭代,每一次更新,所有的样本。可能真的有很多样本,特别是如果你看大数据一个计算机视觉的问题。这当然是凸优化问题的首选,因为我们可以保证找到全局最小值。每次更新都保证减少误差。当然,对于非凸问题,我们无论如何都有一个问题。此外,我们可能有记忆限制。这就是为什么人们喜欢其他方法,如随机梯度下降 SGD。在这里,他们只使用一个样本,然后立即更新。因此,这不再必然降低每次迭代中的经验风险,并且由于传输到图形处理单元的延迟,这也可能是非常低效的。但是,如果您只使用一个示例,您可以并行执行许多事情,因此它是高度并行的。两者之间的一个折衷是,您可以使用小批量随机梯度下降。这里你使用的 B and B 可能是一个比整个训练数据集小得多的随机样本,你实际上是从整个训练数据集中随机选择的。然后,评估子集 b 上的梯度。这称为小批量。现在,可以非常快速地评估这个小批量,您也可以使用并行化方法,因为您可以并行执行几个小批量步骤。然后,你只需做加权求和并更新。因此,小批量是有用的,因为它们提供了一种正则化效果。这通常会导致较小的η。因此,如果在梯度下降中使用小批量,通常较小的η值就足够了,而且效率也有所提高。通常,这是深度学习中的标准情况。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

深度学习如此有效的可能原因。来自深度学习讲座CC BY 4.0 下的图片。

很多人都这么做,这意味着梯度下降是有效的。但问题是:“这怎么可能行得通?”我们的优化问题是非凸的。存在指数数量的局部最小值,2015 年有一篇有趣的论文,其中他们表明我们通常使用的度量是高维函数。在这个环境中有许多局部极小值。有趣的是,这些局部最小值接近全局最小值,实际上它们中的许多是等价的。更大的问题可能是鞍点。此外,局部最小值甚至可能比全局最小值更好,因为全局最小值是在您的训练集上获得的,但最终,您希望将您的网络应用于可能不同的测试数据集。实际上,训练数据集的全局最小值可能与过度拟合有关。也许,这对训练好的网络的泛化能力来说,更是雪上加霜。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

过度供应可能是对深度神经网络有效性的一种回答。 CC 下的图片来自深度学习讲座的 4.0 。

对此,另一个可能的答案是 2016 年的一篇论文。作者建议过度供应,因为网络有许多不同的方式来近似期望的关系。你只需要找到一个。你不需要找到所有的人。一个就够了。梁看向艾尔通。通过随机标签实验验证了这一点。这里的想法是,你基本上随机化你不使用原始的标签。你只是随机地分配任何一个类,如果你随后表明你的实验仍然解决了问题,那么你就创造了一个过度拟合。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

η的选择对成功学习至关重要。来自深度学习讲座CC BY 4.0 下的图片。

我们来看看η的选择。我们已经看到,如果你的学习速度很慢,我们甚至可能在达到收敛之前就停止了。如果你有一个太大的学习率,我们可能会来回跳跃,甚至找不到局部最小值。只有有了适当的学习率,你才能找到最小值。实际上,当你远离最小值时,你希望能够大步前进,而当你越接近最小值时,就越是小步前进。如果你想在实践中这样做,你的工作与学习率的衰减。所以,你要逐渐适应你的η。你从 0.01 开始,然后每 x 个周期除以 10。这有助于您不会错过您实际寻找的本地最小值。这是一个典型的实际工程参数。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们能去掉我们的“工程参数”η吗? CC 下的图片来自深度学习讲座的 4.0 。

现在,你可能会问我们不能摆脱这个魔法吗?那么通常会怎么做呢?相当多的人建议在类似情况下进行线搜索。所以,线搜索,当然需要你估计每一步的最优η。所以,你需要多次求值,以便在梯度指向的方向上找到正确的η。反正是吵的不得了。所以,人们已经提出了方法,但它们不是深度学习领域目前的最先进水平。然后,人们提出了二阶方法。如果研究二阶方法,需要计算 Hessian 矩阵,这通常非常昂贵。到目前为止,我们还没有经常看到这种情况。有 L-BFGS 方法,但是如果您在批次设置之外操作,它们通常不会很好地执行。所以,如果你使用小批量,它们就没那么好了。你可以在参考文献[7]中找到谷歌的一份报告。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们能使用持续方向改善我们的噪音梯度下降吗?来自深度学习讲座CC BY 4.0 下的图片。

我们还能做什么?当然,我们可以加速持续梯度的方向。所以,这里的想法是,你以某种方式跟踪平均值,这里用 new v 表示。这实质上是最后几个梯度步骤的加权和。你把当前的梯度方向用红色表示,并与前面的步骤平均。这给了你一个更新的方向,这通常被称为动量。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

动量项的正式定义。来自深度学习讲座CC BY 4.0 下的图片。

所以,我们引入了动量项。在那里,你用一个新的权重添加了一些动量,用 v 上标 k-1 表示。这个动量项基本上是以迭代的方式计算的,其中你迭代地更新过去的梯度方向。所以你可以说,通过迭代计算这个加权平均值,你保留了之前梯度方向的历史,然后用新的梯度方向逐渐更新它们。然后你选择动量项来执行更新,而不仅仅是梯度方向。因此,μ的典型选择为 0.9、0.95 或 0.99。如果你想让他们更加强调之前的渐变方向,你也可以从小到大调整他们。这克服了随机梯度下降中的不良 Hessians 和方差。它将抑制振荡,并且通常加速优化过程。尽管如此,我们还是需要学习率衰减。所以,这并没有解决η的自动调节。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

内斯特罗夫动量试图预测动量项。 CC 下的图片来自深度学习讲座的 4.0 。

我们也可以选择一种不同的动量方式:内斯特罗夫加速梯度或简单的内斯特罗夫动量。这执行了一个前瞻。这里,我们也有动量项。但是我们没有计算当前位置的梯度,而是在计算梯度之前加入了动量项。所以,我们实际上是在试图逼近下一组参数。我们在这里使用前瞻,然后我们执行梯度更新。所以你可以重写这个来使用传统的渐变。这里的想法是将内斯特罗夫加速度直接放入梯度更新中。这一项将用于下一次梯度更新。所以,这是一个等价的公式。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

动量和内斯特罗夫动量相比较。 CC 下的图片来自深度学习讲座的 4.0 。

让我们想象一下。在这里,你可以看到动量和内斯特罗夫动量。当然,它们都使用了一种动量项。但是它们使用不同的方向来计算梯度更新。这是最主要的区别。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在这个例子中,你可以看到内斯特罗夫动量项的强度。来自深度学习讲座CC BY 4.0 下的图片。

在这里,你可以看到这些动量项的对比例子。在这种情况下,两个方向的方差都有很大的差异。因此,左右方向的方差非常大,上下方向的方差相当小。我们试图找到全局最小值。即使你引入动量项,这通常会导致梯度方向非常强烈的交替。你仍然会得到这种强烈的振荡行为。如果你使用内斯特罗夫加速梯度,你可以看到我们计算这个前瞻,这允许我们沿着蓝线。所以,我们直接向期望的最小值移动,不再交替。这是内斯特罗夫的优势。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

一些参数的更新可能与其他参数不同。 CC 下的图片来自深度学习讲座的 4.0 。

如果我们的功能有不同的需求呢?因此,假设一些特性很少被激活,而另一些特性经常被更新。然后,我们需要网络中每个参数的单独学习率。对于不频繁的参数,我们需要大的学习率,对于频繁的参数,我们需要小的学习率。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

AdaGrad 为每个参数引入了单独的缩放。来自深度学习讲座的 4.0CC 下的图片。

为了适当地适应变化,这可以用所谓的 AdaGrad 方法来完成。它首先使用梯度来计算某个 g 上标 k,然后计算梯度与其自身的乘积,以跟踪变量 r 中的元素方差。现在,我们使用我们的 gr 元素与η组合来衡量梯度的更新。因此,现在我们构建更新的权重,并且每个参数中权重的方差通过乘以相应元素的平方根来合并,即其标准偏差的近似值。所以,这里我们把它记为一个完整矢量的平方根。这里所有其他的东西都是标量,这意味着这也产生了一个矢量。然后,该向量逐点乘以实际梯度,以执行局部缩放。这是一个很好且有效的方法,并且允许对所有不同权重的所有不同维度的个体学习率。一个问题可能是学习率下降过快。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

RMSProp 建立在 AdaGrad 的基础上。 CC 下的图片来自深度学习讲座的 4.0 。

这是一个问题,并导致了一个改进的版本,这里的改进版本是 RMSProp。RMSProp 现在再次使用它,但他们引入了这个ρ,现在ρ被用来引入一个延迟,这样就不会有很高的增加。在这里,您可以设置这个ρ,以便抑制学习率方差的更新。所以,Hinton 建议 0.9,η = 0.001。这一转变导致积极减少被固定,但是我们仍然必须设置学习率。如果你没有适当地设置学习速度,你就会遇到问题。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

阿达德尔塔除掉了η。来自深度学习讲座的 4.0CC 下的图片。

现在,Adadelta 试图在此基础上进一步改进。他们实际上使用了我们的 RMSProp 并去掉了η。我们已经看到了 r,它是以一种阻尼方式计算的方差。然后,另外,他们介绍这个δₓ.它是某项 h 和 r 的加权组合,我们之前已经看到,乘以梯度方向。因此,这是一个额外的阻尼因子,代替了原始公式中的η。因子 h 被再次计算为δₓ上的滑动平均值,作为元素间的乘积。所以,这样你就不用再设定学习率了。还是要选择参数ρ。对于ρ,我们建议使用 0.95。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Adam 使用来自深度学习讲座CC 下的 4.0 的额外动量项 v. Image 构建 Adadelta。

正在使用的最流行的算法之一是 Adam,Adam 本质上也在使用这个梯度方向 g 。然后,你基本上有一个动量项 v 。此外,你还有这个 r 术语,它再次试图单独控制每个维度的学习速率。此外,Adam 引入了额外的偏置校正,其中 v 按 1 减μ的比例缩放。 r 也是 1 比 1 减ρ缩放。这就导致了最终的更新项,它包括学习率η、动量项和相应的缩放比例。这种算法叫做 Ada 感受性 M 矩估计。对于 Adam,建议值为μ = 0.9,ρ = 0.999,η= 0.001。这是一种非常稳健的方法,并且非常常用。我们可以把它和内斯特罗夫加速梯度结合起来,得到“那达慕”。但是,你仍然可以改进这一点。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

AMSGrad 修复了 Adam 中的收敛问题。 CC 下的图片来自深度学习讲座的 4.0 。

根据经验观察,Adam 无法收敛到最优/良好的解决方案。在参考文献[5]中,你甚至可以看到,对于凸问题,Adam 和类似的方法并不能保证收敛。在最初的收敛证明中有一个错误,因此,我们建议使用修正 Adam 的 AMSGrad 来确保不增加步长。所以,你可以通过在动量更新项上增加一个最大值来修正它。所以如果你这样做,你会得到 AMSGrad。这被证明是更加鲁棒的。这种效果已经在大型实验中得到证实。我们在这里学到的一个教训是,你应该睁大眼睛。即使是经过科学同行评审的东西,也可能存在后来被发现的问题。我们在这里学到的另一件事是,这些梯度下降程序——只要你大致遵循正确的梯度方向——你仍然可以得到相当不错的结果。当然,这样的梯度方法真的很难调试。所以,一定要调试你的渐变。正如您在本例中看到的,这种情况确实会发生。即使是大型软件框架也可能遭受这样的错误。很长一段时间,人们都没有注意到他们。他们只是注意到奇怪的行为,但问题依然存在。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

今天讲座的总结。 CC 下的图片来自深度学习讲座的 4.0 。

好了,让我们总结一下。随机梯度下降加内斯特罗夫动量加学习率衰减是许多实验中的典型选择。它收敛最可靠,并在许多先进的论文中使用。然而,它的问题是,这种学习率衰减必须加以调整。亚当有个人学习率。学习率表现很好,但当然,损失曲线很难解释,因为你不会有固定学习率下的典型行为。我们在这里没有讨论,我们只是暗示了分布式梯度下降。当然,您也可以以并行方式执行此操作,然后在分布式网络的不同节点或不同的图形板上计算不同的更新步骤。然后你把它们平均起来。这也被证明是非常健壮和非常快速的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

对你工作的实用建议。来自深度学习讲座CC BY 4.0 下的图片。

一些实用的建议:从使用带动量的小批量随机梯度下降开始。坚持默认的势头。当你对你的数据有感觉的时候,给亚当一个尝试。当你发现你需要单独的学习速率时,Adam 可以帮助你获得更好或更稳定的收敛。您也可以切换到 AMSGrad,这是对 Adam 的改进。当然,首先开始调整学习速度,然后留意异常行为。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在这个深度学习讲座中,更多令人兴奋的事情即将到来。 CC 下的图片来自深度学习讲座的 4.0 。

好了,这让我们对接下来的几个视频有了一个简短的展望,以及我们要做的事情。当然实际的深度学习部分,到目前为止我们根本没有讨论过这个。因此,我们仍然需要讨论的一个问题是,我们如何处理空间相关性和特征。我们经常听到卷积和神经网络。下次我们将看到为什么这是一个好主意,它是如何实现的。当然,我们应该考虑的一件事是如何使用方差,以及如何将它们合并到网络架构中。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

可能有助于备考的问题。来自深度学习讲座CC BY 4.0 下的图片。

一些综合问题:“我们分类回归的标准损失函数是什么?”当然,L2 用于回归,交叉熵损失用于分类。你应该能推导出这些。这真的是你应该知道的事情,因为统计数据及其与学习损失的关系真的很重要。统计假设,概率理论,以及如何修改这些来得到我们的损失函数,都与考试高度相关。次微分也很重要。“什么是次微分?”“在我们的激活函数出现拐点的情况下,我们如何优化?”“铰链损耗是多少?”"我们如何合并约束?"尤其是“对于那些声称我们所有的技术都不好,因为 SVM 更好的人,我们该怎么说?”你总是可以证明,它取决于一个乘法常数,就像使用铰链损耗一样。“什么是内斯特罗夫势头?”如果有人在不久的将来会问你关于你在这里学到的东西的问题,你应该能够解释这些非常典型的事情。当然,我们又有大量的参考资料(见下文)。我希望你也喜欢这次讲座,我期待着在下一次讲座中见到你!

如果你喜欢这篇文章,你可以在这里找到更多的文章,或者看看我们的讲座。如果你想在未来了解更多的文章、视频和研究,我也会很感激你在 YouTube、Twitter、脸书、LinkedIn 上的鼓掌或关注。本文以 Creative Commons 4.0 归属许可发布,如果引用,可以转载和修改。

参考

[1]克里斯托弗·贝肖普。模式识别和机器学习(信息科学和统计学)。美国新泽西州 Secaucus 出版社:纽约斯普林格出版社,2006 年。
[2]安娜·乔洛曼斯卡,米凯尔·赫纳夫,迈克尔·马修等人,“多层网络的损耗面”在:AISTATS。2015.
【3】Yann N Dauphin,Razvan Pascanu,卡格拉尔·古尔切赫勒等《高维非凸优化中鞍点问题的识别与攻击》。神经信息处理系统进展。2014 年,第 2933–2941 页。
[4]宜川唐。“使用线性支持向量机的深度学习”。载于:arXiv 预印本 arXiv:1306.0239 (2013 年)。
[5]萨尚克·雷迪、萨延·卡勒和桑基夫·库马尔。《论亚当和超越的趋同》。国际学习代表会议。2018.
[6] Katarzyna Janocha 和 Wojciech Marian Czarnecki。“分类中深度神经网络的损失函数”。载于:arXiv 预印本 arXiv:1702.05659 (2017)。
【7】Jeffrey Dean,Greg Corrado,Rajat Monga 等,《大规模分布式深度网络》。神经信息处理系统进展。2012 年,第 1223-1231 页。
[8]马人·马赫瑟雷奇和菲利普·亨宁。“随机优化的概率线搜索”。神经信息处理系统进展。2015 年,第 181–189 页。
【9】杰森·韦斯顿,克里斯·沃特金斯等《多类模式识别的支持向量机》在:ESANN。第 99 卷。1999 年,第 219-224 页。
[10]·张,Samy Bengio,Moritz Hardt 等,“理解深度学习需要反思泛化”。载于:arXiv 预印本 arXiv:1611.03530 (2016)。

神经单词嵌入的法律应用

原文:https://towardsdatascience.com/legal-applications-of-neural-word-embeddings-556b7515012f?source=collection_archive---------35-----------------------

探索法律领域中的词语嵌入

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源:谷歌开发者

LegalTech 的一个基本问题是,文字——所有法律文件的基本货币——是一种机器无法直观理解的非结构化数据形式。因此,为了处理文本文档,单词必须用实数向量来表示。

传统上,像单词袋(BoW)这样的方法将单词标记/n 元语法映射到术语频率向量,术语频率向量表示单词在文档中出现的次数。使用一键编码,每个单词标记/n 元语法由一个向量元素表示,并根据单词在文档中是否出现或出现的次数标记为 0、1、2 等。这意味着,如果一个单词在语料库词汇表中不存在,该元素将被标记为 0,如果它存在一次,该元素将被标记为 1,依此类推。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源:分析步骤

问题是这产生了非常高维度的非常稀疏的矩阵(即大部分包含零)。例如,具有 30,000 个唯一单词标记的语料库将需要具有 30,000 行的矩阵,这在计算上是极其繁重的。此外,这种方法不能捕捉语义、上下文和单词关系,因为它只能显示单词在文档中出现的频率。这种无法表示语义的情况持续存在,即使 BoW 由 TF-IDF 度量补充,因为虽然后者能够表示单词对语料库有多重要的度量(即,相对于普通 BoW 表示的改进),但它仍然是基于单词令牌/n-gram 在语料库中出现的频率来计算的。

相比之下,现代单词嵌入(word2vec、GloVE、fasttext 等)依赖于神经网络来将单词的语义属性映射到维度明显更少的密集向量表示中。

首先,应该说单词嵌入是以分布语义假设为前提的,即在相同的上下文中使用和出现的单词往往具有相似的含义。这意味着神经网络通过单词所在的上下文来学习单词的矢量表示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

这里的“上下文”由大小为 n 的滑动上下文窗口表示,其中目标单词之前的 n 个单词和目标单词之后的 n 个单词将落入上下文窗口内(例如,在该示例中 n =2)。然后,当上下文窗口沿着句子向下移动时,该模型将通过使用一个热点编码的上下文向量来训练,以预测一个热点编码的目标向量。

在这样做的时候,单词嵌入可以捕获 BoW 没有捕获到的语义关联和语言上下文。本文将探讨法律人工智能技术中神经单词嵌入的影响。

捕捉法律术语之间的关系

单词嵌入的一个重要含义是它捕获了单词之间的语义关系。

  1. 具有相似含义和上下文的单词将在向量空间中占据更近的空间位置,如余弦相似性所测量的。这些词向量也可以相加或相乘,而不会失去它们固有的语义特征和关系。
  2. 编码单词之间的矢量差也可以表示单词之间的关系。例如,在“男人是国王,女人是王后”中的单词关系可以用 vec(国王)-vec(男人)+ vec(女人)= vec(王后)来表达。在法律领域,Ash (2016 年)同样表明,公司税和所得税之间的关系可以通过 vec(公司所得税)-vec(公司)+ vec(个人)= vec(个人所得税)来描述。

描绘出法律术语和对象之间的关系的能力在提高我们对法律推理的理解的能力方面具有令人兴奋的含义。一个有趣的方向是利用 doc2vec 对司法意见进行潜在的矢量化,以识别/聚类具有相似信念模式的法官(基于法律意见的保守性、引用的判例等)。

另一个功能是,词嵌入可以捕捉司法意见中隐含的种族和性别偏见,这是通过词嵌入联想测试(WEAT)来衡量的。单词嵌入是强大的,因为它们可以用数学或图表的形式表现社会偏见。例如,Bolukbasi (2016 年)表明,在谷歌新闻文章上训练的单词嵌入表现出显著的性别偏见,这可以通过单词嵌入的方向以几何方式捕获(即,性别中立的单词可以与性别中立的单词线性分离)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源:https://www . semantic scholar . org/paper/Man-is-to-Computer-Programmer-as-Woman-is-to-Word-Bolukbasi-Chang/CCF 6a 69 a 7 f 33 BCF 052 a 7 def 176d 3 b 9 de 495 beb 7)

因此,单词嵌入可以反映向量关系,如“男人对于程序员,就像女人对于家庭主妇”,因为单词“男人”在谷歌新闻语料库中更频繁地与单词“程序员”或“工程师”一起出现,而单词“女人”将更频繁地出现在“家庭主妇”或“护士”旁边。

应用于法律领域,我们可以将司法意见的 WEAT 分数制成表格,该领域的初步研究显示了有趣的趋势,例如(I)男性法官比女性法官显示出更高的性别偏见(即更高的 WEAT 分数),以及(ii)白人法官比黑人法官显示更低的种族偏见。在这一领域还有更多有待探索。

提高法学研究

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源:http://mlwiki.org/index.php/Information_Retrieval

单词嵌入对于改进法律研究平台(在机器学习术语中称为法律信息检索(LIR)系统)背后的技术也具有根本性的意义。

目前,大多数 LIR 系统(如 Westlaw 和 LexisNexis)仍然是主要利用关键字搜索功能的布尔索引系统。

这意味着系统通常通过使用基于字符串的算法来测量两个文本字符串之间的相似性,来寻找查询关键字的文字匹配或变体。然而,这些类型的搜索无法理解律师查询背后的意图,这意味着搜索结果通常包含不足(即,缺少不包含关键字的相关信息,但可能是其变体)或包含过度(即,返回包含关键字的不相关信息)。

然而,单词嵌入增强了商用语义搜索 LIR 的潜力。因为它允许从业者以数学方式捕捉语义相似性,所以单词嵌入可以帮助 LIR 系统找到不仅是查询字符串的精确匹配的结果,而且是可能相关或语义接近但在某些单词上不同的结果。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源:https://www . onto text . com/knowledge hub/fundamentals/what-is-semantic-search/

例如,Landthaler 表明,有效的结果可以通过首先将每个搜索短语中的单词向量相加为一个搜索短语向量来产生。然后,通过大小为 n (其中 n =搜索短语中的字数)的窗口顺序解析该文档,并且计算搜索短语向量和累积向量的余弦相似度。这不仅能够返回精确的关键字匹配结果,还能够返回语义相关的搜索结果,从而提供更直观的结果。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源:https://www . law technology today . org/2017/11/legal-consumer-research/

这一点尤其重要,因为研究表明,使用布尔索引搜索 LIR 系统(在全文法律文档中搜索查询术语的精确匹配)的参与者的召回率可能低至 20%(即,LIR 仅检索到 20%的相关文档)。然而,平均而言,这些参与者估计他们的检索率高达 75%,这要高得多。这意味着律师经常会忽略可能支持他们案件的相关先例或判例法,只是因为 LIR 系统将字符串相似性置于语义相似性之上。因此,单词嵌入具有显著解决这一不足的潜力。

结论与未来走向

总的来说,神经单词嵌入的领域是迷人的。不仅从数学上捕捉语义上下文和单词关系的能力在学术上引人入胜,单词嵌入也是市场上许多法律技术产品背后的一个非常重要的驱动力。

然而,单词嵌入不是没有限制的,ML 实践者有时转向更新的预训练语言建模技术(例如,ULMFit、ELMo、OpenAI transformer 和 BERT)来克服单词嵌入的一些固有问题(例如,假设单义)。尽管如此,词嵌入仍然是当今最吸引人的 NLP 主题之一,从稀疏的、基于频率的向量表示向更密集的语义表示向量的转变是推进 NLP 子域和法律人工智能领域的关键一步。

使用深度学习的乐高迷你人物性别分类

原文:https://towardsdatascience.com/lego-minifigure-gender-classification-using-deep-learning-2358f4082842?source=collection_archive---------68-----------------------

实践教程

与 CNN 的和转移学习

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

詹姆斯·庞德Unsplash 上拍摄的照片

通过我在 Udacity 的深度学习纳米学位的卷积神经网络(CNN)部分的工作旅程,我决定从事我自己的项目,看看 CNN 是否能够对乐高迷你人物的性别进行分类。

我决定这样做的原因是因为我是一个乐高迷,多年来一直在收集迷你玩具。我想我现在有超过 200 个小家伙,大部分是从盲袋中获得的。

哦,我还拍了他们的照片,分享到 Instagram 上!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Instagram: @Let_It_Lego

为什么要用迁移学习?

迁移学习是指使用预先训练好的神经网络,并将其用于不同的数据集。

由于我有一个小数据集,我想利用 ImageNet 的预训练图像,因为它有许多人和衣服的照片,所以应该更容易确定迷你人物的特征。由于人体特征和迷你人物服装的相似性,我会将我的数据集归类为与 ImageNet 中的相似。

根据 Udacity 的说法,如果新数据集很小,并且与原始训练数据相似,则必须按如下方式更改神经网络:

  • 切掉神经网络的末端
  • 添加与新数据集中的类数量相匹配的新完全连接图层
  • 随机化新的全连接层的权重;冻结预训练网络的所有权重(以避免过度拟合)
  • 训练网络以更新新的全连接层的权重

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在神经网络的末端添加并训练全连接层。资料来源:Udacity

您将在后面的代码中看到我是如何做到这一点的。

收集数据

我给我自己的迷你人像拍了照片来组成数据集。由于我只有有限的数量(超过 200 张),我从不同的角度拍摄了每个迷你人像的照片,以便为数据集获取更多的照片。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

为了确保 CNN 不会接触到不容易区分男性和女性的物品,我确保脱下了迷你人佩戴的任何配饰,比如这些:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

斗篷,服装,怪异的帽子,等等。

我也没有包括像这些人一样不是人类的迷你人:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

海绵宝宝!

最后,我的数据集看起来像这样:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

照片数据集的片段。

代码

我首先在库中加载:

%matplotlib inline
%config InlineBackend.figure_format = 'retina'import matplotlib.pyplot as plt
import numpy as np
import torch
from torch import nn
from torch import optim
import torch.nn.functional as F
from torchvision import datasets, transforms, models

并检查了 Cuda 是否可用,以便我可以利用谷歌 Colab 的 GPU。

train_on_gpu = torch.cuda.is_available()if not train_on_gpu:
    print('CUDA is not available.  Training on CPU ...')
else:
    print('CUDA is available!  Training on GPU ...')

加载和转换数据集

我将完成的数据集作为 zip 文件保存到 Dropbox 中,其中的内容被拆分到一个 Train/Test 文件夹中,另一个 Boy/Girl 文件夹位于其中。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

然后我生成了一个下载链接,这样我就可以使用!wget!unzip将图片加载到 Google Colab 中。

由于我拍摄的图像尺寸很大,我需要对它们进行转换,以便输入数据可以与预先训练的模型所期望的(在我的例子中,是 VGG16)一起工作。我还使用了 PyTorch 的 ImageFolder 类,以便能够从我在 zip 文件中创建的 train 和 test 文件夹中加载数据。

data_dir = 'Lego (compressed pics)'# VGG-16 Takes 224x224 images as input, so we resize all of them
data_transform = transforms.Compose([transforms.Resize((224, 224)),
                                     transforms.ToTensor()])train_data = datasets.ImageFolder(data_dir + '/Train',              
transform=data_transform)test_data = datasets.ImageFolder(data_dir + '/Test',             
transform=data_transform)

在这里你可以看到我是如何将照片分配到一个训练和测试集的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

训练和测试图像的数量。

为训练和测试数据集创建数据加载器:

# how many samples per batch to load
batch_size = 20# number of subprocesses to use for data loading
num_workers = 0train_loader = torch.utils.data.DataLoader(train_data, 
batch_size=batch_size, num_workers=num_workers, shuffle=True)test_loader = torch.utils.data.DataLoader(test_data, 
batch_size=batch_size, num_workers=num_workers, shuffle=True)# specify the image classes
classes = ['Boy', 'Girl']

现在我们来可视化一批训练数据。

# obtain one batch of training images
dataiter = iter(train_loader)
images, labels = dataiter.next()
images = images.numpy()  # convert images to numpy for display# plot the images in the batch, along with the corresponding labels
fig = plt.figure(figsize=(25,4))
for idx in np.arange(20):
  ax = fig.add_subplot(2, 20/2, idx+1, xticks=[], yticks=[])   
  plt.imshow(np.transpose(images[idx], (1, 2, 0)))   
  ax.set_title(classes[labels[idx]])

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

可视化一批训练数据。

定义模型

这将通过加载预训练的 VGG16 模型来实现。

# Load the pretrained model from PyTorch
vgg16 = models.vgg16(pretrained=True)# Freeze training for all feature layers so the model doesn't change # the parameters it was pre-trained on
for param in vgg16.features.parameters(): 
    param.requires_grad = False

如前所述,预训练模型的分类器不符合我们试图实现的目标,因为它的最后一层输出 1000 个特征,而我们只需要 2 个(因为我们只有男孩和女孩两个类)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

所以我们需要去掉最后一层,用我们自己的线性分类器代替它。

n_inputs = vgg16.classifier[6].in_features
last_layer = nn.Linear(n_inputs, len(classes))vgg16.classifier[6] = last_layerif train_on_gpu:
    vgg16.cuda()

现在分类器就是我们想要的了!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

指定损失函数和优化器。

criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(vgg16.classifier.parameters(), lr=0.001)

训练网络

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

训练网络。

测试

下面,您可以看到通过对以前看不到的数据测试训练模型来确定每个性别类别的准确性。换句话说,我们使用训练好的模型来预测迷你人的性别,并将其与实际性别(目标)进行比较。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

确定测试精度。

可视化测试结果

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

可视化样本的测试结果。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

样本结果!

结论

结果似乎相当不错!在测试的 20 幅样本图像中,只有一幅预测了错误的性别。请记住,我只使用了一个小数据集,所以如果我有一个更大的数据集,结果可能会改变。

如果你有兴趣更详细地阅读我的代码,请访问下面我的 Github。

[## oscarkwok/乐高-性别

GitHub 是超过 5000 万开发者的家园,他们一起工作来托管和审查代码,管理…

github.com](https://github.com/oscarkwok/Lego-Gender/blob/main/Classifying_Lego_Minifigure_Gender.ipynb)

这是一个有趣的项目,我能够应用我从 Udactiy 的深度学习纳米学位中学到的东西。随着课程的进展,我希望能写更多关于我的项目,敬请关注!

如果您有任何问题或意见,请在下面留下您的反馈。你也可以在 Linkedin 上关注我,或者在这里与我联系。

自然语言处理和机器学习中的词汇化

原文:https://towardsdatascience.com/lemmatization-in-natural-language-processing-nlp-and-machine-learning-a4416f69a7b6?source=collection_archive---------8-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

来源: Unsplash

词汇化是自然语言处理(NLP)和机器学习中最常用的文本预处理技术之一。如果你已经读过我关于 NLP 中词干的文章,你就会知道词汇化并没有太大的不同。无论是词干化还是词汇化,我们都试图将一个给定的词简化为它的词根。词根在词干化过程中被称为词干,在词干化过程中被称为引理。但是两者之间还有更多不同之处。让我们看看那些是什么。

词汇化和词干化有什么不同

在词干提取中,单词的一部分在词尾被切掉,以到达单词的词干。肯定有不同的算法用来找出有多少个字符必须被砍掉,但这些算法实际上并不知道这个单词在它所属的语言中的含义。另一方面,在引理化中,算法具有这种知识。事实上,你甚至可以说,这些算法在将单词简化为其词根或引理之前,会参考字典来理解单词的意思。

因此,一个引理化算法会知道单词 better 是从单词 good 派生而来的,因此,引理是 good 。但是词干算法不能做到这一点。可能会出现词干过多或不足的情况,单词 better 可能会被简化为 betbett ,或者只是保留为 better 。但是没有办法在词干中把它简化成它的词根 good 。这,基本上就是词干化和词汇化的区别。

词汇化的利弊

现在您可能已经知道,变元化的明显优势是它更精确。因此,如果您正在处理一个 NLP 应用程序,比如聊天机器人或虚拟助手,理解对话的含义是至关重要的,词汇化将是有用的。但是这种准确性是有代价的。

因为词汇化涉及到从字典之类的东西中推导单词的意思,所以非常耗时。因此,与词干化算法相比,大多数词干化算法都要慢一些。对于引理化也有计算开销,然而,在 ML 问题中,计算资源很少引起关注。

你应该选择词汇化而不是词干化吗?

嗯,我无法回答这个问题。词汇化和词干化都比我在这里展示的要复杂得多。在做出决定之前,这两种方法都有更多的事情需要考虑。但是我很少看到使用词汇化而不是词干化的产品在效率和准确性上有什么显著的提高。在大多数情况下,至少根据我的知识,引理化所要求的开销是不合理的。所以这取决于所讨论的项目。但是我想在这里声明一下,我在 NLP 中所做的大部分工作都是针对文本分类的,这也是我没有看到任何显著差异的地方。在有些应用中,变元化的开销是完全合理的,事实上,变元化是必要的。

原载于 2020 年 2 月 26 日 https://blog.contactsunny.com

基于 GluonCV 的图像分类网络

原文:https://towardsdatascience.com/lenet-for-image-classification-using-gluoncv-829ae7ec4715?source=collection_archive---------61-----------------------

使用 gluoncv 的不同组件,如 autograded、trainer、dataset 和 dataloader 来训练用于图像分类的 LeNet 网络

之前的文章中,我们讨论了在预训练的网络上使用 GluonCV 进行图像分类。在本文中,我们将讨论如何通过训练 LeNet 来实现二进制图像分类器,通过将 gluoncv 的不同组件(如自动签名、训练器、数据集和数据加载器)集合在一起来训练 LeNet 网络。我们可以通过编写一个训练循环来完成这个任务。

  1. 导入库

我们首先导入库。我们初始化 mxnet.init 用于更多的参数初始化方法, matplotlib 用于绘图, time 用于基准测试以及其他胶子包。

from mxnet import nd, gluon, init, autograd, metric
from mxnet.gluon import nn
from mxnet.gluon.data.vision import datasets, transforms

import matplotlib.pyplot as plt
from time import time

2。数据

我们将使用 时尚 m-nest 数据集进行训练。

2.1 负载数据:

时尚 m-nest 数据集通过gluonsdata . vision . datasets模块自动下载。可以使用以下代码下载数据集。它还显示了第一个示例的属性。

mnist_train = datasets.FashionMNIST(train=True)
x, y = mnist_train[0]

print('X shape: %s dtype : %s' % (x.shape, x.dtype))
print('Number of images: %d'%len(mnist_train))

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

该数据集中的每个示例都是一幅 28×28 边的灰度图像,以形状格式为 高 X 宽 X 通道 的 NDRA 呈现。标签是一个标量。

2.2 可视化数据

为了理解这些数据,我们可以将最初的几幅图像可视化。我们可以看到它们是诸如套头衫、短靴、衬衫、t 恤、连衣裙和外套等服装项目的低保真度图像。

fig, axes = plt.subplots(1,6, figsize=(20, 4))
fig.suptitle("Fashing MNET Training Example", fontsize=20)
for idx in range(6):
    axes[idx].imshow(mnist_train[idx][0][:,:,0].asnumpy())
    axes[idx].set_title('Class {}'.format(mnist_train[idx][1]))

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2.3 转换数据

每张图像都需要转换成 通道 X 高度 X 宽度 、带浮点数据类型的张量格式,这可以通过transforms . totenser来完成,以便将数据馈入胶子网络。此外,我们可以使用平均值为 0.13、标准差为 0.31 的归一化变换来归一化所有像素值。我们使用由 合成 的转换将这两个转换链接在一起,并将其应用于数据对的第一个元素,即图像。

transformer = transforms.Compose([transforms.ToTensor(), transforms.Normalize(0.13, 0.31)])

mnist_train = mnist_train.transform_first(transformer)

2.4 数据加载

时尚 m-nestglon . data . dataset的子类。为了在训练中使用它,我们需要通过网络输入随机批次的例子,这可以很容易地通过胶子数据加载器完成。对于复杂的数据转换,我们将使用 256 的批处理大小和四个工作线程来并行处理数据。返回的训练数据是一个迭代器,它产生成批的图像和标签对。

batch_size = 256
train_data = gluon.data.DataLoader(mnist_train, batch_size=batch_size, shuffle=True, num_workers=4)

for data, label in train_data:
    print(data.shape, label.shape)
    break

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

3。型号

我们实现了 LeNet 网络;Yann LeCun 等人在 1998 年提出的一种卷积神经网络结构。

3.1 LeNet

LeNet 指的是 lenet-5,是一个简单的卷积神经网络。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

LeNet-5 架构(卷积神经网络)图片来源

LeNet5 模型包括两个卷积,然后是 MaxPooling 块,接着是一系列密集层,卷积层的“relu”激活,以及除最后一个密集层之外的所有密集层。但是,对于深度卷积神经网络,我们将权重初始化方法改为 Xavier

LeNet5 = nn.Sequential()
with LeNet5.name_scope():
    LeNet5.add(
            nn.Conv2D(channels=6, kernel_size=5, activation='relu'),
            nn.MaxPool2D(pool_size=2, strides=2),
            nn.Conv2D(channels=16, kernel_size=3, activation='relu'),
            nn.MaxPool2D(pool_size=2, strides=2),
            nn.Flatten(),
            nn.Dense(120, activation='relu'),
            nn.Dense(84, activation='relu'),
            nn.Dense(10)
    )
LeNet5.initialize(init=init.Xavier())

3.2 损失函数

除了神经网络之外,我们需要定义在训练期间最小化的损失函数。我们将使用标准的 softmax 交叉熵来解决分类问题。它首先对输出执行 softmax 以获得预测的概率,然后将标签与交叉熵进行比较。当真实类别被分配低概率时,交叉熵将会很高。

softmax_cross_entropy = gluon.loss.SoftmaxCrossEntropyLoss()

3.3 公制(精度)

我们还需要定义一个准确性指标来衡量网络的性能。为了计算准确性,我们只需要将我们的模型输出或预测与地面真实标签进行比较,并计算输出与标签匹配的部分。Mxnet 有一个预定义的度量库,我们可以只使用那里定义的精度类。

train_acc = metric.Accuracy()

4。培训师/优化

我们还需要定义在训练期间更新模型参数的胶子训练器。我们挑选的优化方法是标准的随机梯度下降法,学习率为 0.1。使用网络中的所有参数创建训练器。稍后,我们只需要调用训练器的 step 方法来更新网络宽度。

trainer = gluon.Trainer(LeNet5.collect_params(), 'sgd',{'learning_rate':0.1})

4.1 训练循环

在这一步中,我们将实施完整的培训循环。

我们将经历 10 个时期的训练,这意味着我们将在整个数据集上迭代 10 次,对于每个时期,我们将记录训练损失、训练精度和训练速度。批次上的训练循环发生在历元循环内。

我们迭代训练数据加载器,获得成批的训练数据和训练标签。使用自动记录范围,我们计算模型向前传递。首先,我们获得将数据批量馈送到网络的结果,然后我们使用网络输出和训练水平来计算损失。这些执行是在自动签名内执行的,以便记录操作,为计算梯度时的反向传递做好准备。正如我们在前面章节中看到的,这是通过对损失调用逆向函数来实现的。

最后,我们可以通过调用 trainer.step 使用计算机梯度更新网络参数。这就完成了一个批次的训练过程。

在进入该时期中的下一批之前,我们记录训练损失和训练准确度,用于内务处理。在每个训练时期结束时,我们还打印该时期后的精度损失。

for epoch in range(10):
    train_loss = 0
    tic = time()
    for data, label in train_data:
        with autograd.record():
            output = LeNet5(data)
            loss = softmax_cross_entropy(output, label)
        loss.backward()

        trainer.step(batch_size)

        train_loss += loss.mean().asscalar()
        train_acc.update(label, output)

    print("Epoch [%d] Loss:%.3f Acc:%.3f"%(epoch, train_loss/len(train_data), train_acc.get()[1]))

LeNet5.save_parameters("trained_LeNet5.params")

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

如我们所见,在每个历元之后,损失在减少,并且准确度在增加,这表明训练过程正在工作,并且模型正在学习。经过 10 个时期后,我们能够在训练数据上达到大约 91%的准确率。经过 10 次训练后,用安全参数法保存模型参数。这将在 params 文件中训练当前状态的参数。

5。验证

我们将所有参数保存到一个文件trained _ lenet 5 . params。现在,让我们把它装回去。要从 params 文件向网络加载参数,我们可以简单地使用网络的 load parameters 方法或任何 glue 和 block。

LeNet5.load_parameters('trained_LeNet5.params')

我们将通过运行一些预测来评估经过训练的模型。

5.1 验证数据

在运行预测之前,我们需要一个数据集,特别是模型尚未见过的数据集。我们可以使用时尚名人数据集的验证或测试分割来进行评估。我们可以通过将趋势关键字参数设置为 false 来选择它。

mnist_val = datasets.FashionMNIST(train=False)

5.2 数据转换

就像我们为训练所做的数据转换一样,我们需要完全相同的转换来进行预测。数据转换由两个转换组成。

  1. 将输入图像转换为张量
  2. 使用平均值和标准偏差标准化图像。
transform_fn = transforms.Compose([
                transforms.ToTensor(), 
                transforms.Normalize(0.13, 0.31)])

5.3 预测

例如,我们将预测验证数据集中的前六幅图像。为此,我们迭代我们想要预测的每个图像。首先,我们应用转换,并为我们的网络预期的批量大小添加一个额外的维度。接下来,我们获得每个类的网络预测,并且我们可以采用 argmax 来获得网络将 IRS 置信度分配给的类。然后我们可以开始预测,这样我们就可以将它与验证级别进行比较。

preds = []
for idx in range(6):
    image, label = mnist_val[idx]
    image = transform_fn(image).expand_dims(axis=0)
    pred = LeNet5(image).argmax(axis=1)
    preds.append(pred.astype('int32').asscalar())
print(preds)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

5.4 可视化结果

我们可以将我们预测的图像和顶部的地面实况标签与底部的网络预测进行比较。下面的代码片段做到了。

fig, axes = plt.subplots(1,6, figsize=(20, 4))
fig.suptitle("Predicted vs True Class on Validation Data", fontsize=20)
for idx in range(6):
    axes[idx].imshow(mnist_val[idx][0][:,:,0].asnumpy())
    axes[idx].set_title('True [{}] \n Predicted [{}]'.format(mnist_val[idx][1], preds[idx]))

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们看到,网络在预测商品的正确时尚类别方面做得很好,或者犯了一些错误,将类别 2 误认为类别 6。

5.5 验证数据加载器

我们只是在验证数据的子集上评估了模型。为了使用整个验证数据集,我们可以创建一个验证数据负载,就像我们在培训期间所做的那样。我们说批量大小为 256 类似于火车数据加载器,并应用相同的转换。但是我们不必洗牌,因为我们不是在训练网络。我们还需要定义用于评估模型性能的指标。因为我们在培训中使用了准确性,所以我们将使用同样的方法进行验证。我们可以简单地使用 MxN 矩阵包中的精度度量类。

batch_size = 256
val_data = gluon.data.DataLoader(mnist_val.transform_first(transform_fn),   batch_size=batch_size, num_workers=4)val_acc = metric.Accuracy()

5.6 验证循环

现在,我们可以实现完整的验证循环。我们只需要检查验证数据加载或需求,不像在培训中我们执行多个批处理。对于每批数据和验证数据集,我们使用模型进行一批预测。然后,我们可以使用模型的输出和基本事实验证自由来计算模型的准确性。对每一批进行求和,除以批数,得到模型的平均精度。

for data, label in val_data:
    output = LeNet5(data)
    val_acc.update(label, output)
print("Validation Accuracy: %0.3f"%(val_acc.get()[1]))

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

对于我们训练的模型,我们可以看到 90%的验证准确性非常接近 91%的训练准确性。这意味着该模型很好地概括了新的例子。

成为媒体会员这里支持独立写作,每月 5 美元,获得媒体上的所有故事。

少即是多;取样的“艺术”( Stat-01)

原文:https://towardsdatascience.com/less-is-more-the-art-of-sampling-dda8b59d399?source=collection_archive---------27-----------------------

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

丹尼尔·利维斯·佩鲁西在 Unsplash 上的照片

使用样本提高您对大量数据集的数据分析能力

“被数据所感动是一个真正聪明的人的标志。”

—乔治·萧伯纳

当今的世界是由数据科学驱动的。在生活的每一分钟,我们都在使用数据科学。它是机器学习、物联网、大数据等的组成部分。在幕后,统计数据驱动着所有这些。它是现代技术的大脑。如果你被统计数据所感动,你很容易做出明智的决定。如果你不是一个专业的统计学家,一个统计决策也会适得其反。样本是统计学的一个基本要素,它指导数据科学家更容易、更有效地分析整个主题。大多数情况下,处理大型数据集几乎是不可能的,这就是样本让事情……发生的地方!

“我认为远离完全照搬别人的记录是创新和非常有创造性的。对我来说,这并不能展示你太多的创造性,除非你拿一小块加进去,就像在鸡肉上加香料一样。”——梅西·埃丽奥特。

为更好的模型创建最佳样品时应遵循的完美报价。在抽样的情况下,我们必须有创造性。但是怎么做呢?别担心,我会按照大小姐说的,帮你做辣子鸡。跟我来。

统计/数学不枯燥,很有趣,试着把自己和自然与它联系起来。现在,让我来引导你。

路标

在数据科学中,使用基本统计学。大多数情况下,数据科学家不会考虑像采样技术这样的小问题。但对于数据驱动的方法来说,这可能是一个至关重要的问题。我们将讨论以下部分:

  • 用样品介绍我们自己的故事
  • 取样误差
  • 制作有效的样本
  • 抽样在数据科学领域的重要性

我们继续吧。

✴温和的从当前的疫情冠状病毒开始

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

jusdoveyageUnsplash 上拍摄的照片

随着疫情电晕的爆发,全世界都在休息。甚至世界仍然不知道如何对待疫情。

2019 年 11 月-17 日,首例人感染冠状病毒[1]。医学专家认为这个病例是肺炎,因为这是前所未见的。这种病毒呈几何级数扩散。一个月内,病毒感染了许多人。2019 年 12 月 31 日,世卫组织获悉在中国湖北省武汉市发现了不明原因的肺炎聚集性病例[2]。现在,病例急剧增加。根据世卫组织的说法,目前情况的统计如下所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

冠状病毒统计照片世卫组织(2020 年 3 月 21 日)

查找冠状病毒的最新统计数据。

这里,统计的知识就进来了。在这个阶段的开始,电晕的情况是少数。任何人都可以很容易地单独分析这些案例。万一变成流行病呢!当发生的范围变大时,就超出了我们分析个案的能力。那么在这种情况下我们该怎么办呢?我们会放弃吗?一点也不。

例如,我们请了一位数据科学家来帮助我们。并告诉他找出冠状病毒感染者的死亡率。然后他要求我们收集 300 个确诊病例的数据。他还补充道,***这 300 个案例足以知道所有电晕案例的行为。***这 300 例是全球整体受影响人群的样本。如果我们考虑所有的 234073 例确诊病例(确诊总数),这个样本就会变成一个人群。所以,总体定义了一个具体案例的所有数据。如果我们改变问题,样本和总体的概念可能会改变。如何?似乎很困惑!

深入挖掘,消除困惑

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

从不同角度看人口和样本(按作者)

一组数据是样本还是总体,取决于我们试图回答什么样的问题。图像描绘了全球冠状病毒确诊病例总数为 234073 例。如果我们试图找出世界上的人是否受到冠状病毒的影响,那么由 234073 名冠状病毒感染者组成的群体就是一个群体。因为冠状病毒感染总人数是 234073 人。另一方面,如果我们试图找出世界人民是否受到任何病毒的影响,那么由 234073 人组成的群体就是一个样本。因为世界上有很多病毒,冠状病毒就是其中之一。

群体/样本的每个对象/病例被称为单位/点/事件

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

样本和总体的直觉(作者)

从总体中随机或有选择地选择样本元素。

✴Sample 结果可能不同~采样误差

让我们假设,两个样本确认电晕案例。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们可以找到两个不同样本的死亡率,如上图所示的。在每个样本中,我们得到不同的死亡率。而人口的死亡率就是期望死亡率。那哪个样品更好呢?我们如何衡量?变得迷惑不解!

最佳样本代表总体结果**。世卫组织估计截至 2020 年 3 月 3 日的死亡率为 3.4%。假设这是我们人口死亡率的结果。**

结果与样本结果略有不同。它被称为采样误差。****

对于上述情况,

样本误差,E1 =(3.4–2.5)% = 0.9%,E2 =(3.4–3.00)% = 0.4%。

抽样误差=(总体结果-样本结果)

✴Choosing 是最好的例子

一个成功的统计模型很大程度上依赖于最优抽样**。你在抽样时越有创意,你的模型就越准确(对人群有代表性)。**

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

代表性样本与抽样误差(按作者)

一个样本(好样本)代表抽样误差最小时的总体。为此,我们需要随机选择样本**。**

现在, 我们用[WNBA Player Stats Season 2016–17](https://www.kaggle.com/jinxbe/wnba-player-stats-2017)数据集跳转到一个真实世界的例子。您也可以在这里找到栏的文档。

假设,我们被要求用最优抽样找出玩家的平均点数。让我们从我们的创造力开始寻找最佳答案。

1。随机选择样本

[WNBA Player Stats Season 2016–17](https://www.kaggle.com/jinxbe/wnba-player-stats-2017) 数据集中有 143 位选手的数据。我们随机抽取 10 个样本数据进行 150 次分析玩家的平均得分。输出如下所示。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

随机样本的散点图

由于只有 10 个个体数据,统计模型并不总是提供个代表性样本**。因为有些样本的平均分远高于或低于总体的平均分。这是不可取的。我们走吧。**

2.增加随机样本的样本量

当我们增加样本量时,我们的样本就更能代表总体。让我们通过[WNBA Player Stats Season 2016–17](https://www.kaggle.com/jinxbe/wnba-player-stats-2017) 数据集获得更多的视觉直觉。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

不同随机样本大小的散点图

当样本大小为 100 时,所有随机样本都高度代表数据集,样本大小的每个增量**都使随机样本更具代表性。所以,取样的时候要把它记在脑子里。**

3。将数据集分层,并从每个层中选择数据

数据集中有 5 种类型的球员。如果我们观察[WNBA Player Stats Season 2016–17](https://www.kaggle.com/jinxbe/wnba-player-stats-2017)数据集的***‘***Pos***’*** 一栏,会发现以下几类玩家。

**['F' 'G/F' 'G' 'C' 'F/C']**
  • F →Forward
  • G → Guard
  • C → Centre
  • G/F → Guard/Forward
  • F/C → Foward/Centre

只有随机抽样选择可能会选择一些球员不会包含所有 5 种类型的球员。这可能导致样本模型代表性差。我们可以对所有 5 种类型的球员进行分层。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

每种类型玩家出现的频率。

我们可以从每个阶层(每个分层的群体被称为阶层)中挑选同等数量的玩家来做样本。最佳选择是按比例选择元素。这种策略被称为比例分层抽样。****

这里,阶层的比例是(相对于 143 名玩家)G → 42%,F →23%,C → 17%,G/F →10%,F/C →8%(大约。)*。比方说我们想要一个样本量为50 的样本。那么比例分层样本包括*

  • G → 25
  • F → 8
  • C → 5
  • G/F →1
  • F/C →1

我们也可以用其他参数分层。在最后一步,我们应该选择能提供最佳结果的最佳分层样本。

4.巢式抽样法

有时,我们的数据集可能不像[WNBA Player Stats Season 2016–17](https://www.kaggle.com/jinxbe/wnba-player-stats-2017)数据集那样组织良好。它可能是分散的或难以收集的。在这些情况下,整群抽样有助于有效地分析数据。

让,你在处理冠状病毒的病例。你需要分析整个世界的数据。此外,没有一个中央数据中心,你可以通过它获得全世界的数据。现在,你需要从单个国家的网站上收集冠状病毒病例的数据。从世界所有国家收集数据可能需要几个月的时间。而且是不切实际的。对于这种类型的案例,您需要随机选择一些国家,将一个国家视为一个集群。现在,你的任务是从那些选定的国家收集数据。这种类型的采样被称为整群采样**

到目前为止一切顺利………

我们学到了很多关于采样的知识,但是如何处理采样呢?!!!!!!!!!

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

本·怀特在 Unsplash 上的照片

别担心,你的方向是对的。我们只是举了几个采样的例子。你可能会想,既然你可以通过人口来做得更好,那么还需要什么样的抽样方法。

让我们假设,你在一家跨国公司担任数据科学家,那里有一个数十亿客户交易的数据库。你老板让你根据交易找出客户类别。运用适当的采样技术,你可以很容易地找到你想要的结果。

您还可能遇到这样的情况,API 的使用受到限制,您需要为整个系统创建一个分析模型。在这些情况下,你被迫取样。

在很多情况下,数据科学中采样是必不可少的。

抽样是统计学中的一个大话题。讨论所有这些问题超出了本文的范围。

如果您有兴趣了解更多关于采样的信息,请点击以下链接:

✴Task(可选)

虽然我们已经学习了很少的抽样主题,但它有望涵盖实现数据科学的统计模型所需的知识。

“在智力上,他们知道很多。实际上,他们选择了几乎一无所知”——彼得·本奇利

所以,现在试着做一些练习。它会给你一个亲身体验。最近公布了冠状病毒的数据集。从 Kaggle 下载数据集。总共有 6 个数据集。我建议用[covid_19_data.csv](http://.com/sudalairajkumar/novel-corona-virus-2019-dataset#covid_19_data.csv)文件来分析。

找到以下内容

  • 数据集的死亡率(人口死亡率)
  • 用不同的参数尝试不同类型的采样技术(如上所述)
  • 找出数据集的最佳样本
  • 绘制结果输出
**I suggest to use Python/R to complete the task.**

✴结论

实际上,统计分析依赖于人口和样本。广义而言,抽样是用来推断整个地区人口的特征。在大多数情况下,整个地区(人口)是如此之大,一个最佳的样本可以做大量的工作。

通过分析样本,我们试图描述一个群体。绘图有助于我们获得描述的视觉效果。

预测模型(机器学习等。)也可以根据样本创建。

参考

[1] J. Ma,中国首例确诊新冠肺炎病例可追溯到 2020 年 11 月 17 日《南华早报》。

[2]新型冠状病毒—中国(2020),世界卫生组织。

[3]世卫组织总干事在世界卫生组织 2020 年 3 月 3 日新冠肺炎媒体吹风会上的开幕词。

数据科学统计系列文章

  1. 少即是多;取样的‘艺术’(Stat-01)
  2. 熟悉数据科学最重要的武器~变量(Stat-02)
  3. 要提高数据分析能力,你必须知道频率分布(Stat-03)
  4. 比较多个频率分布,从数据集中提取有价值的信息(Stat-05)
  5. 通过简短的讨论消除你对均值的误解(Stat-06)
  6. 通过规范化提高您的数据科学模型效率(Stat-07)
  7. 数据科学的基本概率概念(Stat-08)
  8. 从朴素贝叶斯定理到朴素贝叶斯分类器的路线图(Stat-09)
  9. 数据科学爱好者关于假设检验需要知道的一切(Stat-10)
  10. 多组间统计比较用 ANOVA (Stat-11)
  11. 用卡方检验(Stat-12)比较分类变量的相关性

鲜为人知但非常有用的熊猫功能

原文:https://towardsdatascience.com/less-known-but-very-useful-pandas-functions-1e1756afb2a9?source=collection_archive---------16-----------------------

加快您的数据分析过程

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

埃里克·麦克林在 Unsplash 上的照片

Pandas 是一个高效且广泛使用的数据分析工具。Pandas 的核心数据结构是DATA frame,它以表格的形式表示数据,带有标记的行和列。DataFrame 有许多强大而灵活的功能和方法,可以简化和加快数据清理和分析过程。在这篇文章中,我将介绍一些不常见但非常有用的熊猫函数。

我将介绍的功能:

  • 激增
  • 努尼克岛
  • 检查
  • 在哪里
  • 推断对象

我们总是从导入所需的库开始:

import pandas as pd
import numpy as np

爆炸

假设您的数据集在单个观测值(行)中包含一个要素的多个条目,但您希望在单独的行中对它们进行分析。

df = pd.DataFrame({'ID':['a','b','c'],
                  'measurement':[4,6,[2,3,8]],
                  'day':1})
df

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们希望在单独的行上看到第“1”天“c”的测量值,使用分解很容易做到这一点:

df.explode('measurement').reset_index(drop=True)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

最好也重置索引:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们也可以在两列上使用爆炸作为一个链:

df2 = pd.DataFrame({'ID':['a','b','c'],
                   'measurement_1':[4,6,[2,3,8]],
                   'measurement_2':[1,[7,9],1],
                   'day':1})
df2

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

df2.explode('measurement_1').reset_index(drop=True).explode('measurement_2').reset_index(drop=True)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

确保在第一次分解后使用 reset_index,否则会得到如下意外结果:

df2.explode('measurement_1').explode('measurement_2').reset_index(drop=True)

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

努尼克

Nunique 计算列或行中唯一条目的数量。它在分类特征中非常有用,尤其是在我们事先不知道类别数量的情况下。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

照片由凯尔·格伦Unsplash 上拍摄

假设我们有以下数据帧:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

要查找列中唯一值的数量:

df.name.nunique()
5

我们可以使用稍微复杂一点的语法使用 value_counts 来获得相同的结果:

df.name.value_counts().shape[0]
5

然而, nunique 允许我们同时对所有列或行执行此操作:

df.nunique()  #columns
ID              8 
name            5 
measurement1    7 
measurement2    5 
measurement3    6
dtype: int64df.nunique(axis=1) #rows
0    3 
1    4 
2    4 
3    5 
4    5 
5    3 
6    4 
7    4 
dtype: int64

查找

它可用于根据其他行、列对上的值在数据帧中查找值。这个函数最好通过一个例子来解释。假设我们有以下数据帧:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

对于每一天,我们有 4 个人的测量值和一个包含这 4 个人的名字的列。我们希望创建一个新列,在“选择”列中显示该人的测量值:

df['Person_point'] = df.lookup(df.index, df['Person'])
df

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

我们不必对所有数据点都进行这种操作。只要行标签和列标签具有相同的大小,我们就可以使用特定的范围:

df.lookup(df.index[:5], df['Person'][:5])array([4, 7, 9, 8, 1])

其中

“Where”用于根据条件替换行或列中的值。您还可以指定要替换的值。默认值为 NaN。让我们复习一个例子,这样就清楚了。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

df['Person_point'].where(df['Person_point'] > 5)
0    NaN 
1    7.0 
2    9.0 
3    8.0 
4    NaN 
5    6.0 
6    NaN 
7    9.0 
Name: Person_point, dtype: float64

我们可以指定替换值:

df['Person_point'].where(df['Person_point'] > 5, 'Not_qualified')0    Not_qualified 
1    7.0 
2    9.0 
3    8.0 
4    Not_qualified 
5    6.0 
6    Not_qualified 
7    9.0 
Name: Person_point, dtype: float64

在大多数 Pandas 函数中使用的一个非常重要的参数是 inplace ,它保存数据帧中的更改。inplace 的默认值为 False,因此如果您不将其设置为 True,您对函数所做的更改将不会保存在数据帧中。

例如,我们没有将 inplace 设置为 True。让我们检查原始数据帧:

df

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

使用 inplace=True 执行相同的函数:

df['Person_point'].where(df['Person_point'] > 5, 'Not_qualified', inplace=True)df

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

推断 _ 对象

Pandas 支持广泛的数据类型,其中之一是对象。对象包含文本或混合(数字和非数字)值。但是,如果有不同的选项可用,则不建议使用对象数据类型。使用更具体的数据类型可以更快地执行某些操作。例如,我们更喜欢用整数或浮点数据类型来表示数值。

infer_objects 尝试为对象列推断更好的 dtypes。我们来看一个例子。

df = pd.DataFrame({'A': ['a', 1, 2, 3],
                   'B':['b',2.1,1.5,2],
                   'C':['c',True,False,False],
                   'D':['a','b','c','d']})df

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

df = df[1:]df.dtypes
A    object 
B    object 
C    object 
D    object 
dtype: object

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

df.infer_objects().dtypesdf.dtypes
A      int64 
B    float64 
C       bool 
D     object 
dtype: object

结论

我在这里介绍的只是熊猫在数据分析过程中的一小部分能力,但肯定会在你的项目中有用。试图一下子全部学会是不合理的。相反,学习小块和通过实践吸收信息将帮助你建立全面的数据分析技能。

我关于熊猫和熊猫的其他帖子

鲜为人知的熊猫在 Python 中的应用

原文:https://towardsdatascience.com/less-known-pandas-groupby-applications-in-python-72fb304a1973?source=collection_archive---------34-----------------------

但是它们对你还是有用的

几个月前,我发表了一篇关于如何在熊猫中掌握 groupby 功能的文章。然后前几天我的一个朋友问了一个问题也可以用 groupby 函数解决。所以今天我列出一些 groupby 函数可以实现的不太为人知的应用。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

照片由替代代码Unsplash 上拍摄

(如果你没有看过我之前关于 groupby 函数的文章,那就继续吧。它会帮助你更快地理解这篇文章。)

[## 现在学习如何掌握 Python 中的 groupby 函数

Pandas 中的 GroupBy 比 SQL 中的 groupby 更加复杂和强大。

towardsdatascience.com](/learn-how-to-master-groupby-function-in-python-now-4620dd463224)

1。各组的百分比

在 Excel 数据透视表中,您可以选择显示父合计的百分比。这表示数据透视表显示了每一项占其总父小计的百分比。在 lambda 的帮助下,这可以很容易地在 Pandas groupby 函数中完成。

>>> import pandas as pd
>>> df = pd.DataFrame({'A':['a','b','c']*2,
...                    'B':['d','e']*3,
...                    'C':[1,3,6,10,12,16]
...                    })
>>> df
   A  B   C
0  a  d   1
1  b  e   3
2  c  d   6
3  a  e  10
4  b  d  12
5  c  e  16# First Groupby 
>>> df['Perc_gpby_A'] = df.groupby('A')['C'].apply(lambda x: x/x.sum())# Second Groupby
>>> df['Perc_gpby_B'] = df.groupby('B')['C'].apply(lambda x: x/x.sum())
>>> df
   A  B   C  Perc_gpby_A  Perc_gpby_B
0  a  d   1     0.090909     0.052632
1  b  e   3     0.200000     0.103448
2  c  d   6     0.272727     0.315789
3  a  e  10     0.909091     0.344828
4  b  d  12     0.800000     0.631579
5  c  e  16     0.727273     0.551724

上例的主要要点是在 groupby 函数中选择适当的分组级别。在第一个 groupby 语句中,分组级别是列 a。总共有三个组 a、b 和 C。然后,将对列 C 应用 lambda 函数。λ函数是x/x.sum()。因此,C 列中的每个值将除以其各自组的总和。例如,a 组的总和是 11。因此,在行 0 和 3 中,c 的值将除以 11。因此结果是 0.0909 和 0.9091。这同样适用于 A 列中的其余两个组和第二个 groupby 语句。

除了使用 lambda 函数,使用transform也可以执行类似的计算。

>>> df['Perc_gpby_A'] = df['C']/df.groupby('A')['C'].transform('sum')
>>> df['Perc_gpby_B'] = df['C']/df.groupby('B')['C'].transform('sum')
>>> df
   A  B   C  Perc_gpby_A  Perc_gpby_B
0  a  d   1     0.090909     0.052632
1  b  e   3     0.200000     0.103448
2  c  d   6     0.272727     0.315789
3  a  e  10     0.909091     0.344828
4  b  d  12     0.800000     0.631579
5  c  e  16     0.727273     0.551724

2.转换为列表/字典

这是我朋友前几天问的。如果您想将同一组中的所有值作为一个列表或字典进行分组,本节将为您提供答案。

>>> df = pd.DataFrame({'A':['a','b','c']*2,
...                    'B':['d','e']*3,
...                    'C':[1,3,6,10,12,16]
...                    })
>>> df.groupby('A')['C'].apply(list)
A
a    [1, 10]
b    [3, 12]
c    [6, 16]
Name: C, dtype: object
>>> type(df.groupby('A')['C'].apply(list))
<class 'pandas.core.series.Series'>

在上面的例子中,在groupby('A')之后,apply(list)将同一组中的所有值组合成一个列表形式。最终结果是序列形式。在这个层次上,你可以进一步转化为一个列表或字典。

>>> df.groupby('A')['C'].apply(list).to_list()
[[1, 10], [3, 12], [6, 16]]
>>> df.groupby('A')['C'].apply(list).to_dict()
{'a': [1, 10], 'b': [3, 12], 'c': [6, 16]}

当然,您也可以在apply功能中选择set

>>> df.groupby('B')['C'].apply(set).to_dict()
{'d': {1, 12, 6}, 'e': {16, 10, 3}}

3.按组列出的最常见值

>>> df = pd.DataFrame({'A':list('ab'*4),
...                    'B':list('c'*2+'d'+'e'*5)})
>>> df
   A  B
0  a  c
1  b  c
2  a  d
3  b  e
4  a  e
5  b  e
6  a  e
7  b  e
>>> df.groupby('A')['B'].agg(pd.Series.mode)
A
a    e
b    e
Name: B, dtype: object

我想我不需要在这里做太多的解释。用agg(pd.Series.mode)可以得到每组最频繁的值。

这三个应用程序的代码相当简单,但是它们仍然可以帮助您更好地处理分组数据。我希望下次您可以使用 groupby 函数,而不仅仅是简单的聚合。本文到此为止。感谢您的阅读,下次再见。

我的其他 Python 文章

如果你问这个问题,你是在告诉别人你是一个 Python 初学者。

如果你是 Python 新手(尤其是自学 Python 的话),请将此加入书签

由 Python Selenium 开发的 Web Scrape Twitter(第一部分)

Web Scrape Twitter by Python Selenium(第二部分)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值