深度学习卷积神经网络入门基础篇(神经网络与反向传播)

卷积神经网络学习笔记一

  • 神经网络模型
    • 1.1M-P神经网络模型
      • M-P神经网络-激活函数
    • 1.2 感知机
    • 1.3 前馈神经网络
    • 1.4 误差反向传播
      • 1.4.1 神经网络前向传播
      • 1.4.2 误差反向传播
      • 1.4.3梯度下降优化器
        • 1.4.3.1 BGD,SGD,Mini-batch 梯度下降
        • 1.4.3.1 Momentum,RMSprop,Adam 梯度下降

神经网络模型

1.1M-P神经网络模型

深度学习卷积神经网络入门基础篇(神经网络与反向传播)_第1张图片
1.1 M-P神经网络模型
人类大脑工作原理:每个神经元与其他神经元相连,当它激活兴奋时,就会向其他相连的神经元发送信号,如果电位超过了某值便会被激活,向其他神经元发送化学物质。
1943年,【McCulloch and Pitts,1943】提出类似生物大脑工作的神经元模型M-P神经元结构。
深度学习卷积神经网络入门基础篇(神经网络与反向传播)_第2张图片
w为权重,上个神经元传入的数值,h为阈值(偏执),f为激活函数。
M-P模型有如下三个功能:

能够接受n个输入信号
能够为输入信号分配权重
能够将得到的信号进行汇总,变换并输出

M-P神经网络-激活函数

sgn 
 即 x>0,sgnx=1  
   x=0,sgnx= 0
   x<0,sgnx=-1
深度学习卷积神经网络入门基础篇(神经网络与反向传播)_第3张图片
sigmoid 函数

深度学习卷积神经网络入门基础篇(神经网络与反向传播)_第4张图片
其导数为f’(x) = f(x)(1-f(x))

深度学习卷积神经网络入门基础篇(神经网络与反向传播)_第5张图片

1.2 感知机

感知机由两层神经元组成,输入层接收外界信号,输出层是M-P网络。两层神经网络的感知机网络。可以进行或,与非的逻辑线性运算。但不能进行异或这样的非线性运算。

深度学习卷积神经网络入门基础篇(神经网络与反向传播)_第6张图片

1.3 前馈神经网络

定义:每层神经元与下一层神经元全连接,神经元之间不存在同层连接,也不存在跨层连接。
注:前馈不意味着信号不能向后传播,而是指网络拓扑结构不存在环或者回路。
深度学习卷积神经网络入门基础篇(神经网络与反向传播)_第7张图片

以上的为双隐层前馈神经网络,由于存在多种线性结构与非线性激活函数,便可以解决非线性问题,如异或问题。

1.4 误差反向传播

1.4.1 神经网络前向传播

深度学习卷积神经网络入门基础篇(神经网络与反向传播)_第8张图片

[http://playground.tensorflow.org/]

深度学习卷积神经网络入门基础篇(神经网络与反向传播)_第9张图片

注:其中包含 正则函数,激活函数,学习率,正则率

前向传播过程中的w,b为神经网络的敏感度问题。当w的值发生变化时候,如上图,对应的通路变的更加敏感,根据多种不同的线性关系与非线性激活函数的堆叠,从而解决非线性问题。(注:当激活函数为f(x)= x时候,其为线性激活函数,叠乘运算后为f(x) = w1w2w3w4X并不能解决非线性问题)

1.4.2 误差反向传播

深度学习卷积神经网络入门基础篇(神经网络与反向传播)_第10张图片

虽然神经网络很早就出来了,但是发展一直停滞不前。直到Hinton提出基于梯度下降算法的误差反向传播算法使得人工智能技术更上一台阶。以下为单隐层前馈神经网络处理逻辑回归的反向传播过程,其激活函数为sigmoid函数。

深度学习卷积神经网络入门基础篇(神经网络与反向传播)_第11张图片
注:激活函数为sigmoid函数,输入层为X, 第i层输入为a[i] ,第i层激活函数输出值为Z[i] 。损失函数为交叉熵。在这里插入图片描述
其中n为批量的数量。以下为随机梯度下降的推导过程。
大家可以参考吴恩达反向传播课程讲解通俗易懂。
吴恩达反向传播推导链接

深度学习卷积神经网络入门基础篇(神经网络与反向传播)_第12张图片

反向传播优点:
反向传播是一个自学习过程,将真实值与预测值进行损失函数比较。将误差反向传播给神经网络模型的所有参数进行调整。适用与非线性模型调优。
反向传播缺点:
学习速度慢,本质是寻找局部最优解,存在鞍点。同时会出现梯度消失与梯度爆炸等问题。

1.4.3梯度下降优化器

针对上述梯度下降问题,可以使用梯度下降优化器来使得模型结果更加的贴合,有些优化器拟合速度更快。
原文链接:https://blog.csdn.net/ygjustgo/article/details/78874649

1.4.3.1 BGD,SGD,Mini-batch 梯度下降

  1. BGD算法:即在每次迭代中,需要看完整个数据集才对参数进行更新
  2. SGD 算法: 每读入一个数据,便立刻计算cost fuction的梯度来更新参数.
  3. Mini-batch算法: 则把整个数据集划分成若干个子集,在一次迭代中,每看完一个子集的数据便对参数进行更新,这样在一次迭代中便能进行多次参数更新。

当Mini-batch批量为1时为SGD算法。当批量为全部数据时为BGD算法

深度学习卷积神经网络入门基础篇(神经网络与反向传播)_第13张图片

深度学习卷积神经网络入门基础篇(神经网络与反向传播)_第14张图片

  1. 为什么要采用Mini-batch gradient descent
    如果采用Batch gradient descent,那么参数更新的周期太长
    如果采用Stochastic gradient descent,那么将无法收获向量化加速训练的好处
    Mini-batch 则没有上述两者的缺点,有利于加速训练
  2. Mini-batch的选择
    通常Mini-batch的大小选择32,64,128,256,512等
    step 1: 打乱数据集
深度学习卷积神经网络入门基础篇(神经网络与反向传播)_第15张图片

step 2: 对数据集进行划分

深度学习卷积神经网络入门基础篇(神经网络与反向传播)_第16张图片
  1. Mini-batch的特点
    由于每次更新参数只看一部分的数据,因此在参数更新过程中会有波动(即Cost并不总是变为更小的值)。为了减小波动对训练速度造成的影响,引入了一些办法对参数更新进行优化:Momentum,RMSprop,Adam(均采用了指数加权平均的思想),learning rate decay等。

1.4.3.1 Momentum,RMSprop,Adam 梯度下降

Momentum
深度学习卷积神经网络入门基础篇(神经网络与反向传播)_第17张图片

β越大,那么过去的数据所占比重越大,参数更新更平滑
β常用取值范围为0.8~0.999,通常取0.9
β = 0,相当于没有运用Momentum

RMSprop
深度学习卷积神经网络入门基础篇(神经网络与反向传播)_第18张图片

通常,β = 0.999,ε = 10−810−8

Adam
可以理解为(Momentum + RMSprop + Bias correction)

深度学习卷积神经网络入门基础篇(神经网络与反向传播)_第19张图片

参数b的更新同上所述。
通常,β1=0.9β1=0.9,β2=0.999β2=0.999,ε=10−8ε=10−8
9. Learning rate decay
深度学习卷积神经网络入门基础篇(神经网络与反向传播)_第20张图片

注意
在learning rate(α)较小且数据集较简单时,单纯的Momentum与普通参数更新效果差异不大
在简单数据集上,当迭代次数足够多时,普通更新,Momentum,Adam均能取得较好的效果,但Adam更快
若想取得更好的效果,需要对超参数α进行调整

你可能感兴趣的:(神经网络,算法)