目录

一、概念与定义

二、损失函数/代价函数(loss)

三、梯度下降法

二维w与loss:

三维w与loss:

四、常用激活函数

1、softmax激活函数

2、sigmoid激活函数

3、tanh函数

4、softsign函数

sigmoid、tanh、softsign函数对比

5、relu函数

对比tanh和relu激活函数

4个隐藏层tanh激活函数

4个隐藏层relu激活函数

2个隐藏层relu激活函数

五、梯度消失与梯度爆炸

1、梯度消失

2、梯度爆炸

3、解决梯度消失与梯度爆炸


一、概念与定义

BP神经网络:是一种按照误差逆向传播算法训练的多层前馈神经网络。
BP 算法的基本思想:学习过程由信号的正向传播误差的反向传播两个过程组成。 

正向传播:把样本的特征从输入层进行输入,信号经过各个隐藏层逐层处理后,最后从输出层传出。

反向传播:对于网络的实际输出与期望输出之间的误差,把误差信号从最后一层逐层反传,从而获得各个层的误差学习信号,再根据误差学习信号来修正各个层神经元的权值。

周而复始地进行,权值不断调整的过程,就是神经网学习训练的过程

二、损失函数/代价函数(loss)

损失函数的值越小,说明模型的预测值越接近真实值

我们可以利用这个函数来优化模型参数

最常见的损失函数是均方差损失函数(二次损失函数):

矩阵可以用大写字母来表示,这里的 T 表示真实标签,Y 表示网络输出,i 表示第 i 个数据。N 表示训练样本的个数(注意这里的 N 是一个大于 0 的整数,不是矩阵)。T-Y 可以到每个训练样本与真实标签的误差。误差的值有正有负,我们可以求平方,把所有的误差值都变成正的,然后除以 2N。这里 2 没有特别的含义,主要是我们对均方差代价函数求导的时候,公式中的 2 次方的 2 可以跟分母中的 2 约掉,使得公式推导看起来更加整齐 简洁。除以 N 表示求每个样本误差平均的平均值。

三、梯度下降法

梯度下降法是最常用的方法之一

既然在变量空间的某一点处,函数沿梯度方向具有最大的变化率,那么在优化代价函数的时候,就可以沿着负梯度方向减小代价函数的值

梯度下降法优化公式:

二维w与loss:

首先w移动到了w=3的位置:

当 w 为-3 时,w 所处位置的梯度应该是一个负数,梯度下降法在优化代价函数的时候,是沿着负梯度方向去减小代价函数的值,所以负梯度是一个正数,w 的值应该变大。

w再次移动,到w=2的位置:

当 w 为 2 时,w 所处位置的梯度应该是一个正数,梯度下降法在优化代价函数的时候,是沿着负梯度方向去减小代价函数的值,所以负梯度是一个负数, w 的值应该变小。

        我们可以发现不管 w 处于那一个位置,当 w 向着负梯度的方向进行移动时,实际上就是向着可以使 loss 值减小的方向进行移动。只不过它每一次是移动一步,这个步子的大小会受到学习率和所处位置梯度的大小所影响

三维w与loss:

在图中随机选取两个 w1 和 w2 的初始值 p1 和 p2,然后从 p1、p2 这两个初始位置,开始使用梯度下降法优化网络参数:

四、常用激活函数

前面介绍的sign函数(符号函数)、purelin函数(线性函数)都不能很好地解决非线性问题。下面介绍神经网络中常用的非线性激活函数:softmax函数、sigmoid函数、tanh函数、softsign函数、relu函数。这些非线性激活函数有助于帮忙解决非线性问题。

1、softmax激活函数

将多个神经元的输出,映射到(0,1)区间内。(可以看成概率来理解,从而来进行多分类

公式:

2、sigmoid激活函数

sigmoid函数也称为逻辑函数,函数公式为:

函数的取值范围是 0-1 之间,当 x 趋向于-∞的时候函数值趋向于 0; 当 x 趋向于+∞的时候函数值趋向于 1。

3、tanh函数

tanh函数也称为双曲正切函数。函数公式:

        函数的取值范围是-1-1 之间,当 x 趋向于-∞的时候函数值趋向于-1; 当 x 趋向于+∞的时候函数值趋向于 1。

4、softsign函数

softsign函数公式:

函数的取值范围是-1-1 之间,当 x 趋向于-∞的时候函数值趋向于-1; 当 x 趋向于+∞的时候函数值趋向于 1。

sigmoid、tanh、softsign函数对比

        这三个激活函数都是 S 形函数,形状相似,只不过 sigmoid 函数取值范围是 0-1 之间,tanh 函数和 softsign 函数取值范围是-1-1 之间。我们还可以观察到 softsign 函数相对于 tanh 函数而言过渡更加平滑,在 x 等于 0 附近函数的数值改变更缓慢。

5、relu函数

relu函数公式:

        当 x 小于 0 时,y 等于 0。当 x 大于 0 时,y 等于 x。ReLU 的中文名称是校正线性单元,虽然在 x 小于 0 时函数是线性的,x 大于 0 时函数也是线性的,但是组合起来之后,函数就具有了非线性的特征。(大于0部分导数也始终为1,relu函数能抗梯度消失与梯度爆炸)(在这些激活函数里面,relu激活函数最好)

对比tanh和relu激活函数

4个隐藏层tanh激活函数

4个隐藏层relu激活函数

2个隐藏层relu激活函数

可以发现:

ReLU 激活函数所描绘出来的边界其实是一条一条的直线构成的,不存在曲线。
模型的拟合效果其实还跟其他一些因素相关,比如说每一层隐藏层的神经元越多,那么模型的拟合能力也就越强模型训练的周期越多,模型的拟合能力就越强

五、梯度消失与梯度爆炸

1、梯度消失

梯度消失概念:学习信号随着网络传播逐渐减小

        学习信号从输出层一层一层向前反向传播的时候,每传播一层学习信号就会变小一点,经过多层传播后,学习信号就会接近于 0,从而使得权值∆w调整接近于 0。∆w接近于 0 那就意味着该层的参数不会发生改变,不能进行优化。参数不能优化,那整个网络就不能再进行学习了。

2、梯度爆炸

梯度爆炸概念:学习信号随着网络传播逐渐增大

        如果学习信号乘以一个大于 1 的数,那么δ就会变大。学习信号从输出层一层一层向前
反向传播的时候,每传播一层学习信号就会变大一点,经过多层传播后,学习信号就会接近于无穷大,从而使得权值∆w调整接近于无穷大。∆w接近于无穷大那就意味着该层的参数,处于一种极不稳定的状态,那么网络就不能正常工作了。

3、解决梯度消失与梯度爆炸

ReLu表达式:f(x)=max(0,x),当小于0时,f(x)的取值为0;当x>0时,f(x)的取值等于x。

        当激活函数的导数小于 1 时,网络会产生梯度消失,激活函数的导数大于 1 时,网络会产生梯度爆炸。
        导数为 1 是一个很好的特性,不会使得学习信号越来越小,也不会让学习信号越来越大,可以让学习信号比较稳定地从后向前传播,解决了梯度消失和梯度下降的问题。
疑问:
        ReLU 函数看起来是挺好的,既是非线性函数,导数又为 1,但是它好像也存在一些问题,当 x 小于 0 时,ReLU 函数输出为 0,导数也为0,有些信号不就丢失掉了吗? 如果你是这么想的,那你就想对了,确实是丢失了一些信号,但是没关系。在神经网络中,信号是冗余的,也就是说其实网络最后在做预测的时候并不需要从前面传过来的所有的信号,实际上只需要一部分的信号,网络就可以进行预测。并且使用部分信号来进行预测与使用全部信号来进行预测得到的结果相差不大。

深度学习--TensorFlow(4)BP神经网络(损失函数、梯度下降、常用激活函数、梯度消失梯度爆炸)相关推荐

  1. 【计算机视觉与深度学习】全连接神经网络(二)

    计算机视觉与深度学习系列博客传送门 [计算机视觉与深度学习]线性分类器(一) [计算机视觉与深度学习]线性分类器(二) [计算机视觉与深度学习]全连接神经网络(一) 目录 激活函数再探讨 梯度下降算法 ...

  2. 【神经网络与深度学习-TensorFlow实践】-中国大学MOOC课程(十二)(人工神经网络(1)))

    [神经网络与深度学习-TensorFlow实践]-中国大学MOOC课程(十二)(人工神经网络(1))) 12 人工神经网络(1) 12.1 神经元与感知机 12.1.1 感知机 12.1.2 Delt ...

  3. 【神经网络与深度学习-TensorFlow实践】-中国大学MOOC课程(十四)(卷积神经网络))

    [神经网络与深度学习-TensorFlow实践]-中国大学MOOC课程(十四)(卷积神经网络)) 14 卷积神经网络 14.1 深度学习基础 14.1.1 深度学习的基本思想 14.1.2 深度学习三 ...

  4. 【神经网络与深度学习-TensorFlow实践】-中国大学MOOC课程(八)(TensorFlow基础))

    [神经网络与深度学习-TensorFlow实践]-中国大学MOOC课程(八)(TensorFlow基础)) 8 TensorFlow基础 8.1 TensorFlow2.0特性 8.1.1 Tenso ...

  5. 【神经网络与深度学习-TensorFlow实践】-中国大学MOOC课程(四)(Python语言基础(2))

    [神经网络与深度学习-TensorFlow实践]-中国大学MOOC课程(四)(Python语言基础(2)) 第4讲 Python语言基础(2) 4.1 内置数据结构 4.1.1 序列数据结构(sequ ...

  6. MOOC网神经网络与深度学习TensorFlow实践8——卷积神经网络

    卷积神经网络 深度学习基础 图像识别和深度学习 图像卷积 卷积神经网络

  7. 深度学习_07_2_随机梯度下降_激活函数及梯度损失函数及梯度

    07_2_随机梯度下降_激活函数及梯度&损失函数及梯度 激活函数及其梯度 Activation Functions(激活函数) 研究青蛙的神经元有多个输入,比如x0,x1,x2x_0,x_1, ...

  8. Tensorflow实现BP神经网络

    Tensorflow实现BP神经网络 摘要:深度学习中基本模型为BP深度神经网络,其包括输入层.隐含层和输出层.输入层的神经元个数取决于数据集属性特征的个数,输出层神经元个数取决于划分类标的个数.BP ...

  9. 0.0 目录-深度学习第一课《神经网络与深度学习》-Stanford吴恩达教授

    文章目录 第五课 第四课 第三课 第二课 第一课 第五课 <序列模型> 笔记列表 Week 1 循环序列模型 Week 1 传送门 -> 1.1 为什么选择序列模型 1.2 数学符号 ...

  10. 深度学习21天——卷积神经网络(CNN):实现mnist手写数字识别(第1天)

    目录 一.前期准备 1.1 环境配置 1.2 CPU和GPU 1.2.1 CPU 1.2.2 GPU 1.2.3 CPU和GPU的区别 第一步:设置GPU 1.3 MNIST 手写数字数据集 第二步: ...

最新文章

  1. linux中bash的功能主要有,Linux系统中的Bash功能的介绍
  2. linux 不可中断的进程,不可中断进程和僵尸进程
  3. 蓝桥杯-算法提高-种树
  4. 多表关系介绍 mysql
  5. 使用Linux curl命令获取本机公网IP地址
  6. CompactExifLib:访问JPEG文件中的EXIF标签
  7. 【转】Qt QTableview使用
  8. linux常用目录操作命令
  9. ubuntu 打开ssh登陆_Ubuntu开启SSH远程登录
  10. IAR移植FreeRTOS
  11. dos命令如何查看计算机信息,电脑DOS命令查看进程详细信息方法图解
  12. Docker删除镜像是报错:Error response from daemon: conflict: unable to remove repository reference “xxx“
  13. Mysql查询当天,本周,本月所有数据记录
  14. 新底座、新产品、新方案,2022用友BIP技术大会三大数智化突破
  15. 小谢同学的C语言之路————第一章 初遇C语言 第二集 数据类型
  16. supermap mysql_超图supermap sdx数据库用sql实现空间查询
  17. 单系统 台电x80pro_台电X80 Pro (E6E9)-双系统安装文件平板固件
  18. 计算机二级字符串,计算机二级辅导:VC字符串转换
  19. 合同相似可逆等价矩阵的关系及性质_矩阵的合同,等价与相似的联系与区别.doc...
  20. 一、AUTOSAR概述

热门文章

  1. 小程序加载大图片 使用widthFix时,图片先拉伸然后才显示完全
  2. C++ VS2013环境编译使用sqlite数据库全过程
  3. 【ArcGIS for Android】基于位置查询Graphic和Feature
  4. 小D学blend-----如何创建自定义的Tooltip控件
  5. mfc 应用程序 语言进行本地化
  6. 测一测你的blog魔症有多严重
  7. C++数组名做函数形参/指针
  8. VScode配置ROS环境
  9. usaco shuttle puzzle(dfs剪枝)
  10. case when 效率高不高_南京薄蜂窝纸板效率高