在本章中,我们将讨论**人工智能**(**AI**)的概念及其在现实世界中的应用。 我们在日常生活中花费了大量时间与智能系统进行交互。 这可以采取以下形式:在互联网上搜索某些内容,进行生物特征识别的面部识别或将口语单词转换为文本。 人工智能是这一切的核心,它正在成为我们现代生活方式的重要组成部分。 所有这些系统都是复杂的实际应用程序,而 AI 通过数学和算法解决了这些问题。 在整本书中,我们将学习可用于构建此类应用程序的基本原理。 我们的总体目标是使您能够应对日常生活中可能遇到的具有挑战性的新 AI 问题。
在本章中,我们将讨论**人工智能**(**AI**)的概念及其在现实世界中的应用。 我们在日常生活中花费了大量时间与智能系统进行交互。 这可以采取以下形式:在互联网上搜索某些内容,进行生物特征识别的面部识别或将口语单词转换为文本。 人工智能是这一切的核心,它正在成为我们现代生活方式的重要组成部分。 所有这些系统都是复杂的实际应用程序,而 AI 通过数学和算法解决了这些问题。 在整本书中,我们将学习可用于构建此类应用程序的基本原理。 我们的总体目标是使您能够应对日常生活中可能遇到的具有挑战性的新 AI 问题。
到本章末,您将了解:
...
...
@@ -195,9 +195,9 @@
# 通用问题解决器
**通用问题解决器**(**GPS**)是由 Herbert Simon,J.C。Shaw 和 Allen Newell 提出的 AI 程序。 它是 AI 世界中第一个有用的计算机程序。 目的是使其能够作为通用的问题解决机器。 当然,以前有很多软件程序,但是这些程序执行特定的任务。 GPS 是第一个旨在解决任何一般问题的程序。 GPS 应该针对每个问题使用相同的基本算法来解决所有问题。
**通用问题解决器**(**GPS**)是由 Herbert Simon,J.C。Shaw 和 Allen Newell 提出的 AI 程序。 它是 AI 世界中第一个有用的计算机程序。 目的是使其能够作为通用的问题解决机器。 当然,以前有很多软件程序,但是这些程序执行特定的任务。 GPS 是第一个旨在解决任何一般问题的程序。 GPS 应该针对每个问题使用相同的基本算法来解决所有问题。
***Google 助手**:Google 助手于 2016 年启动,是目前可用的最高级聊天机器人之一。 可以在各种设备中找到它,例如电话,耳机,扬声器,洗衣机,电视和冰箱。 如今,大多数 Android 手机都包含 Google Assistant。 Google Home 和 Nest Home Hub 也支持 Google Assistant。
@@ -205,9 +205,9 @@ Webhook 是,HTTP 推送 API 或 Web 回调。 它也称为反向 API,因为
# 使用 DialogFlow 创建聊天机器人
Google 在机器学习和**自然语言处理**(**NLP**)中有着广泛的研究历史。 这项研究的大部分内容都反映在他们的 DialogFlow 工具中。 DialogFlow 与 Google Cloud 语音转文本 API 以及其他第三方服务(例如 Google Assistant,Amazon Alexa 和 Facebook Messenger)集成在一起。
Google 在机器学习和**自然语言处理**(**NLP**)中有着广泛的研究历史。 这项研究的大部分内容都反映在他们的 DialogFlow 工具中。 DialogFlow 与 Google Cloud 语音转文本 API 以及其他第三方服务(例如 Google Assistant,Amazon Alexa 和 Facebook Messenger)集成在一起。
GAN 的体系结构具有两个基本元素:生成器网络和鉴别器网络。 每个网络都可以是任何神经网络,例如**人工神经网络**(**ANN**),**卷积神经网络**(**CNN**), **递归神经网络**(**RNN**),或**长短期记忆**(**LSTM**)。 鉴别器必须具有完全连接的层,最后是分类器。
让我们仔细看一下 GAN 架构的组件。 在此示例中,我们将想象正在创建一个虚拟 GAN。
...
...
@@ -189,7 +189,7 @@ The architecture of the discriminator network
**3D 生成对抗网络**(**3D-GAN** )是 GAN 的变体,就像 StackGAN,CycleGAN 和 **S****上层分辨率一样 生成对抗网络**( **SRGAN**)。 与香草 GAN 相似,它具有生成器和鉴别器模型。 这两个网络都使用 3D 卷积层,而不是使用 2D 卷积。 如果提供足够的数据,它可以学习生成具有良好视觉质量的 3D 形状。
**3D 生成对抗网络**(**3D-GAN**)是 GAN 的变体,就像 StackGAN,CycleGAN 和 **S****上层分辨率一样 生成对抗网络**(**SRGAN**)。 与香草 GAN 相似,它具有生成器和鉴别器模型。 这两个网络都使用 3D 卷积层,而不是使用 2D 卷积。 如果提供足够的数据,它可以学习生成具有良好视觉质量的 3D 形状。
CNN 在计算机视觉任务中非常出色,无论是用于分类图像还是检测图像中的对象。 CNN 善于理解图像,以至于激发研究人员在 GAN 网络中使用 CNN。 最初,GAN 官方论文的作者介绍了仅具有密集层的**深层神经网络**(**DNN**)。 在 GAN 网络的原始实现中未使用卷积层。 在以前的 GAN 中,生成器和鉴别器网络仅使用密集的隐藏层。 相反,作者建议在 GAN 设置中可以使用不同的神经网络体系结构。
CNN 在计算机视觉任务中非常出色,无论是用于分类图像还是检测图像中的对象。 CNN 善于理解图像,以至于激发研究人员在 GAN 网络中使用 CNN。 最初,GAN 官方论文的作者介绍了仅具有密集层的**深层神经网络**(**DNN**)。 在 GAN 网络的原始实现中未使用卷积层。 在以前的 GAN 中,生成器和鉴别器网络仅使用密集的隐藏层。 相反,作者建议在 GAN 设置中可以使用不同的神经网络体系结构。
The dataset is available for non-commercial research purposes only and can't be used for commercial purposes. If you intend to use the dataset for commercial purposes, seek permissions from the owners of the images.
**条件增强**(**CA**)网络从表示为![](img/cb774d54-76ee-4c94-89a7-94e8b16c4493.png)的分布中采样随机潜在变量![](img/d86d468c-b92c-41c9-83f1-75baf727847c.png)。 我们将在后面的部分中详细了解这种分布。 添加 CA 块有很多优点,如下所示:
**条件增强**(**CA**)网络从表示为![](img/cb774d54-76ee-4c94-89a7-94e8b16c4493.png)的分布中采样随机潜在变量![](img/d86d468c-b92c-41c9-83f1-75baf727847c.png)。 我们将在后面的部分中详细了解这种分布。 添加 CA 块有很多优点,如下所示:
* 它为网络增加了随机性。
* 通过捕获具有各种姿势和外观的各种对象,它使生成器网络变得强大。
...
...
@@ -255,7 +255,7 @@ The architecture of the Stage-II discriminator network.
当然,我们不能轻易地从拆分分析中得出结论(因为我们需要考虑所有交互作用),但是此活动将有助于为每个群集提供语义标签。 此时,通过 **t 分布随机邻居嵌入**(**t-SNE**)变换(用于 进一步的细节,请检查*使用 t-SNE 可视化数据, van der Maaten L.,Hinton G.,Journal of Machine Learning Research 9,* 2008)。 可以按照以下步骤进行:
当然,我们不能轻易地从拆分分析中得出结论(因为我们需要考虑所有交互作用),但是此活动将有助于为每个群集提供语义标签。 此时,通过 **t 分布随机邻居嵌入**(**t-SNE**)变换(用于 进一步的细节,请检查*使用 t-SNE 可视化数据, van der Maaten L.,Hinton G.,Journal of Machine Learning Research 9,* 2008)。 可以按照以下步骤进行:
如今,语音服务(例如 Apple Siri,Amazon Alexa,Google Assistant 和 Google Translate)已变得越来越流行,因为语音是我们在某些情况下查找信息或完成任务的最自然和有效的方法。 这些语音服务中的许多服务都是基于云的,因为用户语音可能会很长而且很自由,并且**自动语音识别**(**ASR**)非常复杂,并且需要大量的计算能力。 实际上,得益于深度学习的突破,仅在最近几年,在自然和嘈杂的环境中 ASR 才变得可行。
如今,语音服务(例如 Apple Siri,Amazon Alexa,Google Assistant 和 Google Translate)已变得越来越流行,因为语音是我们在某些情况下查找信息或完成任务的最自然和有效的方法。 这些语音服务中的许多服务都是基于云的,因为用户语音可能会很长而且很自由,并且**自动语音识别**(**ASR**)非常复杂,并且需要大量的计算能力。 实际上,得益于深度学习的突破,仅在最近几年,在自然和嘈杂的环境中 ASR 才变得可行。
但是在某些情况下,能够离线识别设备上的简单语音命令是有意义的。 例如,要控制 Raspberry-Pi 驱动的机器人的运动,您不需要复杂的语音命令,不仅设备上的 ASR 比基于云的解决方案还快,而且即使在 没有网络访问的环境。 设备上的简单语音命令识别还可以通过仅在发出某些明确的用户命令时才向服务器发送复杂的用户语音来节省网络带宽。
RNN allows us to handle sequences of input and/or output, because the network, by design, has memory of previous items in an input sequence or can generate a sequence of output. This makes RNN more appropriate for speech recognition, (where the input is a sequence of words uttered by users), image captioning, (where the output is a natural language sentence consisting of a series of words), text generation, and time series prediction. If you're unfamiliar with RNN, you should definitely check out *Andrey Karpathy's* blog, *The Unreasonable Effectiveness of Recurrent Neural Networks* ([http://karpathy.github.io/2015/05/21/rnn-effectiveness](http://karpathy.github.io/2015/05/21/rnn-effectiveness)). We'll also cover some detailed RNN models later in the book.
@@ -57,7 +57,7 @@ RNN allows us to handle sequences of input and/or output, because the network, b
The speech commands dataset is collected from an Open Speech Recording site ([https://aiyprojects.withgoogle.com/open_speech_recording](https://aiyprojects.withgoogle.com/open_speech_recording)). You should give it a try and maybe contribute a few minutes of your own recordings to help it improve and also get a sense of how you can collect your own speech commands dataset if needed. There's also a Kaggle competition ([https://www.kaggle.com/c/tensorflow-speech-recognition-challenge](https://www.kaggle.com/c/tensorflow-speech-recognition-challenge)) on using the dataset to build a model and you can learn more about speech models and tips there.
As mobile developers, you probably don't need to understand DFT and FFT. But you'd better appreciate how all this model training works when used in mobile apps by knowing that behind the scenes of the TensorFlow simple speech commands model training that we're about to cover, it's the use of FFT, one of the top 10 algorithms in the 20th century, among other things of course, that makes the CNN-based speech command recognition model training possible. For a fun and intuitive tutorial on DFT, you can read this article: [http://practicalcryptography.com/miscellaneous/machine-learning/intuitive-guide-discrete-fourier-transform](http://practicalcryptography.com/miscellaneous/machine-learning/intuitive-guide-discrete-fourier-transform) .
The gradient concept is used in the back propagation process to update network weights so it can learn to generate better outputs. If you're not familiar with the back propagation process, one of the most fundamental and powerful algorithms in neural networks, you should definitely spend some time understanding it – just Google "backprop" and the top five results won't disappoint. Vanishing gradient means that, during the deep neural network back propagation learning process, network weights in earlier layers barely get updated so the network never converges; exploding gradient means that those weights get updated too wildly, causing the network to diverge a lot. So, if someone has a closed mind and never learns, or if someone gets crazy about new things as fast as he loses interest, you know what kind of gradient problem they seem to have.
...
...
@@ -62,7 +62,7 @@ The gradient concept is used in the back propagation process to update network w
自 2012 年深度学习起步以来,有人认为 Ian Goodfellow 在 2014 年提出的[**生成对抗网络**](https://arxiv.org/abs/1406.2661)(**GAN**)比这更有趣或更有前途。 实际上, Facebook AI 研究主管和之一,深度学习研究人员之一的 Yann LeCun 将 GAN 和对抗训练称为*,“这是近十年来机器学习中最有趣的想法。 ”* 因此,我们如何在这里不介绍它,以了解 GAN 为什么如此令人兴奋,以及如何构建 GAN 模型并在 iOS 和 Android 上运行它们?
自 2012 年深度学习起步以来,有人认为 Ian Goodfellow 在 2014 年提出的[**生成对抗网络**](https://arxiv.org/abs/1406.2661)(**GAN**)比这更有趣或更有前途。 实际上, Facebook AI 研究主管和之一,深度学习研究人员之一的 Yann LeCun 将 GAN 和对抗训练称为*,“这是近十年来机器学习中最有趣的想法。 ”* 因此,我们如何在这里不介绍它,以了解 GAN 为什么如此令人兴奋,以及如何构建 GAN 模型并在 iOS 和 Android 上运行它们?
在本章中,我们将首先概述 GAN 是什么,它如何工作以及为什么它具有如此巨大的潜力。 然后,我们将研究两个 GAN 模型:一个基本的 GAN 模型可用于生成类似人的手写数字,另一个更高级的 GAN 模型可将低分辨率的图像增强为高分辨率的图像。 我们将向您展示如何在 Python 和 TensorFlow 中构建和训练此类模型,以及如何为移动部署准备模型。 然后,我们将提供带有完整源代码的 iOS 和 Android 应用程序,它们使用这些模型来生成手写数字并增强图像。 在本章的最后,您应该准备好进一步探索各种基于 GAN 的模型,或者开始构建自己的模型,并了解如何在移动应用程序中运行它们。
在前九章中,我们使用 TensorFlow Mobile 在移动设备上运行各种由 TensorFlow 和 Keras 构建的强大的深度学习模型。 正如我们在[第 1 章](../Text/01.html)和*移动 TensorFlow* 入门中提到的那样,Google 还提供了 TensorFlow Lite(可替代 TensorFlow Mobile 的版本)在移动设备上运行模型。 尽管自 Google I / O 2018 起它仍在开发人员预览中,但 Google 打算“ 大大简化开发人员针对小型设备的模型定位的体验。” 因此,值得详细研究 TensorFlow Lite 并为未来做好准备。
如果您是 iOS 开发人员,或者同时使用 iOS 和 Android,则 Apple 一年一度的**全球开发人员大会**(**WWDC**)是您不容错过的活动。 在 WWDC 2017 中,Apple 宣布了新的 Core ML 框架,以支持 iOS(以及所有其他 Apple OS 平台:macOS,tvOS 和 watchOS)上的深度学习模型和标准机器学习模型的运行。 自 iOS 11 起,Core ML 就可用了,截至 2018 年 5 月,Core ML 已占到 80%的标记份额。至少了解您可以在 iOS 应用中使用 Core ML 的基本知识绝对有意义。
如果您是 iOS 开发人员,或者同时使用 iOS 和 Android,则 Apple 一年一度的**全球开发人员大会**(**WWDC**)是您不容错过的活动。 在 WWDC 2017 中,Apple 宣布了新的 Core ML 框架,以支持 iOS(以及所有其他 Apple OS 平台:macOS,tvOS 和 watchOS)上的深度学习模型和标准机器学习模型的运行。 自 iOS 11 起,Core ML 就可用了,截至 2018 年 5 月,Core ML 已占到 80%的标记份额。至少了解您可以在 iOS 应用中使用 Core ML 的基本知识绝对有意义。
因此,我们将在本章涵盖 TensorFlow Lite 和 Core ML,并通过以下主题展示两者的优势和局限性: