提交 7dfc9581 编写于 作者: W wizardforcel
......@@ -292,7 +292,7 @@ Dataset and regression line
![](img/a5e03fb9-969b-4595-aaaa-2c2777cbc5db.png)
在先前的公式中,引入了常数*ε*以避免被零除。 显然`d(a, c) < d(a, b) ⇒ s(a, c) > s(a, b)`。 因此,给定每个群集的代表![](img/fba84550-7fae-4228-ad4f-02618cc35ca1.png),我们可以考虑以下规则来创建一组分配的向量:
在先前的公式中,引入了常数`ε`以避免被零除。 显然`d(a, c) < d(a, b) ⇒ s(a, c) > s(a, b)`。 因此,给定每个群集的代表![](img/fba84550-7fae-4228-ad4f-02618cc35ca1.png),我们可以考虑以下规则来创建一组分配的向量:
![](img/57dee268-a1df-4c52-a95e-fa6fa1a320fb.png)
......
......@@ -180,11 +180,11 @@ Std(distances) = 0.042885311128215066
找到最佳的初始配置等同于最小化惯性。 但是, Arthur 和 Vassilvitskii(在 *K 均值 ++ :精心播种的优势中,Arthur D.,Vassilvitskii S。, ACM-SIAM 第 18 届年度学术会议论文集 离散算法,* 2007)提出了另一种初始化方法(称为 **K 均值 ++ ** ),该方法可以通过选择初始质心的可能性大得多,从而提高收敛速度,而初始质心的概率接近最终质心。 完整的证明非常复杂,可以在前述论文中找到。 在这种情况下,我们直接提供最终结果和一些重要后果。
让我们考虑定义为的函数 *D(·)*
让我们考虑定义为的函数`D(·)`
![](img/7a396ec7-a6d1-4776-8bfb-cb03028f76a7.png)
*D(·)*表示样本 *x∈X* 与已选择的质心之间的最短距离。 一旦函数被计算,就可以如下确定概率分布 *G(x)*
`D(·)`表示样本 *x∈X* 与已选择的质心之间的最短距离。 一旦函数被计算,就可以如下确定概率分布 *G(x)*
![](img/c5c5330a-28ea-4610-b18e-e25a45a3d399.png)
......@@ -575,7 +575,7 @@ V-Score: 0.46479332792160793
该分数的主要目标是评估 *Y [true]**Y [pred]* 之间的一致性水平 。 可以通过采用**互信息****MI**)的信息论概念来衡量这一目标; 在我们的例子中,它定义为:
该分数的主要目标是评估`Y[true]``Y[pred]`之间的一致性水平 。 可以通过采用**互信息****MI**)的信息论概念来衡量这一目标; 在我们的例子中,它定义为:
![](img/208136bf-137d-46b0-a63c-99b1a72464e5.png)
......
此差异已折叠。
......@@ -250,15 +250,15 @@ plt.show()
可以使用前面各章中介绍的任何方法来评估层次集群性能。 但是,在这种特定情况下,可以采用特定措施(不需要基本事实)。 给定一个近似矩阵`P`和一个链接`L`,几个样本`x[i]`*x [j] ∈X* 始终分配给特定层次级别的同一群集。 当然,重要的是要记住,在团聚的情况下,我们从`n`个不同的簇开始,最后以一个等于`X`的单个簇结束。 此外,由于两个合并的群集成为一个群集,因此属于一个群集的两个样本将始终继续属于同一*放大的*群集,直到该过程结束。
考虑到上一节中显示的第一个树状图,样本{ 1 }和{ 3 }立即合并; 然后添加样本{ 2 },然后添加{ 11 }。 此时,整个簇将与另一个块合并(包含样本{ 0 },{ 9 },{ 4 }和{ 10 })。 在最后一级,将剩余的样本合并以形成单个最终群集。 因此,命名相似度 *DL [0]**DL [1]* ,...和 *DL [k]* ,样本{ 1 }和{ 3 }在 *DL [1]* 处开始属于同一簇。 例如,在 *DL [6]* 的同一簇中发现{ 2 }和{ 1 }。
考虑到上一节中显示的第一个树状图,样本{ 1 }和{ 3 }立即合并; 然后添加样本{ 2 },然后添加{ 11 }。 此时,整个簇将与另一个块合并(包含样本{ 0 },{ 9 },{ 4 }和{ 10 })。 在最后一级,将剩余的样本合并以形成单个最终群集。 因此,命名相似度`DL[0]``DL[1]`,...和`DL[k]`,样本{ 1 }和{ 3 }在`DL[1]`处开始属于同一簇。 例如,在`DL[6]`的同一簇中发现{ 2 }和{ 1 }。
此时,我们可以将 *DL [ij]* 定义为`x[i]``x[j]`首次属于同一簇,并且将**同义** **矩阵** 在以下( *n×n* )矩阵中作为 *CP*
此时,我们可以将`DL[ij]`定义为`x[i]``x[j]`首次属于同一簇,并且将**同义** **矩阵** 在以下( *n×n* )矩阵中作为 *CP*
![](img/5a3b29f5-fbf7-4acd-abfb-849ff081295e.png)
换句话说, *CP [ij]* 元素是观察`x[i]`*x [j 所需的最小差异 同一群集中的]* 。 可以证明 *CP [ij]* `x[i]`*x [j] 之间的距离度量* ,; 因此, *CP*`P`类似,并且具有与邻近矩阵相同的属性(例如,所有对角元素为空)。 特别是,我们对它们的相关性感兴趣(在`-1``1`范围内标准化)。 这样的值(**色相关系数****CPC**)表示`P`*CP* 之间的一致性程度,并且可以很容易地计算出, 如以下等式所示。
换句话说,`CP[ij]`元素是观察`x[i]`*x [j 所需的最小差异 同一群集中的]* 。 可以证明`CP[ij]``x[i]`*x [j] 之间的距离度量* ,; 因此, *CP*`P`类似,并且具有与邻近矩阵相同的属性(例如,所有对角元素为空)。 特别是,我们对它们的相关性感兴趣(在`-1``1`范围内标准化)。 这样的值(**色相关系数****CPC**)表示`P`*CP* 之间的一致性程度,并且可以很容易地计算出, 如以下等式所示。
由于`P`*CP* 均为( *n×n* )对称矩阵且对角元素为空,因此可以仅考虑下三角 部分(不包括对角线,表示为 *Tril(·)*),包含 *n(n-1)/ 2* 值。 因此,平均值如下:
由于`P`*CP* 均为( *n×n* )对称矩阵且对角元素为空,因此可以仅考虑下三角 部分(不包括对角线,表示为`Tril(·)`),包含 *n(n-1)/ 2* 值。 因此,平均值如下:
![](img/d7e30ca9-4bbe-45de-a1ee-1f98624ceced.png)
......@@ -559,9 +559,9 @@ Y_pred = ag.fit_predict(X)
* *一种用于评估系统关系的统计方法**Sokal R.**Michener C.**大学 堪萨斯州科学通报*,38,1958 年
* *分层分组以优化目标函数**Ward Jr* *J. H.**美国统计协会杂志*。 58(301),1963 年
* *LINNEO +:不良结构域的分类方法**Bejar J.**Cortes U.**Poch M.**研究报告 RT-93-10-R。 Llenguatges i Sistemes 信息学系**巴塞罗那*,1993 年
* *机器学习算法,第二版**Bonaccorso G.**Packt Publishing* ,2018 年
+ `A Statistical Method for Evaluating Systematic Relationships, Sokal R., Michener C., University of Kansas Science Bulletin, 38, 1958`
+ `Hierarchical Grouping to Optimize an Objective Function, Ward Jr J. H., Journal of the American Statistical Association. 58(301), 1963`
+ `LINNEO+: A Classification Methodology for Ill-structured Domains, Bejar J., Cortes U., Poch M., Research report RT-93-10-R. Dept. Llenguatges i Sistemes Informatics, Barcelona, 1993`
+ `Machine Learning Algorithms, Second Edition, Bonaccorso G., Packt Publishing, 2018`
......@@ -52,7 +52,7 @@
![](img/98a661ea-5050-4611-a22e-ffac81d0c972.png)
形式上,这两个版本之间没有区别,但是通常,当算法未明确基于概率分布时使用后者。 但是,出于我们的目的,我们始终将 *c(x [i] )*与概率相关联。 以此方式,激励读者考虑已经用于获取数据集的数据生成过程。 一个明显的例子是将这些向量解释为与特定贡献相关的概率,这些贡献构成了数据生成过程, *p [数据]* 的近似值。 例如,采用概率混合,我们可以决定近似 *p [数据]* ,如下所示:
形式上,这两个版本之间没有区别,但是通常,当算法未明确基于概率分布时使用后者。 但是,出于我们的目的,我们始终将 *c(x [i] )*与概率相关联。 以此方式,激励读者考虑已经用于获取数据集的数据生成过程。 一个明显的例子是将这些向量解释为与特定贡献相关的概率,这些贡献构成了数据生成过程,`p_data`的近似值。 例如,采用概率混合,我们可以决定近似`p_data`,如下所示:
![](img/5f60fae7-4542-4bef-9be1-9337d97bd7be.png)
......@@ -68,7 +68,7 @@
我们将提出的第一个算法是基于软分配的 K 均值的变体。 名称 **Fuzzy c-means** 源自模糊集的概念,这是经典二进制集(即,在这种情况下,样本可以属于单个簇)的扩展,基于 代表整个集合不同区域的不同子集的叠加。 例如,一个基于某些用户年龄的集合可以将度`young``adult``senior`与三个不同(且部分重叠)的年龄范围相关联:18-35、28-60 和 > 50.例如,一个 30 岁的用户在不同程度上既是`young`又是`adult`(并且实际上是边界用户,考虑到边界)。 有关这些类型的集合以及所有相关运算的更多详细信息,我建议这本书*概念和模糊逻辑,* Belohlavek R.,Klir GJ(编辑),麻省理工学院出版社,2011 年。 ,我们可以想象,数据集`X`包含`m`个样本,被划分为`k`个重叠的簇,因此每个样本始终与每个簇关联 隶属度 *w [ij]* (介于 0 和 1 之间的值)。 如果 *w [ij] = 0* ,则表示`x[i]`完全在簇 *C [j] 之外 ]* ,相反, *w [ij]* *= 1* 表示对群集 *C 的硬分配 [j]* 。 所有中间值代表部分成员资格。 当然,出于显而易见的原因,必须将样本的所有隶属度的总和标准化为 1(如概率分布)。 这样,样本始终属于所有聚类的并集,并且将聚类分为两个或多个子聚类始终会在成员资格方面产生一致的结果。
我们将提出的第一个算法是基于软分配的 K 均值的变体。 名称 **Fuzzy c-means** 源自模糊集的概念,这是经典二进制集(即,在这种情况下,样本可以属于单个簇)的扩展,基于 代表整个集合不同区域的不同子集的叠加。 例如,一个基于某些用户年龄的集合可以将度`young``adult``senior`与三个不同(且部分重叠)的年龄范围相关联:18-35、28-60 和 > 50.例如,一个 30 岁的用户在不同程度上既是`young`又是`adult`(并且实际上是边界用户,考虑到边界)。 有关这些类型的集合以及所有相关运算的更多详细信息,我建议这本书*概念和模糊逻辑,* Belohlavek R.,Klir GJ(编辑),麻省理工学院出版社,2011 年。 ,我们可以想象,数据集`X`包含`m`个样本,被划分为`k`个重叠的簇,因此每个样本始终与每个簇关联 隶属度`w[ij]`(介于 0 和 1 之间的值)。 如果 *w [ij] = 0* ,则表示`x[i]`完全在簇 *C [j] 之外 ]* ,相反,`w[ij]`*= 1* 表示对群集 *C 的硬分配 [j]* 。 所有中间值代表部分成员资格。 当然,出于显而易见的原因,必须将样本的所有隶属度的总和标准化为 1(如概率分布)。 这样,样本始终属于所有聚类的并集,并且将聚类分为两个或多个子聚类始终会在成员资格方面产生一致的结果。
该算法基于广义惯量`S[f]`的优化:
......@@ -178,7 +178,7 @@ print(W[:, im])
0.05909216 0.12910096 0.17526108 0.06091973]
```
示例 *X [414]* 代表一个数字(8),如以下屏幕快照所示:
示例`X[414]`代表一个数字(8),如以下屏幕快照所示:
![](img/a35690c9-1b3e-4f02-a28d-69b704e008ec.png)Plot of the sample, X[414], corresponding to the weight vector with the smallest standard deviation
......@@ -196,7 +196,7 @@ print(W[:, im])
**高斯混合**是最著名的软聚类方法之一,具有数十种特定应用。 它可以被认为是 K 均值之父,因为它的工作方式非常相似。 但是,与该算法相反,给定样本 *x [i] ∈X*`k`簇(以高斯分布表示),它提供了一个概率向量, *[p(x [i]* *∈C [1] ),...,p(x [i] ∈C [k] )]*
以更一般的方式,如果数据集`X`已从数据生成过程 *p [数据]* (高斯混合模型)中采样 基于以下假设:
以更一般的方式,如果数据集`X`已从数据生成过程`p_data`(高斯混合模型)中采样 基于以下假设:
![](img/d446dbad-43ac-4ad0-9b81-8ebf92d53811.png)
......@@ -244,7 +244,7 @@ print(W[:, im])
![](img/e3538331-6360-40d2-a9ad-3e1208b7bc2e.png)
在前面的公式中,我们利用指数指示符表示法,它依赖于 *z [ij]* 只能为 0 或 1 的事实。因此,当 *z [ij] = 0* ,这意味着`j`<sup xmlns:epub="http://www.idpf.org/2007/ops" class="calibre27">th</sup> 高斯尚未生成样本`x[i]`乘积中的对应项变为 1(即 *x^0 = 1* )。 相反,当 *z [ij] = 1* 时,该项等于`x[i]`*j [*^(th) 高斯。 因此,假设每个 *x [i] ∈X* 独立且均匀分布,则联合对数似然是模型已生成整个数据集的联合概率(**IID**)。 要解决的问题是**最大似然估计****MLE**),换句话说,就是找到最大化 *L( θ; X,Z )*。 但是,没有观察到(或隐含)变量 *z [ij]* ,因此无法直接最大化可能性,因为我们不知道它们的值。
在前面的公式中,我们利用指数指示符表示法,它依赖于`z[ij]`只能为 0 或 1 的事实。因此,当 *z [ij] = 0* ,这意味着`j`<sup xmlns:epub="http://www.idpf.org/2007/ops" class="calibre27">th</sup> 高斯尚未生成样本`x[i]`乘积中的对应项变为 1(即 *x^0 = 1* )。 相反,当 *z [ij] = 1* 时,该项等于`x[i]`*j [*^(th) 高斯。 因此,假设每个 *x [i] ∈X* 独立且均匀分布,则联合对数似然是模型已生成整个数据集的联合概率(**IID**)。 要解决的问题是**最大似然估计****MLE**),换句话说,就是找到最大化 *L( θ; X,Z )*。 但是,没有观察到(或隐含)变量`z[ij]`,因此无法直接最大化可能性,因为我们不知道它们的值。
解决此问题的最有效方法是采用 EM 算法(由 Dempster AP,Laird NM 和 Rubin DB 中的 Dempster,Laird 和 Rubin 提出,*通过 EM 算法,皇家统计协会杂志*,系列 B. 39(1),1977 年。 完整的解释超出了本书的范围,但是我们想提供主要步骤。 首先要做的是使用概率的链式规则,以便将先前的表达式转换为条件概率的总和(可以很容易地对其进行管理):
......@@ -405,7 +405,7 @@ P([1, 0]=G1) = 0.068 and P([1, 0]=G2) = 0.932
由于高斯混合是一个概率模型,因此要找到最佳的组件数,需要的方法不同于前面章节中分析的方法。 **赤池信息准则****AIC**)是使用最广泛的技术之一,它基于信息论(首次在 Akaike H.中提出, *请看统计模型识别,IEEE 自动控制事务,* 19(6))。 如果概率模型具有`n[p]`参数(即,必须学习的单个值)并且达到最大负对数可能性,则 *L [选择]* ,AIC 定义如下:
由于高斯混合是一个概率模型,因此要找到最佳的组件数,需要的方法不同于前面章节中分析的方法。 **赤池信息准则****AIC**)是使用最广泛的技术之一,它基于信息论(首次在 Akaike H.中提出, *请看统计模型识别,IEEE 自动控制事务,* 19(6))。 如果概率模型具有`n[p]`参数(即,必须学习的单个值)并且达到最大负对数可能性,则`$1[$2]`,AIC 定义如下:
![](img/be138ce2-232e-4f56-bea4-bb9522afbb79.png)
......@@ -415,7 +415,7 @@ P([1, 0]=G1) = 0.068 and P([1, 0]=G2) = 0.932
![](img/21e81cf5-322e-49fe-ab4a-4128de243bf0.png)
在先前的公式中,`n`是样本数(例如,对于 *n = 1000* 并使用自然对数,惩罚约为 6.9); 因此,BIC 几乎等同于 AIC,对参数数量的惩罚更大。 但是,即使 BIC 倾向于选择较小的模型,结果通常也不如 AIC 可靠。 BIC 的主要优势在于,当 *n→∞*时,数据生成过程 *p [数据]* 与模型之间的 Kullback-Leibler 差异,`p[m]`(具有最小的 BIC)趋向于 0:
在先前的公式中,`n`是样本数(例如,对于 *n = 1000* 并使用自然对数,惩罚约为 6.9); 因此,BIC 几乎等同于 AIC,对参数数量的惩罚更大。 但是,即使 BIC 倾向于选择较小的模型,结果通常也不如 AIC 可靠。 BIC 的主要优势在于,当 *n→∞*时,数据生成过程`p_data`与模型之间的 Kullback-Leibler 差异,`p[m]`(具有最小的 BIC)趋向于 0:
![](img/033ac37f-323b-46f8-ac50-bace7f37b555.png)
......@@ -557,7 +557,7 @@ Weights: [3.07496936e-01 2.02264778e-01 2.94642240e-01 1.95417680e-01 1.78366038
高斯混合模型主要是生成模型。 这意味着训练过程的目标是优化参数,以最大程度地提高模型生成数据集的可能性。 如果假设是正确的,并且已经从特定的数据生成过程中采样了`X`,则最终近似值必须能够生成所有其他可能的采样。 换句话说,我们假设 *x [i] ∈X* 是 IDD,并且 *x [i] 〜p [数据]* ; 因此,当找到最佳近似值 *p≈p [数据]* 时,所有样本`x[j]`的概率`p`的数据也很可能生成。
高斯混合模型主要是生成模型。 这意味着训练过程的目标是优化参数,以最大程度地提高模型生成数据集的可能性。 如果假设是正确的,并且已经从特定的数据生成过程中采样了`X`,则最终近似值必须能够生成所有其他可能的采样。 换句话说,我们假设 *x [i] ∈X* 是 IDD,并且 *x [i] 〜`p_data`; 因此,当找到最佳近似值 *p≈`p_data`时,所有样本`x[j]`的概率`p`的数据也很可能生成。
在此示例中,我们要在半监督场景中采用高斯混合模型。 这意味着我们有一个既包含标记样本又包含未标记样本的数据集,并且我们希望将标记样本用作基础事实并找出可以生成整个数据集的最佳混合。 当标记非常大的数据集非常困难且昂贵时,这种情况非常普遍。 为了克服这个问题,可以标记统一采样的子集并训练生成模型,该模型能够以最大可能的可能性生成剩余样本。
......
......@@ -46,7 +46,7 @@
在所有先前的章节 中,我们一直认为我们的数据集是从隐式数据生成过程 *p [数据]* 以及所有 算法假设 *x [i] ∈X***独立且均匀分布的****IID**)并进行均匀采样。 我们假设`X`足够准确地表示 *p [数据]* ,以便算法可以学习使用有限的初始知识进行概括。 相反,在本章中,我们感兴趣的是直接建模 *p [数据]* ,而没有任何具体限制(例如,高斯混合模型通过对数据结构施加约束来实现此目标 分布)。 在讨论一些非常有效的方法之前,简要回顾一下在可测量子集 *X ![](img/6cce89ef-bec6-4be5-a2af-54e4704353b1.png)ℜn*上定义的通用连续概率密度函数 *p(x)*的性质很有帮助(避免 混淆,我们将用 *p(x)*表示密度函数,用 *P(x)*表示实际概率):
在所有先前的章节 中,我们一直认为我们的数据集是从隐式数据生成过程`p_data`以及所有 算法假设 *x [i] ∈X***独立且均匀分布的****IID**)并进行均匀采样。 我们假设`X`足够准确地表示`p_data`,以便算法可以学习使用有限的初始知识进行概括。 相反,在本章中,我们感兴趣的是直接建模`p_data`,而没有任何具体限制(例如,高斯混合模型通过对数据结构施加约束来实现此目标 分布)。 在讨论一些非常有效的方法之前,简要回顾一下在可测量子集 *X ![](img/6cce89ef-bec6-4be5-a2af-54e4704353b1.png)ℜn*上定义的通用连续概率密度函数 *p(x)*的性质很有帮助(避免 混淆,我们将用 *p(x)*表示密度函数,用 *P(x)*表示实际概率):
![](img/56c00e44-2ed4-4572-a7cd-087d8160596e.png)
......@@ -58,7 +58,7 @@
![](img/1eb5c69f-9568-4996-aae5-d3c8b80ba47a.png)
即使连续空间(例如,高斯)中某个事件的绝对概率为零(因为积分具有相同的极值),概率密度函数还是一种非常有用的度量,可以用来了解一个样本比 另一个。 例如:考虑高斯分布 *N`(0, 1)`*,密度 *p(1)= 0.4* ,而对于*密度降低到大约 *0.05* ] x = 2* 。 这意味着`1`的可能性比`2`高 0.4 / 0.05 = 8 倍。 同样,我们可以设置可接受阈值*α*并定义所有`x[i]`样本,这些样本的 *p(x [i] )<* *α*作为异常(例如,在我们的情况下,*α= 0.01* )。 这种选择是异常检测过程中的关键步骤,正如我们将要讨论的那样,它还必须包括潜在的异常值,但是这些异常值仍然是常规样本。
即使连续空间(例如,高斯)中某个事件的绝对概率为零(因为积分具有相同的极值),概率密度函数还是一种非常有用的度量,可以用来了解一个样本比 另一个。 例如:考虑高斯分布 *N`(0, 1)`*,密度 *p(1)= 0.4* ,而对于*密度降低到大约 *0.05* ] x = 2* 。 这意味着`1`的可能性比`2`高 0.4 / 0.05 = 8 倍。 同样,我们可以设置可接受阈值`α`并定义所有`x[i]`样本,这些样本的 *p(x [i] )<* `α`作为异常(例如,在我们的情况下,*α= 0.01* )。 这种选择是异常检测过程中的关键步骤,正如我们将要讨论的那样,它还必须包括潜在的异常值,但是这些异常值仍然是常规样本。
在许多情况下,特征向量是使用多维随机变量建模的。 例如:数据集 *X ![](img/6cce89ef-bec6-4be5-a2af-54e4704353b1.png)→^3* 可以用联合概率密度函数 *p(x,y,z)*表示。 在一般情况下,实际概率需要三重积分:
......@@ -84,7 +84,7 @@
当然,异常的语义无法标准化,并且始终取决于所分析的特定问题。 因此,定义异常概念的 常见方法是在**异常值****新奇**之间进行区分。 前者是数据集中包含的样本,即使它们与其他样本之间的距离大于平均值。 因此,**离群值检测**过程旨在找出此类*奇怪的*样本(例如:考虑之前的示例,如果将 0.25×0.25 英寸的芯片包含在数据集中,则显然是一个离群值 )。 相反,**新奇检测**的目标略有不同,因为在这种情况下,我们假定使用仅包含*正常*样本的数据集; 因此,给定一个新的芯片,我们有兴趣了解我们是否可以将其视为来自原始数据生成过程还是离群值(例如:新手技术人员向我们提出以下问题:是 0.25×0.25 英寸的芯片 如果我们已经收集了*正常*芯片的数据集,则可以使用我们的模型来回答问题。
描述这种情况的另一种方法是将样本视为一系列可能受可变噪声影响的值: *y(t)= x(t)+ n(t)*。 当 *|| n(t)|| < < || x(t)||* 可以分类为*干净**y(t)≈x(t)*。 相反,当 *|| n(t)||时 ≈|| x(t)||* (或更高),它们是离群值,不能代表真实的基础过程 *p [数据]* 。 由于噪声的平均大小通常比信号小得多,因此 *P(|| n(t)||≈|| x(t)||)*的概率接近于零。 因此,我们可以将异常想象为受异常外部噪声影响的正常样本。 异常和噪声样本管理之间真正的主要区别通常在于检测真实异常并相应地标记样本的能力。 实际上,虽然嘈杂的信号肯定已损坏,然后目标是最大程度地减少噪声的影响,但是异常现象可以很容易地被人类识别并正确标记。 但是,正如已经讨论过的,在本章中,我们有兴趣找出不依赖现有标签的发现方法。 此外,为避免混淆,我们总是引用异常,每次定义数据集的内容(仅内部数据或内部数据及异常值)以及我们的分析目标。 在下一部分中,我们将简要讨论数据集的预期结构。
描述这种情况的另一种方法是将样本视为一系列可能受可变噪声影响的值: *y(t)= x(t)+ n(t)*。 当 *|| n(t)|| < < || x(t)||* 可以分类为*干净**y(t)≈x(t)*。 相反,当 *|| n(t)||时 ≈|| x(t)||* (或更高),它们是离群值,不能代表真实的基础过程`p_data`。 由于噪声的平均大小通常比信号小得多,因此 *P(|| n(t)||≈|| x(t)||)*的概率接近于零。 因此,我们可以将异常想象为受异常外部噪声影响的正常样本。 异常和噪声样本管理之间真正的主要区别通常在于检测真实异常并相应地标记样本的能力。 实际上,虽然嘈杂的信号肯定已损坏,然后目标是最大程度地减少噪声的影响,但是异常现象可以很容易地被人类识别并正确标记。 但是,正如已经讨论过的,在本章中,我们有兴趣找出不依赖现有标签的发现方法。 此外,为避免混淆,我们总是引用异常,每次定义数据集的内容(仅内部数据或内部数据及异常值)以及我们的分析目标。 在下一部分中,我们将简要讨论数据集的预期结构。
......@@ -204,7 +204,7 @@ P(48.84 < x < 51.58) = 0.13 (13.43%)
![](img/57b50dc7-5192-473a-bd5c-40297d344ae6.png)
在讨论称为**核密度估计****KDE**)的技术之前,显示 *K(·)*的一些常见选择将很有帮助。
在讨论称为**核密度估计****KDE**)的技术之前,显示`K(·)`的一些常见选择将很有帮助。
......@@ -238,7 +238,7 @@ Gaussian kernel
![](img/802044f2-601f-4896-b783-f68372d52094.png)
引入常数*ε*可以使内核规范化并满足所有要求(以类似的方式,可以在范围内扩展内核( *-h*`h`),以便与其他功能更加一致)。 以下屏幕截图显示了图形表示:
引入常数`ε`可以使内核规范化并满足所有要求(以类似的方式,可以在范围内扩展内核( *-h*`h`),以便与其他功能更加一致)。 以下屏幕截图显示了图形表示:
![](img/9381573d-6eb5-496a-ae8b-58286a80b41c.png)
......@@ -666,7 +666,7 @@ Bivariate plot of the source and destination bytes densities
Linear one-class SVM scenario: the training set is separated from the origin with the largest margin
训练模型以找出使距原点的距离最大的超平面参数。 超平面一侧的所有样本均应为离群值,输出标签为 **+1** ,而其余所有样本均被视为离群值,并且输出标签为 *`-1`* 。 此标准似乎有效,但仅适用于线性可分离的数据集。 标准 SVM 通过将数据集(通过函数*φ(·)*)投影到特征空间 D 上来解决此问题,在该特征空间 D 中,它获得了这样的属性:
训练模型以找出使距原点的距离最大的超平面参数。 超平面一侧的所有样本均应为离群值,输出标签为 **+1** ,而其余所有样本均被视为离群值,并且输出标签为 *`-1`* 。 此标准似乎有效,但仅适用于线性可分离的数据集。 标准 SVM 通过将数据集(通过函数`$1`)投影到特征空间 D 上来解决此问题,在该特征空间 D 中,它获得了这样的属性:
![](img/7fde64b8-0a5e-4248-b156-7ac3ec831820.png)
......@@ -674,7 +674,7 @@ Linear one-class SVM scenario: the training set is separated from the origin wit
![](img/a1eb4e9a-d241-42fa-acbf-f655dc9eee26.png)
投影函数*φ(·)*的存在保证存在于非常容易获得的条件(称为美世条件)下(即,在实子空间中,内核必须为正半 -定)。 这种选择的原因与解决问题的过程密切相关(更详细的解释可以在*机器学习算法第二版**Bonaccorso G**Packt Publishing* ,2018 年)。 但是,不熟悉 SVM 的读者不必担心,因为我们不会讨论太多的数学细节。 要记住的最重要的一点是,不支持任何内核的通用投影会导致计算复杂性急剧增加(尤其是对于大型数据集)。
投影函数`$1`的存在保证存在于非常容易获得的条件(称为美世条件)下(即,在实子空间中,内核必须为正半 -定)。 这种选择的原因与解决问题的过程密切相关(更详细的解释可以在*机器学习算法第二版**Bonaccorso G**Packt Publishing* ,2018 年)。 但是,不熟悉 SVM 的读者不必担心,因为我们不会讨论太多的数学细节。 要记住的最重要的一点是,不支持任何内核的通用投影会导致计算复杂性急剧增加(尤其是对于大型数据集)。
*K(•,•)*的最常见选择之一是径向基函数(已经在第 3 章,“高级聚类”中进行了分析):
......
......@@ -108,7 +108,7 @@ Principal components of a bidimensional dataset; the first principal component l
![](img/8c7d96e8-429e-41e8-b107-4f95d67c39c3.png)
`U`是一个 ary 矩阵(即 *UU^T = U^T U = I* ,因此 *U^T = U^(-1)* ),其中左手奇异向量作为行( *XX^T* 的特征向量);`V`(也为 ary)包含右手奇异向量作为行(对应于 *X^T X* 的特征向量),而*Λ[* 是一个对角矩阵,包含*mΣ [s]* 的奇异值(这是 *XX^T* 的特征值的平方根 和 *X^T X* )。 特征值按降序排序,特征向量重新排列以匹配相应位置。 由于 *1 / m* 因子是一个乘法常数,因此它不会影响特征值的相对大小; 因此,排序顺序保持不变。 因此,我们可以直接使用`V``U`进行工作,并从*Λ*中选择第一个顶部`k`特征值。 特别是,我们可以观察到以下结果(因为变换矩阵`A`等于`V`):
`U`是一个 ary 矩阵(即 *UU^T = U^T U = I* ,因此 *U^T = U^(-1)* ),其中左手奇异向量作为行( *XX^T* 的特征向量);`V`(也为 ary)包含右手奇异向量作为行(对应于 *X^T X* 的特征向量),而*Λ[* 是一个对角矩阵,包含`$1[$2]`的奇异值(这是 *XX^T* 的特征值的平方根 和 *X^T X* )。 特征值按降序排序,特征向量重新排列以匹配相应位置。 由于 *1 / m* 因子是一个乘法常数,因此它不会影响特征值的相对大小; 因此,排序顺序保持不变。 因此,我们可以直接使用`V``U`进行工作,并从*Λ*中选择第一个顶部`k`特征值。 特别是,我们可以观察到以下结果(因为变换矩阵`A`等于`V`):
![](img/2a969f33-17b7-4f4b-b322-238daea5f0e2.png)
......@@ -230,7 +230,7 @@ d = l[:l.shape[0]-1] - l[1:]
![](img/8109d275-c6a0-42c6-b8cb-b7f2a22c590f.png)Eigenvalue differences for each principal component
可以看出,第一主成分的差异非常大,与第四主成分( *λ [4] -λ [3]* ); 但是,下一个差异仍然很高,虽然对应`$1[$2]`突然下降。 在这一点上,趋势几乎是稳定的(除了一些残余振荡),直到 *λ [11]* 为止,然后趋势开始迅速下降,趋于趋于零 。 由于我们仍然希望获得正方形图像,因此我们将选择 *k = 16* (相当于将每一边除以四)。 在另一个任务中,您可以选择 *k = 15* ,甚至 *k = 8* ; 但是,为了更好地理解降维导致的误差,也将有助于分析所解释的方差。 因此,让我们从执行 PCA 开始:
可以看出,第一主成分的差异非常大,与第四主成分( *λ [4] -λ [3]* ); 但是,下一个差异仍然很高,虽然对应`$1[$2]`突然下降。 在这一点上,趋势几乎是稳定的(除了一些残余振荡),直到`$1[$2]`为止,然后趋势开始迅速下降,趋于趋于零 。 由于我们仍然希望获得正方形图像,因此我们将选择 *k = 16* (相当于将每一边除以四)。 在另一个任务中,您可以选择 *k = 15* ,甚至 *k = 8* ; 但是,为了更好地理解降维导致的误差,也将有助于分析所解释的方差。 因此,让我们从执行 PCA 开始:
```py
from sklearn.decomposition import PCA
......@@ -295,7 +295,7 @@ Original dataset (left); PCA projected version (right)
![](img/d4f72e86-05e8-4d2e-8030-cc028ce9c8c1.png)
换句话说,我们可以通过仅计算每两个点的内核,而不是执行一个点积来计算在高维空间中的主成分上的投影,该点积在计算后需要`n`乘法 *f(·)*的值。
换句话说,我们可以通过仅计算每两个点的内核,而不是执行一个点积来计算在高维空间中的主成分上的投影,该点积在计算后需要`n`乘法`f(·)`的值。
一些常见的内核如下:
......@@ -419,7 +419,7 @@ Factor Analysis log-likelihood(Xnz): 1459.2912218162423
![](img/b671cd38-0abc-483b-bf3d-80dfa23c6a65.png)
这是一种算法的特殊情况,其中`U[k]`的分量被强制具有单位长度(除非`normalize_components=False` 参数) ,并对系数`V`进行了惩罚,以增加其稀疏度(与系数*α*成比例)。
这是一种算法的特殊情况,其中`U[k]`的分量被强制具有单位长度(除非`normalize_components=False` 参数) ,并对系数`V`进行了惩罚,以增加其稀疏度(与系数`α`成比例)。
让我们考虑 MNIST 数据集,它执行具有 30 个成分的稀疏 PCA(产生不完全的字典)和中高稀疏度(例如`α = 2.0`)。 数组`X`应该包含归一化的样本,并在以下 PCA 示例中显示:
......@@ -495,7 +495,7 @@ Absolute coefficients for the NNMF of the digit X[0]
Deconstruction of the digit X[0], based on three main components
有趣的是,该算法是如何选择原子的。 即使此过程受到*α**β* 参数,以及规范的强烈影响,我们也可以观察到,例如,第三个原子( 屏幕截图中的第一个)可以被许多零,三和八共享; 最后一个原子对于零和九都是有帮助的。 每当原子的粒度太粗糙时,具有较弱的`L[1]`罚分的不完整字典可能会有所帮助。 当然,每个问题都需要特定的解决方案。 因此,我强烈建议与领域专家一起检查原子的结构。 作为练习,我邀请您将 NNMF 应用于另一个小图像数据集(例如 Olivetti,Cifar-10 或 STL-10),并尝试找到隔离固定数量的结构零件所必需的正确参数( 例如,对于面部,它们可以是眼睛,鼻子和嘴巴。
有趣的是,该算法是如何选择原子的。 即使此过程受到`α`*β* 参数,以及规范的强烈影响,我们也可以观察到,例如,第三个原子( 屏幕截图中的第一个)可以被许多零,三和八共享; 最后一个原子对于零和九都是有帮助的。 每当原子的粒度太粗糙时,具有较弱的`L[1]`罚分的不完整字典可能会有所帮助。 当然,每个问题都需要特定的解决方案。 因此,我强烈建议与领域专家一起检查原子的结构。 作为练习,我邀请您将 NNMF 应用于另一个小图像数据集(例如 Olivetti,Cifar-10 或 STL-10),并尝试找到隔离固定数量的结构零件所必需的正确参数( 例如,对于面部,它们可以是眼睛,鼻子和嘴巴。
......@@ -597,7 +597,7 @@ ica.fit(faces['data'])
![](img/a874f7dd-cdea-4205-bde1-c602e0d85c9d.png)
我们还可以陈述以下不等式( *N(·)*计算集合中元素的数量):
我们还可以陈述以下不等式(`N(·)`计算集合中元素的数量):
![](img/c4808f1e-dcfe-4611-85da-902b9260a62c.png)
......@@ -617,7 +617,7 @@ ica.fit(faces['data'])
![](img/92cf505a-127c-48d7-b166-8e5a743c9be2.png)
**潜在狄利克雷分配****LDA**)是一个生成模型(训练目标以简单的方式包括找到最佳参数*α**γ)* ),它能够从语料库中提取固定数量的主题,并用一组单词来表征它们。 给定示例文档,它可以通过提供主题混合概率向量( *θ [i] = (p(t [1] ),p(t [2] ),...,p(t [k] )*);它也可以处理看不见的文档(使用同一词典)。
**潜在狄利克雷分配****LDA**)是一个生成模型(训练目标以简单的方式包括找到最佳参数`α`*γ)* ),它能够从语料库中提取固定数量的主题,并用一组单词来表征它们。 给定示例文档,它可以通过提供主题混合概率向量( *θ [i] = (p(t [1] ),p(t [2] ),...,p(t [k] )*);它也可以处理看不见的文档(使用同一词典)。
现在,让我们将 LDA 应用于 20 个新闻组数据集中的一个子集,其中包含数千个已公开发布以供 NLP 研究的消息。 特别是,我们要对`rec.autos``comp.sys.mac.hardware`子组建模。 我们可以使用内置的 scikit-learn `fetch_20newsgroups()`函数,要求去除所有不必要的页眉,页脚和引号(答案所附的其他帖子):
......
......@@ -48,17 +48,17 @@
在第 7 章,“降维和成分分析”中,我们讨论了一些通用的方法,这些方法可用于降低数据集的维数,因为其具有特殊的统计属性(例如协方差) 矩阵)。 但是,当复杂度增加时,即使**内核主成分分析**`k`**内核 PCA**)也可能找不到合适的低维表示形式。 换句话说,信息的丢失可以克服一个阈值,该阈值保证了有效重建样本的可能性。 **自动编码器**是利用神经网络的极端非线性特性来查找给定数据集的低维表示的模型。 特别地,假设`X`是从数据生成过程中提取的一组样本, *p [数据](x)*。 为简单起见,我们将考虑 *x [i] ∈^n* ,但对支撑结构没有任何限制(例如,对于 RGB 图像,[ *x [i] ∈^(n×m×3)* )。 自动编码器在形式上分为两个部分:有一个编码器,它将高维输入转换为较短的代码;一个解码器,执行逆运算(如下图所示):
在第 7 章,“降维和成分分析”中,我们讨论了一些通用的方法,这些方法可用于降低数据集的维数,因为其具有特殊的统计属性(例如协方差) 矩阵)。 但是,当复杂度增加时,即使**内核主成分分析**`k`**内核 PCA**)也可能找不到合适的低维表示形式。 换句话说,信息的丢失可以克服一个阈值,该阈值保证了有效重建样本的可能性。 **自动编码器**是利用神经网络的极端非线性特性来查找给定数据集的低维表示的模型。 特别地,假设`X`是从数据生成过程中提取的一组样本,`p_data`(x)*。 为简单起见,我们将考虑 *x [i] ∈^n* ,但对支撑结构没有任何限制(例如,对于 RGB 图像,[ *x [i] ∈^(n×m×3)* )。 自动编码器在形式上分为两个部分:有一个编码器,它将高维输入转换为较短的代码;一个解码器,执行逆运算(如下图所示):
![](img/d2603e73-6156-40fe-b0f1-a2a37672819f.png)
Structural schema of a generic autoencoder
如果代码是`p`维向量,则可以将编码器定义为参数化函数 *e(·)*
如果代码是`p`维向量,则可以将编码器定义为参数化函数`e(·)`
![](img/f35b4488-e844-41a6-99a6-a2b984f4a7f7.png)
以类似的方式,解码器是另一个参数化函数 *d(·)*
以类似的方式,解码器是另一个参数化函数`d(·)`
![](img/9d31e248-bf97-42b4-a487-40dcbfbc3dce.png)
......@@ -70,15 +70,15 @@ Structural schema of a generic autoencoder
![](img/588887de-3b03-4361-962f-883856470c8b.png)
另外,考虑到数据生成过程,我们可以考虑参数化条件分布 *q(·)*重新表达目标:
另外,考虑到数据生成过程,我们可以考虑参数化条件分布`q(·)`重新表达目标:
![](img/3d870151-1e1f-4472-a9df-211ccc082726.png)
因此,成本函数现在可以成为 *p [数据](·)**q(·)*之间的 Kullback-Leibler 散度:
因此,成本函数现在可以成为`p_data`(·)*`q(·)`之间的 Kullback-Leibler 散度:
![](img/889fb37b-214d-4bd3-9e6d-d74c5343ae91.png)
由于 *p [数据]* 的熵是一个常数,因此可以通过优化过程将其排除; 因此,散度的最小化等于 *p [数据]*`q`之间的交叉熵最小化。 如果假设 *p [数据]*`q`为高斯,则 Kullback-Leibler 成本函数等效于均方误差。 在某些情况下,当数据在`(0, 1)`范围内归一化时,可以对 *p [数据]* `q`采用伯努利分布。 形式上,这不是完全正确的,因为伯努利分布是二进制的,并且 *x [i] ∈{0,1}^d* ; 但是,使用 S 型输出单元还可以保证连续样本的成功优化, *x [i] ∈(0, 1)^d* 。 在这种情况下,成本函数变为:
由于`p_data`的熵是一个常数,因此可以通过优化过程将其排除; 因此,散度的最小化等于`p_data``q`之间的交叉熵最小化。 如果假设`p_data``q`为高斯,则 Kullback-Leibler 成本函数等效于均方误差。 在某些情况下,当数据在`(0, 1)`范围内归一化时,可以对`p_data``q`采用伯努利分布。 形式上,这不是完全正确的,因为伯努利分布是二进制的,并且 *x [i] ∈{0,1}^d* ; 但是,使用 S 型输出单元还可以保证连续样本的成功优化, *x [i] ∈(0, 1)^d* 。 在这种情况下,成本函数变为:
![](img/72f5d9d6-18c3-4216-b4e1-af7a8143feab.png)
......@@ -399,7 +399,7 @@ Noisy samples (upper row); denoised images (lower row)
![](img/ec6a414d-389c-457f-9944-ba198988bf14.png)
*α*常数确定将要达到的稀疏程度。 当然,由于`C[s]`的最佳值与原始值不对应,因此,为了达到相同的精度,通常需要更多的历元和更长的代码层。 由 Andrew Ng(斯坦福大学的*稀疏自动编码器,* CS294A)提出的另一种方法是基于稍微不同的方法。 代码层被认为是一组独立的伯努利随机变量。 因此,给定另一组均值较小的伯努利变量(例如 *p [r] 〜B(0.05)*),就有可能尝试找到使代码最小化的最佳代码`z[i]`与此类参考分布之间的 Kullback-Leibler 散度:
`α`常数确定将要达到的稀疏程度。 当然,由于`C[s]`的最佳值与原始值不对应,因此,为了达到相同的精度,通常需要更多的历元和更长的代码层。 由 Andrew Ng(斯坦福大学的*稀疏自动编码器,* CS294A)提出的另一种方法是基于稍微不同的方法。 代码层被认为是一组独立的伯努利随机变量。 因此,给定另一组均值较小的伯努利变量(例如 *p [r] 〜B(0.05)*),就有可能尝试找到使代码最小化的最佳代码`z[i]`与此类参考分布之间的 Kullback-Leibler 散度:
![](img/04ada51f-118c-4cd8-8c62-f1ca4ec0b792.png)
......@@ -446,11 +446,11 @@ Epoch 600) Average loss per sample: 0.8058895015716553 (Code mean: 0.02853894419
让我们考虑从数据生成过程中提取的数据集`X` *p [数据]* 。 可变自动编码器是一种生成模型(基于标准自动编码器的主要概念),由 Kingma 和 Welling 提出(在*自动编码变化贝叶斯 Kingma DP 和 Welling M. 中提出)* *arXiv:1312.6114 [stat.ML]* ),旨在再现数据生成过程。 为了实现此目标,我们需要从基于一组潜在变量`z`和一组可学习参数*θ*的通用模型开始。 给定样本 *x [i] ∈X* ,该模型的概率为 *p(x,z;* *θ)* 。 因此,训练过程的目标是找到使似然性最大化的最佳参数 *p(x;θ)*,该参数可以通过边缘化整个联合概率来获得:
让我们考虑从数据生成过程中提取的数据集`X``p_data`。 可变自动编码器是一种生成模型(基于标准自动编码器的主要概念),由 Kingma 和 Welling 提出(在*自动编码变化贝叶斯 Kingma DP 和 Welling M. 中提出)* *arXiv:1312.6114 [stat.ML]* ),旨在再现数据生成过程。 为了实现此目标,我们需要从基于一组潜在变量`z`和一组可学习参数*θ*的通用模型开始。 给定样本 *x [i] ∈X* ,该模型的概率为 *p(x,z;* *θ)* 。 因此,训练过程的目标是找到使似然性最大化的最佳参数 *p(x;θ)*,该参数可以通过边缘化整个联合概率来获得:
![](img/cc7c4316-bf98-4ae0-b3bd-09a2f5239ad6.png)
以前的表达式很简单,但是不幸的是,它很难以封闭形式处理。 主要原因是我们没有关于先验 *p(z;* *θ)*的有效信息。 此外,即使假设例如 *z〜N(0,Σ)*(例如 *N(0,I)*),找到有效样本的概率也非常稀疏 。 换句话说,给定`z`值,我们也不太可能生成实际上属于 *p [数据]* 的样本。 为了解决这个问题,作者提出了一种变分方法,我们将简要介绍一下(上述论文中有完整的解释)。 假设标准自动编码器的结构,我们可以通过将编码器建模为 *q(z | x;θ [q] )*来引入代理参数化分布。 此时,我们可以计算 *q(·)*与实际条件概率 *p(z | x;θ)*:之间的 Kullback-Leibler 散度
以前的表达式很简单,但是不幸的是,它很难以封闭形式处理。 主要原因是我们没有关于先验 *p(z;* *θ)*的有效信息。 此外,即使假设例如 *z〜N(0,Σ)*(例如 *N(0,I)*),找到有效样本的概率也非常稀疏 。 换句话说,给定`z`值,我们也不太可能生成实际上属于`p_data`的样本。 为了解决这个问题,作者提出了一种变分方法,我们将简要介绍一下(上述论文中有完整的解释)。 假设标准自动编码器的结构,我们可以通过将编码器建模为 *q(z | x;θ [q] )*来引入代理参数化分布。 此时,我们可以计算`q(·)`与实际条件概率 *p(z | x;θ)*:之间的 Kullback-Leibler 散度
![](img/eaf4410d-472c-4bf6-8cb2-7d5839d84741.png)
......@@ -474,7 +474,7 @@ Epoch 600) Average loss per sample: 0.8058895015716553 (Code mean: 0.02853894419
在前面的公式中,`p`是代码长度,因此它是均值和对角协方差向量的维数。 右侧的表达式非常容易计算,因为*Σ*是对角线的(也就是说,迹线是元素的总和,行列式是乘积)。 但是,当使用**随机梯度下降****SGD**)算法时,此公式的最大值尽管正确,但却不是可微的运算。 为了克服这个问题,作者建议重新分配分布。
当提供一批时,对正态分布进行采样,获得*α〜N(0,I)*。 使用该值,可以使用概率编码器的输出来构建所需的样本: *μ(z | x;θ [q] )+α• ∑(z | x;θ [q]* *)^2* 。 该表达式是可区分的,因为*α*在每个批量中都是常数(当然,*μ(z | x;θ [q] z | x;θ [q] )*用神经网络参数化,它们是可微的。
当提供一批时,对正态分布进行采样,获得*α〜N(0,I)*。 使用该值,可以使用概率编码器的输出来构建所需的样本: *μ(z | x;θ [q] )+α• ∑(z | x;θ [q]* *)^2* 。 该表达式是可区分的,因为`α`在每个批量中都是常数(当然,*μ(z | x;θ [q] z | x;θ [q] )*用神经网络参数化,它们是可微的。
ELBO 右侧的第二项是 *log p(x | z;* *θ)*的期望值。 不难看出,这样的表达式与原始分布和重构之间的交叉熵相对应:
......@@ -707,11 +707,11 @@ Sanger 的网络基于 Oja 规则的修改版本,该规则定义为**广义 He
Structure of a generic Sanger's network
权重被组织成一个矩阵, *W = {w [ij] }* *w [ij]* 是连接突触前单元的权重 ,`i`,带有突触后单位,`j`); 因此,可以使用以下公式来计算输出的激活:
权重被组织成一个矩阵, *W = {w [ij] }*`w[ij]`是连接突触前单元的权重 ,`i`,带有突触后单位,`j`); 因此,可以使用以下公式来计算输出的激活:
![](img/e021d025-55ed-4793-b6d9-b8cec5b50302.png)
但是,在这种网络中,我们对最终权重更感兴趣,因为它们必须等于第一个`n`主分量。 不幸的是,如果我们应用 Oja 规则而不做任何修改,则所有神经元都将找到相同的组件(第一个组件)。 因此,必须采用不同的策略。 从理论上讲,我们知道主成分必须正交。 因此,如果`w[1]`是具有第一个分量方向的向量,则可以强制`w[2]`正交于`w[1]`,依此类推。 该方法基于 **Gram-Schmidt 正交归一化程序**。 让我们考虑两个向量-已经收敛的`w[1]`,和 *w [2] [0]* , 任何干预措施,也将收敛于`w[1]`。 通过考虑此向量在`w[1]`上的投影,可以找到 *w [20]* 的正交分量:
但是,在这种网络中,我们对最终权重更感兴趣,因为它们必须等于第一个`n`主分量。 不幸的是,如果我们应用 Oja 规则而不做任何修改,则所有神经元都将找到相同的组件(第一个组件)。 因此,必须采用不同的策略。 从理论上讲,我们知道主成分必须正交。 因此,如果`w[1]`是具有第一个分量方向的向量,则可以强制`w[2]`正交于`w[1]`,依此类推。 该方法基于 **Gram-Schmidt 正交归一化程序**。 让我们考虑两个向量-已经收敛的`w[1]`,和 *w [2] [0]* , 任何干预措施,也将收敛于`w[1]`。 通过考虑此向量在`w[1]`上的投影,可以找到`w[20]`的正交分量:
![](img/67503a88-e4d1-468e-8b90-6d874d81a731.png)
......@@ -723,13 +723,13 @@ Structure of a generic Sanger's network
![](img/350f6137-1ddd-447d-879a-79de245a6115.png)
在给定输入`x`的情况下,先前的更新是指单个权重 *w [ij]* 。 容易理解,第一部分是标准赫布法则,而其余部分是正交项,它扩展到`y[i]`之前的所有单元。
在给定输入`x`的情况下,先前的更新是指单个权重`w[ij]`。 容易理解,第一部分是标准赫布法则,而其余部分是正交项,它扩展到`y[i]`之前的所有单元。
以矩阵形式,更新内容如下:
![](img/9aa37ec6-8cf8-4828-a845-ec719720409a.png)
*Tril(·)* 函数计算方阵的下三角部分。 收敛性证明并非无关紧要,但在*η*单调减少的温和条件下,可以看到该模型如何以降序收敛到第一个`n`主成分。
`Tril(·)`函数计算方阵的下三角部分。 收敛性证明并非无关紧要,但在*η*单调减少的温和条件下,可以看到该模型如何以降序收敛到第一个`n`主成分。
![](img/9493c073-860c-40de-a254-d938060914d8.png)
......@@ -863,17 +863,17 @@ Structure of a generic Rubner-Tavan's network
经过多次迭代后,每个生成的 *y [i] y [j]* 以及 *i≠j* 都为空,而`C`变成对角协方差矩阵。 此外,在上述论文中,作者证明了特征值(对应于方差)是按降序排序的; 因此,可以通过选择包含前`p`行和列的子矩阵来选择顶部的`p`组件。
通过使用两个不同的规则(每个权重层一个)来更新 Rubner-Tavan 网络。 内部权重 *w [ij]* 通过使用 Oja 规则进行更新:
通过使用两个不同的规则(每个权重层一个)来更新 Rubner-Tavan 网络。 内部权重`w[ij]`通过使用 Oja 规则进行更新:
![](img/efcc2114-ef49-40d9-a8b3-bd829d2487c1.png)
该规则确保提取主成分时不会无限增长 *w [ij]* 。 相反,外部权重 *v [jk]* 通过使用**反希伯来规则**更新:
该规则确保提取主成分时不会无限增长`w[ij]`。 相反,外部权重`v[jk]`通过使用**反希伯来规则**更新:
![](img/03eed34d-9192-4583-a97f-86ed71c4cb4d.png)
前一个公式的第一项*-ηy<sup class="calibre27">(j)</sup> y^((k))* 负责解相关,而第二项类似于 Oja's 规则,用作防止权重溢出的自限制正则器。 特别地,*-ηy<sup class="calibre27">(i)</sup> y^((k))* 项可以解释为更新规则的反馈信号*Δw [ij]* ,它受 *Δv [jk]* 项校正的实际输出的影响。 考虑到 Sanger 网络的行为,不容易理解,一旦输出去相关,内部权重 *w [ij]* 就变成正交,代表*的第一个主要成分 X*
前一个公式的第一项*-ηy<sup class="calibre27">(j)</sup> y^((k))* 负责解相关,而第二项类似于 Oja's 规则,用作防止权重溢出的自限制正则器。 特别地,*-ηy<sup class="calibre27">(i)</sup> y^((k))* 项可以解释为更新规则的反馈信号`w[ij]`,它受`w[ij]`项校正的实际输出的影响。 考虑到 Sanger 网络的行为,不容易理解,一旦输出去相关,内部权重`w[ij]`就变成正交,代表*的第一个主要成分 X*
以矩阵形式,权重 *w [ij]* 可以立即排列为 *W = {w [ij] }* ,这样在 在训练过程结束时,每一列都是`C`的特征向量(降序排列)。 相反,对于外部权重 *v [jk]* ,我们需要再次使用 *Tril(·)*运算符:
以矩阵形式,权重`w[ij]`可以立即排列为 *W = {w [ij] }* ,这样在 在训练过程结束时,每一列都是`C`的特征向量(降序排列)。 相反,对于外部权重`v[jk]`,我们需要再次使用`Tril(·)`运算符:
![](img/9080b2af-6409-4238-a6a8-8f230792ce22.png)
......@@ -1021,11 +1021,11 @@ Structure of a generic Restricted Boltzmann Machine
![](img/fec60140-16e2-454b-a5dd-61909bce0d08.png)
该公式的主要假设是所有神经元都是伯努利分布的(即 *x [i] ,h [j] 〜B`(0, 1)`*) 术语`b[i]``c[j]`是可观察和潜在单位的偏差。 给定数据生成过程 *p [数据]* ,必须优化 RBM,以便 *p(x;* *θ)的可能性* 最大化。 跳过所有中间步骤(可以在前面的文章中找到),可以证明以下几点:
该公式的主要假设是所有神经元都是伯努利分布的(即 *x [i] ,h [j] 〜B`(0, 1)`*) 术语`b[i]``c[j]`是可观察和潜在单位的偏差。 给定数据生成过程`p_data`,必须优化 RBM,以便 *p(x;* *θ)的可能性* 最大化。 跳过所有中间步骤(可以在前面的文章中找到),可以证明以下几点:
![](img/e1cdc672-50a0-425c-8811-603832e1b5dd.png)
在先前的公式中,*σ(·)*是 Sigmoid 函数。 给定这两个表达式,可以得出(省略操作)对数似然率相对于所有可学习变量的梯度:
在先前的公式中,`$1`是 Sigmoid 函数。 给定这两个表达式,可以得出(省略操作)对数似然率相对于所有可学习变量的梯度:
![](img/145060cb-3837-4aa0-922f-ec99defbc34a.png)
......
......@@ -49,7 +49,7 @@
* **生成器**
* **判别器**(也称为**评论家**
让我们首先假设有一个数据生成过程, *p [数据]* ,以及一个数据集`X`,该数据集是从`m`样本中提取的 它:
让我们首先假设有一个数据生成过程,`p_data`,以及一个数据集`X`,该数据集是从`m`样本中提取的 它:
![](img/51747182-bf27-4942-aa5c-7bc1d719034b.png)
......@@ -65,7 +65,7 @@
![](img/4bd5bc8f-ede6-45e8-80ea-543706b24852.png)
判别器的作用是区分从 *p [数据]* (返回大概率)提取的样本与由 *g(z;θ [g] )*(返回低概率)。 但是,由于生成器的目标是变得越来越有能力复制 *p [数据]* ,因此其作用是学习如何用几乎完美复制品中的样本来欺骗判别器 数据生成过程。 因此,考虑到区分因素,目标是最大化以下条件:
判别器的作用是区分从`p_data`(返回大概率)提取的样本与由 *g(z;θ [g] )*(返回低概率)。 但是,由于生成器的目标是变得越来越有能力复制`p_data`,因此其作用是学习如何用几乎完美复制品中的样本来欺骗判别器 数据生成过程。 因此,考虑到区分因素,目标是最大化以下条件:
![](img/6776cf30-d26d-4c1b-aa66-65165ebac3a2.png)
......@@ -73,7 +73,7 @@
![](img/1c69083f-4200-4599-a7af-1b594ab3bc20.png)
实际上,当两个代理都成功地优化了目标时,判别器将能够区分从 *p [数据]* 提取的样本和异常值,并且生成器将能够输出合成样本 属于 *p [数据]* 。 但是,必须明确的是,可以通过使用单个目标来表达问题,并且训练过程的目标是找出最佳参数集,*θ= {θ [d] ,θ [g] }* ,因此判别器将其最大化,而生成器将其最小化。 必须同时优化两个代理,但是实际上,过程是交替的(例如,生成器,判别器,生成器等)。 目标可以用更紧凑的形式表示如下:
实际上,当两个代理都成功地优化了目标时,判别器将能够区分从`p_data`提取的样本和异常值,并且生成器将能够输出合成样本 属于`p_data`。 但是,必须明确的是,可以通过使用单个目标来表达问题,并且训练过程的目标是找出最佳参数集,*θ= {θ [d] ,θ [g] }* ,因此判别器将其最大化,而生成器将其最小化。 必须同时优化两个代理,但是实际上,过程是交替的(例如,生成器,判别器,生成器等)。 目标可以用更紧凑的形式表示如下:
![](img/304d8dd9-8212-4b27-a550-71c85664a763.png)
......@@ -81,7 +81,7 @@
![](img/3ef1bf38-3d09-434a-993d-0a410667c1fe.png)
根据博弈论,这是一个不合作的博弈,它承认**纳什均衡**点。 当满足这种条件时,如果我们假设双方都知道对手的策略,那么他们就没有理由再改变自己的策略了。 在 GAN 的情况下,这种情况意味着一旦达到平衡(甚至只是理论上),生成器就可以继续输出样本,并确保它们不会被判别器误分类。 同时,判别器没有理由改变其策略,因为它可以完美地区分 *p [数据]* 和任何其他分布。 从动态角度来看,两个组件的训练速度都是不对称的。 尽管生成器通常需要更多的迭代,但判别器可以非常迅速地收敛。 但是,这样的过早收敛对于整体性能可能非常危险。 实际上,由于判别器提供的反馈,生成器也达到了最佳状态。 不幸的是,当梯度很小时,这种贡献可以忽略不计,其明显的结果是,生成器错过了提高其输出更好样本能力的机会(例如,当样本是图像时,它们的质量可能会保持非常低,甚至 具有复杂的架构)。 这种情况并不取决于生成器固有的容量不足,而是取决于判别器收敛(或非常接近收敛)后开始应用的有限次校正。 在实践中,由于没有特定的规则,唯一有效的建议是在训练过程中检查两个损失函数。 如果判别器的损失下降得太快,而生成器的损失仍然很大,那么通常最好在单个判别器步骤中插入更多的生成器训练步骤。
根据博弈论,这是一个不合作的博弈,它承认**纳什均衡**点。 当满足这种条件时,如果我们假设双方都知道对手的策略,那么他们就没有理由再改变自己的策略了。 在 GAN 的情况下,这种情况意味着一旦达到平衡(甚至只是理论上),生成器就可以继续输出样本,并确保它们不会被判别器误分类。 同时,判别器没有理由改变其策略,因为它可以完美地区分`p_data`和任何其他分布。 从动态角度来看,两个组件的训练速度都是不对称的。 尽管生成器通常需要更多的迭代,但判别器可以非常迅速地收敛。 但是,这样的过早收敛对于整体性能可能非常危险。 实际上,由于判别器提供的反馈,生成器也达到了最佳状态。 不幸的是,当梯度很小时,这种贡献可以忽略不计,其明显的结果是,生成器错过了提高其输出更好样本能力的机会(例如,当样本是图像时,它们的质量可能会保持非常低,甚至 具有复杂的架构)。 这种情况并不取决于生成器固有的容量不足,而是取决于判别器收敛(或非常接近收敛)后开始应用的有限次校正。 在实践中,由于没有特定的规则,唯一有效的建议是在训练过程中检查两个损失函数。 如果判别器的损失下降得太快,而生成器的损失仍然很大,那么通常最好在单个判别器步骤中插入更多的生成器训练步骤。
......@@ -91,7 +91,7 @@
假设我们有一个 GAN,该 GAN 已通过使用从 *p [数据](x)*中提取的数据集`X`进行了适当的训练。 Goodfellow 等人证明,给定生成器分布 *p [g] (x)*,最佳判别器如下:
假设我们有一个 GAN,该 GAN 已通过使用从`p_data`(x)*中提取的数据集`X`进行了适当的训练。 Goodfellow 等人证明,给定生成器分布 *p [g] (x)*,最佳判别器如下:
![](img/bf275808-f597-4c3c-a017-6ecaa9f12a79.png)
......@@ -111,13 +111,13 @@
![](img/ea76a19a-d431-4d64-8ab4-2353158ec476.png)
因此,目标可以表示为数据生成过程和生成器分布之间的 **Jensen-Shannon 散度**的函数。 与 Kullback-Leibler 散度的主要区别在于 *0≤D [JS] (p [数据] || p [g] )≤log(2)*,并且是对称的。 这种重新定义并不奇怪,因为 GAN 的真正目标是成为一个能够成功复制 *p [数据]* 的生成模型,如下图所示:
因此,目标可以表示为数据生成过程和生成器分布之间的 **Jensen-Shannon 散度**的函数。 与 Kullback-Leibler 散度的主要区别在于 *0≤D [JS] (`p_data`|| p [g] )≤log(2)*,并且是对称的。 这种重新定义并不奇怪,因为 GAN 的真正目标是成为一个能够成功复制`p_data`的生成模型,如下图所示:
![](img/d5d8548e-abc4-4567-9a42-2def53203f69.png)
The goal of a GAN is to move the generative model distribution in the direction of p[data], trying to maximize the overlap
初始分布通常与目标分布完全不同; 因此,GAN 必须同时调整形状并将其移向 *p [数据]* 。 重叠完成后,Jensen-Shannon 散度达到最小值,并且优化完成。 但是,正如我们将在下一节中讨论的那样,由于 Jensen-Shannon 散度的特性,此过程并不总是如此平稳地运行,并且 GAN 可以达到次理想的极小值,离期望值很远 最终配置。
初始分布通常与目标分布完全不同; 因此,GAN 必须同时调整形状并将其移向`p_data`。 重叠完成后,Jensen-Shannon 散度达到最小值,并且优化完成。 但是,正如我们将在下一节中讨论的那样,由于 Jensen-Shannon 散度的特性,此过程并不总是如此平稳地运行,并且 GAN 可以达到次理想的极小值,离期望值很远 最终配置。
......@@ -445,11 +445,11 @@ The screenshots that are shown in this and other examples in this chapter are of
给定概率分布 *p(x)*,集合 *D [p] = {x:p(x)> 0}* 被称为**支持** 。 如果 *p(x)**q(x)*的两个分布具有脱节的支撑(即 *D [p] ∩D [q] = {∅}* ),詹森-香农散度等于 *log(2)*。 这意味着渐变为零,并且无法进行任何校正。 在涉及 GAN 的一般情况下, *p [g] (x)* *p [数据]* 完全不可能重叠( 但是,您可以期望有最小的重叠); 因此,梯度很小,权重的更新也很小。 这样的问题可能会阻止训练过程,并使 GAN 陷入无法逃避的次优配置状态。 因此, Arjovsky,Chintala 和 Bottou (在 *Wasserstein GAN 中,* *Arjovsky M.**Chintala S.**和 Bottou L.**arXiv:1701.07875 [stat.ML]* )基于称为**瓦瑟斯坦距离**的更稳健的差异度量,提出了一个略有不同的模型。 ](或“地球移动者”的距离):
给定概率分布 *p(x)*,集合 *D [p] = {x:p(x)> 0}* 被称为**支持** 。 如果 *p(x)**q(x)*的两个分布具有脱节的支撑(即 *D [p] ∩D [q] = {∅}* ),詹森-香农散度等于 *log(2)*。 这意味着渐变为零,并且无法进行任何校正。 在涉及 GAN 的一般情况下, *p [g] (x)*`p_data`完全不可能重叠( 但是,您可以期望有最小的重叠); 因此,梯度很小,权重的更新也很小。 这样的问题可能会阻止训练过程,并使 GAN 陷入无法逃避的次优配置状态。 因此, Arjovsky,Chintala 和 Bottou (在 *Wasserstein GAN 中,* *Arjovsky M.**Chintala S.**和 Bottou L.**arXiv:1701.07875 [stat.ML]* )基于称为**瓦瑟斯坦距离**的更稳健的差异度量,提出了一个略有不同的模型。 ](或“地球移动者”的距离):
![](img/cf700f07-35ed-4e38-80db-a046bbe07d21.png)
为了理解前面的公式,必须说 *∏(p [数据],p [g] )*是包含所有可能的联合分布的集合。 数据生成过程和生成器分布。 因此,Wasserstein 距离等于范数 *|| x-y ||的期望值的最小值。* ,假设一对( *x,y* )是分布*μ〜 ∏( p [数据[] ,,p [g]* *)*。 即使这个概念很简单,这种定义也不是很直观,并且可以通过考虑两个二维 Blob(其距离是两个最近点之间的距离)来概括。 显然,支撑支点不相交的问题已被完全克服,此外,度量也与实际分布距离成比例。 不幸的是,我们没有使用有限集。 因此,Wasserstein 距离的计算可能非常低效,并且几乎不可能用于现实生活中的任务。 但是, **Kantorovich-Rubinstein 定理**(由于超出了本书的范围,因此未进行全面分析)使我们可以通过使用特殊的支持函数 *f(x)*来简化表达式。 ]:
为了理解前面的公式,必须说 *∏(`p_data`,p [g] )*是包含所有可能的联合分布的集合。 数据生成过程和生成器分布。 因此,Wasserstein 距离等于范数 *|| x-y ||的期望值的最小值。* ,假设一对( *x,y* )是分布*μ〜 ∏( p [数据[] ,,p [g]* *)*。 即使这个概念很简单,这种定义也不是很直观,并且可以通过考虑两个二维 Blob(其距离是两个最近点之间的距离)来概括。 显然,支撑支点不相交的问题已被完全克服,此外,度量也与实际分布距离成比例。 不幸的是,我们没有使用有限集。 因此,Wasserstein 距离的计算可能非常低效,并且几乎不可能用于现实生活中的任务。 但是, **Kantorovich-Rubinstein 定理**(由于超出了本书的范围,因此未进行全面分析)使我们可以通过使用特殊的支持函数 *f(x)*来简化表达式。 ]:
![](img/6409c4e2-844b-44d2-bd22-655dd88d2e4b.png)
......@@ -457,7 +457,7 @@ The screenshots that are shown in this and other examples in this chapter are of
![](img/a97ddbd4-a379-4fc0-aad7-4de7a552abcd.png)
考虑使用神经网络参数化的函数 *f(·)*,全局目标变为:
考虑使用神经网络参数化的函数`f(·)`,全局目标变为:
![](img/ac4ed2f2-c377-4788-9950-1e7768520a25.png)
......
......@@ -137,7 +137,7 @@
4.*sum(z [i] )= 36 时,* a *std(z [i] )= 0.03* 意味着大多数值都围绕 0.28 *(0.25÷0.31)*,该代码可以视为密集代码。
5. 没有; 一个 Sanger 网络(以及 Rubner-Tavan 网络)需要输入样本 *x [i] ∈X*
6. 从最大特征值到最小特征值(即从第一个主成分到最后一个主成分)以降序提取成分。 因此,无需进一步分析来确定其重要性。
7. 是; 从最后一层开始,可以对每个内部层的值进行采样,直到第一层为止。 通过选择每个概率向量的 *argmax(·)*获得最可能的输入值。
7. 是; 从最后一层开始,可以对每个内部层的值进行采样,直到第一层为止。 通过选择每个概率向量的`argmax(·)`获得最可能的输入值。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册