diff --git a/new/ai-py/04.md b/new/ai-py/04.md index 4ef45f97e8e021587feb4a81f4d49da619f79516..d2796a4cba4f8dbed241aa4a4a2c2a2fa7d6132a 100644 --- a/new/ai-py/04.md +++ b/new/ai-py/04.md @@ -134,7 +134,7 @@ print(scores.nlargest(5,'score')) #print the 5 best features ![](img/B15441_04_02.png) -图 2:最佳特征图 +图 2:最佳特征映射 ## 相关性热图 diff --git a/new/ai-py/14.md b/new/ai-py/14.md index d7cad8f2347b8a8aa4f55f115611c6d8835ae410..ec55fdd8c9f08d1d028e670ec3334ce9b08b33ef 100644 --- a/new/ai-py/14.md +++ b/new/ai-py/14.md @@ -538,13 +538,13 @@ plt.show() ![](img/B15441_14_05.png) -图 5:MFCC 特征图 +图 5:MFCC 特征映射 第二张屏幕截图显示了滤波器组特征: ![](img/B15441_14_06.png) -图 6:滤波器组特征图 +图 6:滤波器组特征映射 您将看到以下打印出来: diff --git a/new/gan-proj/1.md b/new/gan-proj/1.md index 8fe320c5cec72ebbd759c622ca231bca85686917..e96f3974b9d48e240673eb45f50f1aef4f36d511 100644 --- a/new/gan-proj/1.md +++ b/new/gan-proj/1.md @@ -287,7 +287,7 @@ GAN 的架构具有两个基本元素:生成器网络和判别器网络。 每 ![](img/c23de9d4-5560-4c9f-a0bd-a3569bbf6f5a.png) -前面的等式表示实际图像`x`,与生成的图像`g`之间的 FID 分数。 为了计算 FID 分数,我们使用 Inception 网络从 Inception 网络的中间层提取特征图。 然后,我们对多元高斯分布建模,以学习特征图的分布。 此多元高斯分布具有`μ`的均值和`∑`的协方差,我们用它们来计算 FID 得分。 FID 分数越低,模型越好,它越有能力生成更高质量的更多图像。 完美的生成模型的 FID 得分为零。 使用 FID 得分而不是 Inception 得分的优势在于它对噪声具有鲁棒性,并且可以轻松地测量图像的多样性。 +前面的等式表示实际图像`x`,与生成的图像`g`之间的 FID 分数。 为了计算 FID 分数,我们使用 Inception 网络从 Inception 网络的中间层提取特征映射。 然后,我们对多元高斯分布建模,以学习特征映射的分布。 此多元高斯分布具有`μ`的均值和`∑`的协方差,我们用它们来计算 FID 得分。 FID 分数越低,模型越好,它越有能力生成更高质量的更多图像。 完美的生成模型的 FID 得分为零。 使用 FID 得分而不是 Inception 得分的优势在于它对噪声具有鲁棒性,并且可以轻松地测量图像的多样性。 [FID 的 TensorFlow 实现可在以下链接中找到](https://www.tensorflow.org/api_docs/python/tf/contrib/gan/eval/frechet_classifier_distance)。 @@ -451,12 +451,12 @@ pix2pix 网络是由 Phillip Isola,朱俊彦,周廷辉和 Alexei A. Efros 特征匹配是 Tim Salimans,Ian Goodfellow 等人在其题为《GAN 训练的改进技术》的论文中提出的一种技术,旨在通过引入新的目标函数来改善 GAN 的收敛性。 生成器网络的新目标函数鼓励其生成具有统计信息的数据,该数据与真实数据相似。 -要应用特征映射,网络不会要求判别器提供二进制标签。 相反,判别器网络提供从判别器网络的中间层提取的输入数据的激活或特征图。 从训练的角度来看,我们训练判别器网络以学习真实数据的重要统计信息。 因此,目的在于通过学习那些判别特征,它应该能够从假数据中区分出真实数据。 +要应用特征映射,网络不会要求判别器提供二进制标签。 相反,判别器网络提供从判别器网络的中间层提取的输入数据的激活或特征映射。 从训练的角度来看,我们训练判别器网络以学习真实数据的重要统计信息。 因此,目的在于通过学习那些判别特征,它应该能够从假数据中区分出真实数据。 为了从数学上理解这种方法,让我们首先看一下不同的表示法: -* `f(x)`:来自判别器网络中间层的真实数据的激活图或特征图 -* `f(G(z))`:生成器网络从判别器网络中的中间层生成的数据的激活/功能映射。 +* `f(x)`:来自判别器网络中间层的真实数据的激活图或特征映射 +* `f(G(z))`:生成器网络从判别器网络中的中间层生成的数据的激活/特征映射。 这个新的目标函数可以表示为: @@ -478,7 +478,7 @@ pix2pix 网络是由 Phillip Isola,朱俊彦,周廷辉和 Alexei A. Efros 小批判别是一个多步骤的过程。 执行以下步骤,将小批量判别添加到您的网络: -1. 提取样本的特征图,然后将它们与张量`T ∈ R^(A×B×C)`相乘,生成矩阵`M[i] ∈ R^(A×B)`。 +1. 提取样本的特征映射,然后将它们与张量`T ∈ R^(A×B×C)`相乘,生成矩阵`M[i] ∈ R^(A×B)`。 2. 然后,使用以下公式计算矩阵`M[i]`的行之间的 L1 距离: ![](img/4769bf48-3e9e-4976-999d-22513076b07d.png) @@ -495,7 +495,7 @@ pix2pix 网络是由 Phillip Isola,朱俊彦,周廷辉和 Alexei A. Efros 为了从数学上理解这种方法,让我们仔细看一下各种概念: -* `f(x[i])`:来自判别器网络中间层的第`i`个样本的激活图或特征图 +* `f(x[i])`:来自判别器网络中间层的第`i`个样本的激活图或特征映射 * `T ∈ R^(A×B×C)`:三维张量,我们乘以`f(x[i])` * `M[i] ∈ R^(A×B)`:将张量`T`和`f(x[i])`相乘时生成的矩阵 * `o(x[i])`:对于特定示例`x[i]`,采用所有距离的总和后的输出 @@ -558,7 +558,7 @@ The benefits of batch normalization are as follows: -如上一节所述,批量规范化仅通过利用来自该批量的信息来对一批样本进行归一化。 实例规范化是一种略有不同的方法。 在实例归一化中,我们仅通过利用来自该特征图的信息来归一化每个特征图。 实例规范化由 Dmitry Ulyanov 和 Andrea Vedaldi 在标题为《实例规范化:用于快速风格化的缺失成分》的论文中介绍,[可通过以下链接获得](https://arxiv.org/pdf/1607.08022.pdf)。 +如上一节所述,批量规范化仅通过利用来自该批量的信息来对一批样本进行归一化。 实例规范化是一种略有不同的方法。 在实例归一化中,我们仅通过利用来自该特征映射的信息来归一化每个特征映射。 实例规范化由 Dmitry Ulyanov 和 Andrea Vedaldi 在标题为《实例规范化:用于快速风格化的缺失成分》的论文中介绍,[可通过以下链接获得](https://arxiv.org/pdf/1607.08022.pdf)。 diff --git a/new/gan-proj/2.md b/new/gan-proj/2.md index caa40a419be84c63c1cbf073169106667b77db01..ef687d38c08496310aecdbb11336ce9fa1773787 100644 --- a/new/gan-proj/2.md +++ b/new/gan-proj/2.md @@ -36,7 +36,7 @@ -简而言之,3D 卷积操作沿`x`,`y`和`z`这三个方向对输入数据应用 3D 滤波器。 此操作将创建 3D 特征图的堆叠列表。 输出的形状类似于立方体或长方体的形状。 下图说明了 3D 卷积操作。 左立方体的突出显示部分是输入数据。 内核位于中间,形状为`(3, 3, 3)`。 右侧的块是卷积运算的输出: +简而言之,3D 卷积操作沿`x`,`y`和`z`这三个方向对输入数据应用 3D 滤波器。 此操作将创建 3D 特征映射的堆叠列表。 输出的形状类似于立方体或长方体的形状。 下图说明了 3D 卷积操作。 左立方体的突出显示部分是输入数据。 内核位于中间,形状为`(3, 3, 3)`。 右侧的块是卷积运算的输出: ![](img/9128ea2e-31f5-472a-8ebc-f3add1a716e0.png) diff --git a/new/gan-proj/4.md b/new/gan-proj/4.md index a8abb0abdb017bc68410030e5988228c0d4116c5..dd9000a3e0cbcf86eab3f56cb98dc202bff4e926 100644 --- a/new/gan-proj/4.md +++ b/new/gan-proj/4.md @@ -985,7 +985,7 @@ Tensorboard 的`GRAPHS`部分包含两个网络的图形。 如果网络表现 * **MNIST 字符的生成**:MNIST 数据集包含 60,000 张手写数字图像。 要训​​练复杂的监督学习模型,MNIST 数据集是不够的。 DCGAN 一旦受过训练,将生成可以添加到原始数据集中的新数字。 * **人脸生成**:DCGAN 使用卷积神经网络,非常擅长生成逼真的图像。 -* **特征提取器**:训练后,可以使用判别器从中间层提取特征。 这些提取的功能在样式迁移和人脸识别等任务中很有用。 样式迁移涉及生成图像的内部表示,用于计算样式和内容损失。 请参阅[以下论文](https://arxiv.org/pdf/1508.06576.pdf),以了解有关样式迁移的更多信息。 +* **特征提取器**:训练后,可以使用判别器从中间层提取特征。 这些提取的特征在样式迁移和人脸识别等任务中很有用。 样式迁移涉及生成图像的内部表示,用于计算样式和内容损失。 请参阅[以下论文](https://arxiv.org/pdf/1508.06576.pdf),以了解有关样式迁移的更多信息。 diff --git a/new/gan-proj/5.md b/new/gan-proj/5.md index 2ccae11a09e6c70bec3955feb254d56cba88de9d..11ef3a6fa49b7c25dd436dcf049e966a0ed2e18a 100644 --- a/new/gan-proj/5.md +++ b/new/gan-proj/5.md @@ -183,11 +183,11 @@ -VGG 丢失是另一个内存损失功能,可应用于生成的图像和真实图像。 VGG19 是一种非常流行的深度神经网络,主要用于图像分类。 VGG19 由 Simonyan 和 Zisserman 在他们的论文《用于大规模图像识别的超深度卷积网络》中引入,可在[这里](https://arxiv.org/pdf/1409.1556.pdf)获得。 预训练的 VGG19 网络的中间层用作特征提取器,可用于提取生成的图像和真实图像的特征图。 VGG 损失基于这些提取的特征图。 计算为生成的图像和真实图像的特征图之间的欧几里得距离。 VGG 损失的公式如下: +VGG 丢失是另一个内存损失函数,可应用于生成的图像和真实图像。 VGG19 是一种非常流行的深度神经网络,主要用于图像分类。 VGG19 由 Simonyan 和 Zisserman 在他们的论文《用于大规模图像识别的超深度卷积网络》中引入,可在[这里](https://arxiv.org/pdf/1409.1556.pdf)获得。 预训练的 VGG19 网络的中间层用作特征提取器,可用于提取生成的图像和真实图像的特征映射。 VGG 损失基于这些提取的特征映射。 计算为生成的图像和真实图像的特征映射之间的欧几里得距离。 VGG 损失的公式如下: ![](img/c854836e-df68-4886-bb7c-8577a41d732c.png) -在此,`φ[i, j]`表示由 VGG19 网络生成的特征图。 `φ[i, j](I^(HR))`代表提取的真实图像特征图,`φ[i, j](G[θ[G]](I^(LR)))`代表提取的高分辨率图像生成的特征图。 整个方程表示生成图像和真实图像的特征图之间的欧式距离。 +在此,`φ[i, j]`表示由 VGG19 网络生成的特征映射。 `φ[i, j](I^(HR))`代表提取的真实图像特征映射,`φ[i, j](G[θ[G]](I^(LR)))`代表提取的高分辨率图像生成的特征映射。 整个方程表示生成图像和真实图像的特征映射之间的欧式距离。 前述内容损失中的任何一种都可以用于训练 SRGAN。 对于我们的实现,我们将使用 VGG 损失。 @@ -689,7 +689,7 @@ def build_discriminator(): -我们将使用预训练的 VGG19 网络。 VGG19 网络的目的是提取生成的图像和真实图像的特征图。 在本节中,我们将在 Keras 中使用预训练的权重构建和编译 VGG19 网络: +我们将使用预训练的 VGG19 网络。 VGG19 网络的目的是提取生成的图像和真实图像的特征映射。 在本节中,我们将在 Keras 中使用预训练的权重构建和编译 VGG19 网络: 1. 首先指定输入形状: @@ -894,7 +894,7 @@ input_low_resolution = Input(shape=low_resolution_shape) generated_high_resolution_images = generator(input_low_resolution) ``` -使用 VGG19 提取生成图像的特征图: +使用 VGG19 提取生成图像的特征映射: ```py features = vgg(generated_high_resolution_images) @@ -1055,7 +1055,7 @@ d_loss_fake = discriminator.train_on_batch(generated_high_resolution_images, fak low_resolution_images = low_resolution_images / 127.5 - 1. ``` -2. 使用 VGG19 网络提取真实高分辨率图像的特征图(内部表示): +2. 使用 VGG19 网络提取真实高分辨率图像的特征映射(内部表示): ```py image_features = vgg.predict(high_resolution_images) diff --git a/new/gan-proj/6.md b/new/gan-proj/6.md index 06e954b7fffe5cb547e34c02aaea12ce3b90a9e4..61b51045be22e8bda7de7d29c0487fe1054a2095 100644 --- a/new/gan-proj/6.md +++ b/new/gan-proj/6.md @@ -143,7 +143,7 @@ StackGAN 网络的主要组成部分是生成器网络和判别器网络。 在 -类似于生成器网络,判别器网络是一个深度卷积神经网络,其中包含一系列下采样卷积层。 下采样层从图像生成特征图,无论它们是真实数据分布`P_data`的真实图像还是生成器网络生成的图像。 然后,我们将特征映射连接到文本嵌入。 我们使用压缩和空间复制将嵌入的文本转换为连接所需的格式。 空间压缩和复制包括一个完全连接的层,该层用于压缩嵌入到`N[d]`维输出的文本,然后通过空间复制将其转换为`M[d] × M[d] × N[d]`维张量。 然后将特征图以及压缩的和空间复制的文本嵌入沿通道维级联。 最后,我们具有一个节点的完全连接层,该层用于二进制分类。 让我们看一下判别器网络的架构,如以下屏幕截图所示: +类似于生成器网络,判别器网络是一个深度卷积神经网络,其中包含一系列下采样卷积层。 下采样层从图像生成特征映射,无论它们是真实数据分布`P_data`的真实图像还是生成器网络生成的图像。 然后,我们将特征映射连接到文本嵌入。 我们使用压缩和空间复制将嵌入的文本转换为连接所需的格式。 空间压缩和复制包括一个完全连接的层,该层用于压缩嵌入到`N[d]`维输出的文本,然后通过空间复制将其转换为`M[d] × M[d] × N[d]`维张量。 然后将特征映射以及压缩的和空间复制的文本嵌入沿通道维级联。 最后,我们具有一个节点的完全连接层,该层用于二进制分类。 让我们看一下判别器网络的架构,如以下屏幕截图所示: ![](img/fc0175ae-38b7-42aa-99ec-1bdbe36a8edf.png) @@ -1917,7 +1917,7 @@ for epoch in range(epochs): save_rgb_img(img, "results2/gen_{}_{}.png".format(epoch, i)) ``` -此处,`save_rgb_img()`是工具功能,在“训练第一阶段 StackGAN 部分”中定义。 +此处,`save_rgb_img()`是工具函数,在“训练第一阶段 StackGAN 部分”中定义。 12. 最后,保存模型或其权重值: diff --git a/new/gan-proj/7.md b/new/gan-proj/7.md index d4095667d2fd9496c6334bacb5320ef9585016c5..5bc84a9165dd29a5b56ceba3b5d48a2c622abd38 100644 --- a/new/gan-proj/7.md +++ b/new/gan-proj/7.md @@ -181,7 +181,7 @@ CycleGAN 总体上由两种架构组成:生成器和判别器。 生成器架 -对抗性损失是实际分布`A`或`B`的图像与生成器网络生成的图像之间的损失。 我们有两个映射功能,我们将对两个映射应用对抗性损失。 +对抗性损失是实际分布`A`或`B`的图像与生成器网络生成的图像之间的损失。 我们有两个映射函数,我们将对两个映射应用对抗性损失。 映射`G: X -> Y`的对抗损失如下所示: @@ -197,9 +197,9 @@ CycleGAN 总体上由两种架构组成:生成器和判别器。 生成器架 -仅使用对抗损失的问题在于,网络可以将同一组输入图像映射到目标域中图像的任何随机排列。 因此,任何学习的映射都可以学习类似于目标分布的输出分布。 `x[i]`和`y[i]`之间可能有许多可能的映射功能。 循环一致性损失通过减少可能的映射数来克服了这个问题。 周期一致映射功能是可以将图像`x`从域`A`转换为域`B`中的另一个图像`y`并生成原始图像的功能。 +仅使用对抗损失的问题在于,网络可以将同一组输入图像映射到目标域中图像的任何随机排列。 因此,任何学习的映射都可以学习类似于目标分布的输出分布。 `x[i]`和`y[i]`之间可能有许多可能的映射函数。 循环一致性损失通过减少可能的映射数来克服了这个问题。 周期一致映射函数是可以将图像`x`从域`A`转换为域`B`中的另一个图像`y`并生成原始图像的函数。 -前向循环一致性映射功能如下所示: +前向循环一致性映射函数如下所示: ![](img/b6e02c98-294c-42d4-b687-3c2c7e84644a.png) @@ -227,7 +227,7 @@ CycleGAN 总体上由两种架构组成:生成器和判别器。 生成器架 在此,`l[GAN](G, D[Y], X, Y)`是第一个对抗性损失,`l[GAN](F, D[X], Y, X)`是第二个对抗性损失。 在生成器`A`和判别器`B`上计算第一个对抗损失。在生成器`B`和判别器`A`上计算第二个对抗损失。 -要训​​练 CycleGAN,我们需要优化以下功能: +要训​​练 CycleGAN,我们需要优化以下函数: ![](img/b0e30420-c79d-434a-b6d9-6fcaaa2a61ad.png) @@ -814,7 +814,7 @@ adversarial_model.compile(loss=['mse', 'mse', 'mae', 'mae', 'mae', 'mae'], 对抗网络返回六个值,我们需要为每个输出值指定损失函数。 对于前两个值,我们使用**均方误差**损失,因为这是**对抗性损失**的一部分。 对于接下来的四个值,我们使用**平均绝对误差**损失,这是周期一致性损失的一部分。 六个不同损失的权重值为 1,1,10.0,10.0,1.0,1.0。 我们正在使用`common_optimizer`训练网络。 -现在,我们已经成功为对抗网络创建了 Keras 模型。 如果您在理解 Keras 模型的工作方式时遇到困难,请查看 TensorFlow 图及其功能的文档。 +现在,我们已经成功为对抗网络创建了 Keras 模型。 如果您在理解 Keras 模型的工作方式时遇到困难,请查看 TensorFlow 图及其函数的文档。 在开始训练之前,请执行以下两个基本步骤。 TensorBoard 将在后面的部分中使用: diff --git a/new/gan-proj/8.md b/new/gan-proj/8.md index 7032b0665991ab62fbea28838cca34fc60c71dea..4d0dced37407e2d15721a611b4a200fcf823e898 100644 --- a/new/gan-proj/8.md +++ b/new/gan-proj/8.md @@ -212,7 +212,7 @@ Pix2pix 是一个条件生成对抗网络,并且用于条件 GAN 的目标函 ![](img/a2a19bc3-64c1-48bd-b2d8-4b1303293dce.png) -在这里,网络`G`(生成器)正试图使针对对手`D`(判别器)的先前功能最小化,而对手`D`则试图使先前的功能最大化。 +在这里,网络`G`(生成器)正试图使针对对手`D`(判别器)的先前函数最小化,而对手`D`则试图使先前的函数最大化。 如果必须比较朴素 GAN 和条件 GAN 的目标函数,则朴素 GAN 的目标函数如下: @@ -404,7 +404,7 @@ def load_dataset(data_dir, data_type, img_width, img_height): return final_facade_photos, final_facade_labels ``` -先前的功能将从训练,测试和验证目录中的`.h5`文件加载图像。 +先前的函数将从训练,测试和验证目录中的`.h5`文件加载图像。 @@ -427,7 +427,7 @@ def visualize_bw_image(img): plt.show() ``` -使用前面的功能可以使外观标签或外观照片可视化,如下所示: +使用前面的函数可以使外观标签或外观照片可视化,如下所示: ```py visualize_bw_image(image) @@ -1242,7 +1242,7 @@ def generate_and_extract_patches(images, facades, generator_model, batch_counter return patches, labels ``` -前面的功能使用生成器网络生成伪图像,然后从生成的图像中提取补丁。 现在,我们应该有一个补丁列表及其基本真理值。 +前面的函数使用生成器网络生成伪图像,然后从生成的图像中提取补丁。 现在,我们应该有一个补丁列表及其基本真理值。 13. 现在,在生成的补丁上训练判别器网络: diff --git a/new/handson-unsup-learn-py/02.md b/new/handson-unsup-learn-py/02.md index f09771afaee797af2452c1a477cf043b731a34bf..5284f667bc896377532c733e982a2cf38716db73 100644 --- a/new/handson-unsup-learn-py/02.md +++ b/new/handson-unsup-learn-py/02.md @@ -581,7 +581,7 @@ V-Score: 0.46479332792160793 ![](img/208136bf-137d-46b0-a63c-99b1a72464e5.png) -功能与先前定义的相同。 当`MI → 0`时, `n(i, j) → n[true](i) n[pred](j)`,其项分别与`p(i, j)`和`p[true](i)p[pred](j)`成正比。 因此,此条件等同于说`Y[true]`和`Y[pred]`在统计上是独立的,没有共识。 另一方面,通过一些简单的操作,我们可以将 MI 重写为: +函数与先前定义的相同。 当`MI → 0`时, `n(i, j) → n[true](i) n[pred](j)`,其项分别与`p(i, j)`和`p[true](i)p[pred](j)`成正比。 因此,此条件等同于说`Y[true]`和`Y[pred]`在统计上是独立的,没有共识。 另一方面,通过一些简单的操作,我们可以将 MI 重写为: ![](img/a621ff93-b1e0-4663-93fe-7dac3169b096.png) @@ -689,7 +689,7 @@ cm = contingency_matrix(kmdff['diagnosis'].apply(lambda x: 0 if x == 'B' else 1) 具有 3 维向量的 kd 树示例 -kd 树的构建非常简单。 给定一个根样本`(a[1], a[2], ..., a[n])`,考虑第一个特征,因此左分支包含`b[1] < a[1]`,以此类推,和右分支`c[1] > a[1]`,以此类推。 该过程将继续执行第二个功能,第三个功能,依此类推,直到第一个功能,依此类推,直到到达叶节点为止(分配给叶的样本数量是需要调整的超参数。 该参数称为`leaf_size`,默认值为 30 个样本)。 +kd 树的构建非常简单。 给定一个根样本`(a[1], a[2], ..., a[n])`,考虑第一个特征,因此左分支包含`b[1] < a[1]`,以此类推,和右分支`c[1] > a[1]`,以此类推。 该过程将继续执行第二个特征,第三个特征,依此类推,直到到达叶节点为止(分配给叶的样本数量是需要调整的超参数。 该参数称为`leaf_size`,默认值为 30 个样本)。 当维度`N`不太大时,计算复杂度变为`O(N log M)`,这比暴力搜索要好得多。 例如,在`N = 1,000`和`M = 10,000`的情况下,计算复杂度变为`O(4,000) << O(10^11)`。 不幸的是,当`N`大时,kd 树查询变为`O(NM)`,因此,考虑前面的示例,`O(10^7)`,它比蛮横搜索更好,但有时对于实时查询而言仍然太昂贵。 diff --git a/new/handson-unsup-learn-py/04.md b/new/handson-unsup-learn-py/04.md index 48b9bedf0652278040c0df060d011f93256e1ce5..fd4e0442eb078f3588b07c3d0cc264bee6d39c62 100644 --- a/new/handson-unsup-learn-py/04.md +++ b/new/handson-unsup-learn-py/04.md @@ -224,7 +224,7 @@ plt.show() 如前面的屏幕快照中所述,`x`轴表示旨在最大程度降低交叉连接风险的样本,而`y`轴表示相异程度。 现在让我们从底部开始分析图。 初始状态对应于被视为独立聚类的所有样本(因此相异性为空)。 向上移动,我们开始观察第一次合并。 特别地,当相异度约为 0.35 时,样本 1 和 3 被合并。 -当样本 0 和 9 也合并时,第二步发生的差异略小于 0.5。 创建单个群集时,该过程一直持续到相异度约为 5.25。 现在,当相差等于 1.25 时,水平剖析树状图。 查看基础连接,我们发现聚类结构为:{ 6 },{ 7 , 5 , 8 }, { 0 , 9 , 4 , 10 },{ 11 },{ 2 [ , 1 , 3 }。 +当样本 0 和 9 也合并时,第二步发生的差异略小于 0.5。 创建单个群集时,该过程一直持续到相异度约为 5.25。 现在,当相差等于 1.25 时,水平剖析树状图。 查看基础连接,我们发现聚类结构为:`{6}, {7, 5, 8}, {0, 9, 4, 10}, {11}, {2 , 1, 3}`。 因此,我们有五个聚类,其中两个由一个样本组成。 样本 6 和 11 是最后合并的样本,这并不奇怪。 实际上,它们之间的距离比其他所有区域都远。 在以下屏幕截图中,显示了四个不同的级别(只有包含多个样本的聚类用圆圈标记): @@ -236,7 +236,7 @@ plt.show() 第一个是树状图结构本身固有的。 与其他方法相反,层次聚类允许观察整个聚类树,当需要通过增加不相似度来显示流程如何演变时,此功能非常有用。 例如,产品推荐器应用无法提供有关代表用户的所需群集数量的任何信息,但是执行管理层可能会对理解合并过程的结构和演变方式感兴趣。 -实际上,观察群集是如何合并的可以深入了解底层的几何,还可以发现哪些群集可能被视为较大群集的一部分。 在我们的示例中,在级别 0.5 处,我们有一个小的簇{ 1 , 3 }。 问题是“可以通过增加不相似性将哪些样本添加到该群集中?” 可以立即用{ 2 }回答。 当然,在这种情况下,这是一个微不足道的问题,可以通过查看数据图来解决,但是对于高维数据集,如果没有树状图的支持,它可能会变得更加困难。 +实际上,观察群集是如何合并的可以深入了解底层的几何,还可以发现哪些群集可能被视为较大群集的一部分。 在我们的示例中,在级别 0.5 处,我们有一个小的簇`{1, 3}`。 问题是“可以通过增加不相似性将哪些样本添加到该群集中?” 可以立即用`{2}`回答。 当然,在这种情况下,这是一个微不足道的问题,可以通过查看数据图来解决,但是对于高维数据集,如果没有树状图的支持,它可能会变得更加困难。 树状图的第二个优点是可以比较不同链接方法的行为。 使用 Ward 的方法,第一次合并发生的相异度很低,但是五个群集和三个群集之间存在较大的差距。 这是几何形状和合并策略的结果。 例如,如果我们使用单个链接(本质上非常不同)会发生什么? 以下屏幕快照显示了相应的树状图: @@ -244,7 +244,7 @@ plt.show() 与应用于数据集的单个链接相对应的树状图 -结论是,树状图是不对称的,并且簇通常与单个样本或小的附聚物合并。 从右侧开始,我们可以看到样本{ 11 }和{ 6 }合并得很晚。 此外,当必须生成最终的单个簇时,样本{ 6 }(可能是异常值)被合并。 通过以下屏幕快照可以更好地理解该过程: +结论是,树状图是不对称的,并且簇通常与单个样本或小的附聚物合并。 从右侧开始,我们可以看到样本`{11}`和`{6}`合并得很晚。 此外,当必须生成最终的单个簇时,样本`{6}`(可能是异常值)被合并。 通过以下屏幕快照可以更好地理解该过程: ![](img/fcddb815-9420-4fc1-b74e-59dff373faf9.png) @@ -252,7 +252,7 @@ plt.show() 从屏幕快照中可以看到,虽然 Ward 的方法生成包含所有样本的两个聚类,但单个链接通过将潜在异常值保持在外部来聚集级别 1.0 上的最大块。 因此,树状图还允许定义聚合语义,这在心理学和社会学方面非常有用。 尽管 Ward 的链接与其他对称算法非常相似,但单个链接具有逐步显示的方式,显示了对逐步构建的聚类的潜在偏好,从而避免了相异性方面的巨大差距。 -最后,有趣的是,尽管 Ward 的链接通过在级别 3.0 处切断树状图产生了潜在的最佳簇数(三个),但单个链接从未达到这样的配置(因为簇{ 6 }仅在最后一步中合并。 该效果与最大分离和最大内聚的双重原理紧密相关。 沃德的联系往往会很快找到最具凝聚力和最独立的集群。 当相异性差距超过预定义的阈值时(当然,当达到所需的簇数时),它可以切割树状图,而其他链接则需要不同的方法,有时会产生不希望的最终配置。 +最后,有趣的是,尽管 Ward 的链接通过在级别 3.0 处切断树状图产生了潜在的最佳簇数(三个),但单个链接从未达到这样的配置(因为簇`{6}`仅在最后一步中合并。 该效果与最大分离和最大内聚的双重原理紧密相关。 沃德的联系往往会很快找到最具凝聚力和最独立的集群。 当相异性差距超过预定义的阈值时(当然,当达到所需的簇数时),它可以切割树状图,而其他链接则需要不同的方法,有时会产生不希望的最终配置。 考虑到问题的性质,我始终鼓励您测试所有链接方法的行为,并为某些示例场景(例如,根据教育水平,居住地, 和收入)。 这是提高认识并提高提供流程语义解释的能力的最佳方法(这是任何聚类过程的基本目标)。 @@ -266,7 +266,7 @@ 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`: diff --git a/new/handson-unsup-learn-py/06.md b/new/handson-unsup-learn-py/06.md index 2afa3b2013a33cc552c7284ac871268ca984b772..df89da53ff0f546e1aa815240a536d896db06a2a 100644 --- a/new/handson-unsup-learn-py/06.md +++ b/new/handson-unsup-learn-py/06.md @@ -68,7 +68,7 @@ ![](img/35903294-84ca-486e-856c-930c74b81e27.png) -不熟悉此概念的读者可以想象考试前会有大量学生。 用随机变量建模的功能是学习时间(`x`)和完成课程的数量(`y`),鉴于这些因素,我们希望找出成功的可能性`p(Success | x, y)`(此类示例基于条件概率,但主要概念始终相同)。 我们可以假设一个完成所有课程的学生需要在家少学习; 但是,这样的选择意味着两个因素之间的依赖性(和相关性),不能再单独评估了。 相反,我们可以通过假设不存在任何相关性来简化程序,并根据给定的上课次数和作业时间与成功的边际概率进行比较。 重要的是要记住,要素之间的独立性不同于随后从分布中抽取的样本的独立性。 当我们说数据集由 IID 样本组成时,是指概率`p(x[i] | x[i-1], x[i-2], ..., p[1]) = p(x[i])`。 换句话说,我们假设样本之间没有相关性。 这样的条件更容易实现,因为通常足以洗净数据集以删除任何残余相关性。 取而代之的是,特征之间的相关性是数据生成过程的特殊属性,无法删除。 因此,在某些情况下,我们假定独立性是因为我们知道其影响可以忽略不计,并且最终结果不会受到严重影响,而在其他情况下,我们将基于整个多维特征向量训练模型。 现在,我们可以定义将在其余部分中使用的异常的概念。 +不熟悉此概念的读者可以想象考试前会有大量学生。 用随机变量建模的特征是学习时间(`x`)和完成课程的数量(`y`),鉴于这些因素,我们希望找出成功的可能性`p(Success | x, y)`(此类示例基于条件概率,但主要概念始终相同)。 我们可以假设一个完成所有课程的学生需要在家少学习; 但是,这样的选择意味着两个因素之间的依赖性(和相关性),不能再单独评估了。 相反,我们可以通过假设不存在任何相关性来简化程序,并根据给定的上课次数和作业时间与成功的边际概率进行比较。 重要的是要记住,要素之间的独立性不同于随后从分布中抽取的样本的独立性。 当我们说数据集由 IID 样本组成时,是指概率`p(x[i] | x[i-1], x[i-2], ..., p[1]) = p(x[i])`。 换句话说,我们假设样本之间没有相关性。 这样的条件更容易实现,因为通常足以洗净数据集以删除任何残余相关性。 取而代之的是,特征之间的相关性是数据生成过程的特殊属性,无法删除。 因此,在某些情况下,我们假定独立性是因为我们知道其影响可以忽略不计,并且最终结果不会受到严重影响,而在其他情况下,我们将基于整个多维特征向量训练模型。 现在,我们可以定义将在其余部分中使用的异常的概念。 @@ -238,7 +238,7 @@ P(48.84 < x < 51.58) = 0.13 (13.43%) ![](img/802044f2-601f-4896-b783-f68372d52094.png) -引入常数`ε`可以使内核规范化并满足所有要求(以类似的方式,可以在范围内扩展内核`(-h, h)`,以便与其他功能更加一致)。 以下屏幕截图显示了图形表示: +引入常数`ε`可以使内核规范化并满足所有要求(以类似的方式,可以在范围内扩展内核`(-h, h)`,以便与其他函数更加一致)。 以下屏幕截图显示了图形表示: ![](img/9381573d-6eb5-496a-ae8b-58286a80b41c.png) @@ -304,7 +304,7 @@ Epanechnikov 核 在这一点上,自然会问为什么不为每个查询使用整个数据集而不是 KNN 方法? 答案很简单,它基于这样的假设:可以使用局部行为轻松地插值以`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 距离的示例,在使用纬度和经度时可以使用该示例)。 在其他情况下,最好使用超立方体而不是球(曼哈顿距离的情况就是这样)。 +在讨论如何确定最佳带宽之前,让我们展示一下先前定义的数据集的密度估计(使用 scikit-learn)。 由于我们没有任何特定的先验知识,因此我们将使用具有不同带宽(0.1、0.5 和 1.5)的高斯核。 所有其他参数均保留为其默认值。 但是,`KernelDensity`类允许设置度量(默认为`metric='euclidean'`),数据结构(默认为`algorithm='auto'`,它根据维度在球树和 kd 树之间执行自动选择),以及绝对公差和相对公差(分别为 0 和`10^(-8)`)。 在许多情况下,无需更改默认值。 但是,对于具有特定特征的超大型数据集,例如,更改`leaf_size`参数以提高性能可能会有所帮助(如第 2 章,“聚类基础知识”中讨论的 )。 此外,默认度量标准不能满足所有任务的要求(例如:标准文档显示了一个基于 Haversine 距离的示例,在使用纬度和经度时可以使用该示例)。 在其他情况下,最好使用超立方体而不是球(曼哈顿距离的情况就是这样)。 让我们首先实例化类并拟合模型: @@ -628,7 +628,7 @@ def is_anomaly(kd, source, destination, medium_thr=0.03, high_thr=0.015): return density, 'High risk' ``` -现在,我们可以使用三个不同的示例来测试该功能: +现在,我们可以使用三个不同的示例来测试该函数: ```py print('p = {:.2f} - {}'.format(*is_anomaly(kd, 200, 1100))) @@ -688,7 +688,7 @@ p = 0.00000 - High risk ![](img/71e19b2a-13bb-4db9-bfb2-e604dd90de9f.png) -如果不进行全面讨论(超出本书的讨论范围),我们可以将注意力集中在一些重要元素上。 首先,决策功能如下: +如果不进行全面讨论(超出本书的讨论范围),我们可以将注意力集中在一些重要元素上。 首先,决策函数如下: ![](img/482bfa70-c8ff-46f3-9cd6-5380f0e60c9c.png) @@ -775,7 +775,7 @@ Liu FT,Ting KM 和 Zhou Z 在文章《隔离森林》中提出了一种非常 二叉决策树的通用结构 -在有监督的任务中,选择元组(功能,阈值)是根据使孩子的杂质最小化的特定标准选择的。 这意味着目标通常是拆分节点,以使结果子集包含属于单个类的大多数样本。 当然,很容易理解,当所有叶子都是纯净的或达到最大深度时,该过程结束。 相反,在此特定上下文中,我们从一个非常特殊(但经过经验证明)的假设开始:如果属于**隔离森林**的树木每次都选择随机特征和随机阈值进行生长,则从根到包含任何异常值的叶子的路径的平均长度,比隔离异常值所需的路径更长。 通过考虑一个二维示例,可以很容易地理解这一假设的原因,如作者所示: +在有监督的任务中,选择元组(特征,阈值)是根据使孩子的杂质最小化的特定标准选择的。 这意味着目标通常是拆分节点,以使结果子集包含属于单个类的大多数样本。 当然,很容易理解,当所有叶子都是纯净的或达到最大深度时,该过程结束。 相反,在此特定上下文中,我们从一个非常特殊(但经过经验证明)的假设开始:如果属于**隔离森林**的树木每次都选择随机特征和随机阈值进行生长,则从根到包含任何异常值的叶子的路径的平均长度,比隔离异常值所需的路径更长。 通过考虑一个二维示例,可以很容易地理解这一假设的原因,如作者所示: ![](img/7b91e898-5147-47c5-b273-a25e89bfe857.png) @@ -787,7 +787,7 @@ Liu FT,Ting KM 和 Zhou Z 在文章《隔离森林》中提出了一种非常 在上一个公式中,`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`,其中每个功能都是特定的化学性质(例如,酒精,苹果酸,灰分等),并训练一个隔离森林来检测一种新葡萄酒是否可以被认为是一种正常值(例如,现有品牌的变体)还是异常值,因为它的化学特性与每种现有样本不同。 第一步包括加载和规范化数据集: +现在让我们考虑一下葡萄酒数据集,其中包含 178 个样本`x[i] ∈ ℜ^13`,其中每个特征都是特定的化学性质(例如,酒精,苹果酸,灰分等),并训练一个隔离森林来检测一种新葡萄酒是否可以被认为是一种正常值(例如,现有品牌的变体)还是异常值,因为它的化学特性与每种现有样本不同。 第一步包括加载和规范化数据集: ```py import numpy as np @@ -875,11 +875,11 @@ X_tsne = tsne.fit_transform(Xf) 我们分析了最常见内核(高斯, Epanechnikov,指数和均匀)的属性,以及两种可用于找出每个数据集最佳带宽的经验方法。 使用这种技术,我们试图基于合成数据集解决一个非常简单的单变量问题。 我们分析了 KDD Cup 99 数据集的 HTTP 子集,其中包含几个正常和恶意网络连接的日志记录。 并且我们已经使用 KDE 技术基于两个阈值创建了一个简单的异常检测系统,并且我们还解释了在处理这类问题时必须考虑哪些因素。 -在最后一部分中,我们分析了可用于执行新颖性检测的两种常用方法。 一类 SVM 利用内核的功能将复杂的数据集投影到可以线性分离的特征空间上。 下一步基于这样的假设:所有训练集(一小部分除外)都是内在者,因此它们属于同一类。 训练该模型的目的是最大程度地缩小内部节点与特征空间原点之间的距离,并且结果基于样本相对于分离超平面的位置。 相反,孤立森林是一种集成模型,基于以下假设:离群值从随机训练的决策树中的根到样本的路径平均较短。 +在最后一部分中,我们分析了可用于执行新颖性检测的两种常用方法。 一类 SVM 利用核函数将复杂的数据集投影到可以线性分离的特征空间上。 下一步基于这样的假设:所有训练集(一小部分除外)都是内在者,因此它们属于同一类。 训练该模型的目的是最大程度地缩小内部节点与特征空间原点之间的距离,并且结果基于样本相对于分离超平面的位置。 相反,孤立森林是一种集成模型,基于以下假设:离群值从随机训练的决策树中的根到样本的路径平均较短。 因此,在训练森林之后,可以考虑给定新样本的平均路径长度来计算异常分数。 当该分数接近 1 时,我们可以得出结论,异常的可能性也很大。 相反,非常小的得分值表明该新颖性是潜在的内在值。 -在下一章中,我们将讨论降维和字典学习的最常用技术,当有必要管理具有大量功能的数据集时,这些技术将非常有用。 +在下一章中,我们将讨论降维和字典学习的最常用技术,当有必要管理具有大量特征的数据集时,这些技术将非常有用。 diff --git a/new/handson-unsup-learn-py/07.md b/new/handson-unsup-learn-py/07.md index 09b6112b07d46f8616d24f3c3679fca8398ff786..76d503ca729d5e31ab39ff5d8a2d9b7ed7016690 100644 --- a/new/handson-unsup-learn-py/07.md +++ b/new/handson-unsup-learn-py/07.md @@ -301,7 +301,7 @@ print(np.sum(pca.explained_variance_ratio_)) ![](img/febdde35-860f-4ead-b585-97c81169aa6a.png) -可以看到,转换需要计算点积`f(x[i])^T f(x[i])`。 在这些情况下,我们可以采用所谓的**核技巧**,该技巧指出存在称为核且具有有趣特性的特定功能`K(·, ·)`,如下: +可以看到,转换需要计算点积`f(x[i])^T f(x[i])`。 在这些情况下,我们可以采用所谓的**核技巧**,该技巧指出存在称为核且具有有趣特性的特定函数`K(·, ·)`,如下: ![](img/d4f72e86-05e8-4d2e-8030-cc028ce9c8c1.png) @@ -543,7 +543,7 @@ NNMF 算法提取的原子 ![](img/c69596e4-c1c9-4843-8a54-eaf1e7682f29.png) -因此,我们的目标是通过减少`J(X)`来减少`H[N](X)`(始终大于或等于零)。 FastICA 算法基于特定功能的组合,近似于`H[N](X)`。 最常见的称为 **logcosh** (它也是 scikit-learn 中的默认值),如下所示: +因此,我们的目标是通过减少`J(X)`来减少`H[N](X)`(始终大于或等于零)。 FastICA 算法基于特定特征的组合,近似于`H[N](X)`。 最常见的称为 **logcosh** (它也是 scikit-learn 中的默认值),如下所示: ![](img/f733002f-7004-42d5-9f94-42f5be45dfd4.png) diff --git a/new/handson-unsup-learn-py/08.md b/new/handson-unsup-learn-py/08.md index 0c44454d7bc325b00b1814714d5719878a6b6b9f..58303635a2dd56dc319be8bcb5d3d26d729a999e 100644 --- a/new/handson-unsup-learn-py/08.md +++ b/new/handson-unsup-learn-py/08.md @@ -4,7 +4,7 @@ -在本章中,我们将讨论一些可用于无监督任务的神经模型。 神经网络(通常是深层网络)的选择使您能够利用需要复杂处理单元(例如图像)的特定功能来解决高维数据集的复杂性。 +在本章中,我们将讨论一些可用于无监督任务的神经模型。 神经网络(通常是深层网络)的选择使您能够利用需要复杂处理单元(例如图像)的特定特征来解决高维数据集的复杂性。 特别是,我们将介绍以下内容: @@ -1045,7 +1045,7 @@ DBN 是基于 RBM 的堆叠模型。 下图显示了通用结构: 通用 DBN 的结构 -第一层包含可见单元,其余所有单元都是潜在单元。 在无监督的情况下,目标是学习未知分布,找出样本的内部表示。 实际上,当潜在单元的数量少于输入单元的数量时,模型将学习如何使用低维子空间对分布进行编码。 Hinton 和 Osindero(在《深层信念网络的快速学习算法》)提出了逐步贪婪训练程序(这是通常执行的程序)。 每对层都被认为是 RBM,并使用对比发散算法进行训练。 一旦对 RBM 进行了训练,则隐藏层将成为后续 RBM 的可观察层,并且该过程将一直持续到最后一个。 因此,DBN 开发了一系列内部表示形式(这就是为什么将其定义为深度网络的原因),其中每个级别都接受了较低级别功能的训练。 该过程与可变自编码器并无不同。 但是,在这种情况下,模型的结构更加僵化(例如,无法使用卷积单位)。 而且,输出不是输入的重建,而是内部表示。 因此,考虑上一节中讨论的公式,如果有必要反转过程(即给定内部表示,获得输入),则必须使用以下公式从最顶层进行采样: +第一层包含可见单元,其余所有单元都是潜在单元。 在无监督的情况下,目标是学习未知分布,找出样本的内部表示。 实际上,当潜在单元的数量少于输入单元的数量时,模型将学习如何使用低维子空间对分布进行编码。 Hinton 和 Osindero(在《深层信念网络的快速学习算法》)提出了逐步贪婪训练程序(这是通常执行的程序)。 每对层都被认为是 RBM,并使用对比发散算法进行训练。 一旦对 RBM 进行了训练,则隐藏层将成为后续 RBM 的可观察层,并且该过程将一直持续到最后一个。 因此,DBN 开发了一系列内部表示形式(这就是为什么将其定义为深度网络的原因),其中每个级别都接受了较低级别特征的训练。 该过程与可变自编码器并无不同。 但是,在这种情况下,模型的结构更加僵化(例如,无法使用卷积单位)。 而且,输出不是输入的重建,而是内部表示。 因此,考虑上一节中讨论的公式,如果有必要反转过程(即给定内部表示,获得输入),则必须使用以下公式从最顶层进行采样: ![](img/ee120b1c-ad77-481c-9f39-0d90a1f6c72c.png) @@ -1117,7 +1117,7 @@ X_tsne = tsne.fit_transform(X_dbn) 无监督 DBN 输出表示的 t-SNE 图 -如您所见,大多数块都具有很强的凝聚力,这表明数字的特殊属性已在较低维空间中成功表示。 在某些情况下,相同的数字组被划分为更多的簇,但是总的来说,噪点(隔离点)的数量非常少。 例如,包含数字`2`的组用符号`x`表示。 大部分样本在`0 < x[0] < 30`,`x[1] < -40`范围内; 但是,一个子组也位于`-10 < x[1] < 10`范围内。 如果我们检查这个小集群的邻居,它们是由代表数字`8`(用正方形表示)的样本组成的。 容易理解,某些格式错误的二进制与格式错误的八进制非常相似,这证明了拆分原始群集的合理性。 从统计角度来看,所解释的方差可能会产生不同的影响。 在某些情况下,只有几个组件足以确定类的特殊功能,但这通常是不正确的。 当属于不同类别的样本显示出相似性时,只能由于次级成分的差异而做出区分。 在处理包含几乎(甚至部分)重叠样本的数据集时,这一考虑非常重要。 进行降维时,数据科学家的主要任务不是检查总体解释的方差,而是了解是否存在受降维不利影响的区域。 在这种情况下,可以定义多个检测规则(例如,当样本`x[i] ∈ R[1]`或`x[i] ∈ R[4] → x[i]`具有`y[k]`标签)或尝试避免使用模型来创建此细分(在这种情况下,我们邀请您测试更复杂的 DBN 和更高维的输出表示形式)。 +如您所见,大多数块都具有很强的凝聚力,这表明数字的特殊属性已在较低维空间中成功表示。 在某些情况下,相同的数字组被划分为更多的簇,但是总的来说,噪点(隔离点)的数量非常少。 例如,包含数字`2`的组用符号`x`表示。 大部分样本在`0 < x[0] < 30`,`x[1] < -40`范围内; 但是,一个子组也位于`-10 < x[1] < 10`范围内。 如果我们检查这个小集群的邻居,它们是由代表数字`8`(用正方形表示)的样本组成的。 容易理解,某些格式错误的二进制与格式错误的八进制非常相似,这证明了拆分原始群集的合理性。 从统计角度来看,所解释的方差可能会产生不同的影响。 在某些情况下,只有几个组件足以确定类的特殊特征,但这通常是不正确的。 当属于不同类别的样本显示出相似性时,只能由于次级成分的差异而做出区分。 在处理包含几乎(甚至部分)重叠样本的数据集时,这一考虑非常重要。 进行降维时,数据科学家的主要任务不是检查总体解释的方差,而是了解是否存在受降维不利影响的区域。 在这种情况下,可以定义多个检测规则(例如,当样本`x[i] ∈ R[1]`或`x[i] ∈ R[4] → x[i]`具有`y[k]`标签)或尝试避免使用模型来创建此细分(在这种情况下,我们邀请您测试更复杂的 DBN 和更高维的输出表示形式)。 diff --git a/new/handson-unsup-learn-py/09.md b/new/handson-unsup-learn-py/09.md index f7cbf695473c713e8cc19a060c7f3172434b05bb..c02bf8e8124f5b3f390339a54060ea15a9683c1e 100644 --- a/new/handson-unsup-learn-py/09.md +++ b/new/handson-unsup-learn-py/09.md @@ -4,7 +4,7 @@ -在本章中,我们将结束无监督学习的整个过程,讨论一些可以用于执行数据生成过程的非常流行的神经模型,以及可以从中提取的新样本。 此外,我们将分析自组织地图的功能,该功能可以调整其结构,以便特定单位可以响应不同的输入模式。 +在本章中,我们将结束无监督学习的整个过程,讨论一些可以用于执行数据生成过程的非常流行的神经模型,以及可以从中提取的新样本。 此外,我们将分析自组织映射的功能,该功能可以调整其结构,以便特定单位可以响应不同的输入模式。 特别是,我们将讨论以下主题: @@ -32,7 +32,7 @@ * Matplotlib 2.0+ * Seaborn 0.9+ * TensorFlow 1.5+ - * Keras 2+(仅适用于数据集工具功能) + * Keras 2+(仅适用于数据集工具函数) [可以在 GitHub 存储库中找到这些示例](https://github.com/PacktPublishing/HandsOn-Unsupervised-Learning-with-Python/tree/master/Chapter09)。 @@ -758,7 +758,7 @@ SOM 开发的墨西哥帽选择性 在初始步骤中,许多单元会响应相同的输入模式,但是我们已经可以观察到`x[i]`附近的优势。 但是,立即选择此设备可能会导致收敛过早,从而导致准确性下降。 这就是为什么获胜单位周围的半径逐渐减小的原因(观察到一种称为**墨西哥帽**的现象,因为其形状特殊)。 当然,在此过程中,最初的获胜单位无法保持稳定; 因此,重要的是要避免半径的快速减小,以免引起其他潜在单位被引出。 当呈现特定模式时,当神经元保持最活跃时,它将被略微转换为实际的赢家,因此,这将花费全部,因为不会再加强任何其他单元。 -一些非常著名和有用的 SOM 是 **Kohonen 映射**(首次出现在《拓扑正确特征图的自组织形成》)。 它们的结构像投影到由`N`神经元组成的二维流形(最经典的情况是平坦的二维区域)上的平面一样。 从现在开始,为简单起见,我们将考虑映射到包含`k×p`单位的矩阵的曲面,每个曲面均使用突触权重`w[ij] ∈ R^n`进行建模 (尺寸与输入模式相同,`x[i] ∈ R^n`)。 因此,权重矩阵变为`W(i, j) ∈ R^(k×p×n)`。 从实际的角度来看,在此模型中,由于不执行内部转换,因此神经元通过相应的权重向量表示。 当呈现模式`x[i]`时,获胜神经元`n[w]`(作为元组)的确定如下: 使用以下规则:* +一些非常著名和有用的 SOM 是 **Kohonen 映射**(首次出现在《拓扑正确特征映射的自组织形成》)。 它们的结构像投影到由`N`神经元组成的二维流形(最经典的情况是平坦的二维区域)上的平面一样。 从现在开始,为简单起见,我们将考虑映射到包含`k×p`单位的矩阵的曲面,每个曲面均使用突触权重`w[ij] ∈ R^n`进行建模 (尺寸与输入模式相同,`x[i] ∈ R^n`)。 因此,权重矩阵变为`W(i, j) ∈ R^(k×p×n)`。 从实际的角度来看,在此模型中,由于不执行内部转换,因此神经元通过相应的权重向量表示。 当呈现模式`x[i]`时,获胜神经元`n[w]`(作为元组)的确定如下: 使用以下规则:* ![](img/1d22e1e2-5d4d-472e-90eb-af603c0116eb.png) diff --git a/new/handson-unsup-learn-py/10.md b/new/handson-unsup-learn-py/10.md index b0c59b88be109ae5656396d9fbc70204c91cbcfb..6dd133a37ea76c624d88181a497159944a893b9c 100644 --- a/new/handson-unsup-learn-py/10.md +++ b/new/handson-unsup-learn-py/10.md @@ -153,7 +153,7 @@ 4. 是; 通常会比较慢。 5. 评论者比较慢,因为每次更新后都会对变量进行裁剪。 6. 由于支撑脱节,Jensen-Shannon 散度等于`log(2)`。 -7. 目标是开发高度选择性的单元,其响应仅由特定功能集引起。 +7. 目标是开发高度选择性的单元,其响应仅由特定特征集引起。 8. 在训练过程的早期阶段,不可能知道最终的组织。 因此,强制某些单元的过早专业化不是一个好习惯。 调整阶段允许许多神经元成为候选神经元,与此同时,逐渐增加最有前途的神经元(将成为赢家)的选择性。 diff --git a/new/intel-mobi-proj-tf/04.md b/new/intel-mobi-proj-tf/04.md index a40c19f9fc217ee6dacffa2d9c5ec0f20c915ab3..a14c9c805215ae484a2f891972d5032389a0fabe 100644 --- a/new/intel-mobi-proj-tf/04.md +++ b/new/intel-mobi-proj-tf/04.md @@ -24,7 +24,7 @@ -使用深度神经网络将图像内容与另一种图像的样式合并的原始思想和算法于 2015 年夏季发表在题为[《艺术风格的神经算法》](https://arxiv.org/abs/1508.06576)的论文中。它是 2014 年 ImageNet 图像识别挑战赛的获胜者,该挑战赛具有 16 个卷积层或特征图,分别代表不同级别的图像内容。 在这种原始方法中,首先将最终传输的图像初始化为与内容图像合并的白噪声图像。 内容损失函数定义为内容图像和结果图像的卷积层`conv4_2`上都被馈入 VGG-19 网络后,特定的一组特征表示形式的平方误差损失。 样式损失函数计算样式图像和所得图像在五个不同卷积层上的总误差差。 然后,将总损失定义为内容损失和样式损失的总和。 在训练期间,损失会降到最低,并生成将一个图像的内容与另一个图像的样式混合在一起的结果图像。 +使用深度神经网络将图像内容与另一种图像的样式合并的原始思想和算法于 2015 年夏季发表在题为[《艺术风格的神经算法》](https://arxiv.org/abs/1508.06576)的论文中。它是 2014 年 ImageNet 图像识别挑战赛的获胜者,该挑战赛具有 16 个卷积层或特征映射,分别代表不同级别的图像内容。 在这种原始方法中,首先将最终传输的图像初始化为与内容图像合并的白噪声图像。 内容损失函数定义为内容图像和结果图像的卷积层`conv4_2`上都被馈入 VGG-19 网络后,特定的一组特征表示形式的平方误差损失。 样式损失函数计算样式图像和所得图像在五个不同卷积层上的总误差差。 然后,将总损失定义为内容损失和样式损失的总和。 在训练期间,损失会降到最低,并生成将一个图像的内容与另一个图像的样式混合在一起的结果图像。 尽管原始神经样式迁移算法的结果令人惊叹,但其性能却很差-训练是样式迁移图像生成过程的一部分,通常在 GPU 上花费几分钟,在 CPU 上花费约一个小时才能生成良好的图像。 结果。