Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
安浅Y
apachecn-dl-zh
提交
2ff20227
A
apachecn-dl-zh
项目概览
安浅Y
/
apachecn-dl-zh
与 Fork 源项目一致
Fork自
OpenDocCN / apachecn-dl-zh
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
A
apachecn-dl-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
2ff20227
编写于
12月 09, 2020
作者:
W
wizardforcel
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
2020-12-09 22:38:52
上级
7a10ac67
变更
10
展开全部
隐藏空白更改
内联
并排
Showing
10 changed file
with
66 addition
and
65 deletion
+66
-65
home
home
+1
-0
new/handson-unsup-learn-py/02.md
new/handson-unsup-learn-py/02.md
+2
-2
new/handson-unsup-learn-py/03.md
new/handson-unsup-learn-py/03.md
+28
-28
new/handson-unsup-learn-py/04.md
new/handson-unsup-learn-py/04.md
+1
-1
new/handson-unsup-learn-py/05.md
new/handson-unsup-learn-py/05.md
+4
-4
new/handson-unsup-learn-py/06.md
new/handson-unsup-learn-py/06.md
+5
-5
new/handson-unsup-learn-py/07.md
new/handson-unsup-learn-py/07.md
+2
-2
new/handson-unsup-learn-py/08.md
new/handson-unsup-learn-py/08.md
+12
-12
new/handson-unsup-learn-py/09.md
new/handson-unsup-learn-py/09.md
+10
-10
new/handson-unsup-learn-py/10.md
new/handson-unsup-learn-py/10.md
+1
-1
未找到文件。
home
@
d87cc883
Subproject commit d87cc88314aa5a9fa4b7d0e80e34b86e87ab49ce
new/handson-unsup-learn-py/02.md
浏览文件 @
2ff20227
...
...
@@ -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
)
...
...
new/handson-unsup-learn-py/03.md
浏览文件 @
2ff20227
此差异已折叠。
点击以展开。
new/handson-unsup-learn-py/04.md
浏览文件 @
2ff20227
...
...
@@ -258,7 +258,7 @@ plt.show()
换句话说,
*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
)
...
...
new/handson-unsup-learn-py/05.md
浏览文件 @
2ff20227
...
...
@@ -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
)
...
...
@@ -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
)
...
...
@@ -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`
的数据也很可能生成。
在此示例中,我们要在半监督场景中采用高斯混合模型。 这意味着我们有一个既包含标记样本又包含未标记样本的数据集,并且我们希望将标记样本用作基础事实并找出可以生成整个数据集的最佳混合。 当标记非常大的数据集非常困难且昂贵时,这种情况非常普遍。 为了克服这个问题,可以标记统一采样的子集并训练生成模型,该模型能够以最大可能的可能性生成剩余样本。
...
...
new/handson-unsup-learn-py/06.md
浏览文件 @
2ff20227
...
...
@@ -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
)
...
...
@@ -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(·)`
的一些常见选择将很有帮助。
...
...
@@ -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 章,“高级聚类”中进行了分析):
...
...
new/handson-unsup-learn-py/07.md
浏览文件 @
2ff20227
...
...
@@ -295,7 +295,7 @@ Original dataset (left); PCA projected version (right)
![](
img/d4f72e86-05e8-4d2e-8030-cc028ce9c8c1.png
)
换句话说,我们可以通过仅计算每两个点的内核,而不是执行一个点积来计算在高维空间中的主成分上的投影,该点积在计算后需要
`n`
乘法
*f(·)*
的值。
换句话说,我们可以通过仅计算每两个点的内核,而不是执行一个点积来计算在高维空间中的主成分上的投影,该点积在计算后需要
`n`
乘法
`f(·)`
的值。
一些常见的内核如下:
...
...
@@ -597,7 +597,7 @@ ica.fit(faces['data'])
![](
img/a874f7dd-cdea-4205-bde1-c602e0d85c9d.png
)
我们还可以陈述以下不等式(
*N(·)*
计算集合中元素的数量):
我们还可以陈述以下不等式(
`N(·)`
计算集合中元素的数量):
![](
img/c4808f1e-dcfe-4611-85da-902b9260a62c.png
)
...
...
new/handson-unsup-learn-py/08.md
浏览文件 @
2ff20227
...
...
@@ -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
)
...
...
@@ -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
)
...
...
@@ -729,7 +729,7 @@ Structure of a generic Sanger's network
![](
img/9aa37ec6-8cf8-4828-a845-ec719720409a.png
)
*Tril(·)*
函数计算方阵的下三角部分。 收敛性证明并非无关紧要,但在
*η*
单调减少的温和条件下,可以看到该模型如何以降序收敛到第一个
`n`
主成分。
`Tril(·)`
函数计算方阵的下三角部分。 收敛性证明并非无关紧要,但在
*η*
单调减少的温和条件下,可以看到该模型如何以降序收敛到第一个
`n`
主成分。
![](
img/9493c073-860c-40de-a254-d938060914d8.png
)
...
...
@@ -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
)
...
...
@@ -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
)
...
...
new/handson-unsup-learn-py/09.md
浏览文件 @
2ff20227
...
...
@@ -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
)
...
...
new/handson-unsup-learn-py/10.md
浏览文件 @
2ff20227
...
...
@@ -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.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录