深度学习入门:基于 Python 的理论与实现 (15):神经网络 3.4&3.4.1

阅读数:30 2019 年 11 月 13 日 15:07

深度学习入门:基于Python的理论与实现(15):神经网络 3.4&3.4.1

内容简介
本书是深度学习真正意义上的入门书,深入浅出地剖析了深度学习的原理和相关技术。书中使用 Python3,尽量不依赖外部库或工具,从基本的数学知识出发,带领读者从零创建一个经典的深度学习网络,使读者在此过程中逐步理解深度学习。书中不仅介绍了深度学习和神经网络的概念、特征等基础知识,对误差反向传播法、卷积神经网络等也有深入讲解,此外还介绍了深度学习相关的实用技巧,自动驾驶、图像生成、强化学习等方面的应用,以及为什么加深层可以提高识别精度等疑难的问题。
本书适合深度学习初学者阅读,也可作为高校教材使用。

(层神经网络的实现)

现在我们来进行神经网络的实现。这里我们以图 3-15 的 3 层神经网络为对象,实现从输入到输出的(前向)处理。在代码实现方面,使用上一节介绍的 NumPy 多维数组。巧妙地使用 NumPy 数组,可以用很少的代码完成神经网络的前向处理。

深度学习入门:基于Python的理论与实现(15):神经网络 3.4&3.4.1

图 3-15 3 层神经网络:输入层(第 0 层)有 2 个神经元,第 1 个隐藏层(第 1 层)有 3 个神经元,第 2 个隐藏层(第 2 层)有 2 个神经元,输出层(第 3 层)有 2 个神经元

(符号确认)

在介绍神经网络中的处理之前,我们先导入 $w^{(1)}{12}a^{(1)}{1}$ 等符号。这些符号可能看上去有些复杂,不过因为只在本节使用,稍微读一下就跳过去也问题不大。

本节的重点是神经网络的运算可以作为矩阵运算打包进行。因为神经网络各层的运算是通过矩阵的乘法运算打包进行的(从宏观视角来考虑),所以即便忘了(未记忆)具体的符号规则,也不影响理解后面的内容。

我们先从定义符号开始。请看图 3-16。图 3-16 中只突出显示了从输入层神经元 x2 到后一层的神经元 a(1)1 的权重。

如图 3-16 所示,权重和隐藏层的神经元的右上角有一个“(1)”,它表示权重和神经元的层号(即第 1 层的权重、第 1 层的神经元)。此外,权重的右下角有两个数字,它们是后一层的神经元和前一层的神经元的索引号。比如,$w^{(1)}{12}2x_21a^{(1)}{1}$ 的权重。权重右下角按照“后一层的索引号、前一层的索引号”的顺序排列。

深度学习入门:基于Python的理论与实现(15):神经网络 3.4&3.4.1

图 3-16 权重的符号

评论

发布