超重量级深层神经网络与优化算法

Posted ZSYL

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了超重量级深层神经网络与优化算法相关的知识,希望对你有一定的参考价值。

学习目标

  • 目标
    • 了解深层网络的前向传播与反向传播的过程
    • 了解深度学习遇到的一些问题
    • 知道批梯度下降与MiniBatch梯度下降的区别
    • 知道指数加权平均的意义
    • 知道动量梯度、RMSProp、Adam算法的公式意义
    • 知道学习率衰减方式
    • 知道参数初始化策略的意义

0. 为什么使用深层网络?

对于人脸识别等应用,神经网络的第一层从原始图片中提取人脸的轮廓和边缘,每个神经元学习到不同边缘的信息;网络的第二层将第一层学得的边缘信息组合起来,形成人脸的一些局部的特征,例如眼睛、嘴巴等;后面的几层逐步将上一层的特征组合起来,形成人脸的模样。

随着神经网络层数的增加,特征也从原来的边缘逐步扩展为人脸的整体,由整体到局部,由简单到复杂。层数越多,那么模型学习的效果也就越精确。

通过例子可以看到,随着神经网络的深度加深,模型能学习到更加复杂的问题,功能也更加强大。

1. 深层神经网络表示

1.1 什么是深层网络?

使用浅层网络的时候很多分类等问题得不到很好的解决,所以需要深层的网络。

2. 四层网络的前向传播与反向传播

在这里首先对每层的符号进行一个确定,我们设置L为第几层,n为每一层的个数,L=[L1,L2,L3,L4],n=[5,5,3,1]

2.1 前向传播

首先还是以单个样本来进行表示,每层经过线性计算和激活函数两步计算

我们将上式简单的用通用公式表达出来, x = a [ 0 ] x = a^{[0]} x=a[0]

  • m个样本的向量表示

2.2 反向传播

因为涉及到的层数较多,所以我们通过一个图来表示反向的过程

  • 反向传播的结果(理解)

单个样本的反向传播:

d Z [ l ] = d J d a [ l ] d a [ l ] d Z [ l ] = d a [ l ] ∗ g [ l ] ′ ( Z [ l ] ) dZ^{[l]}=\\frac{dJ}{da^{[l]}}\\frac{da^{[l]}}{dZ^{[l]}}=da^{[l]}*g^{[l]}{'}(Z^{[l]}) dZ[l]=da[l]dJdZ[l]da[l]=da[l]g[l](Z[l])

d W [ l ] = d J d Z [ l ] d Z [ l ] d W [ l ] = d Z [ l ] ⋅ a [ l − 1 ] dW^{[l]}=\\frac{dJ}{dZ^{[l]}}\\frac{dZ^{[l]}}{dW^{[l]}}=dZ^{[l]}\\cdot a^{[l-1]} dW[l]=dZ[l]dJdW[l]dZ[l]=dZ[l]a[l1]

d b [ l ] = d J d Z [ l ] d Z [ l ] d b [ l ] = d Z [ l ] db^{[l]}=\\frac{dJ}{dZ^{[l]}}\\frac{dZ^{[l]}}{db^{[l]}}=dZ^{[l]} db[l]=dZ[l]dJdb[l]dZ[l]=dZ[l]

d a [ l − 1 ] = W [ l ] T ⋅ d Z [ l ] da^{[l-1]}=W^{[l]T}\\cdot dZ^{[l]} da[l1]=W[l]TdZ[l]

多个样本的反向传播

d Z [ l ] = d A [ l ] ∗ g [ l ] ′ ( Z [ l ] ) dZ^{[l]}=dA^{[l]}*g^{[l]}{'}(Z^{[l]}) dZ[l]=dA[l]g[l](Z[l])

d W [ l ] = 1 m d Z [ l ] ⋅ A [ l − 1 ] T dW^{[l]}=\\frac{1}{m}dZ^{[l]}\\cdot {A^{[l-1]}}^{T} dW[l]=m1dZ[l]A[l1]T

d b [ l ] = 1 m n p . s u m ( d Z [ l ] , a x i s = 1 ) db^{[l]}=\\frac{1}{m}np.sum(dZ^{[l]},axis=1) db[l]=m1np.sum(dZ[l],axis=1)

d A [ l ] = W [ l + 1 ] T ⋅ d Z [ l + 1 ] dA^{[l]}=W^{[l+1]T}\\cdot dZ^{[l+1]} dA[l]=W[l+1]TdZ[l+1]

3. 参数与超参数

3.1 参数

参数即是我们在过程中想要模型学习到的信息(模型自己能计算出来的),例如 W[l]W[l],b[l]b[l]。而**超参数(hyper parameters)**即为控制参数的输出值的一些网络信息(需要人经验判断)。超参数的改变会导致最终得到的参数 W[l],b[l] 的改变。

3.2 超参数

典型的超参数有:

  • 学习速率:α
  • 迭代次数:N
  • 隐藏层的层数:L
  • 每一层的神经元个数:n[1],n[2],…
  • 激活函数 g(z) 的选择

当开发新应用时,预先很难准确知道超参数的最优值应该是什么。因此,通常需要尝试很多不同的值。应用深度学习领域是一个很大程度基于经验的过程。

深度学习难以在大数据领域发挥最大效果的一个原因是,在巨大的数据集基础上进行训练速度很慢。而优化算法能够帮助我们快速训练模型,提高计算效率。接下来我么就去看有哪些方法能够解决我们刚才遇到的问题或者类似的问题

4. 优化遇到的问题

  • 梯度消失
  • 局部最优

4.1 梯度消失

梯度函数上出现的以指数级递增或者递减的情况分别称为梯度爆炸或者梯度消失

假设 g ( z ) = z , b [ l ] = 0 g(z) = z, b^{[l]} = 0 g(z)=z,b[l]=0,对于目标输出有: y ^ = W [ L ] W [ L − 1 ] . . . W [ 2 ] W [ 1 ] X \\hat{y} = W^{[L]}W^{[L-1]}...W^{[2]}W^{[1]}X y^=W[L]W[L1]...W[2]W[1]X

  • 对于 W [ l ] W^{[l]} W[l]的值大于 1 的情况,激活函数的值将以指数级递增;
  • 对于 W [ l ] W^{[l]} W[l]的值小于 1 的情况,激活函数的值将以指数级递减。

在计算梯度时,根据不同情况梯度函数也会以指数级递增或递减,导致训练导数难

以上是关于超重量级深层神经网络与优化算法的主要内容,如果未能解决你的问题,请参考以下文章

神经网络与人类思维间的深层关系

优化预测基于matlab粒子群算法优化DBN预测含Matlab源码 1420期

优化预测基于matlab遗传算法优化GRNN数据回归拟合含Matlab源码 1401期

TensorFlow(实战深度学习框架)----深层神经网络(第四章)

我的新书:《工业机器学习算法详解与实战》

使用PyTorch中的KFAC优化更深层的网络