提交 2e46d83c 编写于 作者: W wizardforcel

2021-01-06 22:50:18

上级 d9fd67d7
# 了解云 TPU
任何平台都只能发挥其优势。 利用 **Google Cloud Platform****GCP**)之类的平台,最重要的方面是使其日常运作 业务工作量处理。 在本章中,我们将看到在 GCP 上运行**人工智能****AI**)的一些最佳实践和实用技巧。 我们将了解**张量处理单元****TPU**)以及 TPU 如何在内部运行以促进大规模并行计算需求,以便构建利用**机器学习****ML**)模型的各种服务。
任何平台都只能发挥其优势。 利用 **Google Cloud Platform****GCP**)之类的平台,最重要的方面是将其投入运营,来处理业务的日常工作量。 在本章中,我们将看到在 GCP 上运行**人工智能****AI**)的一些最佳实践和实用技巧。 我们将了解**张量处理单元****TPU**)以及 TPU 如何在内部运行以促进大规模并行计算需求,以便构建利用**机器学习****ML**)模型的各种服务。
本章将涵盖以下主题:
......
......@@ -35,7 +35,7 @@ Cloud ML Engine 具有各种组件,它们执行独特的操作并在机器学
* **线性学习器**:此学习器算法使用 TensorFlow 估计器,`LinearClassifier``LinearRegressor`,可用于分类和回归问题。 该算法支持**图形处理器****GPU**)加速,以及默认的**中央处理器****CPU**)加速器。
* **宽和深**:这是一种旨在具有最佳级别的算法,用于存储训练数据并同时概括输入。 该算法对于分类,回归和排名问题很有用。 该算法支持 GPU 加速以及默认的 CPU 加速器。
* **XGBoost**:我们已经在“第 3 章”,“使用 XGBoost 的机器学习应用程序”中详细了解了此算法,Cloud ML Engine 提供了对该算法的内置包装器 并以并行的方式简化了两个阶段,即预处理和训练。 在预处理阶段,Cloud ML Engine 将分类数据和数字数据转换为统一的数据集,该数据集完全以数字格式表示。 该算法可轻松用于诸如点击率预测之类的用例。 GPU 加速器不支持该算法,并且只能与 CPU 一起使用。
* **XGBoost**:我们已经在“第 3 章”,“使用 XGBoost 的机器学习应用程序”中详细了解了此算法,Cloud ML Engine 提供了对该算法的内置包装器并以并行的方式简化了两个阶段,即预处理和训练。 在预处理阶段,Cloud ML Engine 将分类数据和数字数据转换为统一的数据集,该数据集完全以数字格式表示。 该算法可轻松用于诸如点击率预测之类的用例。 GPU 加速器不支持该算法,并且只能与 CPU 一起使用。
一旦确定了合适的算法,就需要对输入(训练,评估和生产)数据进行格式化,以匹配内置算法的预期模式。 数据需要以不带标题的**逗号分隔值****CSV**)格式提交,并且第一列应代表目标变量。 我们需要在 GCP 上为内置算法指定存储分区,以存储训练输出。 Cloud ML Engine 为训练工作提供了有限的自定义,例如使用特定的机器类型进行训练。
......
......@@ -152,7 +152,7 @@ SignatureDef 确定 TensorFlow 图辅助计算的签名。 SignatureDefs 旨在
图 9.9:分类消息 API 有效负载
预测 SignatureDefs 支持对 TensorFlow Serving 的 Predict API 的调用。 这样的签名使您可以任意支持多个输入和输出张量。 对于以下示例,我的预测签名具有特定的逻辑张量图像,该图像在您的图形`x:0`中映射到实际张量。 预测 SignatureDefs 允许模型到模型的可移植性。 这意味着您可以在不同的 SavedModels 中处理不同的基础 Tensor 名称(例如,您可能具有张量`Z:0`而不是`x:0`的替代模型),因此您的 客户将继续在网络上测试新旧模型,而不会改变客户方面。 预测 SignatureDefs 允许您向输出中添加其他张量,您可以显式请求这些张量。 假设除了`scores`下面的输出键之外,您还希望获取堆层用于调试或其他目的。 在这种情况下,只需添加带有池密钥和适当值的附加张量即可。 以下屏幕截图显示了预测 SignatureDefs 的结构:
预测 SignatureDefs 支持对 TensorFlow Serving 的 Predict API 的调用。 这样的签名使您可以任意支持多个输入和输出张量。 对于以下示例,我的预测签名具有特定的逻辑张量图像,该图像在您的图形`x:0`中映射到实际张量。 预测 SignatureDefs 允许模型到模型的可移植性。 这意味着您可以在不同的 SavedModels 中处理不同的基础 Tensor 名称(例如,您可能具有张量`Z:0`而不是`x:0`的替代模型),因此您的客户将继续在网络上测试新旧模型,而不会改变客户方面。 预测 SignatureDefs 允许您向输出中添加其他张量,您可以显式请求这些张量。 假设除了`scores`下面的输出键之外,您还希望获取堆层用于调试或其他目的。 在这种情况下,只需添加带有池密钥和适当值的附加张量即可。 以下屏幕截图显示了预测 SignatureDefs 的结构:
![](img/b1f2ac0e-43e1-4aee-912b-b959f87b56d6.png)
......
......@@ -28,7 +28,7 @@
# 监督学习
在监督学习中,数据集既包含输入数据点又包含预期输出,通常称为标签。 该算法的工作是学习从输入到预期输出的映射函数。 该函数可以是线性函数,例如`y = mx + c`或非线性函数,例如`y = ax3 + bx2 + cx + d`,其中`y` 输入目标输出,`x`。 所有监督学习任务都可以归类为回归和分类。
在监督学习中,数据集既包含输入数据点又包含预期输出,通常称为标签。 该算法的工作是学习从输入到预期输出的映射函数。 该函数可以是线性函数,例如`y = mx + c`或非线性函数,例如`y = ax3 + bx2 + cx + d`,其中`y`目标输出,`x`为输入。 所有监督学习任务都可以归类为回归和分类。
# 回归
......
......@@ -38,7 +38,7 @@
DFN 中存在的权重值负责进行预测。 任何深度网络都具有如此众多的权重,以至于不可能找到理想的权重值。 因此,我们尝试搜索一组权重值,这些值将给我们足够好的预测结果。 因此,训练网络意味着从一组初始权重开始学习最佳权重值。 假设我们有一个 DFN,最初,我们不知道哪种权重会表现良好。 因此,我们用随机实数初始化权重值。 现在,我们必须从初始化的权重值转到最佳权重值。 我们可以将该任务分为以下三个部分:
* 首先,我们需要知道初始化的权重是否合适。 如果不是,那么预测输出与预期输出有多少不同? 这由损失函数计算。
* 其次,提出了**最大似然估计****MLE**)的概念,该概念指出,为了找到一组优化的参数(在我们的情况下为权重),我们需要最大化 获得期望值的可能性(概率)。 简而言之,如果我们尝试通过更改权重(参数)来使损失函数最小化,那么我们会将预测输出分布的概率最大化,使其与预期分布尽可能接近。
* 其次,提出了**最大似然估计****MLE**)的概念,该概念指出,为了找到一组优化的参数(在我们的情况下为权重),我们需要最大化获得期望值的可能性(概率)。 简而言之,如果我们尝试通过更改权重(参数)来使损失函数最小化,那么我们会将预测输出分布的概率最大化,使其与预期分布尽可能接近。
* 从以上两点可以得出结论,我们需要通过更新权重来最小化损失函数。 当达到损失的最小可能值时,可以说网络已经学习(训练)了映射函数,以预测接近预期值的值。 在 DFN 中,结合梯度下降和反向传播算法来完成权重的更新和损失函数的最小化。
在随后的部分中,我们将进一步讨论损耗函数,以及如何将其最小化以训练具有梯度下降和反向传播的网络。
......
......@@ -38,7 +38,7 @@ RBM 中显然没有输出层,因此学习与前馈网络中的学习有很大
对于不熟悉能量函数的人,术语**能量**来自物理学,用于量化大型物体对另一个物体的重力。 物理学中的能量函数测量两个对象或机器学习中两个变量的兼容性。 能量越低,变量之间的兼容性越好,模型的质量越高。
* 与产生输出相反,它在其可见和隐藏单元集上分配概率,并且每个单元在`0`(关闭)或`1`(激活)的二进制状态下 时间点。 给定可见层`v`,隐藏单元被激活的概率计算如下:
* 与产生输出相反,它在其可见和隐藏单元集上分配概率,并且每个单元在每个时间点处于`0`(关闭)或`1`(激活)的二进制状态下。 给定可见层`v`,隐藏单元被激活的概率计算如下:
![](img/33a47fba-518e-4f08-9a61-fafb69291569.png)
......@@ -46,7 +46,7 @@ RBM 中显然没有输出层,因此学习与前馈网络中的学习有很大
![](img/40046dd7-01ec-41c0-93d3-aa5df24b71c5.png)
由于`h``v`的状态基于彼此随机分配给`0``1`,因此可以通过重复 采样程序少。 下图演示了此过程:
由于`h``v`的状态基于彼此随机分配给`0``1`,因此可以通过重复少量采样过程实现收敛。 下图演示了此过程:
![](img/188cc358-b184-4998-aa60-b5de2c02b12a.png)
......
......@@ -21,7 +21,7 @@
在 1960 年代,人们发现动物的视觉皮层并没有像深度前馈网络那样处理图像。 而是,视觉皮层中的单个神经元连接到一个小的区域(而不是单个像素),这称为感受野。 感受野中的任何活动都会触发相应的神经元。
受视觉皮层感受野的启发,科学家提出了局部连接的想法,以减少处理图像所需的人工神经元数量。 深度前馈网络的这种修改版本称为 CNN(在本书中,CNN 均指卷积神经网络)。 1989 年,Yann LeCun 开发了可训练的 CNN,能够识别手写数字。 1998 年,Yann LeCun 的 LeNet-5 模型再次成功地使用了七个堆叠的卷积层(例如深前馈网络中的层)对大小为`32 x 32`的数字进行分类。输入图像尺寸的增加由于缺乏处理能力而受到限制。 当时可用。 但是在 2000 年代初,GPU 能够执行并行计算,因此大大减少了深度学习网络所需的处理时间。 更深的 CNN 的开发始于 GPU。 在深入研究细节之前,我们将向您介绍 ImageNet。 它是一个开放源代码数据集,其中包含 1500 万张贴有大约 22,000 个不同对象的图像。 ImageNet 的建立旨在帮助在对象识别领域下开发具有手动标记图像的模型,以进行模型训练。 每年都会举办一场名为 **ImageNet 大规模视觉识别挑战赛****ILSVRC**)的竞赛,该竞赛使用 ImageNet 数据集的一个子集,以挑战为对象提供更准确的方法 识别,俗称**图像分类**。 有关更多详细信息,[请参考 ImageNet 网站](http://www.image-net.org/)
受视觉皮层感受野的启发,科学家提出了局部连接的想法,以减少处理图像所需的人工神经元数量。 深度前馈网络的这种修改版本称为 CNN(在本书中,CNN 均指卷积神经网络)。 1989 年,Yann LeCun 开发了可训练的 CNN,能够识别手写数字。 1998 年,Yann LeCun 的 LeNet-5 模型再次成功地使用了七个堆叠的卷积层(例如深前馈网络中的层)对大小为`32 x 32`的数字进行分类。输入图像尺寸的增加由于缺乏处理能力而受到限制。 当时可用。 但是在 2000 年代初,GPU 能够执行并行计算,因此大大减少了深度学习网络所需的处理时间。 更深的 CNN 的开发始于 GPU。 在深入研究细节之前,我们将向您介绍 ImageNet。 它是一个开放源代码数据集,其中包含 1500 万张贴有大约 22,000 个不同对象的图像。 ImageNet 的建立旨在帮助在对象识别领域下开发具有手动标记图像的模型,以进行模型训练。 每年都会举办一场名为 **ImageNet 大规模视觉识别挑战赛****ILSVRC**)的竞赛,该竞赛使用 ImageNet 数据集的一个子集,以挑战为对象提供更准确的识别方法,俗称**图像分类**。 有关更多详细信息,[请参考 ImageNet 网站](http://www.image-net.org/)
CNN 中有很多新方面,例如权重共享,批量操作和本地连接。 在下一节中,我们将讨论所有这些以及架构。
......
# 循环神经网络
在本章中,我们将解释最重要的深度学习模型之一,即**循环神经网络****RNNs**)。 我们将首先回顾什么是 RNN,以及为什么它们非常适合处理顺序数据。 在简要介绍了 RNN 模型的发展路径之后,我们将说明根据不同形式的输入和输出数据以及工业示例进行分类的各种 RNN 架构。 我们将找出问题的答案,例如“我们如何仅生成一个输出?”,“输出可以是序列吗?”,和“仅对一个输入有效吗 元件?”。
在本章中,我们将解释最重要的深度学习模型之一,即**循环神经网络****RNNs**)。 我们将首先回顾什么是 RNN,以及为什么它们非常适合处理顺序数据。 在简要介绍了 RNN 模型的发展路径之后,我们将说明根据不同形式的输入和输出数据以及工业示例进行分类的各种 RNN 架构。 我们将找出问题的答案,例如“我们如何仅生成一个输出?”,“输出可以是序列吗?”,和“仅对一个输入单元有效吗?”。
接下来,我们将讨论按递归层分类的几种架构。 首先,我们将应用基本的 RNN 架构来编写我们自己的《战争与和平》。 具有原始架构的 RNN 不能很好地保存长期依赖的信息。 为了解决这个问题,我们将学习*内存增强型*架构,包括长短期内存和门控循环单元。 我们还将在股票价格预测中采用门控架构。 最后,由于对捕获过去的信息不满意,我们将引入一种双向架构,该架构允许该模型从序列的过去和将来上下文中保留信息。 具有 LSTM 的双向模型将用于对电影评论的情感进行分类。
......@@ -64,7 +64,7 @@ RNN 可以分为*多对一*,*一对多*,*多对多*(同步)和*多对多
**多对一**架构可用于情感分析,其中该模型读取整个客户评论(例如)并输出情感分数。 类似地,它可以用于在遍历整个音频流之后识别歌曲的流派。
**一对多**:与**多对一** RNN 相反,**一对多**架构仅接受一个输入并产生一个序列 输出**一对多**架构可以表示如下:
**一对多**:与**多对一** RNN 相反,**一对多**架构仅接受一个输入并产生一个输出序列**一对多**架构可以表示如下:
![](img/250fb990-a7e3-437e-acad-390f227aa524.png)
......@@ -82,7 +82,7 @@ RNN 可以分为*多对一*,*一对多*,*多对多*(同步)和*多对多
在机器翻译中最常见的是不同步的多对多架构。 例如,模型读取英语的整个句子,然后开始生成法语的翻译句子。 另一个流行的用例是提前进行多步预测,要求我们根据所有先前的输入来预测提前几个时间步。
到目前为止,我们已经通过模型输入和输出了解了四种 RNN 架构,我们将在本章的其余部分的实际示例中结合其中的一些,我们将主要讨论隐藏层中的架构,更具体地说,是 循环层。
到目前为止,我们已经通过模型输入和输出了解了四种 RNN 架构,我们将在本章的其余部分的实际示例中结合其中的一些,我们将主要讨论隐藏层中的架构,更具体地说,是循环层。
让我们从原始 RNN 开始,这是循环架构的最基本形式。
......@@ -92,13 +92,13 @@ RNN 可以分为*多对一*,*一对多*,*多对多*(同步)和*多对多
![](img/0c393218-eae9-42f3-a09e-bf404ddf0682.png)
这里,`U`是连接输入层和隐藏层的权重,`V`是隐藏层和输出层之间的权重,`W` 循环层,即反馈层的权重; ![](img/0629c3d2-74ed-49e2-96bb-1520132d63dc.png)是时间步`t`的隐藏状态,![](img/659a5e6b-9562-4e50-b27a-6e9328a9f71b.png)和![](img/37ae4f9d-2015-4f14-8ab2-ab9ad5089969.png)分别是时间步`t`的输入和输出。
这里,`U`是连接输入层和隐藏层的权重,`V`是隐藏层和输出层之间的权重,`W`是循环层,即反馈层的权重; ![](img/0629c3d2-74ed-49e2-96bb-1520132d63dc.png)是时间步`t`的隐藏状态,![](img/659a5e6b-9562-4e50-b27a-6e9328a9f71b.png)和![](img/37ae4f9d-2015-4f14-8ab2-ab9ad5089969.png)分别是时间步`t`的输入和输出。
请注意,为简便起见,我们从现在开始仅使用一个循环层,但是我们可以将多个循环层堆叠在一起,我们将很快看到。
层之间的关系可以描述如下:
* 基于当前输入![](img/2040af3e-d1dc-44dc-92dc-a3f919bd1eaa.png)和通过![](img/562308e5-cbaa-4ff7-9b79-bd683a4011bd.png)的先前隐藏状态![](img/383bc003-23ee-43db-9fa1-59937dbe7657.png)计算时间步长`t`和![](img/54984d48-521b-41b9-9685-b73dce04345f.png)的隐藏状态,其中`a`是激活状态 功能。 RNN 中隐藏层的激活函数的典型选择包括 tanh 和 ReLU。
* 基于当前输入![](img/2040af3e-d1dc-44dc-92dc-a3f919bd1eaa.png)和通过![](img/562308e5-cbaa-4ff7-9b79-bd683a4011bd.png)的先前隐藏状态![](img/383bc003-23ee-43db-9fa1-59937dbe7657.png)计算时间步长`t`和![](img/54984d48-521b-41b9-9685-b73dce04345f.png)的隐藏状态,其中`a`是激活函数。 RNN 中隐藏层的激活函数的典型选择包括 tanh 和 ReLU。
* 同样,![](img/70c19fab-defe-4e68-909f-f6211104a2c7.png)取决于![](img/c9869f70-3cd8-4f6e-93bc-550caa70f200.png),依此类推。 ![](img/024ed476-77bb-45bd-9b60-8608e00ad27e.png)也依赖于![](img/c9307527-4369-491f-a419-a486f8f49795.png),按照惯例,该![](img/c9307527-4369-491f-a419-a486f8f49795.png)设置为全零。
* 由于对时间步长具有这种依赖性,因此可以将隐藏状态视为网络的内存,从以前的时间步长中捕获信息。
* 将时间步长`t`的输出计算为![](img/450661ff-68a5-4ba1-a496-4311c409ad7e.png),其中`g`是激活函数。 根据执行的任务,它可以是用于二进制分类的 Sigmoid 函数,用于多类分类的 softmax 函数以及用于回归的简单线性函数。
......@@ -443,7 +443,7 @@ LSTM 的架构的神奇之处在于:在普通循环单元的顶部,增加了
* 将在时间步`t`处输入门`i`的输出计算为![](img/02cc7c8f-f9cc-4bbd-9829-51537291a0f0.png)
* 将在时间步`t`处的 tanh 激活`c'`的输出计算为![](img/438dd210-3f36-4e25-a625-a95ab8da7b02.png)
* 在时间步`t`处的输出门`o`的输出被计算为![](img/57472460-64d3-48e7-8fb8-af2371057ee6.png)
* 在时间步`t`处的存储单元![](img/1fb2797f-7135-4aba-beb0-9fcea0fe85fb.png)由![](img/01cf9cf7-8de2-40fc-960e-ce2e0d9d4936.png)更新,其中`.*`表示逐元素乘法。 值得注意的是,`f``i`中的 Sigmoid 函数将其输出转换为从`0``1`的范围,从而控制比例 分别通过的先前存储器![](img/ad6a46d8-ac93-42e3-96bf-e6fe22a527b2.png)和当前存储器输入![](img/4cdd81a2-72c9-43c4-b602-f9c112dc22b9.png)的数据
* 在时间步`t`处的存储单元![](img/1fb2797f-7135-4aba-beb0-9fcea0fe85fb.png)由![](img/01cf9cf7-8de2-40fc-960e-ce2e0d9d4936.png)更新,其中`.*`表示逐元素乘法。 值得注意的是,`f``i`中的 Sigmoid 函数将其输出转换为从`0``1`的范围,从而控制分别通过的先前存储器`c[t - 1]`和当前存储器输入`c'`的数据比例
* 最后,在时间步`t`的隐藏状态![](img/c4c7aecc-d631-4158-82cd-b718759d5e5d.png)被更新为![](img/4f00cc4c-ed31-48a5-932b-9590c070e0dd.png)。 同样,`o`确定用作整个单元输出的更新存储单元![](img/8a8220aa-1249-47c5-a5a9-481a95a274e2.png)的比例。
使用随时间的反向传播训练所有四组权重`U``W`,这与原始 RNN 相同。 通过学习三个信息门的权重,网络显式地对长期依赖关系进行建模。 接下来,我们将利用 LSTM 架构并发明更强大的文本生成器。
......@@ -597,7 +597,7 @@ DJIA 由 30 只大型和重要股票(例如 Apple,IBM,GE 和 Goldman Sachs
![](img/d23cae0b-59ea-486e-9a51-9f2579b92f79.png)
五个值说明了交易日内股票在一段时间内的走势:开盘价和收盘价,即交易日的起始价和最终价,低点和高位,即股票交易价格范围和交易量,即 在一个交易日交易的股票总数。 例如,我们将重点关注使用历史收盘价来预测未来收盘价。 但是,合并其他四个指标也是可行的。
五个值说明了交易日内股票在一段时间内的走势:开盘价和收盘价,即交易日的起始价和最终价,低点和高位,即股票交易价格范围和交易量,即在一个交易日交易的股票总数。 例如,我们将重点关注使用历史收盘价来预测未来收盘价。 但是,合并其他四个指标也是可行的。
让我们从数据获取和探索开始。 首先,我们将数据从 2001-01-01 下载到 2017-12-31:在同一网页上,将时间段更改为 2001 年 1 月 1 日至 2017 年 12 月 31 日。单击“应用”按钮,最后单击“下载数据”。 然后,我们可以加载并查看数据:
......
......@@ -46,7 +46,7 @@ GAN 模型由两个网络组成。 一个称为生成器的网络负责生成新
如果我们还记得梵高(Van Gogh)的例子,那么 GAN 模型就在做类似的事情。 我们模仿艺术品,而 GAN 中的生成器生成候选对象,例如感兴趣的特定数据分布; 法官评估我们的副本,而 GAN 中的判别器则通过从真实数据分布中区分生成的候选对象和实例来评估生成的候选对象。
GAN 中的生成器和判别器以对抗性方式进行训练,也就是说,它们在零和框架中相互竞争,以便生成模拟真实数据分布的数据。 就像在美术比赛中一样,我们不断改进复制品,以期获得法官的高分,并且法官不断评估我们的工作并提供反馈。 GAN 中的生成器旨在生成被视为来自真实数据分布的合成实例,即使它们是*伪造的*,而判别器的目标是识别单个实例是否是伪造的(已合成) 或真实的。 从优化的角度来看,生成器的训练目标是增加判别器的错误-判别器犯的错误越多,生成器的性能就越好。 判别器的目的是减少其误差,这是显而易见的。 在每次迭代中,两个网络都使用梯度下降来实现其目标,这并不是什么新鲜事。 有趣的是,每个网络都在试图击败另一个网络,即生成器试图欺骗判别器,而判别器则试图不被欺骗。 最终,来自发生器的合成数据(例如图像,音频,视频,时间序列)(希望)能够欺骗最复杂的判别器,类似于艺术品复制品竞赛,我们能够从最严格的标准中获得最高分 但最有帮助的法官
GAN 中的生成器和判别器以对抗性方式进行训练,也就是说,它们在零和框架中相互竞争,以便生成模拟真实数据分布的数据。 就像在美术比赛中一样,我们不断改进复制品,以期获得法官的高分,并且法官不断评估我们的工作并提供反馈。 GAN 中的生成器旨在生成被视为来自真实数据分布的合成实例,即使它们是*伪造的*,而判别器的目标是识别单个实例是否是伪造的(已合成) 或真实的。 从优化的角度来看,生成器的训练目标是增加判别器的错误-判别器犯的错误越多,生成器的性能就越好。 判别器的目的是减少其误差,这是显而易见的。 在每次迭代中,两个网络都使用梯度下降来实现其目标,这并不是什么新鲜事。 有趣的是,每个网络都在试图击败另一个网络,即生成器试图欺骗判别器,而判别器则试图不被欺骗。 最终,来自发生器的合成数据(例如图像,音频,视频,时间序列)(希望)能够欺骗最复杂的判别器,类似于艺术品复制品竞赛,我们能够从最严格的标准中获得最高分但最有帮助的裁判
实际上,生成器从具有高斯分布的多元高斯分布的预定义分布中抽取随机样本作为最受欢迎的输入,并生成看起来好像可能来自目标分布的数据。 这与复制品竞赛非常相似,在复制品竞赛中,我们最初对艺术品一无所知,并一直朝着像样的复制品努力。
......@@ -929,7 +929,7 @@ CGAN 认为条件变量是已知的。 因此,在训练期间将条件变量
![](img/d0b59c10-802b-4bee-96d7-63d5d2ce342d.png)
您可能已经注意到,生成的图像不是 0 到 9 的顺序。我们做错了吗? 幸运的是,没有。 回想一下,条件变量`c`在模型之前是未知的,并且是在训练期间推断出来的。 标签 0 不一定表示模型的数字 0。 但是模型获得的知识是类别 0 与任何其他类别都不同。 因此,从 0 到 9 的标签仅代表 10 个不同的类别。 事实证明,在我们的案例中,类别 0 到 9 代表数字 3、0、2、6、4、7、5、8、9、1。连续变量呢? 我们可以看到生成的图像的旋转行为逐行不同,尤其是 0、7、8、9 和 1。第一行(输入连续值`-3`的前 10 张图像)显示逆时针旋转 20 度 从垂直轴开始。 最后一行(具有输入连续值`3`的最后 10 张图像)显示从垂直轴顺时针旋转 20 度。
您可能已经注意到,生成的图像不是 0 到 9 的顺序。我们做错了吗? 幸运的是,没有。 回想一下,条件变量`c`在模型之前是未知的,并且是在训练期间推断出来的。 标签 0 不一定表示模型的数字 0。 但是模型获得的知识是类别 0 与任何其他类别都不同。 因此,从 0 到 9 的标签仅代表 10 个不同的类别。 事实证明,在我们的案例中,类别 0 到 9 代表数字 3、0、2、6、4、7、5、8、9、1。连续变量呢? 我们可以看到生成的图像的旋转行为逐行不同,尤其是 0、7、8、9 和 1。第一行(输入连续值`-3`的前 10 张图像)显示从垂直轴开始逆时针旋转 20 度。 最后一行(具有输入连续值`3`的最后 10 张图像)显示从垂直轴顺时针旋转 20 度。
使用 InfoGAN,除了生成的图像类别之外,我们还扩展了对宽度或旋转等属性的控制。
......
......@@ -375,7 +375,7 @@ The predictions for the notMNIST example are: [2.0, 5.0, 2.0, 2.0, 2.0, 2.0, 2.0
仅有少量训练数据可用,深度学习算法通常不会比传统机器学习算法起作用或表现更差。 有了足够的数据,深度学习就开始击败传统学习。 随着数据量的增加,它对性能差距的影响也越来越大。 这里的明确信息是,深度学习通常需要足够数量的训练数据才能获得良好的性能。
深度学习之所以需要巨大的数据集,是因为它使用该数据集从头开始训练模型(或模型的某些关键部分)。 您在这里看到问题了吗? 显然,与我们人类不同,传统的深度学习算法无法从少量数据样本中快速学习,而人类则可以利用过去的经验来快速学习。 我们可以总结一下**机器学习****ML**)/ **深度学习****DL**)与人类从 以下两个方面
深度学习之所以需要巨大的数据集,是因为它使用该数据集从头开始训练模型(或模型的某些关键部分)。 您在这里看到问题了吗? 显然,与我们人类不同,传统的深度学习算法无法从少量数据样本中快速学习,而人类则可以利用过去的经验来快速学习。 我们可以从以下两个方面总结一下**机器学习****ML**)/ **深度学习****DL**)与人类
* **样本效率**:深度学习的样本效率低,因为它需要来自各个类别的足够的样本用于分类任务,而对于回归任务则需要足够的变化。 例如,我们通常在每位数数千个样本上训练一个手写数字识别器。
* **可移植性**:对于特定任务,深度学习不会从以前的经验中学习,也不会利用从同一任务中学到的知识。 您可能会争辩说,迁移学习就像利用以前的经验一样,但是请记住,转移的知识是从其他任务中获得的,我们仍然需要使用庞大的数据集来微调模型的关键部分。
......
......@@ -2,7 +2,7 @@
深度学习技术可用于开发智能 Web 应用程序。 在过去的几年中,已经发现在其产品和业务中采用深度学习技术的公司数量急剧增长。 提供人工智能和基于深度学习的解决方案的新兴企业数量激增。 本书介绍了用于使用 Python 在 Web 开发中实施深度学习的众多工具和技术实践。
首先,您将学习机器学习的基础知识,重点是深度学习和神经网络的基础,以及它们的常见变体,例如卷积神经网络,以及如何将它们集成到具有内置前端的网站中 具有不同的标准 Web 技术堆栈。 您将通过为自定义模型创建 REST API,使用 Django 和 Flask 等 Python 库来创建支持深度学习的 Web 应用程序。 您将为 Google Cloud 和 AWS 上基于深度学习的 Web 部署设置云环境,并获得有关如何使用经过实践检验的深度学习 API 的指导。 此外,您将使用 Microsoft 的 Intelligent Emotion API,该 API 可以从一张脸部图片中检测出人类的情感。 您还将掌握部署真实世界的网站的知识,并获得丰富的见解,可以使用 reCaptcha 和 Cloudflare 保护这些网站,从而获得可靠的体验。 最后,您将使用自然语言处理从用户评论中推荐餐馆,并通过 Dialogflow 将语音 UX 集成到您的网页上。
首先,您将学习机器学习的基础知识,重点是深度学习和神经网络的基础,以及它们的常见变体,例如卷积神经网络,以及如何将它们集成到网站中,其前端使用不同标准 Web 技术堆栈构建。 您将通过为自定义模型创建 REST API,使用 Django 和 Flask 等 Python 库来创建支持深度学习的 Web 应用程序。 您将为 Google Cloud 和 AWS 上基于深度学习的 Web 部署设置云环境,并获得有关如何使用经过实践检验的深度学习 API 的指导。 此外,您将使用 Microsoft 的 Intelligent Emotion API,该 API 可以从一张脸部图片中检测出人类的情感。 您还将掌握部署真实世界的网站的知识,并获得丰富的见解,可以使用 reCaptcha 和 Cloudflare 保护这些网站,从而获得可靠的体验。 最后,您将使用自然语言处理从用户评论中推荐餐馆,并通过 Dialogflow 将语音 UX 集成到您的网页上。
到本书结尾,您将能够借助最佳工具和实践来部署智能 Web 应用程序和网站。
......@@ -16,7 +16,7 @@
“第 1 章”,“揭开人工智能和机器学习基础的神秘面纱”,简要介绍了机器学习,深度学习以及与 Web 开发相关的其他形式的人工智能方法。 本章将快速介绍机器学习管道的基本主题,例如探索性数据分析,数据预处理,特征工程,训练和测试,评估模型等等。 最后,提出了在 AI 流行之前网站所提供的交互性和用户体验之间的比较以及它们在现代中的状态。 我们还研究了一些最大的公司在网络上使用 AI 的情况,以及 AI 如何革新了他们的产品。
“第 2 章”,“使用 Python 进行深度学习入门”,介绍了与深度学习相关的基本概念和术语,以及如何使用深度学习来构建具有不同深度学习库的简单 Web 应用 蟒蛇
“第 2 章”,“使用 Python 进行深度学习入门”,介绍了与深度学习相关的基本概念和术语,以及如何使用深度学习来构建具有不同深度学习库的简单 Python Web 应用
“第 3 章”,“创建您的第一个深度学习 Web 应用程序”讨论了一些专门用于利用深度学习的有关 Web 应用程序结构的重要概念。 然后继续讨论理解数据集的方法。 本章还显示了如何实现和改进简单的神经网络,以及如何将其包装到用于开发简单 Web 应用程序的 API 中。 然后,我们继续展示如何使用不同的标准 Web 技术堆栈来实现 API。
......@@ -28,7 +28,7 @@
“第 7 章”,“在 AWS 上使用 Python 的 DL:对象检测和家庭自动化”介绍了 Amazon Web Services,并简要介绍了各种产品,包括 Alexa API 和 Rekognition API。 Alexa API 可用于构建家庭自动化 Web 应用程序和其他交互式界面,而 Rekognition API 可用于检测照片和视频中的人和物体。
“第 8 章”,“使用 Python 在 Microsoft Azure 上进行深度学习”,介绍了 Microsoft Azure 云服务,重点介绍了认知工具包,该工具包是 Microsoft 替代 TensorFlow 的 Emotion API 的工具,可用于确定 一个人的面部照片所产生的情感以及 TTS API(可用于从文本中产生听起来自然的声音)。
“第 8 章”,“使用 Python 在 Microsoft Azure 上进行深度学习”,介绍了 Microsoft Azure 云服务,重点介绍了认知工具包,该工具包是 Microsoft 替代 TensorFlow 的 Emotion API 的工具,可用于确定一个人的面部照片所产生的情感以及 TTS API(可用于从文本中产生听起来自然的声音)。
“第 9 章”,“启用深度学习的网站的通用生产框架”介绍了要建立的通用框架,以在生产环境中在网络上有效部署深度学习。 涵盖了减少计算资源,将原始数据集转换为用于训练深度学习模型的数据集以及如何以最小的资源密集型方式使模型可用于网络上使用的策略。
......@@ -36,7 +36,7 @@
“第 11 章”,“DIY – Web DL 生产环境”讨论了在生产中更新模型的方法以及如何根据需求选择正确的方法。 我们从简要概述开始,然后演示一些用于创建深度学习数据流的著名工具。 最后,我们实现在线学习或增量学习的演示,以建立生产中模型更新的方法。
“第 12 章”,“使用 DL API 和客户支持聊天机器人创建 E2E Web 应用程序”介绍自然语言处理,并讨论如何创建聊天机器人以使用 Dialogflow 解决一般客户支持查询并将其集成 进入 Django 和 Flask 网站。 我们探索实现机器人个性的方法以及如何使这种系统资源有效。 我们还介绍了一种使用 Python 实现基于文本到语音和基于语音到文本的用户界面的方法。
“第 12 章”,“使用 DL API 和客户支持聊天机器人创建 E2E Web 应用程序”介绍自然语言处理,并讨论如何创建聊天机器人以使用 Dialogflow 解决一般客户支持查询并将其集成 Django 和 Flask 网站。 我们探索实现机器人个性的方法以及如何使这种系统资源有效。 我们还介绍了一种使用 Python 实现基于文本到语音和基于语音到文本的用户界面的方法。
附录,“网络上深度学习的成功案例和新兴领域”举例说明了一些最著名的网站,这些网站的产品很大程度上依赖于利用深度学习的力量。 本章还讨论了可以通过深度学习得到增强的 Web 开发中的一些关键研究领域。 这将帮助您更深入地研究 Web 技术和深度学习的融合,并激发您提出自己的智能 Web 应用程序。
......
......@@ -6,9 +6,9 @@
这句话可能看起来非常熟悉,不用说,它确实是对当前技术中断的强烈共鸣。 在最近的一段时间里,**人工智能****AI**)成为几乎每个行业都感兴趣的领域。 无论是教育公司,电信公司,还是从事医疗保健的组织,他们都已采用 AI 来增强业务。 AI 与其他多个行业的这种不可思议的整合只能保证随着时间的推移变得更好,并以智能方式解决关键的实际问题。 今天,我们的电话可以根据我们的指示为您进行临床约会,我们的电话摄像头可以告诉我们所捕获图像的一些人类感知属性,我们的汽车警报系统可以检测到我们的驾驶手势,并可以避免发生意外事故。 随着研究,技术和计算能力民主化的发展,这些示例将变得越来越好,并且将变得越来越智能。
随着我们步入软件 2.0 时代,了解为什么自 1950 年代以来就存在的一项技术成为当今大多数新闻的头等重要。 是! 人工智能诞生于 1950 年代,当时诸如 **Alan Turing** 之类的少数计算机科学家和数学家开始思考机器是否可以思考以及是否可以通过智能获得支持,以便他们可以自己回答问题 无需明确编程。
随着我们步入软件 2.0 时代,了解为什么自 1950 年代以来就存在的一项技术成为当今大多数新闻的头等重要。 是! 人工智能诞生于 1950 年代,当时诸如 **Alan Turing** 之类的少数计算机科学家和数学家开始思考机器是否可以思考以及是否可以通过智能获得支持,以便他们可以自己回答问题,而无需明确编程。
自成立以来不久,**人工智能**一词由 **John McCarthy** 在 1956 年的一次学术会议上首次提出。 从问题“**机器可以思考吗?**”(由图灵在他的论文中提出,题目为《计算机械和智能》),直到 1950 年第 21 天 二十世纪,人工智能世界已经展现了一些我们从未想过的前所未有的成果。
自成立以来不久,**人工智能**一词由 **John McCarthy** 在 1956 年的一次学术会议上首次提出。 从问题“**机器可以思考吗?**”(由图灵在他的论文中提出,题目为《计算机械和智能》)。从 1950 年到今天,在二十一世纪中,人工智能世界已经展现了一些我们从未想过的前所未有的成果。
今天,如果不使用**网络**,几乎不可能想到一天。 它已轻松成为我们的基本必需品之一。 我们最喜欢的搜索引擎可以直接回答我们的问题,而不是向我们提供相关链接的列表。 他们可以分析在线文本并检测其意图并总结其内容。 由于 AI,所有这些都是可能的。
......@@ -117,7 +117,7 @@ DL 是一种机器学习,但它完全基于**神经网络**。 我们还将在
在上图中,采用 DL 系统对手写数字图像进行分类。 系统将手写数字的图像作为输入,并尝试学习其基础表示。 在第一层中,系统学习通用特征,例如笔触和线条。 随着层数的增加,它将了解特定于给定图像的特征。 层数越多,系统越深。 让我们看一下下面的定义,它是由 FrançoisChollet 在他的书《Python 深度学习》中给出的:
“深度学习中的**深度**并不是指通过这种方法实现的任何形式的更深层次的理解;它代表的是连续表示层的思想。有多少层对模型的贡献 数据称为模型的深度。在深度学习中,这些分层表示(几乎总是)是通过称为神经网络的模型来学习的,这些模型构造为彼此堆叠的文字层。
“深度学习中的**深度**并不是指通过这种方法实现的任何形式的更深层次的理解;它代表的是连续表示层的思想。有多少层对数据的模型有所贡献,称为模型的深度。在深度学习中,这些分层表示(几乎总是)是通过称为神经网络的模型来学习的,这些模型构造为彼此堆叠的文字层。
该定义非常恰当地捕获了 DL 的所有必要成分,并精美地引入了将数据视为分层表示的概念。 因此,从广义上讲,DL 系统以分层的方式将数据分解为简单的表示形式,并且为了学习这些表示形式,它经常利用许多层(称为*深*) 。 现在我们来看看大图,它告诉我们 AI,ML 和 DL 是如何相互关联的。
......@@ -419,7 +419,7 @@ Facebook Messenger 的漫游器平台在向公众开放的前 17 个月内创建
自从互联网发明以来,当今的 Web 应用程序每时每刻都会生成大量日志。 即使将鼠标指针闲置在网页上,也可能会报告给 Google Analytics(分析)仪表板,从该站点上,网站管理员可以查看用户正在查看哪些页面以及他们在页面上花费了多少时间。 同样,用户在页面之间采取的流量将是一个非常有趣的指标。
最早的网络分析工具仅能衡量网页点击量,能够创建一个地图来访问给定页面的次数以及该页面是一个唯一用户的次数,但除非提供有关用户访问模式的信息,否则它们几乎无法提供任何信息 它们经过了专门的硬编码,将以非常笼统的方式呈现,并且从来都不是特定于网站的。 正在向进行电子商务的公司提供与向个人网站提供的分析相同的形式。
最早的网络分析工具仅能衡量网页点击量,能够创建一个地图来访问给定页面的次数以及该页面是一个唯一用户的次数,但除非提供有关用户访问模式的信息,否则它们几乎无法提供任何信息它们经过了专门的硬编码,将以非常笼统的方式呈现,并且从来都不是特定于网站的。 正在向进行电子商务的公司提供与向个人网站提供的分析相同的形式。
随着 AI 在网络分析领域带来的革命,如今部署人工智能功能的工具可以对网站的性能做出未来的预测,甚至建议删除或添加网页上的特定内容以提高用户对该页面的参与度 。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册