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

神经网络模型

1.1M-P神经网络模型

你好! 这是你第一次使用 **Markdown编辑器** 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识
1.1 M-P神经网络模型
人类大脑工作原理:每个神经元与其他神经元相连,当它激活兴奋时,就会向其他相连的神经元发送信号,如果电位超过了某值便会被激活,向其他神经元发送化学物质。
1943年,【McCulloch and Pitts,1943】提出类似生物大脑工作的神经元模型M-P神经元结构。
在这里插入图片描述
w为权重,上个神经元传入的数值,h为阈值(偏执),f为激活函数。
M-P模型有如下三个功能:

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

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

sgn 
 即 x>0,sgnx=1  
   x=0,sgnx= 0
   x<0,sgnx=-1
sigmoid 函数

在这里插入图片描述
其导数为f’(x) = f(x)(1-f(x))

1.2 感知机

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

1.3 前馈神经网络

定义:每层神经元与下一层神经元全连接,神经元之间不存在同层连接,也不存在跨层连接。
注:前馈不意味着信号不能向后传播,而是指网络拓扑结构不存在环或者回路。

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

1.4 误差反向传播

1.4.1 神经网络前向传播

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

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

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

1.4.2 误差反向传播

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

吴恩达反向传播图
注:激活函数为sigmoid函数,输入层为X, 第i层输入为a[i] ,第i层激活函数输出值为Z[i] 。损失函数为交叉熵。在这里插入图片描述
其中n为批量的数量。以下为随机梯度下降的推导过程。
大家可以参考吴恩达反向传播课程讲解通俗易懂。
吴恩达反向传播推导链接

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

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算法

在这里插入图片描述

在这里插入图片描述

  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: 打乱数据集

step 2: 对数据集进行划分

  1. Mini-batch的特点
    由于每次更新参数只看一部分的数据,因此在参数更新过程中会有波动(即Cost并不总是变为更小的值)。为了减小波动对训练速度造成的影响,引入了一些办法对参数更新进行优化:Momentum,RMSprop,Adam(均采用了指数加权平均的思想),learning rate decay等。
1.4.3.1 Momentum,RMSprop,Adam 梯度下降

Momentum
在这里插入图片描述

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

RMSprop
在这里插入图片描述

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

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

在这里插入图片描述

参数b的更新同上所述。
通常,β1=0.9β1=0.9,β2=0.999β2=0.999,ε=10−8ε=10−8
9. Learning rate decay
在这里插入图片描述

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

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值