---
schema_version: "library-reader-v1"
source_type: "original_book"
title: "人工智能与大数据技术导论"
author: null
edition: null
publisher: null
year: null
isbn: "9787302517986"
library_document_id: "cd4f7678-cd9b-4971-bde0-e9ad46a6cc71"
source_sha256: "5011cdcf83cd5e047c93a1ce7465f970fc88be69c93b94be3d7fa5fbddbb43f0"
pdf_physical_page_count: 490
pdf_physical_page_index_base: 0
range_start: 320
range_count: 10
html_url: "https://workshop.closeclaw.top/api/ai/read/cd4f7678-cd9b-4971-bde0-e9ad46a6cc71?start=320&limit=10"
markdown_url: "https://workshop.closeclaw.top/api/ai/read/cd4f7678-cd9b-4971-bde0-e9ad46a6cc71.md?start=320&limit=10"
previous_url: "https://workshop.closeclaw.top/api/ai/read/cd4f7678-cd9b-4971-bde0-e9ad46a6cc71.md?start=310&limit=10"
next_url: "https://workshop.closeclaw.top/api/ai/read/cd4f7678-cd9b-4971-bde0-e9ad46a6cc71.md?start=330&limit=10"
---

# 人工智能与大数据技术导论

> 页码规则：PDF_PHYSICAL_PAGE_INDEX 是从 0 开始的权威文件物理页索引；PRINTED_PAGE 是页面中识别出的印刷页码，可能为空，二者不得混用。

## PDF_PHYSICAL_PAGE_INDEX=320 | PRINTED_PAGE=304

下面使用EstimatorsAPI来计算模型大小(为了简单起见，就是计算不是0的参数的个数):

下面使用L1正则化来减少模型大小（600），并确保在验证集上的log-loss小于0.35:

人工智能与大数据技术导论

304

## PDF_PHYSICAL_PAGE_INDEX=321 | PRINTED_PAGE=305

第9章 TensorFlow 高级知识

305

## PDF_PHYSICAL_PAGE_INDEX=322 | PRINTED_PAGE=306

使用 regularization strength=0.1 开始训练：

结果如图9-41、图9-42所示。

人工智能与大数据技术导论

306

## PDF_PHYSICAL_PAGE_INDEX=323 | PRINTED_PAGE=307

要注意的是，正则化越强，模型越小，但是会影响分类误差。

第9章 TensorFlow 高级知识

307

## PDF_PHYSICAL_PAGE_INDEX=324 | PRINTED_PAGE=NOT_DETECTED

第10章

神经网络

本章，我们以TensorFlow环境为基础，阐述神经网络。

10.1 什么是神经网络

我们在9.1节中提到如图10-1所示的分类问题属于非线性问题。

“非线性”意味着你无法使用形式为 $b + w _ { 1 } x _ { 1 } + w _ { 2 } x _ { 2 }$ 的模型准确预测标签。我们采用特征交叉对非线性问题进行建模，从而解决了如图10-1所示的问题。但是，如果数据集如图10-2所示，那么会怎么样呢？

图10-2所示的数据集问题是一个互相交错的螺旋组合，无法用线性模型解决。我们可以考虑如何添加正确的特征交叉乘积来解决。但很显然，我们的数据集可能会越来越复杂。最终还是希望通过某种方式让模型自行学习非线性规律，而不用我们手动为它们指定参数。这可以通过深度神经网络来实现。深度神经网络可以非常出色地处理复杂数据，例如图片数据、音频数据以及视频数据等。我们将在本章详细了解神经网络。

10.1.1 隐藏层

我们希望模型能够自行学习非线性规律，而不用手动为它们指定参数。这需要神经网络来帮助解决这类非线性问题。那么，什么是神经网络呢？首先用图表呈现一个线性模型，如图10-3所示。

该模型中有一些输入，每个输入都具有一个权重，这些权重以线性方式结合到一起产生输出。每个蓝色圆圈（最下面一层）均表示一个输入特征，绿色圆圈（最上面一层）表示各个输入的加权和。为了提高此模型处理非线性问题的能力，我们可以如何更改它？

## PDF_PHYSICAL_PAGE_INDEX=325 | PRINTED_PAGE=309

在图10-4（颜色请参看下载包中的相关文件）所示的模型中，我们添加了一个表示中间值的“隐藏层”。隐藏层中的每个黄色节点（中间层）均是蓝色输入节点（最下面一层）值的加权和。输出的是黄色节点（中间层）的加权和。

此模型是线性的，因为其输出仍是其输入的线性组合。在图10-5所示的模型中，我们又添加了一个表示加权和的“隐藏层”。

此模型仍是线性的。当你将输出表示为输入的函数并进行简化时，只是获得输入的另一个加权和而已。该加权和无法对图10-2中的非线性问题进行有效建模。因为即便我们添加任意多的分层，所有线性函数的组合依然是线性函数。因此，我们要从其他方面着手。所谓的从其他方面着手，也就是说，我们需要添加非线性函数。

10.1.2 激活函数

要对非线性问题进行建模，我们可以直接引入非线性函数。这种非线性函数可位于任何小的隐藏式节点的输出中。我们可以用非线性函数将每个隐藏层节点像管道一样连接起来。在图10-6所示的模型中，在“隐藏层1”中的各个节点的值传递到下一层进行加权求和之前，我们采用一个非线性函数对其进行了转换。这种非线性函数称为激活函数。

第10章 神经网络

309

## PDF_PHYSICAL_PAGE_INDEX=326 | PRINTED_PAGE=310

通过在非线性上堆叠非线性，我们能够对输入和预测输出之间极其复杂的关系进行建模。下面我们来看一些常见的激活函数。S型激活函数将“加权和”转换为介于0和1之间的值。

$$
F ( x ) = { \frac { 1 } { 1 + e ^ { - x } } }
$$

曲线图如图10-7所示。

10.1.3 ReLU

相较于S型函数等平滑函数，以下修正线性单元激活函数（ReLU）的效果通常要好一点，同时还非常易于计算。

$$
F ( x ) = m a x ( 0 , x )
$$

ReLU是一种常用的非线性激活函数。如图10-8所示，它会接受线性函数，并在零值处将其截断。若返回值在零值以上，则为线性函数。若函数返回值小于零，则输出为零。这是一

人工智能与大数据技术导论

310

## PDF_PHYSICAL_PAGE_INDEX=327 | PRINTED_PAGE=311

种最简单的非线性函数，我们可以使用该函数来创建非线性模型。ReLU的优势在于操作起来非常简单，拥有更实用的响应范围。

ReLU

实际上，所有数学函数均可作为激活函数。假设 $\sigma$ 表示激活函数（ReLU、S型函数等），网络中节点的值由以下公式指定：

$$
\sigma ( { \boldsymbol { w } } \cdot { \boldsymbol { x } } + { \boldsymbol { b } } )
$$

TensorFlow为各种激活函数提供“开箱即用型”支持。但是，我们仍然建议从ReLU着手。然后，可以将这些层级堆叠起来，并创建任意复杂程度的神经网络。总之，我们的模型拥有了人们通常所说的“神经网络”所有标准组件：

●一组节点，类似于神经元，位于层中。

●一组权重，表示每个神经网络层与其下方的层之间的关系。下方的层可能是另一个神经网络层，也可能是其他类型的层。

●一组偏差，每个节点一个偏差。

●一个激活函数，对层中每个节点的输出进行转换。不同的层可能拥有不同的激活函数。

还需要注意的是，神经网络不一定始终比特征组合好，但它确实适用于特征组合很难处理的场景。

10.1.4 实例代码

下面我们用TensorFlow的DNNRegressor类来定义一个神经网络(Neural Network，NN)和它的隐藏层。然后训练一个神经网络来学习数据集中的非线性，并展示神经网络比一个线性回归模型能获得更好的性能。我们先装载数据：

第10章 神经网络

311

## PDF_PHYSICAL_PAGE_INDEX=328 | PRINTED_PAGE=312

人工智能与大数据技术导论

然后预处理数据：

312

## PDF_PHYSICAL_PAGE_INDEX=329 | PRINTED_PAGE=313

创建训练集和验证集：

结果如图10-9\~图10-12所示。

313

下一段：[继续读取](https://workshop.closeclaw.top/api/ai/read/cd4f7678-cd9b-4971-bde0-e9ad46a6cc71.md?start=330&limit=10)
