机器学习和神经网络 - 页 61

 

线性回归:友好介绍



线性回归:友好介绍

大家好,我是 Louis Serrano,这是对线性回归的友好介绍。该视频是一个由三部分组成的系列视频的第一部分,我将在其中介绍线性回归、逻辑回归和支持向量机。但是,让我们现在关注线性回归。

通常,线性回归的解释涉及复杂的概念,如线性代数、矩阵、导数、微积分和误差函数。但对我来说,这可能是压倒性的。我有视觉头脑,我更喜欢用点和线的更直观的方法来理解线性回归。

让我证明我的意思。首先,让我们以房价为例来定义线性回归。想象一下,我们有五栋房子,房间数量各不相同。我们拥有三号房,想估算一下它的售价。为此,我们查看类似房屋的价格并尝试做出有根据的猜测。观察一号房15万,二号房20万,四号房30万,五号房35万,估计三号房大概25万左右。

本质上,我们在这里所做的是执行线性回归。我们将房屋绘制在图表上,横轴是房间数量,纵轴是价格。我们观察到价格似乎呈一条直线,所以我们把三号房子放在这条线上以做出最佳估计。这种通过一组点拟合直线并将其用于预测的简单方法是线性回归的本质。

实际上,计算价格涉及其他因素,使数据更加复杂。但是,我们仍然可以拟合一条非常接近房价的线。线性回归可以应用于各种场景,例如计算金融中的股票价格或确定医学中的患者寿命。应用程序很多。

现在,让我们讨论一下我们实际上是如何执行线性回归的。我们需要一种算法或程序来找到最适合这些点的线。为简单起见,我们将重点关注一种基本算法,该算法涉及对线进行小幅调整,直到它很好地适合点。

以下是该算法的摘要:

  1. 从随机线开始。
  2. 定义学习率,它决定了我们所做调整的大小。
  3. 重复以下步骤指定的次数(epochs):
    • 选择一个随机点。
    • 根据线相对于线的位置将线移向点。
  4. 享受你的合身线!

为了将线移向一个点,我们执行旋转和平移。顺时针或逆时针旋转线可调整斜率,而向上或向下平移线可调整 y 轴截距。调整是通过添加或减去少量的内容来进行的,这些内容由学习率决定。

通过多次重复这个过程,线逐渐靠近点,从而得到很好的拟合。 epochs 的数量决定了我们重复该过程的次数,并且可以根据所需的精度和可用的计算资源进行调整。

这就是线性回归背后的基本思想。它是将线拟合到数据点并进行预测的强大工具。我希望这个直观的解释能帮助你更好地理解线性回归。

我们有一些更接近要点的东西,有四种情况需要检查以确保方块技巧有效工作。让我们检查另一种情况,其中该点位于直线下方和 y 轴的右侧。方程式再次出现。在第一步中,我们选择一个较小的学习率 0.01。在第二步中,我们将此速率应用于斜率和 y 轴截距。现在,垂直距离为负,因为该点位于直线 (-4) 下方,而水平距离保持为正,因为该点位于 y 轴 (+5) 的右侧。要修改斜率,我们将 0.01 乘以 (-4) 乘以 5,得到 -0.2。通过减去 -0.2,我们减小了斜率,导致线顺时针移动。对于 y 截距,我们将学习率乘以垂直距离,即 0.01 乘以 (-4),得到 -0.04。新的直线方程变为 y = 1.8 - 0.2x + 2.96 - 0.04。请注意,斜率较小,表示顺时针旋转,y 轴截距较小,表示向下平移。这种调整使我们更接近这一点。虽然我们只检查了四种情况中的两种,但我鼓励您测试所有这些情况,以确保第二步始终有效。最后,让我们探讨一下线性回归算法。该算法进行如下:

  1. 从随机线开始。
  2. 将重复次数(纪元)设置为 8,000。
  3. 选择 0.01 的小步长(学习率)。
  4. 对指定数量的纪元重复以下循环:
    • 随机选择一个点。
    • 使用学习率、垂直距离和水平距离调整线向点移动。
  5. 享受您的合身系列。这就是线性回归算法。我鼓励您使用提供的伪代码对其进行编码,并在不同的数据集上对其进行测试以观察其性能。我已经实现了这个算法,发现它运行得非常好。

现在,问题来了:这个算法是更好还是与现有算法相同?这种情况让我想起了一位名叫 John Borwein 的才华横溢的数学家,我曾与他共事过。他搜索公式来计算 pi 的位数,发现当公式非常接近 pi 时,这是一个双赢的局面,因为他要么发现了一个新公式,要么找到了非常接近 pi 的东西。同样,有了这个算法,我们就有了双赢的局面。它要么优于现有算法,要么被证明在更简单的同时同样有效。

令人惊讶的是,该算法与传统线性回归中使用的算法完全相同,例如平方误差梯度下降。传统方法包括通过计算点与线之间的距离,然后使用导数、微积分和梯度下降或求解线性方程组来最小化平方误差。我向您提出的挑战是通过计算平方误差、求导并执行与导数方向相反的小步来验证平方技巧等同于传统的平方误差方法,就像梯度下降一样。你会发现平方差的导数与垂直和水平距离密切相关。这表明平方技巧等同于传统方法。

第二个挑战与衡量一条线的好坏有关。我们之前讨论了平方误差,它涉及对距离进行平方。另一种更简单的方法是绝对误差,我们将距离的绝对值相加而不考虑它们的符号。坏线具有更大的橙色距离,而好线由于离点更近而具有更小的橙色距离。使用微积分,您可以最小化绝对误差并执行梯度下降步骤。您可以开发一个绝对技巧,它只处理水平距离并包含一个 if 语句来处理线相对于点的位置。通过探索这个挑战,您会发现绝对的窍门。随意编写代码并观察其有效性。

该视频重点介绍线性回归。请记住,这是包含逻辑回归和支持向量机技巧的三部分系列的一部分。请继续关注即将发布的视频。如果您喜欢此内容,请考虑订阅、点赞和分享。感谢您提出意见、问题和建议。让我知道您如何应对挑战,并随时为未来的视频建议主题。您也可以在 Twitter (@LouisLikesMath) 上联系我。谢谢,下个视频见。

 

逻辑回归和感知器算法:友好介绍



逻辑回归和感知器算法:友好介绍

有一个更好的算法可以同时处理所有这三种情况。我现在将解释感知器技巧,它同时处理这些情况。让我们考虑一条具有相同方程的线和一个位于红线上的蓝点。我们需要调整线的位置以适应这一点。为此,我们将 -6 的值减小一点点,比方说 0.1,这将使线向上移动。接下来,我们将调整线的斜率以旋转它。例如,如果我们想要将线旋转得更陡峭,我们可以将 2 的值减小到 1.8。

同样,如果点在那个方向上更远,我们需要更多地旋转线以使其更近。在这种情况下,我们可能会将 2 的值减少到 1.4。但是,如果点在另一边,我们需要将线向相反的方向旋转。所以,我们可能需要增加 2 的值,比方说增加到 2.2。让我们更准确地再过一遍这个过程。当该点距离y轴不远时,我们将-6的值小幅减小,比如0.01,使线稍微向上移动。

现在,让我们考虑 2 的值。如果该点的坐标为 (4, 5),则水平距离为 4。要调整斜率,我们可以将 4 乘以学习率,假设为 0.04,以减小 2 的值. 这将围绕一个枢轴旋转线。同理,我们可以对3的值应用同样的原理。例如,如果点的坐标为(4, 5),则垂直距离为5。通过5乘以学习率,如0.05,我们可以减小该值3. 这将进一步旋转线。最后,在将 2 减去 0.04、3 减去 0.05 和 -6 减去 0.01 之后,等式变为 1.96x + 2.95y - 6.01。这种被称为感知器技巧的技术解决了调整的方向和幅度。总而言之,在学习率为 0.01 的情况下,我们可以通过将 a 减少一个学习率乘以 b,将 b 减少一个学习率乘以 q,将 c 减少一个,以 ax + by + c = 0 的形式更新方程学习率。

但是,还有一种考虑:蓝色区域在上,红色区域在下,有误分类点的情况。在这种情况下,我们将添加值而不是减去它们。例如,如果我们有 -2x - 3y + 6 = 0 而不是 2x + 3y - 6 = 0,我们将少量添加到 a、b 和 c。通过考虑点相对于 y 轴的位置,我们可以确定是增加还是减少值。现在,让我们继续讨论逻辑回归算法,这是一种更好的方法。

我不会深入研究细节,但我会为您提供一个大纲和两个挑战。第一个挑战称为梯度下降,它涉及使用误差函数来衡量分类器的性能。目标是最小化错误并使用微积分改进算法。梯度下降的过程类似于我们之前讨论的感知器算法。

第二个挑战是为逻辑回归选择合适的激活函数。激活函数负责将输入的加权和转换为 0 到 1 之间的概率值。

一种常用的激活函数是 sigmoid 函数,它具有 S 形曲线。它将任何实数映射到 0 到 1 之间的值。 sigmoid 函数定义为:

σ(z) = 1 / (1 + e^(-z))

这里,z 表示输入的加权和,计算如下:

z = a x + b y + c

在逻辑回归中,目标是找到 a、b 和 c 的最佳值,使观察数据的可能性最大化。这是通过最小化成本函数来实现的,通常称为交叉熵损失函数。

成本函数衡量预测概率与实际类别标签之间的差异。成本函数的一种常见形式是:

J(a, b, c) = -1/m * Σ(y * log(σ(z)) + (1-y) * log(1-σ(z)))

在这个等式中,m 表示训练示例的数量,y 是真实的类标签(0 或 1),σ(z) 是正类的预测概率。

为了最小化成本函数,可以应用梯度下降。梯度下降背后的思想是在与这些参数相关的成本函数梯度的相反方向上迭代更新参数值(a、b 和 c)。这个过程一直持续到收敛,此时成本函数被最小化。

逻辑回归中梯度下降的更新方程与感知器算法中的相似。使用学习率(α),参数更新如下:

a := a - α * ∂J/∂ab := b - α * ∂J/∂bc := c - α * ∂J/∂c

偏导数 (∂J/∂a, ∂J/∂b, ∂J/∂c) 表示成本函数相对于每个参数的梯度。它们可以使用微积分来计算。

通过使用梯度下降迭代更新参数值,与感知器算法相比,逻辑回归可以更灵活地学习对数据进行分类。它是一种广泛使用且有效的二元分类问题算法。

总之,逻辑回归建立在感知器算法的原理之上,但引入了概率框架和不同的成本函数。通过应用梯度下降,它优化参数以最大化观测数据的可能性。 sigmoid 激活函数的选择允许逻辑回归生成类成员资格的概率估计。

 

支持向量机 (SVM):友好介绍



支持向量机 (SVM):友好介绍

大家好,我是 Luis Serrano,这是对支持向量机(Support Vector Machines,简称 SVM)的友好介绍。这是关于线性模型的三个系列视频中的第三个。如果你还没有看过第一个,它叫做“线性回归”,第二个叫做“逻辑回归”。该视频以第二个视频中涵盖的概念为基础。

首先,我要感谢我在加拿大不列颠哥伦比亚省奎斯特大学教授的机器学习课程的学生们。他们帮助我形成了这个视频的主要想法,与他们一起工作是一次美妙的经历。在照片中,你可以看到我和我的朋友 Richard Hoshino,他也是大学教授。

现在,让我们深入研究 SVM。支持向量机是一种重要的分类算法,旨在使用一条线将两个类的点分开。但是,SVM 更进一步,以找到使点之间的距离最大化的最佳直线。通常,SVM 是根据线性优化或梯度下降来解释的。但在这个视频中,我将介绍一种我在文献中没有见过的方法,我称之为“小步法”。这是一种迭代方法,我们不断提高线的分类能力。

首先,让我们回顾一下之前关于逻辑回归和感知器算法的视频。在那段视频中,我们的目标是找到一条线,将数据分为两类:红点和蓝点。感知器算法从一条随机线开始,根据点的反馈迭代调整它。该算法逐步提高线对点进行正确分类的能力。

现在,让我们介绍一下 SVM 中的额外步骤。我们的目标不是只找到一条线,而是找到两条尽可能远的平行线,同时仍然有效地分离数据。为了说明这一点,想象两组平行线,它们与主线的距离相等。目标是最大化这两条线之间的距离。分离越大,分类越好。

接下来,我们需要训练算法来选择最佳线路。我们通过将线方程乘以不同的常数来实现这一点。通过这样做,我们可以控制线条之间的距离。较大的常数会导致更宽的分离,而较小的常数会使线条靠得更近。这样,我们就可以找到使距离最大化的最优线路。

要使用方程式分隔线条,让我们考虑一个示例方程式:2x + 3y - 6 = 0。将此方程式乘以常数因子不会改变线条本身,但会影响线条之间的距离。我们可以调整这个常量来扩展或收缩线条。

为了形式化 SVM 算法,我们结合了扩展率,它决定了将线分开的步长。通过将线方程乘以接近 1 的值,例如 0.99,我们逐渐增加每次迭代中线之间的距离。

综上所述,SVM算法遵循以下步骤:

  1. 从随机线和两条等距平行线开始。
  2. 应用感知器算法根据点反馈调整线的位置。
  3. 引入扩展率以稍微分开线条。
  4. 迭代地重复这些步骤以找到最大化分离的最佳线。

这是对 SVM 算法及其如何结合小步法改进分类的简要概述。这是一种解决分类问题的有效技术,我希望本视频能为您提供有关 SVM 的独特视角。

现在我们要考虑导致模型错误的另一个方面。这方面是基于两条线之间的距离。为了证明这一点,让我们检查两个对数据集进行分类的支持向量机 (SVM)。第一个 SVM 有较宽的线但错误分类了一个点,而第二个 SVM 有窄线但正确分类了所有点。问题是,哪个更好?答案取决于各种因素,例如数据集、模型和场景。但是,我们可以使用误差函数对其进行分析。

让我们回忆一下感知器算法中的误差计算。当一个点被正确分类时,错误为零。如果一个点被错误分类,错误取决于它与边界的距离。越靠近边界的点误差越小,越远的点误差越大。我们需要一个误差函数来捕获这种距离关系。同样,在 SVM 中,我们有两个分类错误:蓝色分类错误和红色分类错误。每个错误测量从错误分类的点到其各自边界的距离。通过对这些距离求和,我们得到分类误差。

此外,我们还有边距误差,它表示线条的接近程度。较大的边距误差表示线条靠得更近,而较小的边距误差表示线条相距较远。我们希望我们的模型有一个小的边缘误差,表示宽线。因此,误差越小,我们的模型越好。有趣的是,margin error 类似于 L2 正则化中的正则化项。

总而言之,SVM 误差由分类误差和边缘误差组成。分类误差衡量误分类点的数量和误分类的程度。边距误差表示线条之间的距离。这两个误差共同构成了 SVM 的总误差。我们的目标是使用梯度下降来最小化此错误,类似于调整线条位置和间隔的 SVM 技巧。

回到两个模型的比较,左边的模型分类误差大,但边缘误差小,因为线相距很远。另一方面,右侧的模型分类误差较小,但由于线条非常接近,因此边缘误差较大。决定哪种模型更好取决于我们的偏好和要求。我们可以使用超参数 C 参数来控制分类误差相对于边缘误差的重要性。小 C 强调边缘误差,导致模型像左边的模型,而大 C 优先考虑分类误差,导致模型类似于右边的模型。

需要注意的是,超参数的选择可以通过实验和测试不同的值来评估模型性能来确定。超参数在机器学习算法中起着至关重要的作用,使我们能够微调我们的模型。

感谢您对本系列线性模型视频的关注。我希望您发现它内容丰富且令人愉快。随意喜欢,分享和评论。感谢您的反馈。请继续关注未来的更多视频。

 

去噪和变分自动编码器



去噪和变分自动编码器

大家好,我是 Luis Serrano,在本视频中,我们将讨论自动编码器。具体来说,我们将专注于去噪和变分自动编码器。

自动编码器是流行的生成器模型,并且是包括生成对抗网络和受限玻尔兹曼机在内的一系列模型的一部分。如果您喜欢生成器模型,请务必查看评论中的链接。

要理解自动编码器,假设你想读懂一本书,所以你请你聪明的朋友 Aisha 为你总结一下。艾莎的工作是把书浓缩成几页,让你更容易理解。然后,我们通过请我们的另一位朋友 Berta 根据 Aisha 的摘要重写整本书来评估 Aisha 摘要的质量。我们将 Berta 重写的书与原书进行比较,以评估他们的表现。

理想情况下,Aisha 会尽可能准确地总结本书的主要思想,而 Berta 会擅长根据这些思想重构本书。通过强迫艾莎和贝尔塔分别压缩和重建这本书,他们对其内容有了深刻的理解。这个概念是自动编码器的基础。他们显着简化数据然后重建它,提取过程中最有用的特征。

自动编码器是降维算法,是无监督机器学习的一部分。在现实生活数据集的背景下,让我们考虑一个面部图像数据集。每个图像都使用多个数字进行编码,以表示每个像素的颜色。 Aisha,现在被称为编码器,通过提取眼睛大小、头发颜色和其他面部特征等特征来总结这个数据集。然后将这些特征传递给解码器 Berta,后者帮助从这些提取的特征中重建人脸。

数据点的维度是指对其进行编码所需的数字数量。在这种情况下,我们通过将面部图像数据集汇总为较小的特征集来降低其维数,然后在重建过程中再次增加它。

自动编码器由两部分组成:收缩数据的编码器和扩展数据的解码器。目标是重建输出与原始输入非常相似。缩小或简化的数据被称为潜在空间,它总结和压缩数据以提供有价值的见解。

两种重要类型的自动编码器是去噪自动编码器和变分自动编码器。去噪自动编码器经过训练可以获取损坏的数据,例如嘈杂的图像,并生成这些图像的清晰版本。另一方面,变分自动编码器被训练为通过从简化的潜在空间中选取样本来生成新数据,该潜在空间代表原始数据空间的低维版本。

变分自动编码器在生成高分辨率图像(例如空间)方面特别有效。在视频中,您可以找到变分自动编码器生成的人脸样本。

在深入研究自动编码器之前要掌握的主要概念是降维。为了说明这个概念,让我们考虑一个图像样本数据集。这些图像是简单的 2x2 像素图像,每个像素具有不同的颜色:红色、蓝色、黄色和绿色。每个像素都有一个范围从 0 到 1 的强度值,其中 1 表示全色强度,0 表示白色。

此数据集中的每个数据点由四个强度值描述,对应于四种颜色。然而,仔细观察后,我们注意到一个特殊的性质:右上角和左下角像素的强度始终相同,左上角和右下角像素的强度也是如此。这意味着我们不再需要独立编码所有四个强度值。相反,我们可以只用两个值表示每个数据点:左上角和右下角像素的强度。

通过这样做,我们将数据集的维度从四个减少到两个。这种减少使我们能够捕获图像的基本信息,同时丢弃冗余或相关的特征。它还简化了数据表示,并有助于完成各种任务,例如可视化、存储和分析。

自动编码器使用类似的降维原理,但使用的方式更加复杂和博学。自动编码器不是手动选择保留或丢弃哪些特征,而是学习从输入数据中自动提取信息量最大的特征。

让我们更深入地研究自动编码器的架构和训练过程。如前所述,自动编码器由编码器和解码器组成。

编码器获取输入数据(例如图像),并应用一系列变换将其编码为低维表示形式,称为潜在空间。潜在空间是输入数据的压缩表示,捕获其最重要的特征。

解码器采用潜在空间表示并应用反向变换以尽可能接近地重建原始输入数据。目标是最小化输入数据和重建输出之间的差异,有效地学习可以忠实再现输入的压缩表示。

为了训练一个自动编码器,我们需要一个输入数据集,我们有原始样本和它们对应的目标输出。在训练期间,自动编码器学习最小化重建误差,重建误差通常使用均方误差 (MSE) 或二元交叉熵等损失函数进行测量。

训练过程涉及通过编码器馈送输入数据以获得潜在空间表示。然后,潜在空间表示通过解码器来重建数据。重建与原始输入进行比较,它们之间的差异用于通过反向传播和梯度下降更新编码器和解码器的权重。

通过在大型数据集上迭代训练自动编码器,它逐渐学会从输入数据中提取最显着的特征,并能够以最小的损失重建它。

去噪自动编码器和变分自动编码器是基本自动编码器架构的两种流行变体。

去噪自动编码器专门设计用于处理嘈杂或损坏的输入数据。在训练期间,自动编码器会收到故意损坏的输入数据,例如通过添加随机噪声或引入失真。然后,自动编码器通过尽可能准确地重建原始的、干净的数据来学习对输入进行去噪。这种去噪功能允许自动编码器学习对噪声更有弹性的鲁棒表示。

变分自动编码器 (VAE) 采用不同的方法,将概率建模整合到自动编码器框架中。 VAE 旨在学习遵循特定概率分布(例如高斯分布)的潜在空间。这允许 VAE 通过从潜在空间中的学习分布中采样来生成新的数据点。

VAE 的训练不仅涉及最小化重建误差,还涉及最大化潜在空间分布与所需分布匹配的可能性。这是通过结合重建损失和称为 Kullback-Leibler (KL) 散度的正则化项来实现的,它衡量学习分布和期望分布之间的差异。

通过同时优化重建损失和 KL 散度,VAE 学习生成与训练数据具有相似特征的新数据样本,同时探索学习到的潜在空间的多样性。

自动编码器是强大的无监督学习模型,可以学习输入数据的紧凑表示。它们由一个编码器和一个解码器组成,它们一起工作以压缩和重建数据。去噪自动编码器和变分自动编码器是两个显着的变体,它们扩展了基本的自动编码器架构并提供了额外的功能,例如去噪和生成建模。

让我们在本节中检查一些其他示例。我们这里的第一个例子看起来是一个全彩色图像,除了右下角的绿色像素,它的值为 0.2。去噪编码器能够为我们对整个图片进行着色。接下来,我们再举一个白色图片的例子,除了右上角值为0.8的蓝色像素。 neocenter 编码器确定图片应该是白色,并将蓝色像素转换为白色。我鼓励您探索存储库并试验您自己的图像以查看结果。总之,这些外部编码器强制任何图像类似于训练数据集中的图像之一。

到目前为止,我们使用的其他编码器只有一层,但需要注意的是,在神经网络中情况并非总是如此。编码器可以有多层和复杂的架构,例如卷积层或循环层。下面是一个卷积编码器示例,用于对 MNIST 数据集中的手写字符图像进行降噪。如您所见,这些类型的去噪自动编码器在清除噪声图像方面表现良好。

现在,让我们继续讨论自动编码器的另一个迷人特性。他们有能力生成全新的数据点,例如新图像。这些生成的图像不仅仅是数据集中图像的副本,而是与数据集中的图像非常相似的全新且独特的图像。这种能力确实了不起。例如,自动编码器可以生成不存在的人脸或以前从未绘制过的手写数字。要生成这些新图像,我们只需要关注解码器而忘记编码器。解码器采用一组数字,称为潜在表示,并根据这些数字生成图像。这个过程提供了潜在空间的视觉表示。

为了说明这一点,让我们考虑一个例子。假设我们将数字 0.3 和 0.8 输入解码器。它生成强度为 0.12 和 0.95 的图像。我们可以将潜在空间想象成一个正方形,其中横轴对应于图像的红-绿对角线,纵轴对应于图像的蓝-黄对角线。这个正方形中的每个点代表一个图像,当我们向右移动时,红绿色对角线的强度增加。同样,当我们从底部移动到顶部时,蓝黄色对角线的强度会增加。这种可视化使我们能够理解潜在空间及其与生成图像的关系。

在潜在空间中,我们可以均匀地选择任意点,这相当于选择两个数字并将它们传递给解码器。这个过程使我们能够以相同的可能性生成这些图像中的任何一个。然而,在某些情况下,我们可能只想生成数据集中存在的特定图像,而排除其他图像。当潜在空间很大且包含噪声时,这种情况很常见,只有一小部分代表所需的图像。为了解决这个问题,我们可以使用一种称为变分自动编码器的技术。

在变分自动编码器的情况下,我们训练两个正态分布,使我们能够选择很可能位于特定感兴趣区域内的点。例如,如果我们在存在所需图像的潜在空间中有一个椭圆形的小区域,我们希望自动编码器在该区域内或附近生成图像的概率高于其余空间。我们通过训练两个正态分布来实现这一点,每个正态分布对应潜在空间中的每个坐标。这些分布使我们能够选择可能朝向所需区域中心的点。通过使用这些选定的点作为潜在表示并将它们传递给解码器,我们可以生成更加集中且符合我们所需标准的图像。

变分自动编码器的训练过程涉及同时优化两个目标:重建损失和正则化损失。重建损失衡量生成的图像与输入图像的匹配程度,类似于传统的自动编码器。正则化损失,通常称为 Kullback-Leibler (KL) 散度,鼓励潜在分布类似于已知的先验分布,通常是标准正态分布。

添加正则化损失会在训练期间引入权衡。一方面,我们希望重建图像与输入图像非常相似,这是通过最小化重建损失来实现的。另一方面,我们希望潜在分布与先验分布相匹配,促进多样化和逼真的图像的生成。平衡这些目标对于确保模型捕获数据的重要特征,同时仍然允许生成的图像具有创造性和新颖性至关重要。

一旦变分自动编码器经过训练,我们就可以从先验分布(通常是标准正态分布)中采样点并将它们传递给解码器以生成新图像。通过控制采样过程,我们可以探索潜在空间的不同区域并生成输入数据的不同变化。

变分自动编码器已广泛用于各种应用,例如图像生成、文本生成和异常检测。它们提供了一个强大的框架来学习和生成复杂的数据分布,同时允许控制生成的输出。

总之,自动编码器,包括去噪和变分自动编码器,在图像处理和生成方面提供了令人着迷的功能。他们可以去除图像中的噪声,重建缺失的部分,并生成全新且独特的图像。去噪自动编码器利用编码器-解码器架构来学习数据的底层结构,而变分自动编码器添加概率建模以捕获生成的输出中的各种变化。这些技术彻底改变了无监督学习领域,并在计算机视觉和人工智能研究中得到广泛应用。

 

决策树 - 友好的介绍



决策树 - 友好的介绍

欢迎来到塞拉诺学院!在本视频中,我们将讨论决策树,这是非常流行的机器学习模型。决策树在现实生活场景中有效,并且直观易懂。它们模仿人类做出决定的方式,使它们易于解释。

为了说明决策树的工作原理,让我们举一个推荐系统的例子。想象一下,您需要决定早上是否穿夹克。您可以先检查外面是否正在下雨。如果下雨,穿夹克是一个明智的选择。但如果没有下雨,你可以进一步考虑温度。如果天冷,你会穿夹克,如果天暖和,你就不会穿。这个决策过程可以表示为决策树,其中每个决策成为一个节点,可用选项成为通向新节点或最终决策的边。

一个给定的问题可以有多个决策树。例如,另一个决策树可能涉及检查是否是星期一、您汽车的颜色以及您那天是否喝了咖啡。然而,并不是所有的决策树都同样有效。我们讨论的第一个决策树似乎运行良好,而第二个决策树包含不相关的节点。找到最好的决策树是机器学习的目标。机器学习帮助我们发现最适合数据的决策树。让我们探索一个例子来理解这个过程。

考虑来自基于用户人口统计的应用程序推荐系统的小型数据集。该数据集包括性别、年龄和下载的应用程序列。我们想制定一个规则,根据这个数据集向未来的用户推荐应用程序。通过分析数据,我们可以观察趋势。例如,数据集中的所有年轻人都下载了 TikTok,因此向 16 岁的女性推荐 TikTok 是合理的。同样,如果我们看到 30 多岁的女性主要下载 YouTube,我们可以向 30 岁的女性推荐 YouTube。通过遵循这种方法,我们可以根据不同用户的人口统计信息为他们提供推荐。

决策树背后的直觉与机器学习中使用的数学原理一致。决策树可以处理分类数据和数值数据。对于数值数据,我们通过评估不同的可能性来确定最佳分割点。每个分割点都会创建一个决策树桩,我们比较这些树桩的准确性以找到最佳树桩。一旦找到最佳分割,我们就可以通过对结果数据子集迭代过程来继续构建决策树。这个迭代过程允许我们构建更大的决策树。

决策树是功能强大的机器学习模型,可以提供准确的预测并且易于解释。它们模仿人类的决策过程,可以接受各种类型数据的训练。通过为特定问题找到最佳决策树,我们可以根据给定的数据做出有效的建议或预测。

 

贝叶斯定理和隐马尔可夫模型的友好介绍



贝叶斯定理和隐马尔可夫模型的友好介绍

您好,欢迎来到基本定理和隐马尔可夫模型的介绍。我是 Udacity 的 Luis Serrano,我在那里教授机器学习和人工智能课程。在这个场景中,我们有两个朋友 Alice 和 Bob,他们住得很远,通过电话进行交流。鲍勃的心情会随着天气而变化。如果天气晴朗,鲍勃会很高兴,如果下雨,鲍勃就会脾气暴躁。爱丽丝可以从鲍勃的心情推断出天气。

让我们把场景变得更复杂。 Bob 在阳光明媚的时候最开心,但也有例外。下雨天他脾气暴躁,但也有例外。我们根据过去的数据计算了概率。晴天时,Bob 高兴的概率为 80%,脾气暴躁的概率为 20%。下雨时,Bob 脾气暴躁的概率为 60%,而快乐的概率为 40%。

现在,让我们考虑一个具体情况。鲍勃告诉爱丽丝,这周情绪就像过山车一样。星期一他很高兴,星期二他脾气暴躁,星期三他又高兴了,星期四他脾气暴躁,星期五他很高兴。爱丽丝试图根据鲍勃的心情来推断天气。

为了确定这一系列情绪的可能性,我们使用隐马尔可夫模型。它有观察(Bob 的心情)和隐藏状态(天气)。我们计算转换概率(从一种状态到另一种状态的概率)和发射概率(从隐藏状态发射观察结果的概率)。

在本视频中,我们将回答四个问题。首先,我们如何计算这些概率?第二,无论 Bob 的心情如何,随机一天晴天或雨天的概率是多少?第三,如果鲍勃今天高兴,那么晴天或雨天的概率是多少?第四,如果 Bob 连续三天开心,最有可能的天气是什么?

我们可以通过分析过去的数据来计算概率。我们计算某些天气模式的出现次数和 Bob 的情绪来估计概率。有了足够的数据,我们就可以很好地估计实际概率。

为了确定随机一天是晴天还是雨天的概率,与 Bob 的心情无关,我们可以计算过去数据中晴天和雨天的出现次数,或者使用转移概率。在这种情况下,我们发现 2/3 可能是晴天,1/3 可能是下雨。

如果鲍勃今天开心,晴天和下雨的概率就会改变。我们使用贝叶斯定理来更新概率。例如,如果 Bob 很高兴并且是星期三,我们会考虑先验概率(2/3 晴天和 1/3 雨天)和排放概率(晴天时 80% 晴天和 20% 脾气暴躁,晴天时 40% 快乐和 60% 脾气暴躁)下雨)。使用贝叶斯定理,我们计算后验概率(8/10 晴天和 2/10 雨天)。

这些概率使我们能够根据 Bob 的心情推断天气。如果 Bob 快乐,则更有可能是晴天。如果 Bob 脾气暴躁,则下雨的可能性更大。概率会根据新信息发生变化。

我们使用隐马尔可夫模型和贝叶斯定理根据 Bob 的心情推断天气。通过分析过去的数据,我们计算出转换概率和发射概率。这有助于我们根据 Bob 的心情确定某些天气模式的可能性。

 

香农熵和信息增益



香农熵和信息增益

大家好,我是 Louie Serrano,我和 Shannon 在这里讨论熵和信息增益。如果您对更详细的解释感兴趣,我已经写了一篇关于这个主题的博文。您可以在评论部分找到链接。

首先介绍一下熵的概念,它起源于物理学。我们可以用水的三种状态来说明它:固态(冰)、液态(水)和气态(水蒸气)。每个状态都有不同程度的熵,它衡量物体内部粒子移动的速度。冰的熵很低,因为它的粒子运动缓慢,使它成为一种稳定的物质。水具有中等熵,因为粒子移动得更快。水蒸气具有高熵,因为它内部的粒子运动非常快。

熵不仅是物理学中的概念,也出现在数学中,尤其是概率论中。为了证明这一点,让我们考虑一个包含三个桶的示例,每个桶包含不同颜色的球。第一桶有四个红球,第二桶有三个红球和一个蓝球,第三桶有两个红球和两个蓝球。根据直觉,我们可以推断 Bucket 1 的熵较低,Bucket 2 的熵中等,Bucket 3 的熵较高。

为了验证我们的直觉,我们可以通过检查我们可以重新排列每个桶中的一组球来测量熵。在第一组中,有四个红球,重新排列的可能性有限,因为所有球的颜色都无法区分。对于第二组,我们可以通过几种方式重新排列球。最后,对于第三组,我们有更多可能的安排。我们可以使用二项式系数计算排列数,它提供了熵的定量度量。根据可能的重排程度,我们可以确定 Bucket 1 具有低熵,Bucket 2 具有中等熵,Bucket 3 具有高熵。

然而,有一种更精确的方法可以根据信息确定熵。让我们想象一下用这些水桶玩游戏。我们从特定排列的球开始,随机抽取它们,试图重现原始排列的确切顺序。如果我们成功了,我们将赢得一大笔钱。否则,我们什么也赢不了。现在,问题来了:用哪个桶玩游戏最好,哪个桶最差?

经过思考,我们意识到 Bucket 1 是最佳选择,因为所有的球都是红色的,这样更容易重现原始序列。桶 2 是中等选择,因为它混合了红色和蓝色的球,而桶 3 是最差的选择,因为我们不知道要绘制哪种颜色。我们可以通过考虑从桶中抽出特定球的可能性来计算每场比赛获胜的概率。对于 Bucket 1,获胜的概率为 100%,因为所有球都是红色的。对于 Bucket 2,由于存在蓝球,概率较低,而对于 Bucket 3,概率最低,因为抽到红球或蓝球的机会均等。

现在,让我们在表格中总结概率及其对应的熵水平。我们可以观察到 Bucket 1 获胜的概率很高,因此熵很低。桶 2 具有中等概率,表明中等熵。最后,Bucket 3 获胜的概率最低,导致高熵。

为了建立熵的公式,我们可以利用对数的概念。我们可以使用对数将它们转换为总和,而不是处理乘积。乘积的对数等于对数之和。通过对概率的乘积取对数,我们可以将其转化为各个概率的总和。这种转换使我们能够将熵计算为与事件相关的平均信息量或不确定性。

熵的公式由下式给出:

熵 = - (p1 * log(p1) + p2 * log(p2) + ... + pn * log(pn))

其中 p1, p2, ..., pn 代表不同结果或状态的概率。对数函数(通常以 2 为底)用于说明信息的指数性质。

将此公式应用于我们的示例,让我们计算每个桶的熵。在 Bucket 1 中,所有的球都是红色的,抽到红色球的概率是 1 (100%)。因此,Bucket 1 的熵为:

熵(桶 1)= -(1 * log2(1))= 0

由于1的对数为0,熵为0,表示没有不确定性或信息增益。

对于 Bucket 2,有 3 个红球和 1 个蓝球。抽到红球的概率是3/4,抽到蓝球的概率是1/4。因此,Bucket 2 的熵为:

熵(桶 2)= -(3/4 * log2(3/4)+ 1/4 * log2(1/4))

计算这些值,我们得到:

熵(桶 2)≈ 0.811

该值表示中等程度的不确定性或信息增益。

转到桶 3,那里有两个红球和两个蓝球,抽到红球或蓝球的概率各为 1/2。因此,Bucket 3 的熵为:

熵(桶 3)= -(1/2 * log2(1/2)+ 1/2 * log2(1/2))

简化表达式,我们发现:

熵(桶 3)= -(1/2 *(-1)+ 1/2 *(-1))= 1

Bucket 3 的熵为 1,表示最高级别的不确定性或信息增益。

熵量化系统中的不确定性或信息水平。使用概率的概念,我们可以将熵计算为与不同结果相关的平均信息量。较高的熵值表示较大的不确定性,而较低的熵值表示较少的不确定性或更可预测的结果。了解熵和信息增益在各个领域都很有价值,包括信息论、机器学习和数据分析,因为它使我们能够衡量和分析系统的复杂性和可预测性。

 

朴素贝叶斯分类器:一种友好的方法



朴素贝叶斯分类器:一种友好的方法

大家好,我是 Luis Serrano,在本视频中,我们将探索朴素贝叶斯分类器。您的知识库在概率方面至关重要,在机器学习中非常有用。与其将其视为一个涉及概率比的复杂公式,不如将其视为一个事件发生的概率,前提是我们有关于另一个事件的信息。朴素贝叶斯通过做出朴素假设来扩展这一概念,以简化处理多个事件时的数学运算。

为了说明这一点,让我们构建一个垃圾邮件检测器。我们从 100 封电子邮件的数据集开始,其中 25 封是垃圾邮件,75 封不是。我们的目标是识别与垃圾邮件相关的属性。让我们关注“购买”这个词。在垃圾邮件中,有 20 封包含“购买”,而 5 封非垃圾邮件包含“购买”。基于此,我们可以得出结论,如果电子邮件包含“购买”,则有 80% 的可能性是垃圾邮件。

现在,让我们考虑另一个词,“便宜”。在垃圾邮件中,有 15 封“便宜”,在非垃圾邮件中,有 10 封有“便宜”。如果电子邮件包含“廉价”,则有 60% 的可能性是垃圾邮件。

但是如果我们想同时分析“买入”和“便宜”呢?在垃圾邮件中,有 12 封包含这两个词,并且在非垃圾邮件中没有这种组合的实例。如果一封电子邮件同时包含“购买”和“便宜”,则它 100% 可能是垃圾邮件。然而,100% 的确定性对于分类器来说似乎太强且不切实际。

问题的出现是因为我们没有发现同时包含“购买”和“便宜”的非垃圾邮件实例。为了解决这个问题,我们可以收集更多数据,但让我们探索一个替代解决方案。我们可以做出假设来估计此类情况的发生。假设 0.5% 的电子邮件同时包含“购买”和“便宜”。该假设基于我们数据集中出现“购买”和“廉价”的百分比。

现在,根据这个假设,如果一封电子邮件同时包含“buy”和“cheap”,我们可以计算它是垃圾邮件的概率。通过应用贝叶斯定理,我们发现概率约为 94.737%。

朴素贝叶斯分类器涉及用数据填写表格。然而,当某些事件在数据集中过于稀疏时,我们会天真地假设这些事件是独立的。这个假设简化了计算,尽管它在现实中可能并不成立。通过做出这些假设,我们可以估计概率并构建垃圾邮件分类器。

 

12 分钟内发布 Beta 版!



12 分钟内发布 Beta 版!

大家好,我是 Luis Serrano,在本视频中,我们将探讨 beta 分布的主题。 Beta 分布是概率和统计中的一个基本概念,因为它们对概率的概率进行建模。让我们更深入地探讨这个引人入胜的主题。

为了理解 beta 分布,让我们考虑一个涉及三个硬币的例子:硬币一、硬币二和硬币三。这些硬币可以正面或反面着地。然而,这三种硬币都被操纵了,这意味着它们都没有以二分之一的概率返回正面。

假设第一枚硬币正面朝上的概率为 0.4,第二枚硬币正面朝上的概率为 0.6,第三枚硬币正面朝上的概率为 0.8。现在,假设我们在不知道是哪一枚的情况下随机选择了这些硬币中的一枚。任务是通过掷五次来猜测我们选了哪一枚硬币。

假设我们按顺序获得了三个正面和两个反面。问题是,你认为我们抢到了哪一枚硬币?直觉上,我们可能倾向于硬币二,因为它预计五次中有三次正面朝上。但是,仍然存在不确定性。有可能我们选择了硬币一或硬币三,观察到的正面和反面的顺序只是巧合。

为了确定选择每个硬币的概率,我们可以应用贝叶斯定理。让我们分别检查每个案例。

对于一枚硬币,三次出现正面,两次出现反面的概率计算如下:(0.4 * 0.4 * 0.4) * (0.6 * 0.6) = 0.0230。

对于硬币二,概率为:(0.6 * 0.6 * 0.6) * (0.4 * 0.4) = 0.0346。

对于硬币三,概率为:(0.8 * 0.8 * 0.8) * (0.2 * 0.2) = 0.0205。

由于这些是仅有的三种可能事件,因此它们的概率之和必须为一。我们通过将每个概率除以总和来标准化这些概率:0.0230 + 0.0346 + 0.0205。这产生了归一化概率:硬币一、硬币二和硬币三分别为 0.295、0.443 和 0.262。

正如我们所见,硬币二的概率最高,但我们仍有可能选择硬币一或硬币三。这些概率是使用贝叶斯定理获得的,贝叶斯定理是概率论中的一个强大工具。如果您想了解更多相关信息,我的频道上有一段视频对此进行了详细解释。

现在,让我们考虑相同的示例,但硬币数量更多。假设我们扔一枚硬币,七次正面朝上,三次反面朝上。这枚硬币可以是十枚硬币中的一枚,每枚硬币都有不同的正面朝上的概率,范围从 0.0 到 0.9,每枚硬币增加 0.1。

你认为我们在这种情况下选择了哪种硬币?同样,最有可能的选择是硬币正面朝上的概率为 70%,对应于硬币 7。为了计算挑选每个硬币的概率,我们执行与以前类似的计算。

对于每一枚硬币,我们计算获得七次正面和三次反面的概率。我们使用公式:(p^7) * ((1-p)^3),其中p表示正面着陆的概率。然后,我们通过将每个概率除以所有概率的总和来对这些概率进行归一化。

随着我们增加硬币数量,计算变得更加复杂。但是,基本原理保持不变。我们根据观察到的结果和与每枚硬币相关的概率计算每枚硬币的概率。通过对这些概率进行归一化,我们获得了一个分布,该分布代表了我们对选择哪种硬币的不确定性。

现在,让我们将这个概念推广到 beta 分布。 Beta 分布是定义在区间 [0, 1] 上的连续概率分布。它的特征在于两个形状参数,通常表示为 alpha 和 beta。这些参数决定了分布的形状。

Beta 分布对于概率建模特别有用,因为它很灵活,可以根据 alpha 和 beta 的值呈现各种形状。它使我们能够捕获范围广泛的概率分布,从均匀到偏斜,从集中到分散。

beta 分布的概率密度函数 (PDF) 由以下公式给出:f(x) = (x^(alpha-1)) * ((1-x)^(beta-1)) / B(alpha, beta),其中 B(alpha, beta) 是确保分布在区间 [0, 1] 上积分为 1 的 beta 函数。

beta 分布的均值由公式给出:E[X] = alpha / (alpha + beta),方差为 Var[X] = (alpha * beta) / ((alpha + beta)^2 * (阿尔法 + 贝塔 + 1))。

Beta 分布常用于贝叶斯统计、机器学习和决策分析等各个领域。它可以对不确定量(例如成功率、比例或概率)进行建模,并可用于参数估计、假设检验和生成随机样本。

Beta 分布是概率和统计学中的一个基本概念,尤其是在处理不确定概率时。它们为广泛的概率分布建模提供了一个灵活的框架。通过了解 beta 分布的属性和应用,我们可以做出更明智的决策并更有效地分析数据。

 

Thompson 抽样、一名武装匪徒和 Beta 分布



Thompson 抽样、一名武装匪徒和 Beta 分布

大家好,我是 Louis Sorano,在本视频中,我将讨论单臂强盗的概念和 Beta 分布。想象一下自己在一家赌场里,那里有一排老虎机,通常被称为单臂老虎机。当你玩这些机器时,有两种可能的结果:要么出现硬币,表明赢了,要么没有出现,导致失败。目标是确定哪些机器好,哪些机器不好,以便最大化您的奖金。

行中的每台机器都有不同的生产硬币的概率,表示为“p”。例如,如果左边机器的概率为 0.1 (10%),这意味着平均而言,您可以预期有 10% 的时间赢硬币,而 90% 的时间您会输。同样,右边机器的概率为 0.7(70%),表示你有更高的机会赢得硬币,70% 的机会,30% 的机会输。

挑战在于您不知道每台机器的“p”的实际值,因此您需要通过玩机器来估计它们。目标是玩所有机器并找出获胜概率更高的机器以专注于它们,同时偶尔给表现不佳的机器一个改进的机会。

有两种策略需要考虑:“探索”策略和“利用”策略。探索策略涉及多次玩每台机器以收集数据并估计获胜的概率。例如,如果你玩第一台机器 15 次并赢了两次,你估计的概率是 2/15。通过对每台机器重复此过程,您可以比较它们的估计概率并确定获胜可能性最高的机器。

另一方面,利用策略涉及减少每台机器的游戏次数并根据可用数据做出决策。如果一台机器只玩了几次,你可能没有足够的信息来准确估计它获胜的概率。这种方法可能会错失潜在的赢家,因为它可能无法探索足够的空间来收集足够的数据。

要找到最佳策略,您需要结合探索和开发。这种方法称为 Thompson 抽样,涉及为每台机器维护一个 beta 分布。 Beta 分布表示基于输赢次数的获胜概率。通过更新每次播放的 beta 分布,您可以改进您的估计。

汤普森抽样涉及机器之间的竞争,具有一定的随机性。从 beta 分布中选择随机点,然后选择在该点具有最高值的机器进行下一次播放。这种技术允许探索所有机器,同时有利于性能更强的机器。

Thompson 抽样,使用 beta 分布,在赌博之外有广泛的应用。它用于网页设计和广告的 A/B 测试、确定实验药物有效性的医学试验,以及探索和开发至关重要的各种决策场景。

总之,使用 Beta 分布的 Thompson 抽样是一种结合探索和开发以做出最佳决策的强大技术。它允许您通过专注于获胜概率更高的机器来最大化您的收益,同时仍在探索其他可能性。汤普森抽样在不同领域都有应用,并提供了一种在不确定情况下进行决策的实用方法。

感谢您的观看,如果您觉得此视频对您有帮助,请订阅、点赞和分享。我还鼓励您查看我的书“Rocking Machine Learning”,我在其中以通俗易懂且引人入胜的方式解释了监督机器学习。您可以在下面的评论部分找到这本书和其他资源。请随时为未来的主题留下评论和建议,不要忘记在 Twitter 上关注我。