提交 69afcc91 编写于 作者: W wizardforcel

2020-12-08 21:57:31

上级 543f4847
此差异已折叠。
此差异已折叠。
......@@ -50,11 +50,11 @@
![](img/04851041-5aa5-40f4-871e-41cee0b1eb59.png)
**凝聚**方法是通过将每个样本分配到一个集群 *C [i]* 开始的,然后通过在每个步骤合并两个集群直到单个最终集群(对应于`X`)已产生:
**凝聚**方法是通过将每个样本分配到一个集群`C[i]`开始的,然后通过在每个步骤合并两个集群直到单个最终集群(对应于`X`)已产生:
![](img/543602f0-e890-481e-9ebd-28453d15217b.png)
在前面的示例中,群集 *C [i]**C [j]* 合并为 *C [k]* ; 因此,我们在第二步中获得 *n-1* 簇。 该过程继续进行,直到剩下的两个群集合并为一个包含整个数据集的单个块。 相反,**除法**方法(由 Kaufman 和 Roussew 最初提出,使用 DIANA 算法)在相反的方向上操作,从`X`开始,最后以每个群集包含一个 单个样本:
在前面的示例中,群集`C[i]``C[j]`合并为`C[k]`; 因此,我们在第二步中获得 *n-1* 簇。 该过程继续进行,直到剩下的两个群集合并为一个包含整个数据集的单个块。 相反,**除法**方法(由 Kaufman 和 Roussew 最初提出,使用 DIANA 算法)在相反的方向上操作,从`X`开始,最后以每个群集包含一个 单个样本:
![](img/ed6383c7-bc83-46ba-9f2c-9282e9b7a8bd.png)
......@@ -74,11 +74,11 @@
![](img/07f5f198-bcf4-4f91-811d-a5bc867600af.png)
两个特定情况对应于 *p = 2**p = 1* 。 在前一种情况下,当 *p = 2* 时,我们获得标准**欧几里德距离**(等于 *L [2]* 范数):
两个特定情况对应于 *p = 2**p = 1* 。 在前一种情况下,当 *p = 2* 时,我们获得标准**欧几里德距离**(等于`L[2]`范数):
![](img/be525080-5382-4146-9d15-6f26830f8970.png)
*p = 1* 时,我们获得**曼哈顿****城市街区**距离(等于 *L [1]* 范数 ):
*p = 1* 时,我们获得**曼哈顿****城市街区**距离(等于`L[1]`范数 ):
![](img/d851736e-2e48-4de6-b798-6fd828d24c42.png)
......@@ -90,7 +90,7 @@
![](img/3e160312-31e8-4484-bd90-4697761fa04f.png)
`P`是对称的,所有对角元素均为空。 因此,某些应用程序(例如 SciPy 的`pdist`函数)会产生一个压缩矩阵 *P [c]* ,这是一个仅包含矩阵上三角部分的向量 *P [c]* *ij*^(th) 元素对应于 *d(x [i] ,x [j] )*
`P`是对称的,所有对角元素均为空。 因此,某些应用程序(例如 SciPy 的`pdist`函数)会产生一个压缩矩阵`P[c]`,这是一个仅包含矩阵上三角部分的向量`P[c]`*ij*^(th) 元素对应于 *d(x [i] ,x [j] )*
下一步是定义合并策略,在这种情况下,该策略称为**链接**。 链接方法的目标是找出必须在层次结构的每个级别合并为单个群集的群集。 因此,它必须与代表群集的通用样本集一起使用。 在这种情况下,假设我们正在分析几个群集( *C [a] ,C [b]* ),并且我们需要找到哪个索引`a``b`对应于将要合并的对。
......@@ -116,11 +116,11 @@
![](img/08986d3c-687c-4832-b1c2-fc5d8442702a.png)
这种链接方法的目的是使属于合并簇的最远样本之间的距离最小。 在下图中,有一个完整链接的示例,其中已选择 **C [1]****C [3]**
这种链接方法的目的是使属于合并簇的最远样本之间的距离最小。 在下图中,有一个完整链接的示例,其中已选择 *`C[1]`**`C[3]`*
![](img/5630c46a-e57c-4099-bcf2-bc30a9ed942e.png)Example of complete linkage. C[1] and C[3] are selected for merging
该算法选择 **C [1]**`C`**[3]** 为了增加内部凝聚力。 实际上,很容易理解,考虑所有可能的组合,完全链接会导致群集密度最大化。 在上图所示的示例中,如果所需的簇数为两个,则合并 **C [1]****C [2]****C [2]****C [3]** 会产生具有较小内聚力的最终构型,这通常是不希望的结果。
该算法选择 *`C[1]`*`C`**[3]** 为了增加内部凝聚力。 实际上,很容易理解,考虑所有可能的组合,完全链接会导致群集密度最大化。 在上图所示的示例中,如果所需的簇数为两个,则合并 *`C[1]`**`C[2]`**`C[2]`**`C[3]`* 会产生具有较小内聚力的最终构型,这通常是不希望的结果。
......@@ -248,17 +248,17 @@ plt.show()
可以使用前面各章中介绍的任何方法来评估层次集群性能。 但是,在这种特定情况下,可以采用特定措施(不需要基本事实)。 给定一个近似矩阵`P`和一个链接`L`,几个样本 *x [i]* *x [j] ∈X* 始终分配给特定层次级别的同一群集。 当然,重要的是要记住,在团聚的情况下,我们从`n`个不同的簇开始,最后以一个等于`X`的单个簇结束。 此外,由于两个合并的群集成为一个群集,因此属于一个群集的两个样本将始终继续属于同一*放大的*群集,直到该过程结束。
可以使用前面各章中介绍的任何方法来评估层次集群性能。 但是,在这种特定情况下,可以采用特定措施(不需要基本事实)。 给定一个近似矩阵`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 }。
此时,我们可以将 *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)
......@@ -270,7 +270,7 @@ plt.show()
![](img/2ff0529a-5715-44fc-8b52-347801de1a6b.png)
前面的方程式基于以下假设:如果 *x [i]**x [j]**x [p]* 的距离,例如 *d(x [i] ,x [j] )< d(x [i] , x [p] )*,可以合理预期 *x [i]**x [j]**x [i]*`x`[`p`] 之前合并在同一群集中(即,对应于 *x [i]*`x`[`j`] 的合并 低于 *x [i]* `x`*[p]* )。 因此, *CPC→1* 表示链接生成了一个最佳层次结构,该层次结构反映了基础几何结构。 另一方面, *CPC* *→-1* 表示完全不同意,并且潜在的聚类结果与几何形状不一致。 毋庸置疑,给定一个问题,我们的目标是找到一个最大化 *CPC* 的指标和链接。
前面的方程式基于以下假设:如果`x[i]``x[j]``x[p]`的距离,例如 *d(x [i] ,x [j] )< d(x [i] , x [p] )*,可以合理预期`x[i]``x[j]``x[i]``x`[`p`] 之前合并在同一群集中(即,对应于`x[i]``x`[`j`] 的合并 低于`x[i]``x`*[p]* )。 因此, *CPC→1* 表示链接生成了一个最佳层次结构,该层次结构反映了基础几何结构。 另一方面, *CPC* *→-1* 表示完全不同意,并且潜在的聚类结果与几何形状不一致。 毋庸置疑,给定一个问题,我们的目标是找到一个最大化 *CPC* 的指标和链接。
考虑到第 3 章,“高级聚类”中描述的示例,我们可以使用 SciPy 函数`cophenet`计算与不同链接(假设欧几里得距离)相对应的同位矩阵和 CPC 。 此函数需要将链接矩阵作为第一个参数,将接近度矩阵作为第二个参数,并返回同义矩阵和 CPC(`dm` 变量是先前计算出的压缩接近度矩阵):
......@@ -548,7 +548,7 @@ Y_pred = ag.fit_predict(X)
4. 在聚集聚类中,树状图的底部(初始部分)包含单个聚类。 它是否正确?
5. 聚集聚类中树状图的`y`轴是什么意思?
6. 合并较小的群集时,相异性降低。 它是否正确?
7. 显色矩阵的元素 *C(i,j)*报告相异度,其中两个对应元素 *x [i]* *x [ [j]* 首次出现在同一群集中。 它是否正确?
7. 显色矩阵的元素 *C(i,j)*报告相异度,其中两个对应元素`x[i]`*x [ [j]* 首次出现在同一群集中。 它是否正确?
8. 连接约束的主要目的是什么?
......
此差异已折叠。
......@@ -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)*表示。 在一般情况下,实际概率需要三重积分:
......@@ -117,7 +117,7 @@
![](img/b6ea63ae-87e5-4be6-8def-520a63fe135a.png)
间隔*(m,M)*可以分为固定数量的`b`个 bin(它们可以具有相同或不同的宽度,表示为 *w(b [HT [5] j )*,因此 *n [p] (b [j] )*对应于箱 *b [中包含的样本数 ] j]* 此时,给定测试样本 *x [t]* ,很容易理解,通过检测 bin 可以很容易地获得概率的近似值 包含 *x [t]* ,并使用以下公式:
间隔*(m,M)*可以分为固定数量的`b`个 bin(它们可以具有相同或不同的宽度,表示为 *w(b [HT [5] j )*,因此 *n [p] (b [j] )*对应于箱 *b [中包含的样本数 ] j]* 此时,给定测试样本`x[t]`,很容易理解,通过检测 bin 可以很容易地获得概率的近似值 包含`x[t]`,并使用以下公式:
![](img/e8da7698-9e4e-44f8-ab1f-0f1611b9d376.png)
......@@ -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(·)*的一些常见选择将很有帮助。
......@@ -292,17 +292,17 @@ Exponential kernel
一旦选择了核函数,就可以使用 k 最近邻方法建立概率密度函数的完全近似值。 实际上,给定数据集`X`(为简单起见, *X∈^m* ,所以这些值是实数),例如,创建起来很容易 球形树(如第 2 章,“聚类基础知识”中所述)以有效的方式对数据进行分区。 当数据结构准备就绪时,可以在带宽定义的半径范围内获得查询点`x`[`j`] 的所有邻居。 假设这样的集合是 *X [j] = {x [1] ,...,x [t] }* 和点数 是 *N [j]* 。 概率密度的估计如下:
一旦选择了核函数,就可以使用 k 最近邻方法建立概率密度函数的完全近似值。 实际上,给定数据集`X`(为简单起见, *X∈^m* ,所以这些值是实数),例如,创建起来很容易 球形树(如第 2 章,“聚类基础知识”中所述)以有效的方式对数据进行分区。 当数据结构准备就绪时,可以在带宽定义的半径范围内获得查询点`x`[`j`] 的所有邻居。 假设这样的集合是 *X [j] = {x [1] ,...,x [t] }* 和点数 是`N[j]`。 概率密度的估计如下:
![](img/93a535f7-f555-4e22-b5da-bed6fa8503ba.png)
不难证明,如果适当地选择了带宽(根据邻域中包含的样本数量而定), *p [K]* 的概率就会收敛到实际的 *] p(x)*。 换句话说,如果粒度足够大,则近似值与真实密度之间的绝对误差将收敛为零。 下图显示了 *p [K] (x [j] )*的构建过程:
不难证明,如果适当地选择了带宽(根据邻域中包含的样本数量而定),`p[K]`的概率就会收敛到实际的 *] p(x)*。 换句话说,如果粒度足够大,则近似值与真实密度之间的绝对误差将收敛为零。 下图显示了 *p [K] (x [j] )*的构建过程:
![](img/16463564-80ff-4804-8f84-3edc52ef512f.png)
Density estimation of x[j]. The Kernel functions are evaluated in each point belonging to the neighborhood of x[j]
在这一点上,自然会问为什么不为每个查询使用整个数据集而不是 k-NN 方法? 答案很简单,它基于这样的假设:可以使用局部行为轻松地插值以 *x [j]* 计算的密度函数的值(即,对于多变量 分布,以 *x [j]* 为中心的球和*远点*对估计没有影响。 因此,我们可以将计算限制为`X`的较小子集,避免包含接近零的贡献。
在这一点上,自然会问为什么不为每个查询使用整个数据集而不是 k-NN 方法? 答案很简单,它基于这样的假设:可以使用局部行为轻松地插值以`x[j]`计算的密度函数的值(即,对于多变量 分布,以`x[j]`为中心的球和*远点*对估计没有影响。 因此,我们可以将计算限制为`X`的较小子集,避免包含接近零的贡献。
在讨论如何确定最佳带宽之前,让我们展示一下先前定义的数据集的密度估计(使用 scikit-learn)。 由于我们没有任何特定的先验知识,因此我们将使用具有不同带宽(0.1、0.5 和 1.5)的高斯内核。 所有其他参数均保留为其默认值。 但是,`KernelDensity`类允许设置度量(默认为`metric='euclidean'`),数据结构(默认为`algorithm='auto'`,它根据维度在球树和 kd 树之间执行自动选择),以及 绝对公差和相对公差(分别为 0 和 10^(-8) )。 在许多情况下,无需更改默认值。 但是,对于具有特定功能的超大型数据集,例如,更改`leaf_size`参数以提高性能可能会有所帮助(如 第 2 章 中讨论的 , “聚类基础知识”)。 此外,默认度量标准不能满足所有任务的要求(例如:标准文档显示了一个基于 Haversine 距离的示例,在使用纬度和经度时可以使用该示例)。 在其他情况下,最好使用超立方体而不是球(曼哈顿距离的情况就是这样)。
......@@ -566,7 +566,7 @@ Mean normal: 0.39588 - Std: 0.25755
Mean anomalies: 0.00008 - Std: 0.00374
```
显然,当例如 *p [K] (x)< 0.05* (考虑三个标准差),我们得到 *p 时,我们可以预期到异常。 [K] (x)∈(0,0.01))*,而`Yn`的中位数约为 0.35。 这意味着至少一半的样品具有 *p [K]* *(x)> 0.35* 。 但是,通过简单的计数检查,我们得到以下信息:
显然,当例如 *p [K] (x)< 0.05* (考虑三个标准差),我们得到 *p 时,我们可以预期到异常。 [K] (x)∈(0,0.01))*,而`Yn`的中位数约为 0.35。 这意味着至少一半的样品具有`p[K]`*(x)> 0.35* 。 但是,通过简单的计数检查,我们得到以下信息:
```py
print(np.sum(Yn < 0.05))
......@@ -660,13 +660,13 @@ Bivariate plot of the source and destination bytes densities
一类**支持向量机****SVM**)的概念已由 SchölkopfB,Platt JC,Shawe-Taylor JC,Smola AJ 和 Williamson RC 提出[ *,《估计高维分布的支持》,《神经计算》,13 / 7,2001* 作为一种将新颖性分类为从真实数据生成过程中抽取的样本或异常值的方法。 让我们从我们要实现的目标开始:找到一个无监督模型,在给定样本 *x [i]* 的情况下,可以产生二进制输出 *y [i]* (通常,SVM 的结果是双极性的,分别为-1 和+1),因此,如果 *x [i]* 属于内在 *y [i] = 如果 *x [i]* 是一个异常值,则[+1]* 以及 *y [i] = -1* ,在上述论文中,假设对构成训练集的大多数内线而言,结果是`1`。 乍一看,这似乎是一个经典的监督问题。 但是,这不是因为不需要标签数据集。 实际上,给定一个包含`m`样本 *x [i] ∈^n* 的数据集`X`,模型将是 使用一个固定的类进行训练,目的是找到一个分离的超平面,该平面使`X`与原点之间的距离最大化。 首先,让我们考虑一个简单的线性情况,如下图所示:
一类**支持向量机****SVM**)的概念已由 SchölkopfB,Platt JC,Shawe-Taylor JC,Smola AJ 和 Williamson RC 提出[ *,《估计高维分布的支持》,《神经计算》,13 / 7,2001* 作为一种将新颖性分类为从真实数据生成过程中抽取的样本或异常值的方法。 让我们从我们要实现的目标开始:找到一个无监督模型,在给定样本`x[i]`的情况下,可以产生二进制输出`y[i]`(通常,SVM 的结果是双极性的,分别为-1 和+1),因此,如果`x[i]`属于内在 *y [i] = 如果`x[i]`是一个异常值,则[+1]* 以及 *y [i] = -1* ,在上述论文中,假设对构成训练集的大多数内线而言,结果是`1`。 乍一看,这似乎是一个经典的监督问题。 但是,这不是因为不需要标签数据集。 实际上,给定一个包含`m`样本 *x [i] ∈^n* 的数据集`X`,模型将是 使用一个固定的类进行训练,目的是找到一个分离的超平面,该平面使`X`与原点之间的距离最大化。 首先,让我们考虑一个简单的线性情况,如下图所示:
![](img/0b1fe0d8-9c63-476f-85b5-359a89c61f10.png)
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 通过将数据集(通过函数(·)*)投影到特征空间 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 的读者不必担心,因为我们不会讨论太多的数学细节。 要记住的最重要的一点是,不支持任何内核的通用投影会导致计算复杂性急剧增加(尤其是对于大型数据集)。
投影函数(·)*的存在保证存在于非常容易获得的条件(称为美世条件)下(即,在实子空间中,内核必须为正半 -定)。 这种选择的原因与解决问题的过程密切相关(更详细的解释可以在*机器学习算法第二版**Bonaccorso G**Packt Publishing* ,2018 年)。 但是,不熟悉 SVM 的读者不必担心,因为我们不会讨论太多的数学细节。 要记住的最重要的一点是,不支持任何内核的通用投影会导致计算复杂性急剧增加(尤其是对于大型数据集)。
*K(•,•)*的最常见选择之一是径向基函数(已经在第 3 章,“高级聚类”中进行了分析):
......@@ -692,17 +692,17 @@ Linear one-class SVM scenario: the training set is separated from the origin wit
![](img/482bfa70-c8ff-46f3-9cd6-5380f0e60c9c.png)
解决方案中涉及的数学过程使我们可以简化以下表达式,但出于我们的目的,最好保留原始表达式。 如果读者具有监督学习的基础知识,他们可以轻松地理解权重向量与样本投影之间的点积 *x [i]* 可以确定*的位置 [x] [i]* 。 实际上,如果两个向量之间的角度小于 90°(π/ 2),则点积是非负的。 当角度正好为 90°(即向量正交)时,它等于零;而当角度在 90°至 180°之间时,它等于负。 下图显示了此过程:
解决方案中涉及的数学过程使我们可以简化以下表达式,但出于我们的目的,最好保留原始表达式。 如果读者具有监督学习的基础知识,他们可以轻松地理解权重向量与样本投影之间的点积`x[i]`可以确定*的位置 [x] [i]* 。 实际上,如果两个向量之间的角度小于 90°(π/ 2),则点积是非负的。 当角度正好为 90°(即向量正交)时,它等于零;而当角度在 90°至 180°之间时,它等于负。 下图显示了此过程:
![](img/b17e49a6-e73b-4799-bbb4-75604fb98847.png)
Decision process in SVM
权向量正交于分离超平面。 样本`x`[`i`] 被确定为一个惯常值,因为点积为正且大于阈值*ρ*。 相反, **x [j]** 被标记为异常值,因为决策函数的符号为负。 术语*ξ [i] (ξ [i] ≥0)*被称为松弛变量,它们的引入是为了使异常值和 内线 实际上,如果这些变量都等于零(并且为简单起见, *ρ= 1* ),则优化问题的条件变为:
权向量正交于分离超平面。 样本`x`[`i`] 被确定为一个惯常值,因为点积为正且大于阈值*ρ*。 相反, *`x[j]`* 被标记为异常值,因为决策函数的符号为负。 术语*ξ [i] (ξ [i] ≥0)*被称为松弛变量,它们的引入是为了使异常值和 内线 实际上,如果这些变量都等于零(并且为简单起见, *ρ= 1* ),则优化问题的条件变为:
![](img/5a35ab70-84af-4bd0-aec6-dc88a81ec8ad.png)
这意味着必须将所有训练样本视为内部值,因此必须选择分隔的超平面,以便所有 *x [i]* 都在同一侧。 但是,松弛变量的使用通过定义软边界可以提供更大的灵活性。 每个训练样本都与变量 *ξ [i]* 相关联,当然,问题在于将其最小化。 但是,通过这种技巧,即使继续将其识别为离群值,也可以将一些边界样本放置在超平面的另一侧(足够靠近它)。 要考虑的最后一个元素是此上下文中最重要的元素,并且涉及超参数*ν∈`(0, 1)`*。 在上述论文中,作者证明,每当 *ρ≠0 时,ν*都可以解释为训练样本分数的上限,实际上是离群值。 在本章开始时,我们已经指出,在新颖性检测问题中,数据集必须是干净的。 不幸的是,并非总是如此。 因此,`v`和松弛变量的联合使用使我们也能够处理包含一小部分离群值的数据集。 就概率而言,如果`X`是从部分被噪声破坏的数据生成过程中提取的,则*ν*是在`X`中发现异常值的概率 ]。
这意味着必须将所有训练样本视为内部值,因此必须选择分隔的超平面,以便所有`x[i]`都在同一侧。 但是,松弛变量的使用通过定义软边界可以提供更大的灵活性。 每个训练样本都与变量`x[i]`相关联,当然,问题在于将其最小化。 但是,通过这种技巧,即使继续将其识别为离群值,也可以将一些边界样本放置在超平面的另一侧(足够靠近它)。 要考虑的最后一个元素是此上下文中最重要的元素,并且涉及超参数*ν∈`(0, 1)`*。 在上述论文中,作者证明,每当 *ρ≠0 时,ν*都可以解释为训练样本分数的上限,实际上是离群值。 在本章开始时,我们已经指出,在新颖性检测问题中,数据集必须是干净的。 不幸的是,并非总是如此。 因此,`v`和松弛变量的联合使用使我们也能够处理包含一小部分离群值的数据集。 就概率而言,如果`X`是从部分被噪声破坏的数据生成过程中提取的,则*ν*是在`X`中发现异常值的概率 ]。
现在,基于一个用元组(年龄,身高)识别的学生数据集分析一个二维示例。 我们将从二元高斯分布中得出 2,000 个内点,并均匀采样 200 个测试点:
......@@ -785,7 +785,7 @@ Bidimensional random partitioning. On the left, an inlier is isolated. On the ri
![](img/63000df1-9ce2-4ed6-910d-da875a7cb63b.png)
在上一个公式中,`m`是属于训练集`X`*avg(h(x [i] ))*的样本数 是 *x [i]* 并考虑所有树木的平均路径长度, *c(m)*是仅取决于 *m [* 。 当 *s(x [i] ,m)→1* 时,样本 *x [i]* 被识别为异常。 因此,由于 *s (•* *)*的界限介于 0 和 1 之间,如果我们将阈值设为 0.5,则正常样本与 *s(x [i]* *,m)< < 0.5*
在上一个公式中,`m`是属于训练集`X`*avg(h(x [i] ))*的样本数 是`x[i]`并考虑所有树木的平均路径长度, *c(m)*是仅取决于 *m [* 。 当 *s(x [i] ,m)→1* 时,样本`x[i]`被识别为异常。 因此,由于 *s (•* *)*的界限介于 0 和 1 之间,如果我们将阈值设为 0.5,则正常样本与 *s(x [i]* *,m)< < 0.5*
现在让我们考虑一下葡萄酒数据集,其中包含 178 个样本 *x [i] ∈ℜ^(13)* ,其中每个功能都是特定的化学性质(例如,酒精,苹果酸 酸,灰分等),并训练一个隔离林来检测一种新葡萄酒是否可以被认为是一种异常值(例如,现有品牌的变体)还是异常值,因为它的化学特性与每种 现有样本。 第一步包括加载和规范化数据集:
......
......@@ -68,7 +68,7 @@
![](img/94f59483-b3b0-42b8-881b-8f88e1a42b51.png)
这样的矩阵是对称的且是正半定的(如果您不熟悉这些概念并不重要,但是它们对于证明以下步骤非常重要),因此其特征向量构成了正交标准。 快速回顾一下,如果`A`是方阵,则将 *v [i]* 的向量称为与特征值*λ [i]* ,如果满足以下条件:
这样的矩阵是对称的且是正半定的(如果您不熟悉这些概念并不重要,但是它们对于证明以下步骤非常重要),因此其特征向量构成了正交标准。 快速回顾一下,如果`A`是方阵,则将`v[i]`的向量称为与特征值`v[i]`,如果满足以下条件:
![](img/84f43f25-9b2e-4994-b580-27d4922e5c70.png)
......@@ -112,7 +112,7 @@ Principal components of a bidimensional dataset; the first principal component l
![](img/2a969f33-17b7-4f4b-b322-238daea5f0e2.png)
因此,通过使用 *U [k]* (仅包含顶部`k`特征向量)和*Λ [k]* ](仅包含顶部的`k`特征值),我们可以直接获得较低维的转换数据集(具有`k`分量),如下所示:
因此,通过使用`U[k]`(仅包含顶部`k`特征向量)和`U[k]`](仅包含顶部的`k`特征值),我们可以直接获得较低维的转换数据集(具有`k`分量),如下所示:
![](img/6d9ea074-b25a-4353-8526-ec0675049126.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]* ); 但是,下一个差异仍然很高,虽然对应 *λ [6]* 突然下降。 在这一点上,趋势几乎是稳定的(除了一些残余振荡),直到 *λ [11]* 为止,然后趋势开始迅速下降,趋于趋于零 。 由于我们仍然希望获得正方形图像,因此我们将选择 *k = 16* (相当于将每一边除以四)。 在另一个任务中,您可以选择 *k = 15* ,甚至 *k = 8* ; 但是,为了更好地理解降维导致的误差,也将有助于分析所解释的方差。 因此,让我们从执行 PCA 开始:
可以看出,第一主成分的差异非常大,与第四主成分( *λ [4] -λ [3]* ); 但是,下一个差异仍然很高,虽然对应`$1[$2]`突然下降。 在这一点上,趋势几乎是稳定的(除了一些残余振荡),直到 *λ [11]* 为止,然后趋势开始迅速下降,趋于趋于零 。 由于我们仍然希望获得正方形图像,因此我们将选择 *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(·)*的值。
一些常见的内核如下:
......@@ -342,7 +342,7 @@ Original dataset (left); kernel PCA projected version (right)
![](img/f30e647b-5fcb-4fb0-a0fc-26e5698a673d.png)
因此,我们现在假设样本 *x [i]* 是一组高斯潜变量加上一个额外的异方差噪声项的组合。 由于潜在变量的维数较低,因此问题与标准 PCA 非常相似,主要区别在于,我们现在考虑了异方差噪声(当然,`n`项也可以为 null,或者 同调)。 因此,当确定分量(即潜在变量)时,模型中将包括不同噪声方差的影响,最终效果是部分滤波(降噪)。 在上述论文中,作者提出了一种优化算法,该算法形式上不是很复杂,但是需要许多数学操作(因此,我们省略了任何证明)。 此方法基于**期望最大化****EM**)算法,该算法有助于查找使对数似然性最大化的参数集。 在本书中,我们无需讨论所有数学细节(可在原始论文中找到),而是检查该方法的属性并将结果与​​标准 PCA 进行比较。
因此,我们现在假设样本`x[i]`是一组高斯潜变量加上一个额外的异方差噪声项的组合。 由于潜在变量的维数较低,因此问题与标准 PCA 非常相似,主要区别在于,我们现在考虑了异方差噪声(当然,`n`项也可以为 null,或者 同调)。 因此,当确定分量(即潜在变量)时,模型中将包括不同噪声方差的影响,最终效果是部分滤波(降噪)。 在上述论文中,作者提出了一种优化算法,该算法形式上不是很复杂,但是需要许多数学操作(因此,我们省略了任何证明)。 此方法基于**期望最大化****EM**)算法,该算法有助于查找使对数似然性最大化的参数集。 在本书中,我们无需讨论所有数学细节(可在原始论文中找到),而是检查该方法的属性并将结果与​​标准 PCA 进行比较。
让我们首先加载 Olivetti 人脸数据集,将其零居中,然后创建一个异方差嘈杂的版本,如下所示:
......@@ -411,15 +411,15 @@ Factor Analysis log-likelihood(Xnz): 1459.2912218162423
![](img/6d321ec9-2ff5-4b21-8c88-e47d435bf51a.png)
在前面的表达式中,系数*α [i]* 几乎总是不为零,因此所有组件都参与重建过程。 出于降维的目的,这不是问题,因为为了限制它们,我们对每个组件解释的方差更感兴趣。 但是,在某些任务下,分析每个较大的**建筑原子**很有帮助,并假设每个向量都可以表示为它们的稀疏组合。 最经典的例子是文本语料库,其中词典包含的术语比每个文档中涉及的术语更多。 这些类型的模型通常称为**字典学习**算法,因为原子集定义了一种字典,其中包含可用于创建新样本的所有单词。 当原子数`k`大于样品的维数`n`时,该字典被称为**过度完成**,其表示为 常稀疏。 相反,当 *k < n* 时,字典被称为**未完全完成,**并且向量需要更密集。
在前面的表达式中,系数`$1[$2]`几乎总是不为零,因此所有组件都参与重建过程。 出于降维的目的,这不是问题,因为为了限制它们,我们对每个组件解释的方差更感兴趣。 但是,在某些任务下,分析每个较大的**建筑原子**很有帮助,并假设每个向量都可以表示为它们的稀疏组合。 最经典的例子是文本语料库,其中词典包含的术语比每个文档中涉及的术语更多。 这些类型的模型通常称为**字典学习**算法,因为原子集定义了一种字典,其中包含可用于创建新样本的所有单词。 当原子数`k`大于样品的维数`n`时,该字典被称为**过度完成**,其表示为 常稀疏。 相反,当 *k < n* 时,字典被称为**未完全完成,**并且向量需要更密集。
通过对函数的最小化,对解决方案的 *L [1]* 范数施加惩罚,可以轻松解决此类学习问题。 这种限制导致稀疏性的原因不在本书的讨论范围之内,但是有兴趣的人可以在 *Mastering Machine Learning Algorithms* *Bonaccorso G.* 中找到更长的讨论范围。 *Packt 出版物*,2018 年。
通过对函数的最小化,对解决方案的`L[1]`范数施加惩罚,可以轻松解决此类学习问题。 这种限制导致稀疏性的原因不在本书的讨论范围之内,但是有兴趣的人可以在 *Mastering Machine Learning Algorithms* *Bonaccorso G.* 中找到更长的讨论范围。 *Packt 出版物*,2018 年。
字典学习(以及稀疏 PCA)的问题可以正式表示为:
![](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 示例中显示:
......@@ -462,7 +462,7 @@ Absolute coefficients for the sparse transformation of the digit X[0]
![](img/f554b0eb-d763-49ca-a7c2-6916ff5e9523.png)
由于这在通常还需要稀疏性的情况下通常是不可接受的(而且,为了在更改解决方案以满足特定要求时具有更大的灵活性),因此通常通过在两个 Frobenius 上加点惩罚来表达该问题(例如在 scikit-learn 中) ( *L [2]* 的矩阵扩展)和 *L [1]* 规范(例如,在 ElasticNet 中):
由于这在通常还需要稀疏性的情况下通常是不可接受的(而且,为了在更改解决方案以满足特定要求时具有更大的灵活性),因此通常通过在两个 Frobenius 上加点惩罚来表达该问题(例如在 scikit-learn 中) (`L[2]`的矩阵扩展)和`L[1]`规范(例如,在 ElasticNet 中):
![](img/b12f42f8-c6ae-4a84-b399-061168e10d1c.png)
......@@ -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),并尝试找到隔离固定数量的结构零件所必需的正确参数( 例如,对于面部,它们可以是眼睛,鼻子和嘴巴。
......@@ -589,7 +589,7 @@ ica.fit(faces['data'])
现在,我们将考虑另一种分解方法,这种分解方法在处理文本文档(即 NLP)时非常有用。 理论部分不是很容易,因为它需要对概率论和统计学习有深入的了解(可以在原始论文 *Latent Dirichlet Allocation,《机器学习研究杂志》* *中找到 Blei D.**Ng A.**和 Jordan M.* , 3,(2003)993-1022); 因此,我们将只讨论主要元素,而没有任何数学参考(*机器学习算法第二版, Bonaccorso,G。,* [HTG14 [Packt Publications ,2018 年)。 让我们考虑一组文本文件 *d [j]* (称为**语料库**),其原子(或组成部分)为单词 *w []我]*
现在,我们将考虑另一种分解方法,这种分解方法在处理文本文档(即 NLP)时非常有用。 理论部分不是很容易,因为它需要对概率论和统计学习有深入的了解(可以在原始论文 *Latent Dirichlet Allocation,《机器学习研究杂志》* *中找到 Blei D.**Ng A.**和 Jordan M.* , 3,(2003)993-1022); 因此,我们将只讨论主要元素,而没有任何数学参考(*机器学习算法第二版, Bonaccorso,G。,* [HTG14 [Packt Publications ,2018 年)。 让我们考虑一组文本文件`d[j]`(称为**语料库**),其原子(或组成部分)为单词 *w []我]*
![](img/1bd90156-21af-498a-a042-cfa962bb7146.png)
......@@ -597,7 +597,7 @@ ica.fit(faces['data'])
![](img/a874f7dd-cdea-4205-bde1-c602e0d85c9d.png)
我们还可以陈述以下不等式( *N(•)*计算集合中元素的数量):
我们还可以陈述以下不等式( *N(·)*计算集合中元素的数量):
![](img/c4808f1e-dcfe-4611-85da-902b9260a62c.png)
......@@ -605,11 +605,11 @@ ica.fit(faces['data'])
![](img/1efe3b99-cd8a-4aed-8c79-74a2fd406559.png)
现在,让我们考虑将文档按主题进行语义分组,即 *t [k]* ,并假设每个主题都具有少量奇特词:
现在,让我们考虑将文档按主题进行语义分组,即`t[k]`,并假设每个主题都具有少量奇特词:
![](img/4e47e13c-2fba-4f37-9b1b-7105ac0113fe.png)
这意味着主题之间的单词分布也很少。 因此,我们具有完整的联合概率(单词,主题),并且我们想要确定条件概率 *p(w [i] | t [k] )**p(t [k] | w [i] )*。 换句话说,给定一个文档,它是术语的集合(每个术语都有边际概率 *p( w [i]* )) 计算此类文档属于特定主题的概率。 由于一个文档被轻柔地分配给所有主题(也就是说,它可以在不同程度上属于一个以上的主题),因此我们需要考虑一个稀疏的主题文档分布,其中的主题组合(*θ [i]* )被绘制为:
这意味着主题之间的单词分布也很少。 因此,我们具有完整的联合概率(单词,主题),并且我们想要确定条件概率 *p(w [i] | t [k] )**p(t [k] | w [i] )*。 换句话说,给定一个文档,它是术语的集合(每个术语都有边际概率 *p( w [i]* )) 计算此类文档属于特定主题的概率。 由于一个文档被轻柔地分配给所有主题(也就是说,它可以在不同程度上属于一个以上的主题),因此我们需要考虑一个稀疏的主题文档分布,其中的主题组合(`$1[$2]`)被绘制为:
![](img/e168ebe0-4213-45f5-aa01-83a00d2af0b0.png)
......
......@@ -54,15 +54,15 @@
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)
因此,完整的自动编码器是一个复合函数,在给定输入样本 *x [i]* 的情况下,它提供了最佳的输出重构:
因此,完整的自动编码器是一个复合函数,在给定输入样本`x[i]`的情况下,它提供了最佳的输出重构:
![](img/783c61af-8b57-4bb6-8e6a-cca350d5a8f7.png)
......@@ -70,11 +70,11 @@ 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 [数据](·)**q(·)*之间的 Kullback-Leibler 散度:
![](img/889fb37b-214d-4bd3-9e6d-d74c5343ae91.png)
......@@ -127,7 +127,7 @@ graph = tf.Graph()
* 具有 32 个(3×3)滤波器,(1×1)跨距,ReLU 激活和相同填充的 2D 转置卷积
* 2D 转置卷积,带有 1(3×3)过滤器,(1×1)跨步,Sigmoid 激活,以及相同的填充
损失函数基于重构图像和原始图像之间差异的 *L [2]* 范数。 优化器是 Adam,学习率为*η= 0.001* 。 TensorFlow DAG 的编码器部分如下:
损失函数基于重构图像和原始图像之间差异的`L[2]`范数。 优化器是 Adam,学习率为*η= 0.001* 。 TensorFlow DAG 的编码器部分如下:
```py
import tensorflow as tf
......@@ -298,7 +298,7 @@ Sample output of the deep convolutional autoencoder
![](img/6b4e6663-04c2-47c6-af95-153f0cefa172.png)
在这种情况下,自动编码器的目标是消除噪声项并恢复原始样本 *x [i]* 。 从数学角度来看,标准和**去噪自动编码器**之间没有特别的区别; 但是,重要的是要考虑此类模型的容量需求。 由于他们必须恢复原始样本,因此在输入受损(其特征占用更大的样本空间)的情况下,层的数量和尺寸可能比标准自动编码器要大。 当然,考虑到复杂性,没有一些测试就不可能有清晰的洞察力。 因此,我强烈建议从较小的模型开始,然后增加容量,直到最佳成本函数达到合适的值为止。 为了增加噪音,有几种可能的策略:
在这种情况下,自动编码器的目标是消除噪声项并恢复原始样本`x[i]`。 从数学角度来看,标准和**去噪自动编码器**之间没有特别的区别; 但是,重要的是要考虑此类模型的容量需求。 由于他们必须恢复原始样本,因此在输入受损(其特征占用更大的样本空间)的情况下,层的数量和尺寸可能比标准自动编码器要大。 当然,考虑到复杂性,没有一些测试就不可能有清晰的洞察力。 因此,我强烈建议从较小的模型开始,然后增加容量,直到最佳成本函数达到合适的值为止。 为了增加噪音,有几种可能的策略:
* 破坏每个批量中的样品(贯穿整个时期)。
* 将噪声层用作编码器的输入 1。
......@@ -395,11 +395,11 @@ Noisy samples (upper row); denoised images (lower row)
标准自动编码器生成的代码通常很密集; 但是,如第 7 章,“降维和成分分析”中所讨论的,有时,最好使用字典过于完整和稀疏编码。 实现此目标的主要策略是简单地在成本函数上添加 *L [1]* 罚款(在代码层上):
标准自动编码器生成的代码通常很密集; 但是,如第 7 章,“降维和成分分析”中所讨论的,有时,最好使用字典过于完整和稀疏编码。 实现此目标的主要策略是简单地在成本函数上添加`L[1]`罚款(在代码层上):
![](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)
......@@ -407,7 +407,7 @@ Noisy samples (upper row); denoised images (lower row)
![](img/f27a0c44-85f3-4b2f-accc-796d9b3c7e98.png)
最终效果与使用 *L [1]* 惩罚所获得的效果没有太大不同。 实际上,在这两种情况下,模型都被迫学习次优表示,还试图最小化目标(如果单独考虑)将导致输出代码始终为空。 因此,全部成本函数将达到最小,从而保证重构能力和稀疏性(必须始终与代码长度保持平衡)。 因此,通常,代码越长,可以实现的稀疏度就越大。
最终效果与使用`L[1]`惩罚所获得的效果没有太大不同。 实际上,在这两种情况下,模型都被迫学习次优表示,还试图最小化目标(如果单独考虑)将导致输出代码始终为空。 因此,全部成本函数将达到最小,从而保证重构能力和稀疏性(必须始终与代码长度保持平衡)。 因此,通常,代码越长,可以实现的稀疏度就越大。
......@@ -417,7 +417,7 @@ Noisy samples (upper row); denoised images (lower row)
在此示例中,我们想通过使用 *L [1]* 罚分来提高代码的稀疏性。 DAG 和训练过程与主要示例完全相同,唯一的区别是`loss`功能,现在变为:
在此示例中,我们想通过使用`L[1]`罚分来提高代码的稀疏性。 DAG 和训练过程与主要示例完全相同,唯一的区别是`loss`功能,现在变为:
```py
...
......@@ -450,7 +450,7 @@ Epoch 600) Average loss per sample: 0.8058895015716553 (Code mean: 0.02853894419
![](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 [数据]* 的样本。 为了解决这个问题,作者提出了一种变分方法,我们将简要介绍一下(上述论文中有完整的解释)。 假设标准自动编码器的结构,我们可以通过将编码器建模为 *q(z | x;θ [q] )*来引入代理参数化分布。 此时,我们可以计算 *q(·)*与实际条件概率 *p(z | x;θ)*:之间的 Kullback-Leibler 散度
![](img/eaf4410d-472c-4bf6-8cb2-7d5839d84741.png)
......@@ -697,7 +697,7 @@ Sanger 的网络模型由 Sanger 提出(在 Sanger,TD,*单层线性前馈
![](img/eb954467-be52-42bb-a06d-e3d8cd62dd8c.png)
引入此规则是为了解决标准 Hebbian 神经元无限增长的问题。 实际上,很容易理解,如果点积 *w^T x* 为正,Δw 将通过增加`w`的幅度来更新权重。 和更多。 因此,在进行大量迭代之后,模型可能会遇到溢出。 奥雅定律通过引入一种自动限制来克服这个问题,该自动限制迫使重量幅度饱和而不影响神经元找到第一个主要成分的方向的能力。 实际上,用 *w [k]* 表示第`k`<sup class="calibre27"></sup>迭代之后的权重向量,可以证明以下内容:
引入此规则是为了解决标准 Hebbian 神经元无限增长的问题。 实际上,很容易理解,如果点积 *w^T x* 为正,Δw 将通过增加`w`的幅度来更新权重。 和更多。 因此,在进行大量迭代之后,模型可能会遇到溢出。 奥雅定律通过引入一种自动限制来克服这个问题,该自动限制迫使重量幅度饱和而不影响神经元找到第一个主要成分的方向的能力。 实际上,用`w[k]`表示第`k`<sup class="calibre27"></sup>迭代之后的权重向量,可以证明以下内容:
![](img/09e7fdb7-16a9-4ec9-87ba-717623f9c860.png)
......@@ -711,25 +711,25 @@ Structure of a generic Sanger's network
![](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)
此时, *w [2]* 的正交分量等于:
此时,`w[2]`的正交分量等于:
![](img/eb256bb9-cc11-492f-b9b7-5a0d54799d6a.png)
第三部分必须正交于 *w [1]**w [2]* ,因此必须对所有 *n [* 单位,直到最终收敛。 而且,我们现在正在使用已经融合的组件,而是使用并行更新的动态系统。 因此,有必要将此程序纳入学习规则,如下所示:
第三部分必须正交于`w[1]``w[2]`,因此必须对所有 *n [* 单位,直到最终收敛。 而且,我们现在正在使用已经融合的组件,而是使用并行更新的动态系统。 因此,有必要将此程序纳入学习规则,如下所示:
![](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)
......@@ -832,7 +832,7 @@ Final covariance matrix: [[ 2.89978372e+01 -2.31873305e-13]
Final configuration of the Sanger's network
第一个主成分对应的权重是 *w [0]* ,它是最大的,而 *w [1]* 是第二个成分。 我邀请您使用高维数据集测试网络,并根据协方差矩阵的 SVD 或本征分解将性能与标准算法进行比较。
第一个主成分对应的权重是`w[0]`,它是最大的,而`w[1]`是第二个成分。 我邀请您使用高维数据集测试网络,并根据协方差矩阵的 SVD 或本征分解将性能与标准算法进行比较。
......@@ -873,7 +873,7 @@ Structure of a generic Rubner-Tavan's network
前一个公式的第一项*-η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*
以矩阵形式,权重 *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)
......@@ -1013,7 +1013,7 @@ Final covariance matrix: [[28.9963492 0.31487817]
Structure of a generic Restricted Boltzmann Machine
神经元 *x [i]* 是可观察到的(也就是说,它们代表 RBM 必须学习的过程生成的向量),而 *h [j]* 是潜在的(也就是说,它们是隐藏的并且有助于 *x [i]* 假定的值)。 由于没有任何进一步的细节,我们需要说这个模型具有 **Markov 随机场****MRF**)的结构,这是由于相同神经元之间没有连接 层(即描述网络的图是二分图)。 MRF 的一个重要特性是可以用吉布斯分布对整个联合概率 *p(x,h;θ)*进行建模:
神经元`x[i]`是可观察到的(也就是说,它们代表 RBM 必须学习的过程生成的向量),而`h[j]`是潜在的(也就是说,它们是隐藏的并且有助于`x[i]`假定的值)。 由于没有任何进一步的细节,我们需要说这个模型具有 **Markov 随机场****MRF**)的结构,这是由于相同神经元之间没有连接 层(即描述网络的图是二分图)。 MRF 的一个重要特性是可以用吉布斯分布对整个联合概率 *p(x,h;θ)*进行建模:
![](img/c997f7bc-603a-4fd5-8bdf-6ab3fad3a30c.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 [数据]* ,必须优化 RBM,以便 *p(x;* *θ)的可能性* 最大化。 跳过所有中间步骤(可以在前面的文章中找到),可以证明以下几点:
![](img/e1cdc672-50a0-425c-8811-603832e1b5dd.png)
在先前的公式中,(•)*是 Sigmoid 函数。 给定这两个表达式,可以得出(省略操作)对数似然率相对于所有可学习变量的梯度:
在先前的公式中,(·)*是 Sigmoid 函数。 给定这两个表达式,可以得出(省略操作)对数似然率相对于所有可学习变量的梯度:
![](img/145060cb-3837-4aa0-922f-ec99defbc34a.png)
......
......@@ -457,11 +457,11 @@ 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)
在这种特定情况下,区分符通常被称为批判者,因此 *f(x;θ [c] )*扮演着这个角色。 由于这样的函数必须是 L-Lipschitz,因此作者建议在应用校正后就剪切所有变量 *θ [c]*
在这种特定情况下,区分符通常被称为批判者,因此 *f(x;θ [c] )*扮演着这个角色。 由于这样的函数必须是 L-Lipschitz,因此作者建议在应用校正后就剪切所有变量`$1[$2]`
![](img/c6e68853-8d2d-4ea5-9670-8fe1ad4803ac.png)
......@@ -756,9 +756,9 @@ WGAN 不会陷入模式崩溃,但是不同区域的强烈分离使模型无法
Mexican hat selectivity developed by an SOM
在初始步骤中,许多单元会响应相同的输入模式,但是我们已经可以观察到 *x [i]* 附近的优势。 但是,立即选择此设备可能会导致收敛过早,从而导致准确性下降。 这就是为什么获胜单位周围的半径逐渐减小的原因(观察到一种称为**墨西哥帽**的现象,因为其形状特殊)。 当然,在此过程中,最初的获胜单位无法保持稳定; 因此,重要的是要避免半径的快速减小,以免引起其他潜在单位被引出。 当呈现特定模式时,当神经元保持最活跃时,它将被略微转换为实际的赢家,因此,这将花费全部,因为不会再加强任何其他单元。
在初始步骤中,许多单元会响应相同的输入模式,但是我们已经可以观察到`x[i]`附近的优势。 但是,立即选择此设备可能会导致收敛过早,从而导致准确性下降。 这就是为什么获胜单位周围的半径逐渐减小的原因(观察到一种称为**墨西哥帽**的现象,因为其形状特殊)。 当然,在此过程中,最初的获胜单位无法保持稳定; 因此,重要的是要避免半径的快速减小,以免引起其他潜在单位被引出。 当呈现特定模式时,当神经元保持最活跃时,它将被略微转换为实际的赢家,因此,这将花费全部,因为不会再加强任何其他单元。
一些非常著名和有用的 SOM 是 **Kohonen 映射**(首次出现在*拓扑正确特征图的自组织形成, Kohonen T。,生物控制论,[HTG5 [1982 年 1 月 43 日]。 它们的结构像投影到由`N`神经元组成的二维流形(最经典的情况是平坦的二维区域)上的平面一样。 从现在开始,为简单起见,我们将考虑映射到包含 *k×p* 单位的矩阵的曲面,每个曲面均使用突触权重 *w [ij] ∈model 进行建模^n* (尺寸与输入模式相同, *x [i] ∈^n* )。 因此,权重矩阵变为 *W(i,j)∈^(k ×p×n)* 。 从实际的角度来看,在此模型中,由于不执行内部转换,因此神经元通过相应的权重向量表示。 当呈现模式 *x [i]* 时,获胜神经元 *n [w]* (作为元组)的确定如下: 使用以下规则:*
一些非常著名和有用的 SOM 是 **Kohonen 映射**(首次出现在*拓扑正确特征图的自组织形成, Kohonen T。,生物控制论,[HTG5 [1982 年 1 月 43 日]。 它们的结构像投影到由`N`神经元组成的二维流形(最经典的情况是平坦的二维区域)上的平面一样。 从现在开始,为简单起见,我们将考虑映射到包含 *k×p* 单位的矩阵的曲面,每个曲面均使用突触权重 *w [ij] ∈model 进行建模^n* (尺寸与输入模式相同, *x [i] ∈^n* )。 因此,权重矩阵变为 *W(i,j)∈^(k ×p×n)* 。 从实际的角度来看,在此模型中,由于不执行内部转换,因此神经元通过相应的权重向量表示。 当呈现模式`x[i]`时,获胜神经元`n[w]`(作为元组)的确定如下: 使用以下规则:*
![](img/1d22e1e2-5d4d-472e-90eb-af603c0116eb.png)
......@@ -766,7 +766,7 @@ Mexican hat selectivity developed by an SOM
![](img/1cc30811-63e7-4ceb-a338-df23c28ca834.png)
初始方差(与最大邻域成比例)为*σ [0]* ,并且根据时间常数*τ*呈指数衰减。 根据经验,当 *t >4τ*时,*σ(t)≈0* ,因此 *τ*应该设置为 1/4 调整阶段的训练时期数的<sup class="calibre27"></sup>*τ= 0.25•t [adj]* 。 一旦定义了邻域,就可以根据它们与每个样本的不相似性来更新所有成员的权重, *x [i]*
初始方差(与最大邻域成比例)为`x[i]`,并且根据时间常数*τ*呈指数衰减。 根据经验,当 *t >4τ*时,*σ(t)≈0* ,因此 *τ*应该设置为 1/4 调整阶段的训练时期数的<sup class="calibre27"></sup>*τ= 0.25•t [adj]* 。 一旦定义了邻域,就可以根据它们与每个样本的不相似性来更新所有成员的权重,`x[i]`
![](img/13a00879-7f4e-4444-a3e9-7cb93b92e001.png)
......
......@@ -82,7 +82,7 @@
1. 硬聚类基于固定分配; 因此,样本 *x [i]* 将始终属于单个群集。 相反,相对于每个聚类,软聚类返回一个度向量,该向量的元素表示隶属度(例如,(0.1、0.7、0.05、0.15))。
1. 硬聚类基于固定分配; 因此,样本`x[i]`将始终属于单个群集。 相反,相对于每个聚类,软聚类返回一个度向量,该向量的元素表示隶属度(例如,(0.1、0.7、0.05、0.15))。
2. 没有; 模糊 c 均值是 K 均值的扩展,它不适用于非凸几何。 但是,软分配可以评估相邻群集的影响。
3. 主要假设是,数据集是从可以用多个高斯分布的加权和有效地近似的分布中得出的。
4. 这意味着第一个模型的参数数量是第二个模型的两倍。
......@@ -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.
先完成此消息的编辑!
想要评论请 注册