目录

浅层神经网络

神经网络的表示 

计算神经网络的输出

单个样本前向传播

多个样本前向传播

激活函数

sigmoid函数与tanh函数

Relu函数和Leaky Relu函数

使用非线性激活函数原因

神经网络的梯度下降(反向传播)

随机初始化

深层神经网络

深层神经网络前向传播

核对矩阵的维数

搭建深层神经网络块

参数和超参数


浅层神经网络

神经网络的表示 

  • 用上标[i]代表神经网络的第i层,用上标(i)代表第i个样本;
  • 代表第i-1层和第i层之间的权重参数矩阵,维度为(代表第i层的单元数);代表第i-1层和第i层之间的偏置参数向量,维度;
  • 一般输入层为第0层,不算在神经网络的层数内。

计算神经网络的输出

单个样本前向传播


神经网络浅层模型 神经网络浅层和深层_神经网络

整合为一个列向量记做

神经网络浅层模型 神经网络浅层和深层_激活函数_02

,把

整合为一个矩阵

神经网络浅层模型 神经网络浅层和深层_神经网络_03

神经网络浅层模型 神经网络浅层和深层_神经网络_04

      

神经网络浅层模型 神经网络浅层和深层_初始化_05

多个样本前向传播

把m个样本的特征向量

神经网络浅层模型 神经网络浅层和深层_神经网络_06

堆叠在一起构成特征矩阵X(

神经网络浅层模型 神经网络浅层和深层_激活函数_07

)作为输入,可以同时实现m个样本的前向传播,此时中间结果

神经网络浅层模型 神经网络浅层和深层_神经网络_08

(向量或标量)都相应的扩展为

神经网络浅层模型 神经网络浅层和深层_神经网络_09

(矩阵或向量)。扩展的矩阵横向指标对应不同的训练样本,竖向指标对应神经网络中的不同节点。 

神经网络浅层模型 神经网络浅层和深层_初始化_10

激活函数

sigmoid函数与tanh函数

神经网络浅层模型 神经网络浅层和深层_神经网络_11

    

神经网络浅层模型 神经网络浅层和深层_初始化_12

在实际应用中几乎不使用sigmoid激活函数,tanh函数几乎在所有方面都优于sigmoid函数。

sigmoid激活函数使用情形(导数为a(1-a)):

  • 使用神经网络进行2分类时,此时输出层只有一个单元且输出需介于0-1之间

sigmoid函数缺点:

  • 当输入z太大或太小时,梯度会接近于0,算法优化速度会非常慢
  • 输出以0.5为中心,不是以0为中心,输出值没有中心化的效果(输出数据以0为中心化可以方便下一层的学习)

tanh函数(导数为1-a^2):

  • 优点:输出值以0为中心,有数据中心化的效果。方便下一层的学习。
  • 缺点:当输入z太大或太小时,梯度会接近于0,算法优化速度会非常慢(与sigmoid类似)。

Relu函数和Leaky Relu函数

神经网络浅层模型 神经网络浅层和深层_激活函数_13

Relu函数:

  • 优点:不存在梯度接近于0的情况,算法优化速度比sigmoid和tanh函数快很多。
  • 缺点:当输入时,梯度=0,但是这影响不大,对于大部分隐藏层的单元来说,输入,此时梯度都是不为0的(=1)。

Leaky Relu函数:在Relu函数的基础上增加了一个超参数,当

神经网络浅层模型 神经网络浅层和深层_初始化_14

时的系数需要手动设置,一般设为0.01,实际操作中,可以进行尝试然后选出最优的。

使用非线性激活函数原因

使用非线性激活函数可以让神经网络得到有趣的输出。

无论使用多少个隐层,如果每个隐层和输出层都采用线性激活函数,那么最后的输出可以表示为输入特征的线性组合。也就是说,此时的隐层是没有意义的,不需要任何隐层也可以得到该输出。但如果机器学习的是线性回归问题,比如房价预测,输出层用线性激活函数也许可以。

神经网络的梯度下降(反向传播)

神经网络浅层模型 神经网络浅层和深层_神经网络浅层模型_15

神经网络浅层模型 神经网络浅层和深层_初始化_16

随机初始化

权重参数W应该随机初始化,而偏置参数b可以初始化为0,因为只要W保证随机初始化,就可以破坏隐藏单元对称性。一般随机初始化权重参数时,还要乘以一个非常小的数,如0.01。因为如果采用sigmoid或tanh激活函数时,不至于使z过大或过小,导致计算梯度时接近于0,降低算法的优化速度。

神经网络浅层模型 神经网络浅层和深层_初始化_17

深层神经网络

深层神经网络前向传播

神经网络浅层模型 神经网络浅层和深层_神经网络_18

    

神经网络浅层模型 神经网络浅层和深层_神经网络_19

    

神经网络浅层模型 神经网络浅层和深层_神经网络_20

其中

神经网络浅层模型 神经网络浅层和深层_激活函数_21

是对单个样本前向传播的向量进行堆叠(一列代表一个样本),形成相应的矩阵。

核对矩阵的维数

以5层神经网络为例进行核对矩阵的维数

神经网络浅层模型 神经网络浅层和深层_神经网络_22

单个样本 vs. m个样本

神经网络浅层模型 神经网络浅层和深层_神经网络浅层模型_23

    

神经网络浅层模型 神经网络浅层和深层_神经网络_24

搭建深层神经网络块

先由

神经网络浅层模型 神经网络浅层和深层_激活函数_25

前向传播得到

神经网络浅层模型 神经网络浅层和深层_激活函数_26

,计算损失函数

神经网络浅层模型 神经网络浅层和深层_神经网络浅层模型_27

;再反向传播,先计算出

神经网络浅层模型 神经网络浅层和深层_神经网络_28

,再继续利用链式法则(以及前向传播中缓存的中间结果

神经网络浅层模型 神经网络浅层和深层_神经网络浅层模型_29

,和参数

神经网络浅层模型 神经网络浅层和深层_神经网络_30

)逐步计算出

神经网络浅层模型 神经网络浅层和深层_神经网络浅层模型_31

,其他层依次进行。

神经网络浅层模型 神经网络浅层和深层_神经网络浅层模型_32

神经网络浅层模型 神经网络浅层和深层_激活函数_33

参数和超参数

参数

神经网络浅层模型 神经网络浅层和深层_激活函数_34

超参数:学习率

神经网络浅层模型 神经网络浅层和深层_神经网络_35

、梯度下降迭代次数、隐层数、各个隐层单元数、激活函数的选择等等需要自己来设置的参数,实际上超参数的不同取值可以影响模型的实际参数。