DeepLearning笔记(2)——神经网络

2018-02-24 Alex Sun 更多博文 » 博客 » GitHub »

原文链接 https://syaning.github.io/2018/02/24/dl-nn/
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。


1. 前向传播

如上图,左边为一个简单的神经网络结构,右边为每一个神经单元的计算过程。

对于一个样本:

$$ \begin{array}{} a^{[0]}=x \ z^{[1]}=W^{[1]}a^{[0]}+b^{[1]} \ a^{[1]}=\sigma(z^{[1]}) \ z^{[2]}=W^{[2]}a^{[1]}+b^{[2]} \ a^{[2]}=\sigma(z^{[2]}) \ \end{array} $$

其中:

$$ \begin{array}{} W^{[1]} \in \mathbb{R}^{4\times3} \ b^{[1]} \in \mathbb{R}^{4\times1} \ W^{[2]} \in \mathbb{R}^{1\times4} \ b^{[2]} \in \mathbb{R}^{1\times1} \ \end{array} $$

一般来说,令:

  • $L$ 表示神经网络层数(不包含输入层),输入层看作是第0层
  • $n^{[l]}$ 表示第 $l$ 层的节点数量
  • $g^{[l]}$ 表示第 $l$ 层的激活函数

则对于多个样本向量化:

$$ \begin{array}{} X \in \mathbb{R}^{n^{[0]} \times m} \ W^{[l]} \in \mathbb{R}^{n^{[l]} \times n^{[l-1]}} \ b^{[l]} \in \mathbb{R}^{n^{[l]}\times1} \ A^{[0]}=X \ Z^{[l]}=W^{[l]}A^{[l-1]}+b^{[l]} \ A^{[l]}=g^{[l]}(Z^{[l]}) \end{array} $$

2. 激活函数

  • 不同的层可以使用不同的激活函数
  • 激活函数是非线性的

常用的激活函数有:

$$ \begin{array}{} \text{sigmoid}:&a=g(z)=\frac{1}{1+e^{-z}} \ \text{tanh}:&a=g(z)=\frac{e^z-e^{-z}}{e^z+e^{-z}} \ \text{ReLU}:&a=g(z)=\text{max}(0,z) \ \text{leaky ReLU}:&a=g(z)=\text{max}(0.01z,z) \end{array} $$

它们的导数分别为:

$$ \begin{array}{} \text{sigmoid}:&g'(z)=a(1-a) \ \text{tanh}:&g'(z)=1-a^2 \ \text{ReLU}:&g'(z)=\begin{cases}0,&\text{if}\ z0 \end{cases} \ \text{leaky ReLU}:&g'(z)=\begin{cases}0.01,&\text{if}\ z0 \end{cases} \end{array} $$

3. 反向传播

在前向传播过程中,针对每一层,输入为 $A^{[l-1]}$,输出为 $A^{[l]}$:

$$ \begin{array}{} Z^{[l]}=W^{[l]}A^{[l-1]}+b^{[l]} \ A^{[l]}=g^{[l]}(Z^{[l]}) \end{array} $$

在反向传播过程中,针对每一层,输入为 $\text{d}A^{[l]}$,输出为 $\text{d}A^{[l-1]}$,$\text{d}W^{[l]}$,$\text{d}b^{[l]}$:

$$ \begin{array}{} \text{d}Z^{[l]}=\text{d}A^{[l]}*g^{[l]}{'}(Z^{[l]}) \ dW^{[l]}=\frac{1}{m} dZ^{[l]} A^{[l-1] T} \ db^{[l]}=\frac{1}{m} \sum_{i = 1}^{m} dZ^{l} \ dA^{[l-1]}=W^{[l] T} dZ^{[l]} \end{array} $$

4. 参数初始化

在逻辑回归中,参数 $w$ 和 $b$ 可以都初始化为0,但是在神经网络中,如果这样做的话,则每一层所有的神经单元都是在做着同样的计算。因此需要进行随机初始化。

初始化的参数值通常会很小。如果比较大,在使用了sigmoid或者tanh激活函数的时候,计算值就容易落到函数值较大的区域,从而梯度很小,导致反向传播过程进行的很慢。

5. 参数和超参数

参数:

  • $W$
  • $b$

超参数:

  • 学习速率 $\alpha$
  • 梯度下降迭代次数 $\text{iterations}$
  • 神经网络层数 $L$
  • 每一层的节点数 $n^{[l]}$
  • 激活函数类型 $g(z)$
  • ……

超参数决定了最终训练好的参数 $W$ 和 $b$ 的值,即超参数是控制参数的参数。