Deep Learning Note: 1-9 深度神经网络
前面以一个简单的 2 层神经网络为例,介绍了前向传播和反向传播的计算过程。下面扩展到 L 层神经网络的情况。 以图 1 所示的网络为例,记网络的层数为 $L$,此时 $L = 4$。使用 $n^{[l]}$ 表示第 $l$ 层中节点的个数,记输入层为第 0 层,输入有三个特征,故 $n^{[0]} = n_x = 3$;第一个隐藏层有 5 个节点,故 $n^{[1]} = 5$,以此类推,…
Read more
learn, build, evaluate
前面以一个简单的 2 层神经网络为例,介绍了前向传播和反向传播的计算过程。下面扩展到 L 层神经网络的情况。 以图 1 所示的网络为例,记网络的层数为 $L$,此时 $L = 4$。使用 $n^{[l]}$ 表示第 $l$ 层中节点的个数,记输入层为第 0 层,输入有三个特征,故 $n^{[0]} = n_x = 3$;第一个隐藏层有 5 个节点,故 $n^{[1]} = 5$,以此类推,…
Read more
前面在进行逻辑回归的梯度下降时,将各个参数都初始化为 0,但在神经网络中不能这样做。 例如对于如图 1 所示的网络: 如果将 $W$ 初始化为 0,即: \begin{equation} W^{[1]} = \begin{bmatrix}0 & 0 \\ 0 & 0 \end{bmatrix} W^{[2]} = \begin{bmatrix}0 &am…
Read more
1. 神经网络中的梯度下降 本文以前面 给出的用于二分类的两层神经网络为例,展示神经网络中梯度下降的计算过程。在该神经网络中: 各层节点数分别为 $n^{[0]}$、$n^{[1]}$、$n^{[2]}$,由于是二分类问题,只有一个输出,故 $n^{[2]} = 1$ 输入为 $n^{[0]} \times m$ 的特征向量矩阵 $X$,其中 $m$ 为样本个数 输出为 $1 \times m…
Read more
1. 激活函数 1.1 Sigmoid 在设计神经网络时,需要选择隐藏层和输出层的激活函数(Activation Function)。之前一直使用 Sigmoid 函数作为激活函数: \begin{equation} \sigma(z) = \frac{1}{1 + e^{-z}} \tag{1} \end{equation} Sigmoid 函数的形状如图 1 所示,其导数为: \beg…
Read more
1. 基本概念 图 1 给出了一个简单的神经网络。 在图 1 中,左边的 $x_1$、 $x_2$、 $x_3$ 为输入的特征,称为输入层(Input Layer);中间的一列 4 个节点称为隐藏层(Hidden Layer);最右边的一个节点称为输出层(Output Layer),输出预测 $\hat{y}$。输入层的特征和输出层的预测都与样本集合有关,而隐藏层的数值则在样本集合中没有体…
Read more
1. 逻辑回归的向量化 前文给出了逻辑归回的模型和通过梯度下降优化逻辑回归代价函数的算法。算法描述中包含了很多循环的步骤。在具体实现中,通过向量化(Vectorization)移除显式的 for 循环,有利于充分利用硬件性能,提高执行速度。如 Python 的 NumPy 包中有很多内置函数都提供了输入和处理多维数组的能力,在内部实现了并行计算的优化。 将之前得到的梯度下降计算各偏导的过程…
Read more
1. m 个样本上的梯度下降 前文通过计算图得到了对于单个样本的各个参数的偏导,下面扩展到 m 个样本的情况,给出在 m 个样本上进行逻辑回归梯度下降的方法。 回顾一下前面得到的逻辑回归的代价函数为: \begin{equation} J(w, b) = \frac{1}{m} \sum_{i = 1}^m L(a^{(i)}, y{(i)}) \tag{1} \end{equation}…
Read more
1. 计算图 神经网络的训练过程主要包括用于计算网络输出的前向传播(Forward Propagation),和用于计算各参数偏导数的反向传播(Forward Propagation)。通过计算图可以更好地理解这个计算过程。 先看一个简单的例子,对于如下函数: \begin{equation} J(a, b, c) = 3(a + bc) \tag{1} \end{equation} …
Read more
Deep Learning Note 系列是我学习 deepLearning.ai 所开设深度学习课程的笔记,包含关键概念、模型和部分推导,方便随时查阅。假设读者已初步了解机器学习基础知识,并具有相应的数学基础。 0. 符号说明 本文及后续内容使用符号定义如下: 使用 $(x, y)$ 表示单个样本,其中 $x \in \mathbb{R}^{n_x}$,即一个 $n_x$ 维的特征向…
Read more
1. 为枚举常量添加额外信息 在 Kotlin 中,可以通过枚举类来实现类型安全的枚举,如: [code lang=”kotlin”]enum class Size { SMALL, MEDIUM, LARGE; }[/code] 每一个枚举常量都是一个对象,是枚举类的一个实例,可以为枚举类添加属性并进行初始化,这样就可以得到带有属性的枚举常量: [code lan…
Read more